微處理器Rabbit2000與液晶顯示控制器KS0108B的接口及編程
1引言
液晶顯示器具有顯示信息多、體積小、功耗低等特點(diǎn),被廣泛用于終端顯示和人機(jī)接口。它與高性能的RabbitCoreRCM2200型模塊配合使用,可以組成高級智能化儀器。在我們開發(fā)的藍(lán)牙無線數(shù)據(jù)接收與發(fā)送系統(tǒng)中,用于藍(lán)牙設(shè)備鏈接信息及數(shù)據(jù)的發(fā)送和接收等相關(guān)信息的顯示具有相當(dāng)重要的作用。本文介紹RabbitCoreRCM2200型模塊與M12864-7A7實(shí)用的接口電路及軟件設(shè)計(jì)。
2Rabbit2000及RabbitCoreRCM2200簡介
Rabbit20008位微處理器和Z80系列微處理器有相似的結(jié)構(gòu)和高度的兼容性,但性能有很大的提高。它具有4個(gè)串行端口,40個(gè)通用I/O引腳,內(nèi)建日歷、時(shí)鐘、看門狗、定時(shí)器、多級中斷、雙DMA通道,可外擴(kuò)4MB~8MBFlash,用于數(shù)據(jù)存儲。對于8位總線的微處理器,Rabbit構(gòu)造了其大部分外部8位總線,并且具有簡潔的指令集合,性能與許多16位處理器一樣,可執(zhí)行16位操作。Rabbit2000用1根接口電纜把PC串口和基于Rabbit2000的目標(biāo)系統(tǒng)連接起來實(shí)現(xiàn)軟件的開發(fā),得到DynamicC編譯器的支持,這種編譯器具有交互式編譯程序、編輯程序和調(diào)試程序。匯編語言代碼可嵌入DynamicC代碼中,或作為一個(gè)獨(dú)立的功能使用。編譯和調(diào)試可在不脫離DynamicC開發(fā)環(huán)境下實(shí)現(xiàn),縮短了開發(fā)時(shí)間,更易于編程。
RabbitCoreRCM2200模塊采用Rabbit2000型微處理器,有256KB的Flash及128KB的SRAM,4個(gè)串口,26個(gè)I/O口,10Base-T以太網(wǎng)口。使用RCM2200能夠通過網(wǎng)絡(luò)或Internet來控制、監(jiān)測及調(diào)試嵌入式系統(tǒng),有支持RCM2200的軟件工具包,提供TCP/IP協(xié)議和DynamicC系統(tǒng)軟件。
3KS0108B型液晶控制器
KS0108B型液晶顯示控制器多用于中小模塊的圖形點(diǎn)陣液晶顯示器(日立的HD61202與其完全兼容,可直接替代),其的特點(diǎn)是內(nèi)置64位×64位的顯示存儲器,顯示屏上各像素點(diǎn)的顯示狀態(tài)與顯示存儲器的各位數(shù)據(jù)一一對應(yīng),顯示存儲器的數(shù)據(jù)直接作為圖形顯示的驅(qū)動信號,顯示數(shù)據(jù)?quot;1"時(shí),相應(yīng)的像素點(diǎn)顯示,為"0"時(shí),相應(yīng)的像素點(diǎn)不顯示。KS0108B需要與相應(yīng)的帶振蕩器和顯示時(shí)序發(fā)動器的行驅(qū)動器KS0107B配套,才能形成一個(gè)完整的液晶驅(qū)動和控制系統(tǒng)。KS0108B的指令及其功能如表1所示。
4M12864-7A7型液晶模塊的框圖及引腳
M12864-7A7型液晶顯示模塊使用兩個(gè)KS0108B作為列驅(qū)動器,使用一個(gè)KS0107B作為行驅(qū)動器,KS0[07B不與MCU聯(lián)系,只要提供電源就能產(chǎn)生行驅(qū)動信號和各種同步信號。圖1是液晶模塊的結(jié)構(gòu);框圖,引腳功能如表2所示。
5硬件接口電路
內(nèi)置KS0l08B型圖形點(diǎn)陣液晶顯示模塊與MCU(單片機(jī)或Rabbit2000等)的連接方式有兩種:直接訪問方式和間接控制方式。直接訪問方式是將液晶顯示模塊的接口作為存儲器或I/O設(shè)備直接掛在MCU總線上,MCU以訪問存儲器或I/O設(shè)備的方式操作液晶顯示模塊的工作。間接控制方式是MCU通過自身或系統(tǒng)中的并行接口與液晶顯示模塊連接,下面給出的應(yīng)用采用RCM2200的并行端口中的PA口及PB,PD,PE口中的一些引腳。MCU通過對這些接口的操作達(dá)到對液晶顯示模塊的控制。
在圖2所示電路中,以RCM2200的PA口作為數(shù)據(jù)口,PB7為RET,PD3為D/I,PD4為R/W,PD5為E,PE5為CSl和PE7為CS2等信號。V0是液晶顯示器需要的負(fù)壓,可通過與它相連的電位器來調(diào)節(jié)電壓的大小,電壓變化范圍為-10V~0V,達(dá)到調(diào)節(jié)顯示對比度的目的。
6DynamicC源程序
6.1程序說明
本文重點(diǎn)介紹顯示漢字的子程序,它可以在指定位置顯示指定的漢字。
下面給出的是圖2所示的間接控制方式的一些子程序,所有的程序都是用DynamicC7.32TSE版本編譯器編譯和調(diào)試。
M12864-7A7型液晶顯示模塊是128×64點(diǎn)陣,每個(gè)漢字是16×16點(diǎn)陣,所以,每行可以顯示8個(gè)漢字,一屏可以顯示4行。整屏最多顯示32個(gè)漢字。
函數(shù)中的參數(shù)pag和col表示頁地址(X地址)和Y地址,*hzk為指向需顯示漢字點(diǎn)陣的指針。其中,0<=pag<=7,col為0、16、32或48中的任一個(gè)值;由pag和col便可確定待顯示漢字的位置。由表1可以知道頁地址(X地址)的起始值為Oxb8(程序中已定義為Page_Add),同時(shí)顯示一個(gè)漢字要跨越兩頁,所以頁地址的計(jì)算公式為Page_Add+pag+j,0≤j≤l;而Y地址的開始值為0x40(程序中已定義為Col_Add),顯示每個(gè)漢字要16列,因此,計(jì)算Y地址的公式為Col_Add+col。Y地址計(jì)算器具有自動加1功能,在每次讀/寫數(shù)據(jù)后自動加1,所以,在連續(xù)進(jìn)行讀/寫數(shù)據(jù)時(shí),不必每次都設(shè)置一次Y地址計(jì)數(shù)器。
程序開始必須先調(diào)用LCD初始化子程序,接著清屏,再視待顯示的漢字在左屏還是右屏,再將液晶顯示器開為左屏或右屏,然后,將數(shù)據(jù)送給液晶顯示,直到32個(gè)字節(jié)的漢字完全顯示;多個(gè)漢字的顯示以同理進(jìn)行操作。[!--empirenews.page--]
對于多信息的顯示,可以將voidMsg(void)改為voidMsg(flag),既通過flag的不同值來標(biāo)識不同的待顯示信息,然后,在實(shí)際使用中通過調(diào)用voidMsg(flaS)即可實(shí)現(xiàn)。
7結(jié)束語
M12864-7A7型液晶顯示器模塊與RabbitCoreRCM2200型模塊的連接采用間接控制方式,其特點(diǎn)是電路簡單,控制時(shí)序由軟件實(shí)現(xiàn),可以實(shí)現(xiàn)高速M(fèi)CU與液晶顯示模塊的接口。而采用DynamicC可以很方便地實(shí)現(xiàn)匯編語言要用較復(fù)雜的邏輯才能實(shí)現(xiàn)液晶模塊的顯示功能,而且,可以縮短開發(fā)和調(diào)試的時(shí)間。