圖形點(diǎn)陣LCD顯示控制研究
1 點(diǎn)陣式LCD的接口技術(shù)
本文引用地址:http://butianyuan.cn/article/200294.htm單片機(jī)可以通過數(shù)據(jù)總線與控制信號直接采用存儲器訪問形式、I/O設(shè)備訪問形式控制該液晶顯示模塊。本文以AT89C51為例,他與YEJHD19264接口電路如圖1所示。單片機(jī)通過P2.6,P2.7來控制CSA,CSB列選擇驅(qū)動器,同時AT89C51用P2.1作為R/W信號控制數(shù)據(jù)總線的數(shù)據(jù)流向,用P2.0作為D/I信號控制寄存器的選擇,E信號由AT89C51的P2.4控制。電路中LCD電源控制端VO是用來調(diào)節(jié)顯示屏灰度的,調(diào)節(jié)該端的電壓,可改變顯示屏字符、圖形的顏色深淺。可以通過查閱顯示屏產(chǎn)品手冊查到基本顯示時序電路和顯示驅(qū)動程序。
根據(jù)點(diǎn)陣式LCD的功能和特點(diǎn),筆者研究了兩種應(yīng)用廣泛的控制算法,左(右)循環(huán)位移算法和翻頁算法。
2.1 左(右)循環(huán)位移算法
此算法應(yīng)用于廣告或車載報(bào)站系統(tǒng)中。如圖2所示,以左循環(huán)為例,假如一串8個漢字(16*16字模)的廣告,要在192*64點(diǎn)陣LCD上的第二行(192*64型的點(diǎn)陣顯示16*16字模時為4行12列)實(shí)行左循環(huán)顯示功能,具體算法如圖3所示。
說明:把8個字看作為一個整體,即漢字串,并以第一個漢字的顯示坐標(biāo)作為整個漢字串的顯示坐標(biāo),將其初始化為最右邊的坐標(biāo)值(假設(shè)廣告是從右向左移動)。接著依次向左延伸顯示8個漢字(一條廣告),如果在顯示過程中,有一些漢字的坐標(biāo)會超過液晶屏的顯示界限,這時控制程序不顯示這些漢字,如圖2虛線小方框所示。漢字串顯示坐標(biāo)向左移一位(減1)都要判斷坐標(biāo)值是否等于-7(等于-7,則一次左移結(jié)束,重新初始化為最右邊的坐標(biāo)值,準(zhǔn)備第二輪左移;不等于-7,則本輪左移尚未結(jié)束)。
在實(shí)際應(yīng)用中,左(右)循環(huán)位移算法還可根據(jù)系統(tǒng)需求進(jìn)行改進(jìn)和拓展,以使他的應(yīng)用更加靈活。比如要求廣告語是可實(shí)時更改的,即當(dāng)用戶通過串口或其他外部接口輸入新的廣告時,原來的舊廣告要被新廣告替換,這樣,算法就會更加復(fù)雜,因?yàn)槌藦V告的內(nèi)容本身的變化(字改變),字?jǐn)?shù)也可能改變。
2.2 翻頁算法
此算法應(yīng)用于短信息的顯示系統(tǒng)中。首先必須把顯示所需的頁數(shù)計(jì)算出來,公式為:
其中:P為頁數(shù),S為所要顯示的漢字總數(shù),M為整屏容納漢字的最大數(shù)。
比如在顯示100個漢字時,100/46(本來除數(shù)應(yīng)該是48,但要留出兩個漢字的位置作為上下翻頁的提示符的顯示位置),結(jié)果商是2,余數(shù)是8。這就意味著100個字分成3頁顯示,第一和第二頁都顯示46個漢字,第三頁顯示最后8個漢字。其次,還需要建立頁碼和一屏漢字的存儲器首地址的對應(yīng)關(guān)系,也就是100個漢字,前46個漢字首地址對應(yīng)第一頁,接下來的46個漢字首地址對應(yīng)第二頁,剩余8個漢字對應(yīng)第三頁。因?yàn)橐粋€地址存儲了一個字節(jié),而漢字內(nèi)碼由兩個字節(jié)構(gòu)成,那么,任何一屏漢字的存儲首地址的計(jì)算公式為:
其中:t為任何一屏漢字存儲首地址,T為全體漢字存儲首地址,M為整屏容納漢字的最大數(shù),P為頁數(shù)。以下的算法結(jié)構(gòu)仍然以192*64點(diǎn)陣顯示器為例,整個顯示部分程序結(jié)構(gòu)圖如圖4所示。
說明:根據(jù)所要顯示的頁面不同,文本把頁面顯示分為三個軟件模塊,他們分別是:首頁顯示模塊,代表第一頁漢字內(nèi)容;中間頁顯示模塊,代表非第一頁和非最后一頁的其他所有的頁面;末頁顯示模塊,代表最后一頁漢字內(nèi)容。在程序開始時,變量P作為將要顯示的頁面標(biāo)識,賦初值為1,所以在第一次進(jìn)入循環(huán)時程序進(jìn)入首頁模塊,這時根據(jù)式(2)計(jì)算本屏漢字存儲首地址,從而顯示第一頁內(nèi)容,同時顯示向下翻頁提示符。隨后等待外部按鍵中斷,當(dāng)有下翻頁按鍵提示到來時,要改變P值(加1),進(jìn)入中間頁顯示模塊或末頁顯示模塊。當(dāng)程序進(jìn)入中間頁顯示模塊時,同樣根據(jù)式(2)計(jì)算本屏漢字存儲首地址,顯示本屏的漢字,同時顯示向上和向下翻頁提示符。隨后等待外部按鍵中斷,當(dāng)有下翻頁或上翻頁按鍵提示到來時,要改變P值(加1或減1),并進(jìn)入上一頁顯示模塊或下一頁顯示模塊。注意:這里的上一頁顯示模塊可能仍是中間頁,而不是首頁;同樣下一頁顯示模塊可能仍是中間頁,而不是末頁,具體要視總共的頁數(shù)而定。當(dāng)程序進(jìn)入末頁顯示模塊時,根據(jù)式(2)計(jì)算本屏漢字存儲首地址,顯示本屏漢字,同時顯示向上翻頁提示符。隨后等待外部按鍵中斷,當(dāng)有上翻頁按鍵提示到來時,要改變P值(減1),進(jìn)入中間頁顯示模塊或首頁顯示模塊。
在實(shí)際應(yīng)用中,翻頁顯示算法可與短消息存儲和查閱算法,文件系統(tǒng)相結(jié)合實(shí)現(xiàn)類似手機(jī)的短消息模式的顯示系統(tǒng)。
3 實(shí)驗(yàn)設(shè)計(jì)與結(jié)果
3.1 設(shè)計(jì)思路
在設(shè)計(jì)外圍硬件時,筆者用了E2PROM存儲漢字庫,8 kB的外部RAM存儲短消息和廣告中的每個漢字漢字內(nèi)碼,再把內(nèi)碼轉(zhuǎn)換成漢字庫字模首地址,然后讀取E2PROM中的字模。在外部RAM中,進(jìn)行了區(qū)域劃分:前4 kB:存儲已經(jīng)預(yù)處理完畢且即將顯示的短消息,可容納漢字2000個(每個漢字2 B)。接下來2 kB:存儲已經(jīng)預(yù)處理完畢且即將顯示的廣告,由于加入了滾動機(jī)制,只可容納200個漢字。最后的2 kB:存儲串口接收來的BTYE,包括所有的解包、解碼的預(yù)處理都在這個區(qū)域進(jìn)行在這里,如之前所述,把有用信息的提取出來,提取出的漢字部分,送入短消信或廣告存儲區(qū),等待顯示命令。此區(qū)域可支持2 000 B的編碼長度。同時設(shè)計(jì)了4個按鍵,用于控制上下翻頁,廣告模式與消息模式之間的切換,單片機(jī)復(fù)位。
3.2 實(shí)驗(yàn)結(jié)果
由于廣告是滾動的,靜態(tài)圖無法描述清楚,所以這里只給出短消息顯示圖,這是中間頁顯示,左上角和右下角分別是上翻頁和下翻頁的提示符。筆者讓單片機(jī)順序提取字庫中的漢字進(jìn)行顯示。
4 結(jié) 語
這兩種算法已應(yīng)用于基于無線測控網(wǎng)的車載及船載短信息通信系統(tǒng)中,同時也可通過進(jìn)一步拓展算法來迎合更加復(fù)雜的系統(tǒng)需求。希望本文能為那些基于低端LCD應(yīng)用的程序開發(fā)人員提供一個解決實(shí)際問題的思路和方法。
LCD顯示屏相關(guān)文章:lcd顯示屏原理
lcd相關(guān)文章:lcd原理
評論