程秀平,劉忠超
(1.河南省南陽(yáng)市公路技校,河南 南陽(yáng) 473000;2.南陽(yáng)理工學(xué)院電子系,河南 南陽(yáng) 473000)
隨著微電子技術(shù)的飛速發(fā)展,在以單片機(jī)為核心的嵌入式系統(tǒng)中,顯示器的設(shè)計(jì)是一個(gè)必不可少的環(huán)節(jié)。液晶顯示器作為一種新型顯示器件,由于具有薄、輕及功耗低的特點(diǎn),以其特有的優(yōu)勢(shì)正得到越來(lái)越廣泛的應(yīng)用,已廣泛應(yīng)用在計(jì)算機(jī)顯示器、VCD顯示板、便攜式醫(yī)療設(shè)備、儀器儀表等工業(yè)和民用領(lǐng)域,通過(guò)使用液晶顯示器可以大大地提高系統(tǒng)的智能性、易用性, 給人們的生產(chǎn)生活帶來(lái)舒適和方便[1-2]。
本文以美國(guó)Atmel公司的51單片機(jī)AT89C55WD為核心控制器,以LR035VRAM彩色液晶模塊為控制對(duì)象界面,介紹了AT89C55WD單片機(jī)與VRAM型彩色液晶模塊之間硬件接口的實(shí)現(xiàn)方法,通過(guò)軟件編程方式模擬實(shí)現(xiàn)了LR035VRAM液晶顯示模塊的讀寫(xiě)接口時(shí)序,給出了基于c51語(yǔ)言的驅(qū)動(dòng)程序,實(shí)現(xiàn)了對(duì)液晶模塊LR035VRAM的顯示控制。所設(shè)計(jì)的接口電路及驅(qū)動(dòng)程序模塊已成功應(yīng)用于仿真訓(xùn)練器顯示儀中。
AT89C55WD是一個(gè)低電壓、高性能的CMOS 8位單片機(jī)。其有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,引腳兼容工業(yè)標(biāo)準(zhǔn)89C51和89C52芯片,采用通用編程方式。片內(nèi)含20kBytes可反復(fù)擦寫(xiě)的Flash只讀程序存儲(chǔ)器和256 Bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器,可反復(fù)擦寫(xiě)的Flash存儲(chǔ)器可有效降低開(kāi)發(fā)成本,提供許多高性價(jià)比系統(tǒng)的解決方案,適用于多數(shù)嵌入式應(yīng)用系統(tǒng)[3]。
LR035VRAM是上海朗睿電子科技有限公司生產(chǎn)的真彩色液晶顯示器,采用VRAM顯示方式。VRAM(Video Random-Access Memory)視頻存儲(chǔ)技術(shù)是近年來(lái)比較流行的專門(mén)用于圖形處理的雙端口存儲(chǔ)技術(shù),常用于中、高檔顯示卡。其采用緩存、邏輯仲裁、存儲(chǔ)陣列技術(shù)實(shí)現(xiàn)兩個(gè)設(shè)備同時(shí)對(duì)同一存儲(chǔ)陣列的訪問(wèn)而不需要等待,且互不干擾[4]。
LR035VRAM存儲(chǔ)器地址單元同液晶屏幕上的像素點(diǎn)一一對(duì)應(yīng),可以把這個(gè)存儲(chǔ)器理解為“顯示映像”存儲(chǔ)器。如果希望在液晶屏幕上某一位置顯示文字或圖形,只需要向存儲(chǔ)器內(nèi)對(duì)應(yīng)區(qū)域?qū)懭胂鄳?yīng)的數(shù)據(jù)即可。VRAM存儲(chǔ)器的一個(gè)字節(jié)由8位構(gòu)成,顯示器屏幕上的一個(gè)像素點(diǎn)由R、G、B三個(gè)“點(diǎn)”來(lái)組成。
LR035VRAM的接口方式為總線方式。外部引線包括有地址總線、數(shù)據(jù)總線和片選讀寫(xiě)輸入,可以直接掛接到單片機(jī)的總線上,作為單片機(jī)的某部分內(nèi)存來(lái)使用。LR035VRAM接口采用34針插座,其引腳定義可以參閱其說(shuō)明書(shū)。
根據(jù)LR035VRAM可以作為單片機(jī)的外部存儲(chǔ)器使用的接口特性,其和單片機(jī)的接口電路設(shè)計(jì)比較簡(jiǎn)單,主要是AT89C55WD單片機(jī)I/O端口資源的合理規(guī)劃和分配。AT89C55WD單片機(jī)資源比較有限,為了最大程度減少端口的占用,采用地址/數(shù)據(jù)復(fù)用技術(shù),地址、數(shù)據(jù)分時(shí)占用P0的8個(gè)端口。即AT89C55WD的P00-P07作為8位數(shù)據(jù)端口,直接連接LR035VRAM液晶顯示器的數(shù)據(jù)端口D0-D7;同時(shí)將AT89C55WD的P00-P07、P20-P27、P10-P14作為18位地址端口,直接連接LR035VRAM液晶顯示器的地址端口A0-A18,將AT89C55WD的讀寫(xiě)信號(hào)線(16和17端口)與LR035VRAM的讀寫(xiě)信號(hào)線直接連接。圖1是該控制電路的設(shè)計(jì)原理方框圖。
圖1 AT89C55WD與LR035VRAM接口電路
要實(shí)現(xiàn)對(duì)液晶模塊LR035VRAM的正確控制以及在顯示器上顯示字符和必要的信息等功能,在屏幕上點(diǎn)亮顯示一個(gè)點(diǎn)是實(shí)現(xiàn)這些功能的基礎(chǔ)。這都由液晶顯示器的驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn),通過(guò)驅(qū)動(dòng)程序向液晶模塊對(duì)應(yīng)地址傳送相應(yīng)的數(shù)據(jù)即可。其驅(qū)動(dòng)程序開(kāi)發(fā)環(huán)境為美國(guó)Keil Software的Keil C51。
LR035VRAM內(nèi)存為512k×8位,屏幕上的點(diǎn)陣為320列×240行。256色顯示時(shí),每個(gè)點(diǎn)對(duì)應(yīng)3個(gè)像素(RGB)。內(nèi)存中的每一字節(jié)對(duì)應(yīng)一個(gè)點(diǎn),其對(duì)應(yīng)關(guān)系如表1所示[4]。
表1 內(nèi)存字節(jié)與點(diǎn)的對(duì)應(yīng)關(guān)系
其中R、G、B表示紅、綠、藍(lán)三原色,D7-D0表示要對(duì)應(yīng)的數(shù)據(jù)位。當(dāng)D7-D0取不同值時(shí),對(duì)應(yīng)的點(diǎn)將會(huì)顯示不同的顏色。每行占用200H個(gè)內(nèi)存地址,其中00H-13FH地址單元為可顯示的,其他的不參與顯示,假設(shè)以X表示橫向坐標(biāo)取值范圍為0~319(因?yàn)橛?20列),以Y表示縱坐標(biāo)取值范圍為0~239(因?yàn)橛?40行),所以一個(gè)點(diǎn)(X,Y)的內(nèi)存地址ADD坐標(biāo)可用公式(1)計(jì)算:
根據(jù)LR035VRAM彩色液晶顯示器的顯示原理,其顯示僅僅是對(duì)象不一樣,而其顯示原理都是一樣的。其驅(qū)動(dòng)程序流程圖如圖2所示。
圖2 驅(qū)動(dòng)程序流程圖
在設(shè)計(jì)的驅(qū)動(dòng)程序中,清屏函數(shù)、數(shù)字、字母、漢字顯示函數(shù)僅僅是顯示的內(nèi)容、字模不一樣,其顯示原理都是一樣的。這里只給出漢字顯示的子函數(shù),其他情況可參考漢字顯示子程序,不再給出。漢字顯示的C51子函數(shù)如下[5-6]:
void Write_hanzi(unsigned int x,unsigned int y,uchar WIDTH,uchar HIGH,uchar clor,uchar *dot)
//漢字顯示程序
{uchar i,j,k,m,hanzi,n;
pp=x+y*0x200; // 顯示地址
for(j=0;j {n=pp; // 暫存要顯示漢字的首地址 P1=((y+j)>>2); for(k=0;k<(WIDTH/8);k++) //控制顯示漢字字體大小 {for(i=0;i<8;i++,pp++) {if((hanzi&0x80)==0x80) //是1,將想顯示的字體顏色送到相應(yīng)的地址上 {*pp=clor;} Else {*pp=0x00;} //是0,將要顯示的背景黑色送到相應(yīng)的地址上 hanzi=hanzi<<1;} // 從自己建立的想要顯示的漢字字模庫(kù)里選取要寫(xiě)的字節(jié) m++;}pp=n+0x200;}} // 換下一行繼續(xù)顯示 通過(guò)硬件控制系統(tǒng)的搭建和驅(qū)動(dòng)程序的設(shè)計(jì),在硬件平臺(tái)系統(tǒng)上加上外圍傳感器信息,已將其成功地移植應(yīng)用于仿真訓(xùn)練儀中,其應(yīng)用效果如圖3所示。 圖3 應(yīng)用顯示效果圖 本文主要介紹了51單片機(jī)對(duì)VRAM型彩色液晶顯示模塊的控制以及驅(qū)動(dòng)程序的設(shè)計(jì)方法。開(kāi)發(fā)編寫(xiě)的驅(qū)動(dòng)程序均在C51編譯器里成功調(diào)試通過(guò),實(shí)現(xiàn)了LR035VRAM彩色液晶顯示器對(duì)各種顏色的漢字、數(shù)字、英文以及圖形的正確顯示,并通過(guò)擴(kuò)展將其成功應(yīng)用于仿真訓(xùn)練儀中,達(dá)到了顯示色彩豐富、性能穩(wěn)定、功耗低、人機(jī)界面友好的效果。 [1]褚東升,亓慶剛,岳成亮.基于AVR單片機(jī)的VRAM型彩色液晶顯示模塊設(shè)計(jì)[J].液晶與顯示,2005,20(5):434-439. [2]楊萍,劉忠超.AVR單片機(jī)與VRAM型彩色液晶模塊接口電路及驅(qū)動(dòng)程序設(shè)計(jì)[J].化工自動(dòng)化及儀表,2010,37(9):86-87. [3]AT89C55WD Datasheets [EB/OL]. http :// www.atmel.com. 2010-02-20. [4]上海朗睿電子科技有限公司.LR035VR/F系列彩色液晶顯示器使用說(shuō)明書(shū)V1.2[Z].2000. [5]周國(guó)運(yùn).單片機(jī)原理及應(yīng)用(C語(yǔ)言版)[M].北京:水利水電出版社,2009. [6]毛學(xué)軍.液晶顯示技術(shù)[M].北京:電子工業(yè)出版社,2008.3.2 應(yīng)用實(shí)例
4 結(jié)論