摘 要: 液晶顯示控制器" title="液晶顯示控制器">液晶顯示控制器" title="液晶顯示控制器">液晶顯示控制器T6963C的特點(diǎn)及其與單片機(jī)的接口電路。闡述了以模塊化為基礎(chǔ)的顯示軟件的設(shè)計(jì),具體分析了狀態(tài)位檢測(cè)、顯示初始化、英文及漢字顯示等功能的程序設(shè)計(jì)。
關(guān)鍵詞: T6963C 接口 編程 顯示
液晶顯示器件(LCD)由于具有顯示信息多、體積小、重量輕、功耗低、壽命長(zhǎng)、價(jià)格低、接口控制方便等優(yōu)點(diǎn),正在被測(cè)量及控制領(lǐng)域廣泛地推廣和應(yīng)用。液晶顯示器按其功能可分為筆段式和點(diǎn)矩陣式液晶顯示器,后者又可以分為字符點(diǎn)陣式和圖形點(diǎn)陣式液晶顯示器。圖形點(diǎn)陣式液晶顯示器不僅可顯示數(shù)字、字符等內(nèi)容,還能顯示漢字和任意圖形。
目前用于圖形液晶模塊的控制器很多,本文以T6963C為例,簡(jiǎn)單地介紹液晶顯示模塊與CPU的接口以及軟件編程問(wèn)題。
1 T6963C及其構(gòu)成的液晶顯示模塊
液晶顯示控制器T6963C具有以下特點(diǎn)[1]:
(1)圖形點(diǎn)陣式液晶顯示控制器,能直接與80 系列的8 位微處理器接口。
(2)字符字體可由硬件或軟件設(shè)置,其字體有4 種:5×8、6×8、7×8、8×8。
(3)占空比為1/16~1/128。
(4)可以圖形方式、文本方式及圖形和文本合成方式進(jìn)行顯示,以及文本方式下的特征顯示,還可以實(shí)現(xiàn)圖形拷貝操作等。
(5)具有內(nèi)部字符發(fā)生器CGROM(共有128個(gè)字符),可管理64KB顯示緩沖區(qū)及字符發(fā)生器CGRAM,并允許MPU 隨時(shí)訪問(wèn)顯示緩沖區(qū),甚至可以進(jìn)行位操作。
在內(nèi)藏T6963C的液晶顯示模塊上已經(jīng)實(shí)現(xiàn)了T6963C與行、列驅(qū)動(dòng)器及顯示緩沖區(qū)RAM 的接口,同時(shí)也已用硬件設(shè)置了數(shù)據(jù)傳輸方式、顯示窗口長(zhǎng)度和寬度等。內(nèi)藏T6963C 的單屏點(diǎn)陣圖形液晶顯示模塊結(jié)構(gòu)如圖1所示。該模塊的初始化設(shè)置一般均由管腳設(shè)置完成。所以初始化時(shí),由軟件編寫(xiě)的指令就集中在顯示功能的設(shè)置上。T6963C的指令可帶1~2個(gè)參數(shù),或無(wú)參數(shù)。若指令中含有參數(shù),則執(zhí)行每條指令時(shí)均須先送入?yún)?shù),再送入指令代碼。每次操作之前最好先進(jìn)行狀態(tài)字檢測(cè),因?yàn)闋顟B(tài)位的作用不同,因此執(zhí)行不同指令必須檢測(cè)不同的狀態(tài)位。
2 液晶顯示模塊與單片機(jī)的接口電路
在本例中選用80C320作為CPU,且在此設(shè)計(jì)中,不是將CPU與液晶顯示模塊直接相連,而是通過(guò)PSD813F1來(lái)連接。PSD813F1是由WSI公司研制的新一代可編程微控制器系統(tǒng)外圍器件,具備完整的在系統(tǒng)可編程特性[2]。PSD813F1的功能比較強(qiáng)大,通過(guò)它還可以連接其他的器件和模塊,如數(shù)據(jù)采集模塊、鍵盤(pán)等,便于在原有基礎(chǔ)上進(jìn)行功能擴(kuò)展。
將CPU的地址/數(shù)據(jù)線AD0~AD7、A8~A15與PSD813F1的AD0~AD15連接起來(lái),由PSD813F1的PB口輸出信號(hào)來(lái)選擇和控制芯片。也就是說(shuō)利用這些輸出信號(hào)來(lái)片選LCD和數(shù)據(jù)緩沖器74LS245。同時(shí)CPU的地址/數(shù)據(jù)線AD0~AD7也接到74LS245的A端(A0~A7)上,而74LS245的B端(B0~B7)的輸出連接到液晶顯示模塊的數(shù)據(jù)輸入端DB0~DB7。這樣,數(shù)據(jù)就可以先在CPU內(nèi)完成處理,然后通過(guò)PSD813F1來(lái)選擇74LS245,將數(shù)據(jù)轉(zhuǎn)入74LS245完成緩沖,根據(jù)需要由PSD813F1選擇LCD,此時(shí)數(shù)據(jù)就可以從74LS245送到LCD中顯示了。液晶顯示模塊與單片機(jī)的接口電路如圖2所示。
3 軟件設(shè)計(jì)
3.1 狀態(tài)位檢測(cè)與數(shù)據(jù)/指令讀寫(xiě)程序
在本例中用C語(yǔ)言編程[3]。
(1)狀態(tài)位檢測(cè)。由于LCD指令的執(zhí)行是一個(gè)不斷地檢測(cè)狀態(tài)、寫(xiě)指令和數(shù)據(jù)及讀寫(xiě)數(shù)據(jù)的過(guò)程,因此可把指令編寫(xiě)成通用的函數(shù),以便隨時(shí)調(diào)用。
在進(jìn)行分模塊設(shè)計(jì)以前,首先必須了解各個(gè)模塊中都要用到的狀態(tài)位檢測(cè)的編程。液晶顯示控制器T6963C的狀態(tài)位一共有8位,從低到高分別是STA0~STA7,其功能如下:
STA0——指令讀寫(xiě)狀態(tài),1:準(zhǔn)備好;0:忙。
STA1——數(shù)據(jù)讀寫(xiě)狀態(tài),1:準(zhǔn)備好;0:忙。
STA2——數(shù)據(jù)自動(dòng)讀狀態(tài),1:準(zhǔn)備好;0:忙。
STA3——數(shù)據(jù)自動(dòng)寫(xiě)狀態(tài),1:準(zhǔn)備好;0:忙。
STA4——未用。
STA5——控制器運(yùn)行檢測(cè)可能性,1:可能;0:不能。
STA6——屏讀/拷貝出錯(cuò)狀態(tài),1:出錯(cuò);0:正確。
STA7——閃爍狀態(tài)檢測(cè),1:正常顯示;0:關(guān)。
進(jìn)行狀態(tài)位檢測(cè)時(shí),先從T6963C的狀態(tài)寄存器中讀取狀態(tài)字,然后提取對(duì)應(yīng)的狀態(tài)值,通過(guò)判斷決定下一步的操作。
(2)數(shù)據(jù)/指令的讀寫(xiě)程序。讀寫(xiě)數(shù)據(jù)和命令可以分為自動(dòng)和非自動(dòng)2種。由于非自動(dòng)寫(xiě)命令或數(shù)據(jù)的步驟基本類似,均是在檢測(cè)狀態(tài)字的STA0和STA1二位是否準(zhǔn)備好的情況下來(lái)決定寫(xiě)命令或數(shù)據(jù)到輸出口,因此可把非自動(dòng)寫(xiě)命令或數(shù)據(jù)流程圖綜合在一起,即如圖3所示。非自動(dòng)讀數(shù)據(jù)的流程圖如圖4所示,也是在檢測(cè)STA0和STA1已經(jīng)準(zhǔn)備好的基礎(chǔ)上由輸入口讀取數(shù)據(jù),然后將此數(shù)據(jù)返回,以便于其他程序調(diào)用。圖5是自動(dòng)寫(xiě)數(shù)據(jù)的程序流程圖,它僅需要檢測(cè)狀態(tài)字的STA3即可。自動(dòng)讀數(shù)據(jù)時(shí)只須檢測(cè)STA2,但自動(dòng)讀數(shù)據(jù)在本例中用得較少,故其流程圖在此省略。
3.2 模塊化設(shè)計(jì)
根據(jù)T6963C的特點(diǎn),設(shè)計(jì)中采用模塊化結(jié)構(gòu)。這里主要介紹初始化、英文字符顯示及漢字顯示等模塊。
(1)初始化模塊。在T6963C中內(nèi)嵌有128種字符點(diǎn)陣的CGROM(字符發(fā)生器ROM),同時(shí)T6963C還可管理一定大小的顯示緩沖區(qū)。顯示緩沖區(qū)RAM的具體大小由不同顯示尺寸的模塊決定,點(diǎn)陣越大, RAM越多。本設(shè)計(jì)采用的240×128模塊是帶有16KB的RAM。該顯示緩沖區(qū)分為文本顯示區(qū)、圖形顯示區(qū)和CGRAM區(qū)。文本顯示區(qū)和圖形顯示區(qū)是2個(gè)不同性質(zhì)的使用區(qū)域,是本設(shè)計(jì)的重點(diǎn)。CGRAM區(qū)是用戶為方便制作特殊符號(hào)而在顯示緩沖區(qū)內(nèi)任意設(shè)置的一個(gè)區(qū)域,它可作為外擴(kuò)的字符發(fā)生器。另外,對(duì)于文本顯示區(qū),如果需要特征顯示,則需要同樣大小的文本特征區(qū),其中每個(gè)字節(jié)對(duì)應(yīng)著文本區(qū)相同位置的那個(gè)字符,并可以控制該字符的特征顯示。
初始化流程圖如圖6所示。從圖中可以看到,對(duì)T6963C初始化時(shí),在關(guān)顯示后應(yīng)該先確定采用哪種方式顯示(文本/圖形),再來(lái)設(shè)置顯示緩沖區(qū)中圖形區(qū)的首地址、寬度和文本區(qū)的首地址、寬度,然后再選擇光標(biāo)的形狀,繼而進(jìn)行顯示開(kāi)關(guān)設(shè)置。
(2)英文顯示模塊。初始化時(shí)已經(jīng)定義了文本區(qū)的首地址,此地址存放的是顯示屏左上角(第1行第1列)的字符代碼,每個(gè)字符位置對(duì)應(yīng)1個(gè)字節(jié),逐行對(duì)應(yīng)至屏幕右下角。英文顯示模塊程序編制的任務(wù)就是把想要顯示的字符代碼送入與行列位置對(duì)應(yīng)的文本顯示緩沖區(qū)中。只需定位首字符地址,設(shè)置使LCD控制器的地址指針自動(dòng)增1,然后連續(xù)向LCD的數(shù)據(jù)口送入顯示數(shù)據(jù)即可。
英文顯示程序比較簡(jiǎn)單,寫(xiě)單個(gè)字符時(shí),只需確定顯示字符的坐標(biāo)位置(X,Y),然后按照T6963C的特點(diǎn)將此坐標(biāo)寫(xiě)入控制器,接著寫(xiě)要顯示的英文字符即可(顯示的英文字符可以從T6963C自帶的CGROM或外擴(kuò)的CGRAM中選?。5⒁馐褂玫?ldquo;寫(xiě)1次,地址不變”的方式。其程序流程如圖7所示。
(3)漢字顯示模塊。液晶顯示控制器T6963C可以按圖形方式、文本方式及圖形和文本合成方式進(jìn)行顯示。文本方式下可以顯示字符等內(nèi)容;圖形方式下不僅可以顯示圖形,還能顯示字符和漢字。本例采用直接在圖形方式下顯示漢字的方式。顯示字符可以直接從T6963C自帶的CGROM中選取。如要顯示漢字則要建立漢字字模。字模建立方法有多種,可采用從UCDOS的漢字點(diǎn)陣字庫(kù)中提取所需要漢字的16點(diǎn)陣字模,進(jìn)而生成漢字庫(kù)以備選取漢字之用。漢字字模在此漢字庫(kù)中以一定的順序存放,每一個(gè)漢字有其對(duì)應(yīng)的一個(gè)順序號(hào),這個(gè)順序號(hào)以變量HZH表示。
本例采用的240×128模塊的漢字顯示液晶屏幕,橫向?yàn)?40點(diǎn),分成30個(gè)字節(jié),縱向則是128行。若要顯示16×16點(diǎn)陣的漢字,需占用32個(gè)字節(jié),因而每行可顯示15個(gè)漢字,共8行。下面是顯示1個(gè)漢字的過(guò)程。
漢字顯示的程序流程如圖8所示。在計(jì)算要顯示的漢字在漢字庫(kù)中的位置HZADD時(shí),首先把漢字庫(kù)的地址賦給變量HZKADD,即HZADD=HZH×32+HZKADD。該漢字的顯示位置即縱橫坐標(biāo)記為(X,Y),將此坐標(biāo)換算成其在液晶顯示屏幕上的地址并保存。在設(shè)置顯示地址后,程序通過(guò)循環(huán)把1個(gè)漢字的32個(gè)字節(jié)一一寫(xiě)到輸出口,就可以顯示漢字了。
4 結(jié)束語(yǔ)
T6963C液晶顯示控制器在應(yīng)用中可以與各種型號(hào)的微控制器接口,實(shí)現(xiàn)控制和現(xiàn)場(chǎng)過(guò)程的動(dòng)態(tài)顯示。在本系統(tǒng)開(kāi)發(fā)中,顯示模塊采用了T6963C液晶顯示控制器來(lái)實(shí)現(xiàn),上位接口電路采用了可編程微控制器系統(tǒng)外圍器件PSD813F1,使系統(tǒng)易于進(jìn)一步擴(kuò)展功能。實(shí)踐證明該系統(tǒng)具有良好的顯示界面,同時(shí)也提高了液晶顯示系統(tǒng)的可操作性。在軟件設(shè)計(jì)中采用了模塊化結(jié)構(gòu),使程序可占用較少的代碼空間,提高了編程效率,便于開(kāi)發(fā)。
本系統(tǒng)可靈活地嵌入各種大型設(shè)備或大規(guī)模系統(tǒng)中,用于顯示必要的數(shù)據(jù)或執(zhí)行參數(shù)設(shè)定。
參考文獻(xiàn)
1 北京精電蓬遠(yuǎn)顯示技術(shù)有限公司.內(nèi)藏T6963C液晶顯示模塊使用手冊(cè)(第二版).1999
2 武漢力源電子股份有限公司.可編程單片機(jī)外圍器件PSD8XXF系列使用手冊(cè).1998
3 馬忠梅.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì).北京:北京航空航天大學(xué)出版社,2001