LT320 TFT LCD, reverse engineering

http://wp.me/ph3BR-1HI

 

LT320_pixel
LT320_pixel

 

LT320
LT320

this is no any datasheet found on the internet, could not find specification or manufacturer’s information.

Attempts to reveal some basis of this LCD just for fun.

Display area 70mm x 42mm

pixel size, 4 x 2 dots form a grid, RGB

core 1.8V, 2.8V

should be 16bit or 24bit RGB mode because 40 pins are active for color display.

read this, https://zh.wikipedia.org/wiki/%E4%B8%89%E5%8E%9F%E8%89%B2%E5%85%89%E6%A8%A1%E5%BC%8F#16.E6.AF.94.E7.89.B9.E6.A8.A1.E5.BC.8F

 

 

 

廣告

MITSUBISHI SAVRIN INSPIRE, 2.4, 電子鐘音響資訊凝固了

https://goo.gl/gOItF5

 

每次坐這個車, 都有新發現, 顯示電子鐘和音響資訊的LCD偶然沒顯示, 或者顯示亂碼或者沒意義的符號, 偶然又好了.

SAVRIN 音響資訊液晶顯示螢幕
SAVRIN 音響資訊液晶顯示螢幕
SAVRIN 音響資訊液晶顯示螢幕
SAVRIN 音響資訊液晶顯示螢幕
SAVRIN 音響資訊液晶顯示螢幕
SAVRIN 音響資訊液晶顯示螢幕
SAVRIN 音響資訊液晶顯示螢幕
SAVRIN 音響資訊液晶顯示螢幕

 

假期前拆出來, 沒有特別卻是發現電線怎麼會這麼山寨的做法, 隨便兩支銅線扭起來再用黑色的電工膠帶隨便糊一下, 可能日久, 電工膠帶也是沒啥黏性, 開始脫落. 車主說應該買來就那樣, 因為都是原車原裝的, LCD 也是原車來的, 從來沒換過…….這…..到底是…..太山寨的做法了, 也有危險, 不是車廠出品就是賣車的那些人搞的, 這就是良莠不齊的明顯特徵. 假日帶回來有焊接工具的地點, 看看到底甚麼問題. 車齡不算長也不算短, 大概是電容老化. 換了電容和穩壓IC, 順道給它的山寨接線的插座焊好線, 結實電氣連接, 再用熱縮管絕緣, 也是隔絕潮濕, 避免線路氧化, 外面再加電工膠帶糊緊.

問題解決了, 顯示恢復正常. 有些東西就是通常沒啥大用, 但是壞了就很不方便, 必須儘快和儘可能修復, 除非花大錢改革安裝新品, 但是一般來說不太合乎經濟效益, 這個LCD資訊盒子也是一樣. 幫忙DIY 一下, 省下不必要的開銷, 算是利人利己.

 

SAVRIN 音響資訊液晶顯示螢幕LCD BOX INSIDE
SAVRIN 音響資訊液晶顯示螢幕LCD BOX INSIDE

順到看看接頭, 共有12個洞, 但是只有6支針腳, 扣掉VCC 和 GND, 剩下4支腳, 看它的刻字, +ILL, +ACC, O, CE, CL, DI, 估計是 SPI INTERFACE, 猜它的意思,

+ILL, Idle Light, power +12V, 插鑰匙, 不發動引擎開音響

+ACC, power +12V, 發動引擎開音響

O, GND

CE, Chip Enable

CL, CLOCK

DI, Data Input

 

7-SEGMENT LCD glass, 有做過 library 的請分享

https://goo.gl/5KhEgZ

LCD_glass_AC_drive.jpg
LCD_glass_AC_drive.jpg

7劃管的, 8字, LCD 玻璃
請問有 C library 可以分享好抄來改改嗎
AVR 或者 8051 的都可以
當然, 不會白問白要的

如果要用到 LCD 玻璃, 當然買到有 DATASHEET 的就最好萬一沒有, 也可以自行反推出來. 公開一下俺的做法, 高手或者行業的專家不要砸磚塊. 要DIY或者手邊有多餘的LCD玻璃, 也可以用這個方法應用在DIY 的 PROJECT 上當然, 用7-SEGMENT LED 就最簡單, 不過比LCD來說就耗電耗很大大.

方法如下,
拿到一片不知名的 7-SEGMENT LCD GLASS 以後,

自己組一個AC的驅動器, 輸出電壓可調, 電流可以是 0.001mA, 你沒看錯, 沒錯, 是milli-Ampere, 不是 Ampere, 基本LCD玻璃不需要電流, 所以跳字手表才會那麼省電. 輸出電壓可調大約 2VAC 到 5VAC, 要全部筆畫顯示, 用高點的電壓, 要找出筆畫的 MAPPING, 大約2.5VAC. 得到這個AC電壓的方法很多, 其中一種是隨便一個小的變壓器輸入110VAC或220VAC, 看當地電力公司的電壓, 變壓器12VAC輸出, 搭配 VR 和 電阻, 就可以得到2VAC 到 5VAC, 記得, 要用交流電驅動LCD玻璃, 用直流電也可以, 短時間還好, 長時間就會像喇叭被消磁一樣, LCD會死的. AC的驅動器的詳細看以下圖片,

LCD_glass_AC_drive.jpg
LCD_glass_AC_drive.jpg

有了AC的驅動器, 就可以慢慢一個一個 PIN – MAPPING 找出來, 用 EXCEL 組成一個表, 以後寫驅動程式或者顯示數字就靠它了. 最好用就是把這些 LCD 做 FREQUENCY COUNTER / ESR METER 等等需要顯示數字的, 每年畢業生都要交 FYP. 或者把報廢的12 DIGIT 計數機的LCD拿來做12位頻率計, 比44780好用和省電, 體積小了, 3.7V電池也可以用小的.

PIN-MAPPING TABLE 找到了, 詳細看圖,

LCD_glass_AC_drive.jpg
LCD_glass_AC_drive.jpg

關於MCU IO 直接驅動 LCD GLASS, 有很多文獻有講解原理, 這是其一, 或者寫的不太好, 不過能夠看明白的.
http://cache.freescale.com/files … app_note/AN1763.pdf

為了更好的理解 LCD 是怎樣被驅動和顯示數字的, 先來學習一下原理. LCD 的每個筆畫 (或者每個像素), 有兩個透明的電極, 中間填入液晶 (TN), 構成了一個電容, 這個電容有點特別, 它可以被人的眼睛看見它動作的過程, 每次對它充電或放電, 它就會把光線隔斷, 因此被看見了. 為了方便試驗, 用了8051模擬器, 使用PORT1, 短名字稱為P1, 任何兩支腳, 例如 P1.0 和 P1.1 兩支腳, 產生5VAC, 使LCD其中的一筆畫顯現了. 如果沒有MCU, 其實手動開關一樣有這樣的效果.

至於產生5V AC的程序很簡單, 首先把P1設定成10101010, 過一陣子, P1設定成01010101, 再過一陣子, 重複前面的動作, 不會停止直到沒電. 使用兩個 LED 連到 P1.0 和 P1.1, 就會看到藍色和白色LED輪流閃爍, 這樣就是5V AC的表現, LCD 的其中一筆畫也顯現出來.
設計的電路圖長這樣,

LCD_glass_AC_drive.jpg
LCD_glass_AC_drive.jpg
LCD_glass_AC_drive.jpg
LCD_glass_AC_drive.jpg

動作片段看起來是這樣,
https://youtu.be/67vTWbES_I4

8051的源碼和燒寫文件, 89S51 / 89C51 / 89C2051 可以燒.

;source code
;Free assembler download : https://www.pjrc.com/tech/8051/tools/as31_beta3_win32.zip
;win7, 64bit, tested
.org 0000h         ;for 8051
;.org 1000h        ;for 89C51_NoICE, user area


mov P1, #10101010B        ;send 10101010 to Port 1
loop:
xrl P1, #0FFH                ;toggle all bits,   i.e. P1 = 01010101

mov A, #30        ; more delay, slow LED blinking, easy to visual
more:
acall delay        ; call delay procedure
dec A
jnz more

sjmp loop        ; make this operation to run repeatedly

delay:
; entry : N/A
; exit  : N/A
; changed : R0, R1
mov R1,#010h  ; initialize the R1 register with an immediate value 10h = 16d
mov R0,#0FFh  ; load R0 with FFh value to repeat the loop for 256 times
back:
DJNZ R0, back   ;internal loop repeates 256 times
DJNZ R1,back    ;external loop repeates 16 times
RET




HEX file :
:100000007590AA6390FF741E110F1470FB80F47931
:080010001078FFD8FED9FC2294
:00000001FF

美術或者商家, 都很喜歡用一套詞語或說法, 先建立一個點, 然後再建立另外一個點, 把它連成線, 再繼續連更多的線, 構成一個面.
有了顯示一個點 (8字LCD的單一個筆畫), 那下一步要試驗顯示兩個點或更多. 到底怎樣做呢 ? 很簡單, 同時加電到其他電極就好了. 實際上, 要顯示有意義的數目或文字, 還沒到時候, 或者火候不夠, 怎樣說呢 ?!

先來看看, 7-SEGMENT 的筆畫排列和提供電力的位置, 如果要顯示一個8字或日字, 那7個筆畫的電容(名稱和排列稱為 a,b,c,d,e,f)都要給它充電放電 (方法前面已經實驗過了), 沒有難度. 但是問題來了, 如過要顯現一個7字, 筆畫 a,b,c 都要動起來, 但是會意外的看到旁邊的那個小數點也不由自主的出現, 再來會有更多的例子, 如過要顯示其它數字. 所以, 先做個實驗, 看看同時顯示兩筆畫, 會是怎樣的情形. 以下的實驗, 純粹驅動 COM1 和 SEG1 / SEG2, 理論上會顯示筆畫 d 和小數點. 實際上也做到了. MCU 程序也是很簡單, COM1設成5V, SEG1 和 SEG2 設成0V, 兩個電容被充電, 過一陣子, 把它們翻轉過來, COM1設成0V, SEG1 和 SEG2 設成5V (記得前面研討過的交流供電方式).

設計的電路圖長這樣,

LCD_glass_AC_drive.jpg
LCD_glass_AC_drive.jpg
LCD_glass_AC_drive.jpg
LCD_glass_AC_drive.jpg
LCD_glass_AC_drive.jpg
LCD_glass_AC_drive.jpg

動作片斷看起來無特別, 跟一個筆畫的無大分別, 只是多了一點. 那為何電路圖看來複雜了那麼多? 看圖就知道, 因為 LCD GLASS 不喜歡太高的電壓 (例如5V), 所以要適當給它降低到2.5V, 另外這個使用中 8051的除錯器是低成本的工具加玩具, 方便設計實驗, 只留PORT1 / PORT3給使用, P0/P2用做SRAM的接口, 它唯一的好處是不用燒寫MCU, LOAD就可以把HEX裝到SRAM開始執行, 並且可以由USB連到電腦一步一步看到CPU執行程序. 另外8051的設計, P1.0沒有輸入HI-Z, 而且8051 I/O PORT的設計也有別於其他MCU (有人寫了原因, 不熬述, [url]http://www.edsim51.com/8051Notes/8051/parallelInputOuput.html[/url])

那, 要顯示有意義的數字或字母, 必須用人家施行的方法, 每個筆畫顯示一下, 然後輪到下一個筆畫, 逐個筆畫做一次, 直至完成8個點, 這樣做就由[點] 演變成 [面] 的顯示 (或許可叫做Scanning charging, 因LCD每個筆畫(像素)是一個電容), 提供了更多的人易於理解的資訊, 只要設計適當, 人的眼睛的動態緩慢反應的現象 (視覺暫留 VISUAL PERSISTENCE) 和電容儲電的總體效果會造成眼睛看到一個完整數字或字母 (人的腦袋和眼睛其實不太聰明, 很容易被騙了). 片斷的顯示, 是設計不做完美的現象, 看到它在閃爍或不完全. 不過, 這個是Scanning charging的具體表現, 具體的程序也是很簡單, 口語化如下,

COM1設成5V, SEG1 和 SEG2 設成0V, 過一陣子, COM1設成0V, SEG1 和 SEG2 設成5V, 過一陣子
COM2設成5V, SEG1 和 SEG2 設成0V, 過一陣子, COM2設成0V, SEG1 和 SEG2 設成5V, 過一陣子
COM3設成5V, SEG1 和 SEG2 設成0V, 過一陣子, COM3設成0V, SEG1 和 SEG2 設成5V, 過一陣子
COM4設成5V, SEG1 和 SEG2 設成0V, 過一陣子, COM4設成0V, SEG1 和 SEG2 設成5V, 過一陣子
重複以上動作.

動作片段看起來是這樣,
https://youtu.be/59LZabw_-_k

8051的源碼和燒寫文件, 89S51 / 89C51 / 89C2051 可以燒.

;; MCU 12MHZ, 89S51 ICE Monitor, USB connection
;; Load HEX to MCU, command, l
;; Run user program, command, g
;; .org must be set to 1000h for debug mode
;; .org set to 0000h for release


;external voltage divider port 1, port1 used to drive com & seg lines, a,b,c,d,e,f,g,dot of seven-segment LCD glass
; P1.0 com1
; P1.1 com2
; P1.2 com3
; P1.3 com4

; P1.4 seg1
; P1.5 seg2

.equ com1, 0x01
.equ com2, 0x02
.equ com3, 0x04
.equ com4, 0x08
.equ seg1, 0x10 
.equ seg2, 0x20


        .org 0000h         ;for 8051
        ;.org 1000h        ;for 89C51_NoICE, user area
        
        nop
        nop

        mov P1,#00h          ;initialize the Port1, all output

start:
com1go:        mov A, #com1
        mov P1, A
        acall delay4   ; call delay procedure

        mov A, #com1
        CPL A        ;not Acc        ;invert
        mov P1, A
        acall delay4   ; call delay procedure

;        sjmp start        ; make this operation to run repeatedly

com2go:        mov A, #com2
        mov P1, A
        acall delay4   ; call delay procedure

        mov A, #com2
        CPL A        ;not Acc
        mov P1, A
        acall delay4   ; call delay procedure


com3go:        mov A, #com3
        mov P1, A
        acall delay4   ; call delay procedure

        mov A, #com3
        CPL A        ;not Acc
        mov P1, A
        acall delay4   ; call delay procedure


com4go:        mov A, #com4
        mov P1, A
        acall delay4   ; call delay procedure

        mov A, #com4
        CPL A        ;not Acc
        mov P1, A
        acall delay4   ; call delay procedure
        
        sjmp start        ; make this operation to run repeatedly


delay:
; entry : N/A
; exit  : N/A
; changed : R0, R1
        mov R1,#010h  ; initialize the R1 register with an immediate value 10h = 16d
        mov R0,#0FFh  ; load R0 with FFh value to repeat the loop for 256 times
        back:
        DJNZ R0, back   ;internal loop repeates 256 times
        DJNZ R1,back    ;external loop repeates 16 times
        RET

delay2: 
        acall delay   ; call delay procedure
        acall delay   ; call delay procedure
        ret

delay3:
        acall delay   ; call delay procedure
        acall delay   ; call delay procedure
        acall delay   ; call delay procedure
        ret

delay4:
        acall delay   ; call delay procedure
        acall delay   ; call delay procedure
        acall delay   ; call delay procedure
        acall delay   ; call delay procedure
        ret

delay5:
        acall delay   ; call delay procedure
        acall delay   ; call delay procedure
        acall delay   ; call delay procedure
        acall delay   ; call delay procedure
        acall delay   ; call delay procedure
        ret


; uses A31 assembler, comment out below
;END





HEX file :
:1000000000007590007401F59011717401F4F59081
:1000100011717402F59011717402F4F590117174FC
:1000200004F59011717404F4F59011717408F59051
:1000300011717408F4F590117180CA7590AA6390DB
:10004000FF741E115C1470FB80F43F065B4F666DFD
:100050007D077F6F777C395E79714000791078FF7A
:10006000D8FED9FC22115C115C22115C115C115C80
:1000700022115C115C115C115C22115C115C115C41
:05008000115C115C227F
:00000001FF

既然 80C51的 PORT1 不提供高阻抗 HI-Z 的輸入模式, 因此不能拿來用作最終的試驗. 因此換了一下, 用手邊有的, 例如ATMEGA328P, 因為他的PORT-D 的每只腳可以設定成3個狀態, 分別是
1) 輸入 (HI-Z)
2) 輸出 (HIGH)
3) 輸出 (LOW)
如果用3V電池供電, 用電阻分壓, 接到每只腳, 再加以MCU的程序控制, 每只腳則可得到 0V, 1.5V 及 3V 三種電壓
這樣就可以完成試驗了, 因此也順利顯示了兩組字符, 分別為 70 和 EF, 示範.

LCD_glass_AC_drive.jpg
LCD_glass_AC_drive.jpg
LCD_glass_AC_drive.jpg
LCD_glass_AC_drive.jpg

https://youtu.be/_FCZ6nxlt9I


AVR的源碼和燒寫文件, ATMEGA328P 可以燒.

/*
xiaoalab
LCD glass driver testing
MCU : ATmega328p
PORTD used for LCD glass interface
Vcc : 3V, must be
compiler : arduino 0022
 */

// port D, 8 bit, bit7 to bit0, connects to LCD glass, pin out
#define com1 0x01
#define com2 0x02
#define com3 0x04
#define com4 0x08

#define seg1a 0x10  //1st digit, seg-a
#define seg1b 0x20  //1st digit, seg-b
#define seg2a 0x40  //2nd digit, seg-a
#define seg2b 0x80  //2nd digit, seg-b


#define delay_const 4



void setup() {                
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(13, OUTPUT);

  DDRD = 0; // port D, all bit, input mode
  PORTD = 0; // write 0x00 to port D while it is in input mode, disable all pull up
}

void loop() {

  PINB = bit (5); // toggle D13
  
  showEF();  //LCD glass will display EF, two digits
  showEF();
  showEF();
  showEF();
  showEF();
  showEF();
  showEF();
  showEF();

  show70();  ////LCD glass will display 70, two digits
  show70();
  show70();
  show70();
  show70();
  show70();
  show70();
  show70();

}


void showEF ()
{
  DDRD = com1 + seg1a + seg1b + seg2a + seg2b;  // output pin setup, com1= 0v, com2,com3,com4 input mode, 1.5V
  PORTD = seg1a;
  delay(delay_const);
  PORTD ^= com1 + seg1a + seg1b + seg2a + seg2b;  //toggle output pins, produces AC to drive LCD comX-segX
  delay(delay_const);
  

  DDRD = com2 + seg1a + seg1b + seg2a + seg2b;  // output pin setup, com2= 0v, com1,com3,com4 input mode, 1.5V
  PORTD =  seg1a  + seg2a;
  delay(delay_const);
  PORTD ^= com2 + seg1a + seg1b + seg2a + seg2b;
  delay(delay_const);


  DDRD = com3 + seg1a + seg1b + seg2a + seg2b;  // output pin setup, com3= 0v, com1,com2,com4 input mode, 1.5V
  PORTD = seg1a  + seg2a;
  delay(delay_const);
  PORTD ^= com3 + seg1a + seg1b + seg2a + seg2b;
  delay(delay_const);


  DDRD = com4 + seg1a + seg1b + seg2a + seg2b;  // output pin setup, com4= 0v, com1,com2,com3 input mode, 1.5V
  PORTD = seg1a + seg1b + seg2a + seg2b;
  delay(delay_const);
  PORTD ^= com4 + seg1a + seg1b + seg2a + seg2b;
  delay(delay_const);
}


void show70 ()
{
  DDRD = com1 + seg1a + seg1b + seg2a + seg2b;
  PORTD = seg2a;
  delay(delay_const);
  PORTD ^= com1 + seg1a + seg1b + seg2a + seg2b;
  delay(delay_const);
  

  DDRD = com2 + seg1a + seg1b + seg2a + seg2b;
  PORTD =  seg1b  + seg2a + seg2b;
  delay(delay_const);
  PORTD ^= com2 + seg1a + seg1b + seg2a + seg2b;
  delay(delay_const);


  DDRD = com3 + seg1a + seg1b + seg2a + seg2b;
  PORTD = seg1b  + seg2b;
  delay(delay_const);
  PORTD ^= com3 + seg1a + seg1b + seg2a + seg2b;
  delay(delay_const);


  DDRD = com4 + seg1a + seg1b + seg2a + seg2b;
  PORTD = seg1b + seg2a + seg2b;
  delay(delay_const);
  PORTD ^= com4 + seg1a + seg1b + seg2a + seg2b;
  delay(delay_const);
}

// end of program, source code



HEX
:100000000C9461000C947E000C947E000C947E0095
:100010000C947E000C947E000C947E000C947E0068
:100020000C947E000C947E000C947E000C947E0058
:100030000C947E000C947E000C947E000C947E0048
:100040000C944A010C947E000C947E000C947E006B
:100050000C947E000C947E000C947E000C947E0028
:100060000C947E000C947E00000000002400270009
:100070002A0000000000250028002B0000000000DE
:1000800023002600290004040404040404040202DA
:100090000202020203030303030301020408102007
:1000A0004080010204081020010204081020000012
:1000B0000007000201000003040600000000000029
:1000C000000011241FBECFEFD8E0DEBFCDBF11E08E
:1000D000A0E0B1E0EAEAF4E002C005900D92A030A1
:1000E000B107D9F711E0A0E0B1E001C01D92A9303D
:1000F000B107E1F70E944C020C9453020C940000EB
:100100000F931F9311EF1AB980E48BB964E070E08C
:1001100080E090E00E9492018BB181278BB964E06E
:1001200070E080E090E00E94920112EF1AB900EEB8
:100130000BB964E070E080E090E00E9492018BB126
:1001400081278BB964E070E080E090E00E9492012A
:1001500014EF1AB980EA8BB964E070E080E090E0B7
:100160000E9492018BB181278BB964E070E080E03E
:1001700090E00E94920118EF1AB90BB964E070E0A8
:1001800080E090E00E9492018BB181278BB964E0FE
:1001900070E080E090E00E9492011F910F9108951D
:1001A0000F931F9311EF1AB980E18BB964E070E0EF
:1001B00080E090E00E9492018BB181278BB964E0CE
:1001C00070E080E090E00E94920112EF1AB900E521
:1001D0000BB964E070E080E090E00E9492018BB186
:1001E00081278BB964E070E080E090E00E9492018A
:1001F00014EF1AB90BB964E070E080E090E00E945F
:1002000092018BB181278BB964E070E080E090E0CF
:100210000E94920118EF1AB980EF8BB964E070E088
:1002200080E090E00E9492018BB181278BB964E05D
:1002300070E080E090E00E9492011F910F9108957C
:1002400080E283B90E94D0000E94D0000E94D000BA
:100250000E94D0000E94D0000E94D0000E94D000D6
:100260000E94D0000E9480000E9480000E948000B6
:100270000E9480000E9480000E9480000E948000F6
:100280000E94800008958DE061E00E9426021AB865
:100290001BB808951F920F920FB60F9211242F933F
:1002A0003F938F939F93AF93BF938091040190915D
:1002B0000501A0910601B091070130910801019656
:1002C000A11DB11D232F2D5F2D3720F02D57019635
:1002D000A11DB11D20930801809304019093050195
:1002E000A0930601B0930701809100019091010154
:1002F000A0910201B09103010196A11DB11D80934F
:10030000000190930101A0930201B0930301BF91FA
:10031000AF919F918F913F912F910F900FBE0F90B2
:100320001F9018959B01AC017FB7F8948091000154
:1003300090910101A0910201B091030166B5A89BC3
:1003400005C06F3F19F00196A11DB11D7FBFBA2FE7
:10035000A92F982F8827860F911DA11DB11D62E03E
:10036000880F991FAA1FBB1F6A95D1F7BC012DC02A
:10037000FFB7F8948091000190910101A0910201D2
:10038000B0910301E6B5A89B05C0EF3F19F00196B7
:10039000A11DB11DFFBFBA2FA92F982F88278E0F3F
:1003A000911DA11DB11DE2E0880F991FAA1FBB1F5F
:1003B000EA95D1F7861B970B885E9340C8F22150CF
:1003C00030404040504068517C4F21153105410577
:1003D000510571F60895789484B5826084BD84B522
:1003E000816084BD85B5826085BD85B5816085BD30
:1003F000EEE6F0E0808181608083E1E8F0E0108249
:10040000808182608083808181608083E0E8F0E089
:10041000808181608083E1EBF0E080818460808373
:10042000E0EBF0E0808181608083EAE7F0E08081AA
:10043000846080838081826080838081816080830A
:100440008081806880831092C1000895482F50E019
:10045000CA0186569F4FFC0124914A575F4FFA010B
:1004600084918823C1F0E82FF0E0EE0FFF1FE859D8
:10047000FF4FA591B491662341F49FB7F8948C91F6
:10048000209582238C939FBF08959FB7F8948C91F9
:10049000822B8C939FBF08950E94EB010E94430121
:0A04A0000E942001FDCFF894FFCF69
:00000001FF

.

.

.

話說到這裡, 等待高手提供  C library 了