圖形點(diǎn)陣式液晶顯示模塊的控制技術(shù)
摘要:分析了圖形點(diǎn)陣式液晶顯示模塊LCD240128A的內(nèi)部結(jié)構(gòu)及工作原理,結(jié)合AT89S58單片機(jī)給出了MPU與液晶顯示模塊LCD240128的接口電路,并根據(jù)LCD240128A模塊中T6963A液晶驅(qū)動器的文本與圖形兩種模式的指令特性,給出了相應(yīng)的控制軟件。
本文引用地址:http://cafeforensic.com/article/225766.htm關(guān)鍵詞:液晶 微控制器 顯示器 LCD240128A AT89S58 T6963A
1 模塊簡介
圖形點(diǎn)陣式液晶顯示模塊具有尺寸小、功耗小、可靠性高、成本低等優(yōu)點(diǎn),可顯示各種圖像與文本信息,因此在電子儀器中得到廣泛的應(yīng)用。
LCD240128A是熱致液晶STN型圖形點(diǎn)陣式顯示模塊,它由STN型液晶板、液晶顯示控制器、液晶驅(qū)動器、背光板等組成,圖1怕示是LCD240128A模塊的結(jié)構(gòu)框圖。它的整屏尺寸為114×104mm,有240×128點(diǎn),可顯示16點(diǎn)陣漢字15×8個(gè),亦可顯示各種圖形。因此,在智能式電子儀器中,LCD240128A可用來作為顯示器,以顯示各種圖形和文本信息。LCD240128A液晶模塊內(nèi)有T6963A液晶驅(qū)動控制器,該模塊的外部接口引腳定義如表1所列。
T6863A內(nèi)部含有共128字節(jié)的字符發(fā)生器CGROM,可外接8k(最大為128k)字節(jié)的RAM作為外部的顯示緩沖區(qū)及字符發(fā)生器CGRAM,并允許MPU訪問顯示緩沖區(qū),甚至還可進(jìn)行位操作。
根據(jù)T6963A的特性設(shè)計(jì)出的LCD240128A模塊與AT89S58單片機(jī)的接口電路如圖2所示。
在圖2中,AT89S58單片機(jī)作為控制液晶模塊MPU,擴(kuò)展在16k字節(jié)EPROM27128用于存放16點(diǎn)陣漢字的字模數(shù)據(jù),AT89S58與外部數(shù)據(jù)及指令的效換采和8255作為I/O通道。
從圖2可以看出,液晶模塊的控制指令端口為4FFFH,數(shù)據(jù)端口為4FFEH,可通過電位器P1來調(diào)整液晶的顯示效果。
2 控制命令
為了更好地闡述LCD240128A的控制方法,這里先介紹T6963A的指令。
表1 LCD240128A的引腳定義
引腳號 | 信 號 | 意 義 |
1 | FG | 框架地。 |
2 | VSS | 信號地,為0V。 |
3 | VDD | 模塊電源輸入端,為+5V±10% |
4 | VEE | LCD工作電壓輸入端。 |
5 | WR | 寫信號。 |
6 | RD | 讀信號。 |
7 | CE | 片選信號。 |
8 | C/D | “1”為指令碼,“0”為數(shù)據(jù)碼。 |
9 | N.C | 懸空腳 |
10 | RESET | 復(fù)位信號 |
11~18 | DB0~DB7 | 數(shù)據(jù)位18 |
19 | F.S | 點(diǎn)陣模式選擇?!?”選擇5×8點(diǎn)陣,“0”選擇8×8點(diǎn)陣。 |
20 | VOUT | -10V LCD驅(qū)動電壓輸出端。 |
T6963A的指令格式為:數(shù)據(jù)1+數(shù)據(jù)2+指令字節(jié),但是,有的指令只含有一個(gè)數(shù)據(jù)或根本就沒有數(shù)據(jù)。而LCD240128A模塊選擇的是單屏結(jié)構(gòu)、每行最大為80個(gè)字節(jié)、總行數(shù)為16的顯示模式。
為了確保每條指令的正確執(zhí)行,有必要在執(zhí)行指令前,先分析一下模塊的狀態(tài)字:
STATE:MOV DPTR,#40001H
MOVX A,@DPTR
RET
此時(shí),累加器A中的每位所代表的內(nèi)容如下:
ACC.0:指令讀寫狀態(tài),1表示已準(zhǔn)備好,0表示忙
ACC.1:指令讀寫狀態(tài),1表示已準(zhǔn)備好,0表示忙
ACC.2:數(shù)據(jù)自動讀狀態(tài),1表示已準(zhǔn)備好,0表示忙
ACC.3:數(shù)據(jù)自動寫狀態(tài),1表示已準(zhǔn)備好,0表示忙
ACC.4:未用
ACC.5:控制器運(yùn)行特性檢測,1表示可以,0表示不可;
ACC.6:屏讀/拷貝狀態(tài),1表示出錯(cuò),0表示正確;
ACC.7:閃爍狀態(tài),1表示正常,0表示不正常;
2.1 地址指令設(shè)置命令
地址指令設(shè)置命令主要包括如下三種設(shè)置:
(1)設(shè)置光標(biāo)位置:D1+D2+21H;
其中D1為光標(biāo)離液晶屏左上角的橫向字符數(shù);D2為光標(biāo)離液晶屏左上角的縱向字符數(shù)。
(2_設(shè)置CGRAM的位置:D1+00H+22H;
此指令中D1的有效位為低5位,用于設(shè)置2kCGRAM在8k顯示RAM中的高5位地址,中間8位為字符代碼,低3位為字符8×8點(diǎn)陣行計(jì)數(shù)值。
(3)設(shè)置當(dāng)前要操作的單元:D1+D2+24H
其中D1為地址的低字節(jié),D2為高字節(jié)。
2.2 顯示區(qū)域設(shè)置命令
顯示區(qū)域設(shè)置命令主要是對文本區(qū)首址和每行字符數(shù)以及圖形區(qū)的首址和每行字符數(shù)進(jìn)行設(shè)置。
(1)設(shè)置文本顯示區(qū)的首址:D1+D2+40H
其中D1為低字節(jié),D2為高字節(jié),地址對應(yīng)于顯示屏左上角的字符位。
(2)設(shè)置文本區(qū)的每行字符數(shù):D1+00H+41H
(3)設(shè)置圖形區(qū)首址:D1+D2+42H
其中D1為地址的低字節(jié),D2為高字節(jié)。
(4)設(shè)置圖形區(qū)每行字符數(shù):D1+00H+43H
2.3 設(shè)置顯示方式
設(shè)置顯示方式的格式為:
1 | 0 | 0 | 0 | N3 | N2 | N1 | N0 |
各位的意義如下:
N3-字符發(fā)生器選擇位,當(dāng)N3=1時(shí),選擇CGRAM,字符代碼為00H~FFH,字節(jié)空間為2k;當(dāng)N3=0時(shí),選擇CGROM,字符代碼為00H~7FH。
通過N2、N1和N0的不同組合可對合成顯示方式進(jìn)行選擇,選擇方式如表2所列。只有當(dāng)文本方式和圖形方式均打開時(shí),上述合成顯示方式的設(shè)置才有效。
表2 合成顯示方式選擇
N2 | N1 | N0 | 合成顯示方式 |
0 | 0 | 0 | 文本與圖形以邏輯“或” |
0 | 0 | 1 | 文本與圖形以邏輯“異或” |
0 | 1 | 1 | 文本與圖形以邏輯“與” |
1 | 0 | 0 | 文本特征方式 |
2.4 設(shè)置顯示狀態(tài)
顯示狀態(tài)指令模式為:
1 | 0 | 0 | 1 | N3 | N2 | N1 | N0 |
其中:N0為光標(biāo)閃爍位,1為可以,0為禁止;
N1為為光標(biāo)顯示,1為可以,0為禁止;
N2為文本顯示,1為可以,0為禁止;
N3為圖形顯示,1為可以,0為禁止。
2.5 光標(biāo)形狀選擇
光標(biāo)形狀選擇指令格式為:
1 | 0 | 1 | 0 | 0 | N2 | N1 | N0 |
光標(biāo)形狀為8點(diǎn)(列)×N點(diǎn)(行),其中N的值由N0~N2決定。
2.6 設(shè)置數(shù)據(jù)自動讀/寫方式
該指令包括B0H,B1H和B2H(B3H)等。其中:
B0H表示自動寫;B1H表示自動讀;B2H為結(jié)束自動方式。
該指令的格式為:D1+指令字節(jié),意義如下:
D1+C0H:表示數(shù)據(jù)寫,地址加1;
C1H:表示數(shù)據(jù)讀,地址加1;
D1+C2H:表示數(shù)據(jù)寫,地址減1;
C3H:表示數(shù)據(jù)讀,地址減1;
D1+C4H:表示數(shù)據(jù)寫,地址不變;
C5H:表示數(shù)據(jù)讀,地址不變。
有了上述指令,我們就可開始下一步的軟件設(shè)計(jì),至于T6963A的更詳細(xì)說明,請參考文獻(xiàn)[1]。
3 控制軟件
該控制軟件主要討論液晶模塊的初始化、CGROM中字符的顯示、CGRAM的設(shè)置以及漢字與圖形的顯示等。
3.1 初始化與準(zhǔn)備工作
以下為狀態(tài)檢測程序:
STA1:LCALL STATE
JNB ACC.0,STA1 ;指令讀寫狀態(tài)
JNB ACC.1,STA1 ;數(shù)據(jù)讀寫狀態(tài)
RET
STA2:LCALL STATE
JNB ACC.2,STA2 ;數(shù)據(jù)自動讀狀態(tài)
RET
STA3:LCALL STATE
JNB ACC.3,STA3 ;數(shù)據(jù)自動寫狀態(tài)
RET
STA6:LCALL STATE
JB ACC.6,ERR ;屏讀/拷貝狀態(tài)
RET
;- - - - - - - - - - - - - - - - - - - - - -
ERR_;LJMP ERR ;出錯(cuò)處理程序
;- - - - - - - - - - - - - - - - - - - - - -
;
STATE:MOV DPTR,#4001H
MOVX A,@DPTR
RET
在下面的寫指令與數(shù)據(jù)程序中,R2為數(shù)據(jù)D1,R3為數(shù)據(jù)D2,R4為指令字節(jié);
;
WR2:LCALL STA1 ;有D1與D2
MOV A,R2
LCALL WRD
WR1:LCALL STA1 ;無D1,
MOV A,R3
LCALL WRD
WR0:LCALL STA1 ;無D1與D2,
MOV A,R4
AJMP WR00
WRD:MOV DPTR,#4000H
WR00:MOVX @DPTR,A
RET
;
以下是讀數(shù)程序:
;
RD_:LCALL STA1
MOV DPTR,#4000H
MOVX A,@DPTR
RET
;
有關(guān)硬件的初始化,LCD240128A在模塊制造時(shí)就已做了如下選擇:
FS=0,用于選擇8×8點(diǎn)陣;
MD2=0,MD3=0確定了每行最大字符數(shù)為80;
MDS=1,MD0=0,MD1=0,確定了總行數(shù)為16;
下面為軟件的初始化程序:
INITATION:LCALL CLR_
MOV R2,#0 ;建立文本區(qū)首址
MOV R3,#0 ;為00H
MOV R4,#40H
LCALL WR2
MOV R2,#1EH ;設(shè)置文本區(qū)寬度
MOV R3,#0 ;為30
MOV R4,#41H
LCALL WR2
;
MOV R2,#00H ;設(shè)置圖形區(qū)首址
MOV R3,#00H
MOV R4,#42H
LCALL WR2
MOV R2,#1EH ;設(shè)置圖形區(qū)寬度
MOV R3,#0
MOV R4,#43H
LCALL WR2
MOV R4,#0A0H
LCALL WR0 ;設(shè)置光標(biāo)形狀
MOV R4,#98H ;打開文本與圖形方式
LCALL WR0
MOV R4,#80H ;采用邏輯“或”
LCALL WR0
RET
;
CLR_; MOV R2,#0 ;清RAM單元
MOV R3,#0
MOV R4,#24H
LCALL WR2
MOV R4,#0B0H ;設(shè)置自動寫
LCALL WR0
MOV R2,#1FH
;
CLR1: MOV R3,#0FFH
CLR2: LCALL STA3
CLR A ;寫入0
LCALL WRD
DJNZ R3,CLR2
DJNZ R2,CLR1
MOV R4,#0B3H ;結(jié)束自動寫
LCALL WR0
RET
;
CLR_:MOV R2,#0 ;清RAM單元
MOV R3,#0
MOV R4,#24H
LCALL WR2
MOV R4,#0B0H ;設(shè)置自動寫
LCALL WR0
MOV R2,#1FH
;
CLR1: MOV R3,#0FFH
CLR2: LCALL STA3
CLR A ;寫入0
LCALL WRD
DJNZ R3,CLR2
DJNZ R2,CLR1
MOV R4,#0B3H ;結(jié)束自動寫
LCALL WR0
RET
;
3.2 CGROM中的字符顯示
在1k字節(jié)的CGROM中,含有以下00H~7FH為字符代碼的常用字母與符號。并于它們的顯示程序可以描述如下,這里以顯示:“OK!”為例:
DISPI:MOV R3,#00h ;設(shè)置指針地址
MOV R2,#0
MOV R4,#24H
LCALL WR2
MOV R2,#0
DISP10:MOV DPTR,#TAB1
MOV A,R2
MOVC A,@A+DPTR
MOV R3,A ;取字符
MOV R4,#0C0H
LCALL WR1 ;寫入模塊
INC R2
CJNE R2,#03H,DISP10
RET
TAB1: DB 2FH,2BH,01H
3.3 圖形方式下顯示漢字
可以很方便地從計(jì)算機(jī)中提取點(diǎn)陣式的漢字字模,并按左上,左下,右上,右下的順序,把字模保存在程序ROM中,下面以占用32個(gè)字節(jié)的漢字16點(diǎn)陣“交”字為例如以說明:
HK0:DB 02H,01H,01H,0FFH,08H,08H,10H,28H
DB 44H,02H,01H,02H,04H,08H,30H,0C0H
DB 00H,10H,0A0H,48H,0FCH,48H,48H,0F8H
DB 48H,0FCH,20H,20H,20H,24H,0FEH,00H
下面這個(gè)子程序,可以顯示一個(gè)漢字“交”,通過調(diào)用該子程序,即可顯示一組語句,具體說明如下:
;R2,R3,R4,R5,A
HZDISP:MOV DPTR,#HK0
MOV B,#20H
MUL AB
ADD A,DPL
MOV DPL,A
MOV A,B
MDDC A,DPH
MOV DPH,A
push dph
push dp1
MOV R2,#10H
MOV A,#00H ;指向字模的左半部地址
HZD1:pop dp1
Pop dph
MOV R5,A
MOVC A,@A+DPTR
Push dph
Push dp1
MOV R3,A
MOV R4,#0C0H
LCALL WR1
pop dp1
pop dph
MOV A,R5
ADD,A,#10H ;指向字模的右半部地址
MOVC A,@A+DPTR
PUSH DPH
PUSH DPL
;
MOV R3,A
LCALL WR1
MOV A,R2
MOV R3,A
;改變顯示指針,
MOV R2,#1CH
MOV R4,#0C1H
HZD2:LCALL WR0
DJNZ R2,HZD2
;
MOV A,R3
MOV R2,A
MOV A,R5
INC A
DJNZ R2,HZD1
pop dp1
pop dph
RET
在TA6963A的控制指令中,有一個(gè)位操作指令,格式為:
1 | 1 | 1 | 1 | D3 | D2 | D1 | D0 |
格式中的D2D1D0用于確定要操作的是0~7位某一位,D3確定該位為1或0.該指令可對當(dāng)前顯示地址指針?biāo)傅娘@示單元中的數(shù)據(jù)的任一位寫“0”或?qū)憽?”。有了這個(gè)指令,欠就可以很方便地設(shè)置點(diǎn)或清除點(diǎn),從而達(dá)到顯示任意曲線或圖案的目的。
4 結(jié)束語
利用LCD240128A液晶模塊可以增加系統(tǒng)的可讀性。本文就其基本的控制軟件與電路作為分析。當(dāng)然,液晶模塊的控制集成電路有很多種,各套指令也有一定的差異,但其基本思想都有很多相似的地址。
評論