27
1 LCD

1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

  • View
    256

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

1

LCD

Page 2: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

2

LCD 液晶顯示器• 文字型• 繪圖型• Hitachi (HD44780A)

• 80 個位元組

Page 3: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

3

LCD 接腳說明• 14 pin

pin symbol

1 Vss ground

2 VDD +5v

3 Vo 量度調整4 RS 暫存器選擇5 R/W 讀寫控制6 E 致能信號7-14 DB0-DB7 資料匯流排

Page 4: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

4

LCD 顯示資料• HD44780 內部顯示資料80 bytes

• DD RAM (Display Data RAM)

16 x 1 LCD

0 1 2 …. 14 15

00h 01h 02h 0Eh 0Fh

Page 5: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

5

0 0 2 ….. 18 19

00h 01h 02h … 12h 13h

40h 41h 42h … 52h 53h

20x2 LCD

Page 6: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

6

HD44780 主要特性• 80 bytes 的 DD RAM•內建 192 個 5x7 的 CG ROM• 64 bytes 的 CG RAM•內部暫存器 :指令 (IR) 及資料 (DR)

Page 7: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

7

IR 暫存器 :•僅可寫入 ,規劃 LCD•清除顯示 功能設定 DDR RAM/CG RAM 位址設定

DR 暫存器 :•為外部寫資料到 LCD DD RAM 或 CG RAM 的資料緩衝區

•為外部讀取 LCD DD RAM 資料或 CG RAM 時的資料緩衝區

Page 8: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

8

LCD 內部旗號與暫存器•忙碌旗標 (BF):BF=1 外部控制 LCD 晶片無法對 LCD 寫入動作

•資料顯示記憶體 (DD RAM):80 Bytes•字元產生記憶體 (CG ROM):192 個 5x7 點矩陣字型

•自建字元產生器記憶體 (CG RAM):8 個字型•位址計數器 (AC): 指示寫資料到 DD RAM 或CG RAM 的位址

Page 9: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

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

Page 10: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

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

Page 11: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

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

Page 12: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

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

Page 13: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

13

• 游標或顯示器移動 : 指令在不改變顯示資料之下移動游標位置或是控制顯示器向左或向右移動

RS

0

R/W

0

Db7

0

Db6

0

Db5

0

Db4

1

Db3

S/C

Db2

R/L

Db1

x

Db0

x

Page 14: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

14

S/C R/L 動作

0 0 游標位置向左移 (AC 值減 1)

0 1 游標位置向右移 (AC 值加 1)

1 0 顯示的資料連同游標一起向左移

1 1 顯示的資料連同游標一起向右移

Page 15: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

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

Page 16: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

16

設定顯示器的行數 N=0 單行顯示 N=1 雙行顯示設定字型 F=0 5x7 點矩陣字型 F=1 5x10 點矩陣字型

Page 17: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

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

Page 18: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

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

Page 19: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

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

Page 20: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

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

Page 21: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

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

Page 22: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

22

;PROGRAM : 5-5.ASM (5-5.PRJ) ;FUNCTION: 16X2 LCD DEMO PROGRAM #INCLUDE HT46R23.INC

.CHIP HT46R23;--------------------------------------------------------------------MY_DATA .SECTION 'DATA' ;== DATA SECTION ==DEL1 DB ? ;DELAY LOOP COUNT 1DEL2 DB ? ;DELAY LOOP COUNT 2DEL3 DB ? ;DELAY LOOP COUNT 3DC_FLAG DBIT ;LCD DATA/COMMAND FLAGLINE_COUNT DB ? ;DISPLAY LINE COUNT;--------------------------------------------------------------------LCD_CONTR EQU PA ;DEFINE LCD CONTROL PORTLCD_CONTRC EQU PAC ;DEFINE LCD CONTROL PORT CON. REG.LCD_DATA EQU PB ;DEFINE LCD DATA PORTLCD_DATAC EQU PBC ;DEFINE LCD DATA PORT CON. REG.LCD_EN EQU LCD_CONTR.0 ;DEFINE EN CONTROL PINLCD_RW EQU LCD_CONTR.1 ;DEFINE RW CONTROL PINLCD_RS EQU LCD_CONTR.2 ;DEFINE RS CONTROL PINLCD_READY EQU PB.7 ;DEFINE READY BIT OF LCD

Page 23: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

23

MY_CODE .SECTION AT 0 'CODE' ;== PROGRAM SECTION == ORG 00H ;HT-46RXX RESET VECTOR

CLR LCD_CONTRC ;CONFIG LCD_CONTR PORT AS OUTPUT MODE

MOV A,38H ;FUNCTION SET: 8-BIT,2-LINE,5X10 DOTSCALL WLCMC ;雙行顯示 N=1,5x7點矩陣 ,F=0, DL=1控制模式 D

B7-DB0MOV A,0FH ;ON/OFF CONTR: DISPLAY ON,CURSOR

; ON,BLINKING ONCALL WLCMC ;顯示所有資料 D=1,顯示游標 C=1,閃爍 B=1MOV A,06H ;ENTRY MODE : INCREMENT,DISPLAY NOT SH

IFT CALL WLCMC ;旗標 AC設為遞加 I/D=1,顯示器劃面不移動 S=0

MAIN:MOV A,01H ;CLEAR DISPLAYCALL WLCMCMOV A,80H ;SET LINE ONE, POSITION 0CALL WLCMCMOV A,10HMOV LINE_COUNT,A ;SET LINE COUNTER 16個位置

Page 24: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

24

MAIN_1:MOV A,31H ;WRITE '1‘, ASCII=31CALL WLCMD ; 寫入資料CALL DELAY ;DELAY 100mSSDZ LINE_COUNT ;LINE_COUNT-1 = 0?JMP MAIN_1 ;NO, NEXT POSITIONMOV A,0C0H ;SET LINE TWO, POSITION 0CALL WLCMC ;寫入命令MOV A,16MOV LINE_COUNT,A ;SET LINE COUNTER

MAIN_2:MOV A,32H ;WRITE '2‘, ASCII=32CALL WLCMD ; 寫入資料CALL DELAY ;DELAU 100mSSDZ LINE_COUNT ;LINE_COUNT-1 = 0?JMP MAIN_2 ;NO, NEXT POSITIONJMP MAIN ;RE-START

Page 25: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

25

;********************************************************************; LCD DATA/COMMAND WRITE PROCEDURE ;********************************************************************WLCMD PROC

SET DC_FLAG ;SET DC_FLAG=1 FOR DATA WRITEJMP WLCM

WLCMC:CLR DC_FLAG ;SET DC_FLAG=0 FOR COMMAND WRITE

WLCM:SET LCD_DATAC ;CONFIG LCD_DATA AS INPUT MOD

ECLR LCD_CONTR ;CLEAR ALL LCD CONTROL SIGNAL

;E=0,RS=0,RW=0SET LCD_RW ;SET RW SIGNAL (READ)NOP ;FOR TASSET LCD_EN ;SET EN HIGHNOP ;FOR TDDR

Page 26: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

26

WF:SZ LCD_READY ;IS LCD BUSY?JMP WF ;YES, JUMP TO WAITCLR LCD_DATAC ;NO, CONFIG LCD_DATA AS

; OUTPUT MODEMOV LCD_DATA,A ;LATCH DATA/COMMAND ON PB(LCD

; DATA BUS)CLR LCD_CONTR ;CLEAR ALL LCD CONTROL SIG

NALSZ DC_FLAG ;IS COMMAND WRITE?SET LCD_RS ;NO, SET RS HIGHSET LCD_EN ;SET EN HIGHNOP ;讓 LCD有足夠時間完成工作

CLR LCD_EN ;SET EN LOWRET

WLCMD ENDP

Page 27: 1 LCD. 2 LCD 液晶顯示器 文字型 繪圖型 Hitachi (HD44780A) 80 個位元組

27

;********************************************************************; Delay about DEL1*10mS ;********************************************************************DELAY PROC

MOV A,10MOV DEL1,A ;SET DEL1 COUNTER

DEL_1: MOV A,30 MOV DEL2,A ;SET DEL2 COUNTER DEL_2: MOV A,110

MOV DEL3,A ;SET DEL3 COUNTERDEL_3: SDZ DEL3 ;DEL3 DOWN COUNT JMP DEL_3 SDZ DEL2 ;DEL2 DOWN COUNT JMP DEL_2

SDZ DEL1 ;DEL1 DOWN COUNTJMP DEL_1

RETDELAY ENDP

END