基于AT89C52的液晶顯示的實現(xiàn)
此種方法實現(xiàn)起來簡單明了,不需額外的硬件,缺點是占用MPU的IO資源較多,適用于IO資源有富余的情況。在筆者的應(yīng)用中,MPU的IO需要余留給其他應(yīng)用,不能分配這么多的IO來,故采用另外一種方法,由硬件邏輯實現(xiàn),見圖3:
本例中的頁大小為32KB。AT27C020的片選信號CS1由地址線A15產(chǎn)生(即A15連到片選信號CE上),如要讀38400H單元的內(nèi)容,先由程序產(chǎn)生高位地址AA17、AA16、AA15。對字庫芯片尋址時,先產(chǎn)生頁地址,再進行頁內(nèi)尋址,利用此種方法可進行多位地址的擴展。舉例如下:
4 軟件的實現(xiàn)與控制
VPG12864T液晶模塊的系統(tǒng)指令集其實就是T6963C控制器的指令集,模塊的初始化設(shè)置一般都由管腳設(shè)置完成。T6963C的指令可帶一個或兩個參數(shù),或無參數(shù)。每條指令的執(zhí)行都是先送入?yún)?shù),再送入指令代碼,且每次操作之前要進行狀態(tài)字檢測。T6963C的狀態(tài)字如下說明。在處理顯示操作時,首先要指定字符串、文字段的有效顯示位置。
STA0:指令讀寫狀態(tài)
STA1:數(shù)據(jù)讀寫狀態(tài)
STA2:數(shù)據(jù)自動寫狀態(tài)
STA3:數(shù)據(jù)自動讀狀態(tài)
STA5:讀/寫出錯狀態(tài)
STA6:運行控制器檢測
STA7:閃爍狀態(tài)檢測
另外STA4保留.
4.1 顯示字符
VPG12864T液晶模塊字符的顯示有兩種實現(xiàn)方式,一是利用T6963C提供的字符集,另一種方法是將字符的點陣數(shù)據(jù)存放在ROM內(nèi),需要時以圖形方式顯示。當電路驅(qū)動能力不夠時,可以采用第二種方式。字符顯示相對比較簡單,在這里不做詳細描敘。
4.2 顯示漢字
處理漢字顯示時,由于VPG12864T液晶模塊是128×64點陣的,所以顯示16×16點陣的漢字一行最多顯示8個,且最多顯示4行。對于每一個漢字的顯示,首先應(yīng)該計算該漢字在字庫中的地址,然后讀出該漢字的點陣排列。當顯示至一行的末尾時要換行顯示。在處理漢字顯示時有兩種方法:一是一次只顯示一個漢字,即對于每一個漢字,先計算出此漢字地址,讀出其點陣數(shù)據(jù),顯示完畢再處理下一個漢字,直到處理完所有的漢字;第二種方法是將所要顯示的所有漢字的點陣數(shù)據(jù)從字庫中讀出存放外部RAM中,再集中處理顯示的問題。本文討論的是后一種方法。
字符半角碼與全角碼有如下的對應(yīng)關(guān)系:
半角字符對應(yīng)的全角字符的起始地址的計算公式:
起始地址=[(2×94+(ASCII-0x21))×32
漢字顯示處理的流程如下(用“#”作為顯示漢字段的結(jié)束標志):
在處理漢字顯示時,如果要實現(xiàn)漢字的反顯(例如實現(xiàn)菜單操作),將漢字的32字節(jié)字模數(shù)據(jù)分別與0xFF異或(XRL)運算,或者取反(CPL)運算后再顯示即可。
評論