Download presentation
Presentation is loading. Please wait.
1
1 LCD
2
2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組
3
3 LCD 接腳說明 14 pin pinsymbol 1Vssground 2VDD+5v 3Vo 量度調整 4RS 暫存器選擇 5R/W 讀寫控制 6E 致能信號 7-14DB0-DB7 資料匯流排
4
4 LCD 顯示資料 HD44780 內部顯示資 料 80 bytes DD RAM (Display Data RAM) 16 x 1 LCD 012….1415 00h01h02h0Eh0Fh
5
5 002…..1819 00h01h02h…12h13h 40h41h42h…52h53h 20x2 LCD
6
6 HD44780 主要特性 80 bytes 的 DD RAM 內建 192 個 5x7 的 CG ROM 64 bytes 的 CG RAM 內部暫存器 : 指令 (IR) 及資料 (DR)
7
7 IR 暫存器 : 僅可寫入, 規劃 LCD 清除顯示 功能設定 DDR RAM/CG RAM 位 址設定 DR 暫存器 : 為外部寫資料到 LCD DD RAM 或 CG RAM 的資料緩衝區 為外部讀取 LCD DD RAM 資料或 CG RAM 時的資料緩衝區
8
8 LCD 內部旗號與暫存器 忙碌旗標 (BF):BF=1 外部控制 LCD 晶片無法 對 LCD 寫入動作 資料顯示記憶體 (DD RAM):80 Bytes 字元產生記憶體 (CG ROM):192 個 5x7 點矩 陣字型 自建字元產生器記憶體 (CG RAM):8 個字型 位址計數器 (AC): 指示寫資料到 DD RAM 或 CG RAM 的位址
9
9 LCD 模組指令說明 : 將指令寫入 IR 暫存器即可控 制 LCD 清除顯示器 : 將 DD RAM 的所有位址填入空白 碼 (20h), DD RAM 位址計數器 (AC=00h) RS 0 R/W 0 Db7 0 Db6 0 Db5 0 Db4 0 Db3 0 Db2 0 Db1 0 Db0 1
10
10 游標規位 : 將 DD RAM 的位址計數器設為 00h, 不改變 DD RAM 內部值 RS 0 R/W 0 Db7 0 Db6 0 Db5 0 Db4 0 Db3 0 Db2 0 Db1 1 Db0 x
11
11 進入模式 : I/D=0 當外部寫資料到 DD RAM 或從 DD RAM 讀取資料後, 位址計 數器減 1, 游標向左移動 I/D=1 當外部寫資料到 DD RAM 或從 DD RAM 讀取資料後, 位址計 數器加 1, 游標向右移動 S=1 當外部寫資料到 DD RAM 後, 整個顯示器會向左移 (I/D=0), 向右 移 (I/D=1), 從 DD RAM 讀取資料顯示器不會移動 S=0 顯示器不會移動 RS 0 R/W 0 Db7 0 Db6 0 Db5 0 Db4 0 Db3 0 Db2 1 Db1 I/D Db0 S
12
12 顯示器 ON/OFF 控制 : D=0: 所有資料不顯示 D=1: 所有資料顯示 C=0: 不顯示游標 C=1: 顯示游標 B=0: 游標不閃爍 B=1: 游標閃爍 RS 0 R/W 0 Db7 0 Db6 0 Db5 0 Db4 0 Db3 1 Db2 D Db1 C Db0 B
13
13 游標或顯示器移動 : 指令在不改變顯示資料之下移動游標位置或是 控制顯示器向左或向右移動 RS 0 R/W 0 Db7 0 Db6 0 Db5 0 Db4 1 Db3 S/C Db2 R/L Db1 x Db0 x
14
14 S/CR/L 動作 00 游標位置向左移 (AC 值減 1) 01 游標位置向右移 (AC 值加 1) 10 顯示的資料連同游標一起 向左移 11 顯示的資料連同游標一起 向右移
15
15 功能設定 : 規劃 LCD 時功能設定指令必需最先執行 設定資料位元長度 : DL=0 使用四位元 (DB7-DB4) 控制程式, 先高 四位元再低四位元 DL=1 使用八位元 (DB7-DB0) 控制程式 RS 0 R/W 0 Db7 0 Db6 0 Db5 1 Db4 DL Db3 N Db2 F Db1 x Db0 x
16
16 設定顯示器的行數 N=0 單行顯示 N=1 雙行顯示 設定字型 F=0 5x7 點矩陣字型 F=1 5x10 點矩陣字型
17
17 CG RAM 位址設定 : 此指令將 CG RAM 的位址 (DB5-DB0) 寫入位址 計數器 (AC) RS 0 R/W 0 Db7 0 Db6 1 Db5 A Db4 A Db3 A Db2 A Db1 A Db0 A
18
18 DD RAM 位址設定 : 此指令將 DD RAM 的位址 (DB6-DB0) 寫入位址 計數器 (AC) RS 0 R/W 0 Db7 1 Db6 A Db5 A Db4 A Db3 A Db2 A Db1 A Db0 A
19
19 讀取忙碌旗標 (BF) 和位址 (AC): 此指令將 DD RAM 的位址 (DB6-DB0) 寫入位址 計數器 (AC) 當 BF=1 表示目前 LCD 忙碌內部工作, 因此無法 接受外部資料 當 BF=0 才可接受命令或資料 RS 0 R/W 1 Db7 BF Db6 A Db5 A Db4 A Db3 A Db2 A Db1 A Db0 A
20
20 寫資料到 CG RAM 或 DD RAM: 此指令將前一次位址指令所設定之 RAM 的位址 (CG RAM 或 DD RAM) 將資料 (DB7-DB0) 寫入到 CG RAM 或 DD RAM RS 1 R/W 0 Db7 D Db6 D Db5 D Db4 D Db3 D Db2 D Db1 D Db0 D
21
21 自 CG RAM 或 DD RAM 讀取資料 : 此指令將讀取 CG RAM 或 DD RAM 之資 料 RS 1 R/W 1 Db7 D Db6 D Db5 D Db4 D Db3 D Db2 D Db1 D Db0 D
22
22 ;PROGRAM : 5-5.ASM (5-5.PRJ) ;FUNCTION: 16X2 LCD DEMO PROGRAM #INCLUDEHT46R23.INC.CHIPHT46R23 ;-------------------------------------------------------------------- MY_DATA.SECTION'DATA' ;== DATA SECTION == DEL1 DB ? ;DELAY LOOP COUNT 1 DEL2 DB ? ;DELAY LOOP COUNT 2 DEL3DB?;DELAY LOOP COUNT 3 DC_FLAGDBIT;LCD DATA/COMMAND FLAG LINE_COUNTDB?;DISPLAY LINE COUNT ;-------------------------------------------------------------------- LCD_CONTREQUPA;DEFINE LCD CONTROL PORT LCD_CONTRCEQUPAC;DEFINE LCD CONTROL PORT CON. REG. LCD_DATA EQUPB;DEFINE LCD DATA PORT LCD_DATAC EQUPBC;DEFINE LCD DATA PORT CON. REG. LCD_ENEQULCD_CONTR.0;DEFINE EN CONTROL PIN LCD_RWEQULCD_CONTR.1;DEFINE RW CONTROL PIN LCD_RSEQULCD_CONTR.2;DEFINE RS CONTROL PIN LCD_READY EQU PB.7;DEFINE READY BIT OF LCD
23
23 MY_CODE.SECTIONAT 0'CODE' ;== PROGRAM SECTION == ORG00H ;HT-46RXX RESET VECTOR CLRLCD_CONTRC ;CONFIG LCD_CONTR PORT AS OUTPUT MODE MOVA,38H;FUNCTION SET: 8-BIT,2-LINE,5X10 DOTS CALL WLCMC ; 雙行顯示 N=1,5x7 點矩陣,F=0, DL=1 控制模式 DB7-DB0 MOVA,0FH;ON/OFF CONTR: DISPLAY ON,CURSOR ; ON,BLINKING ON CALL WLCMC ; 顯示所有資料 D=1, 顯示游標 C=1, 閃爍 B=1 MOVA,06H;ENTRY MODE : INCREMENT,DISPLAY NOT SHIFT CALL WLCMC ; 旗標 AC 設為遞加 I/D=1, 顯示器劃面不移動 S=0 MAIN: MOVA,01H;CLEAR DISPLAY CALL WLCMC MOVA,80H;SET LINE ONE, POSITION 0 CALL WLCMC MOVA,10H MOVLINE_COUNT,A;SET LINE COUNTER 16 個位置
24
24 MAIN_1: MOVA,31H;WRITE '1‘, ASCII=31 CALL WLCMD ; 寫入資料 CALL DELAY ;DELAY 100mS SDZLINE_COUNT;LINE_COUNT-1 = 0? JMPMAIN_1;NO, NEXT POSITION MOVA,0C0H;SET LINE TWO, POSITION 0 CALL WLCMC ; 寫入命令 MOVA,16 MOVLINE_COUNT,A;SET LINE COUNTER MAIN_2: MOVA,32H;WRITE '2‘, ASCII=32 CALL WLCMD ; 寫入資料 CALL DELAY ;DELAU 100mS SDZLINE_COUNT;LINE_COUNT-1 = 0? JMPMAIN_2 ;NO, NEXT POSITION JMPMAIN;RE-START
25
25 ;******************************************************************** ; LCD DATA/COMMAND WRITE PROCEDURE ;******************************************************************** WLCMDPROC SETDC_FLAG;SET DC_FLAG=1 FOR DATA WRITE JMP WLCM WLCMC: CLRDC_FLAG ;SET DC_FLAG=0 FOR COMMAND WRITE WLCM: SETLCD_DATAC;CONFIG LCD_DATA AS INPUT MODE CLRLCD_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
26
26 WF: SZLCD_READY;IS LCD BUSY? JMPWF;YES, JUMP TO WAIT CLRLCD_DATAC ;NO, CONFIG LCD_DATA AS ; OUTPUT MODE MOVLCD_DATA,A ;LATCH DATA/COMMAND ON PB(LCD ; DATA BUS) CLRLCD_CONTR;CLEAR ALL LCD CONTROL SIGNAL SZDC_FLAG;IS COMMAND WRITE? SET LCD_RS;NO, SET RS HIGH SETLCD_EN;SET EN HIGH NOP; 讓 LCD 有足夠時間完成工作 CLR LCD_EN;SET EN LOW RET WLCMDENDP
27
27 ;******************************************************************** ; Delay about DEL1*10mS ;******************************************************************** DELAY PROC MOVA,10 MOVDEL1,A;SET DEL1 COUNTER DEL_1: MOV A,30 MOV DEL2,A;SET DEL2 COUNTER DEL_2:MOVA,110 MOVDEL3,A;SET DEL3 COUNTER DEL_3: SDZ DEL3 ;DEL3 DOWN COUNT JMP DEL_3 SDZ DEL2 ;DEL2 DOWN COUNT JMP DEL_2 SDZDEL1;DEL1 DOWN COUNT JMPDEL_1 RET DELAYENDP END
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.