|
一、設(shè)計(jì)目的
在 12864 液晶顯示屏中央顯示“★仿真實(shí)例★”字樣。
二、原理介紹
12864LCD :帶中文字庫(kù)的 128X64 是一種具有 4 位 /8 位并行、 2 線或 3 線串行多種接
口方式, 內(nèi)部含有國(guó)標(biāo)一級(jí)、 二級(jí)簡(jiǎn)體中文字庫(kù)的點(diǎn)陣圖形液晶顯示模塊; 其顯示分辨率為
128×64, 內(nèi)置 8192 個(gè) 16*16 點(diǎn)漢字,和 128 個(gè) 16*8 點(diǎn) ASCII 字符集 .利用該模塊靈活的接
口方式和簡(jiǎn)單、方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面。可以顯示 8×4 行 16×16
點(diǎn)陣的漢字 . 也可完成圖形顯示 .低電壓低功耗是其又一顯著特點(diǎn)。
1、引腳功能: GND 電源地 VCC 電源正 +5
V0 液晶顯示驅(qū)動(dòng)電源 0~5V RS H:數(shù)據(jù)輸入 L :指令碼輸入
R/W H:數(shù)據(jù)讀入 L:數(shù)據(jù)寫入 E 使能信號(hào)。 由 H 到 L 完成使能。
DB0~DB7 數(shù)據(jù)線 CS1 CS1=1 芯片選擇左邊 64*64 點(diǎn)
CS2 CS2=1 芯片選擇右邊 64*64 點(diǎn)
RST 復(fù)位 -Vout LCD 驅(qū)動(dòng)負(fù)電源
A 背光電源( +) K 背光電源( -)
2、取碼方法:
DDRAM 是 12864 內(nèi)部的存儲(chǔ)器, 屏幕顯示內(nèi)容與存儲(chǔ)單元建立一一對(duì)應(yīng)關(guān)系, 模塊內(nèi)
部自帶掃描與驅(qū)動(dòng), 用戶只需要將要顯示內(nèi)容寫入到 12864 對(duì)應(yīng)的存儲(chǔ)器中, 就能實(shí)現(xiàn)內(nèi)容
的顯示。 12864 液晶屏橫向有 128 個(gè)點(diǎn),縱向有 64 個(gè)點(diǎn)。顯示屏分為左半屏和右半屏。取
碼時(shí), 按照從上到下,從左到右的原則進(jìn)行取碼, 每個(gè)字都有 32 個(gè)字節(jié)與之對(duì)應(yīng)。 編程時(shí),
也按照從上到下,從左到右的原則取數(shù)送到相應(yīng)的 DDRAM 中。
RESPACK8 :排阻。接在 51 單片機(jī)的 P0 口,因?yàn)?P0 口內(nèi)部沒有上拉電阻,不能輸出
高電平, 所以要接上拉電阻。 排阻就是好多電阻連載一起, 他們有一個(gè)公共端 1 端為公共端
接 VCC 或地。
三、液晶顯示控制方法
1、讀狀態(tài)
判忙子程序
BUSY: CLR RS ; RS 清 0
SETB RW ; RW 置 1
PRR01: MOV DATAES,#0FFH ;將端口置 1,準(zhǔn)備讀數(shù)據(jù)總線
SETB E ; E 置 1,液晶模塊將當(dāng)前狀態(tài)送到數(shù)據(jù)總線
MOV A,DATAES ;讀數(shù)據(jù)總線
CLR E ;將 E 清零,為下次讀做準(zhǔn)備
JB ACC.7,PRR01 ; ACC.7 為 1,表示液晶模塊處于忙狀態(tài),為 0 返回主
程序
RET
如果讀到的 BUSY=1 ,表示系統(tǒng)忙,不能操作;只有 BUSY=1 才允許操作。
2、寫指令
寫指令子程序( | PRM ) | PRM: | LCALL BUSY | ;寫指令之前判忙 | CLR RS | ; RS 為 0 設(shè)置寫指令操作 | CLR RW | ; RW 清 0 | MOV DATAES,COM | ; COM 中存放指令, | DATAES 為某一端口 | SETB E
CLR E | ; E 下降沿液晶模塊從數(shù)據(jù)總線上寫入指令 | RET | 3、寫數(shù)據(jù)
寫數(shù)據(jù)子程序( | PRD) | PRD: | LCALL BUSY | ;寫指令之前判忙 | SETB RS | ; RS 置 1 設(shè)置為寫數(shù)據(jù)操作 | CLR RW | ; RW 清 0 | SETB E
MOV DATAES,DA T | ; DAT 中存放寫入的數(shù)據(jù) | CLR E | ; E 下降沿液晶模塊從數(shù)據(jù)總線上讀入指令 | RET
操作每完成一個(gè)列地址計(jì)數(shù)器自動(dòng)加 | 1。 |
四、程序
1、程序流程圖:
2、程序如下:
ORG 0000H
LJMP MAIN
CSA EQU P2.4
CSB EQU P2.3
RS EQU P2.2
RW EQU P2.1
E EQU P2.0
DATAES EQU P0
COM EQU 21H
DAT EQU 22H
YM EQU 23H
LM EQU 24H
CODES EQU 25H
ORG 0030H
MAIN: LCALL INT
LCALL LEFT
MOV YM,#3
MOV LM,#16
MOV CODES,#4
LCALL CHINE
MOV YM,#3
MOV LM,#32
MOV CODES,#0
LCALL CHINE
MOV YM,#3
MOV LM,#48
MOV CODES,#1
LCALL CHINE
LCALL RIGHT
MOV YM,#3
MOV LM,#0
MOV CODES,#2
LCALL CHINE
MOV YM,#3
MOV LM,#16
MOV CODES,#3
LCALL CHINE
MOV YM,#3
MOV LM,#32
MOV CODES,#4
LCALL CHINE
DDD: LJMP DDD
INT: LCALL LEFT
MOV COM,#3FH
LCALL PRM
LCALL RIGHT
MOV COM,#3FH
LCALL PRM
CLEARL: LCALL LEFT
MOV R4,#00H
CLEAR0: MOV COM,R4
LCALL PAGEFIRST
MOV COM,#00H
LCALL LIEFIRST
MOV R3,#64
CLEAR1: MOV DA T,#00H
LCALL PRD
DJNZ R3,CLEAR1
INC R4
CJNE R4,#08H,CLEAR0
CLEARR: LCALL RIGHT
MOV R4,#00H
CLEAR2: MOV COM,R4
LCALL PAGEFIRST
MOV COM,#00H
LCALL LIEFIRST
MOV R3,#64
CLEAR3: MOV DA T,#00H
LCALL PRD
DJNZ R3,CLEAR3
INC R4
CJNE R4,#08H,CLEAR2
RET
BUSY: CLR RS
SETB RW
PRR01: MOV DATAES,#0FFH
SETB E
MOV A,DATAES
CLR E
JB ACC.7,PRR01
RET
LEFT: CLR CSA
SETB CSB
RET
RIGHT: SETB CSA
CLR CSB
RET
PRM: LCALL BUSY
CLR RS
CLR RW
MOV DATAES,COM
SETB E
CLR E
RET
PRD: LCALL BUSY
SETB RS
CLR RW
SETB E
MOV DATAES,DA T
CLR E
RET
PAGEFIRST:MOV A,COM
ORL A,#0B8H
MOV COM,A
LCALL PRM
RET
LIEFIRST:MOV A,COM
ORL A,#40H
MOV COM,A
LCALL PRM
RET
CHINE: MOV DPTR,#TAB
MOV A,CODES
MOV B,#32
MUL AB
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
MOV COM,YM
LCALL PAGEFIRST
MOV COM,LM
LCALL LIEFIRST
MOV R0,#00H
RETURN0:MOV A,R0
MOVC A,@A+DPTR
MOV DAT,A
LCALL PRD
INC R0
CJNE R0,#16,RETURN0
MOV A,YM
INC A
MOV COM,A
LCALL PAGEFIRST
MOV COM,LM
LCALL LIEFIRST
RETURN1:MOV A,R0
MOVC A,@A+DPTR
MOV DAT,A
LCALL PRD
INC R0
CJNE R0,#32,RETURN1
RET
TAB:DB 80h, 40h, 20h, 0F8h, 07h, 10h, 10h, 10h
DB 0F1h,96h, 90h, 90h, 0D0h, 98h, 10h, 00h
DB 00h, 00h, 00h, 0FFh, 00h, 80h, 40h, 30h
DB 0Fh, 40h, 80h, 40h, 3Fh, 00h, 00h, 00h; " 仿"
DB 00h, 04h, 04h, 0F4h, 54h, 54h, 54h, 5Fh
DB 54h, 54h, 54h, 0FCh, 16h, 04h, 00h, 00h
DB 10h, 10h, 90h, 5Fh, 35h, 15h, 15h, 15h
DB 15h, 15h, 35h, 5Fh, 0D0h, 18h, 10h, 00h; “真”
DB 10h, 0Ch, 04h, 44h, 8Ch, 94h, 35h, 06h
DB 0F4h,04h, 04h, 04h, 04h, 14h, 0Ch, 00h
DB 02h, 82h, 82h, 42h, 42h, 23h, 12h, 0Eh
DB 03h, 0Ah, 12h, 22h, 42h, 0C3h, 02h, 00h; " 實(shí) "
DB 40h, 20h,0F8h, 07h, 84h, 64h, 3Ch, 24h
DB 24h,0E6h, 04h,0F0h, 00h, 0FFh, 00h, 00h
DB 00h, 00h,0FFh, 01h, 20h, 11h, 0Ah, 04h
DB 03h, 00h, 00h, 47h, 80h, 7Fh, 00h, 00h; " 例"
DB 00h, 20h, 60h,0E0h, 0E0h,0E0h,0F0h,0FCh
DB 0FFh,0FCh,0F0h,0E0h,0E0h,0E0h, 60h, 20h
DB 00h, 00h, 40h, 30h, 3Dh, 1Fh, 1Fh, 0Fh
DB 07h, 0Fh, 1Fh, 1Fh, 3Dh, 30h, 40h, 00h; "*"
END
|
|