LCD 1 LCD pin 14 pin 1 symbol
LCD 1
LCD接腳說明 pin • 14 pin 1 symbol Vss ground 2 VDD +5 v 3 Vo 量度調整 4 RS 暫存器選擇 5 R/W 讀寫控制 6 E 致能信號 7 -14 DB 0 -DB 7 資料匯流排 3
LCD顯示資料 • HD 44780內部顯示資料 80 bytes • DD RAM (Display Data RAM) 16 x 1 LCD 0 1 2 00 h 01 h 02 h …. 14 0 Eh 15 0 Fh 4
20 x 2 LCD 0 00 h 0 2 01 h 02 h …. . … 18 12 h 19 13 h 40 h 41 h 42 h … 52 h 53 h 5
HD 44780主要特性 • 80 bytes 的 DD RAM • 內建 192個5 x 7的CG ROM • 64 bytes 的CG RAM • 內部暫存器: 指令(IR)及資料(DR) 6
• 游標規位: 將DD RAM的位址計數器設為 00 h, 不 改變DD RAM內部值 RS 0 R/W 0 Db 7 Db 6 Db 5 0 0 0 Db 4 Db 3 0 0 Db 2 0 Db 1 1 Db 0 x 10
• CG RAM 位址設定: 此指令將CG RAM的位址(DB 5 -DB 0)寫入位址計 數器(AC) RS 0 R/W 0 Db 7 Db 6 Db 5 0 1 A Db 4 Db 3 A A Db 2 A Db 1 A Db 0 A 17
• DD RAM 位址設定: 此指令將DD RAM的位址(DB 6 -DB 0)寫入位址計 數器(AC) RS 0 R/W 0 Db 7 Db 6 Db 5 1 A A Db 4 Db 3 A A Db 2 A Db 1 A Db 0 A 18
• 寫資料到CG RAM 或DD RAM: 此指令將前一次位址指令所設定之RAM 的位址(CG RAM 或DD RAM) 將資料(DB 7 -DB 0) 寫入到CG RAM 或DD RAM RS 1 R/W 0 Db 7 Db 6 Db 5 D Db 4 Db 3 D D Db 2 D Db 1 D Db 0 D 20
• 自CG RAM 或DD RAM讀取資料: 此指令將讀取CG RAM 或DD RAM 之資料 RS 1 R/W 1 Db 7 Db 6 Db 5 D Db 4 Db 3 D D Db 2 D Db 1 D Db 0 D 21
; PROGRAM : 5 -5. ASM (5 -5. PRJ) ; FUNCTION: 16 X 2 LCD DEMO PROGRAM #INCLUDE HT 46 R 23. INC. CHIP HT 46 R 23 ; ----------------------------------MY_DATA. SECTION 'DATA' ; == DATA SECTION == DEL 1 DB ? ; DELAY LOOP COUNT 1 DEL 2 DB ? ; DELAY LOOP COUNT 2 DEL 3 DB ? ; DELAY LOOP COUNT 3 DC_FLAG DBIT ; LCD DATA/COMMAND FLAG LINE_COUNT DB ? ; DISPLAY LINE COUNT ; ----------------------------------LCD_CONTR EQU PA ; DEFINE LCD CONTROL PORT LCD_CONTRC EQU PAC ; DEFINE LCD CONTROL PORT CON. REG. LCD_DATA EQU PB ; DEFINE LCD DATA PORT LCD_DATAC EQU PBC ; DEFINE LCD DATA PORT CON. REG. LCD_EN EQU LCD_CONTR. 0 ; DEFINE EN CONTROL PIN LCD_RW EQU LCD_CONTR. 1 ; DEFINE RW CONTROL PIN LCD_RS EQU LCD_CONTR. 2 ; DEFINE RS CONTROL PIN LCD_READY EQU PB. 7 ; DEFINE READY BIT OF LCD 22
MY_CODE ORG CLR MOV CALL . SECTION AT 0 00 H LCD_CONTRC A, 38 H WLCMC A, 0 FH WLCMC A, 06 H WLCMC 'CODE' ; == PROGRAM SECTION == ; HT-46 RXX RESET VECTOR ; CONFIG LCD_CONTR PORT AS OUTPUT MODE ; FUNCTION SET: 8 -BIT, 2 -LINE, 5 X 10 DOTS ; 雙行顯示N=1, 5 x 7點矩陣, F=0, DL=1控制模式DB 7 -DB 0 ; ON/OFF CONTR: DISPLAY ON, CURSOR ; ON, BLINKING ON ; 顯示所有資料D=1, 顯示游標C=1, 閃爍B=1 ; ENTRY MODE : INCREMENT, DISPLAY NOT SHIFT ; 旗標AC設為遞加I/D=1, 顯示器劃面不移動S=0 MAIN: MOV CALL MOV A, 01 H ; CLEAR DISPLAY A, 80 H ; SET LINE ONE, POSITION 0 WLCMC A, 10 H LINE_COUNT, A ; SET LINE COUNTER 16個位置 23
MAIN_1: MOV CALL SDZ JMP MOV CALL MOV A, 31 H WLCMD DELAY LINE_COUNT MAIN_1 A, 0 C 0 H WLCMC A, 16 LINE_COUNT, A ; WRITE '1‘, ASCII=31 ; 寫入資料 ; DELAY 100 m. S ; LINE_COUNT-1 = 0? ; NO, NEXT POSITION ; SET LINE TWO, POSITION 0 ; 寫入命令 ; SET LINE COUNTER MAIN_2: MOV CALL SDZ JMP A, 32 H WLCMD DELAY LINE_COUNT MAIN_2 MAIN ; WRITE '2‘, ASCII=32 ; 寫入資料 ; DELAU 100 m. S ; LINE_COUNT-1 = 0? ; NO, NEXT POSITION ; RE-START 24
; ********************************** ; LCD DATA/COMMAND WRITE PROCEDURE ; ********************************** WLCMD PROC SET DC_FLAG ; SET DC_FLAG=1 FOR DATA WRITE JMP WLCMC: CLR DC_FLAG ; SET DC_FLAG=0 FOR COMMAND WRITE WLCM: SET LCD_DATAC ; CONFIG LCD_DATA AS INPUT MODE CLR LCD_CONTR ; CLEAR ALL LCD CONTROL SIGNAL ; E=0, RS=0, RW=0 SET LCD_RW ; SET RW SIGNAL (READ) NOP ; FOR TAS SET LCD_EN ; SET EN HIGH NOP ; FOR TDDR 25
WF: SZ JMP CLR MOV CLR SZ SET NOP CLR RET WLCMD ENDP LCD_READY WF LCD_DATAC ; IS LCD BUSY? ; YES, JUMP TO WAIT ; NO, CONFIG LCD_DATA AS ; OUTPUT MODE LCD_DATA, A ; LATCH DATA/COMMAND ON PB(LCD ; DATA BUS) LCD_CONTR ; CLEAR ALL LCD CONTROL SIGNAL DC_FLAG ; IS COMMAND WRITE? LCD_RS ; NO, SET RS HIGH LCD_EN ; SET EN HIGH ; 讓LCD有足夠時間完成 作 LCD_EN ; SET EN LOW 26
; ********************************** ; Delay about DEL 1*10 m. S ; ********************************** DELAY PROC MOV A, 10 MOV DEL 1, A DEL_1: MOV A, 30 MOV DEL 2, A DEL_2: MOV A, 110 MOV DEL 3, A DEL_3: SDZ DEL 3 JMP DEL_3 SDZ DEL 2 JMP DEL_2 SDZ DEL 1 JMP DEL_1 RET DELAY ENDP END ; SET DEL 1 COUNTER ; SET DEL 2 COUNTER ; SET DEL 3 COUNTER ; DEL 3 DOWN COUNT ; DEL 2 DOWN COUNT ; DEL 1 DOWN COUNT 27
- Slides: 27