陳涵深,姚明海,張建方
(浙江工業(yè)大學(xué) 信息工程學(xué)院,浙江 杭州 310015)
近些年來(lái),隨著光電技術(shù)和嵌入式技術(shù)的快速發(fā)展,液晶顯示模塊已廣泛應(yīng)用于不同場(chǎng)合,同時(shí)顯示效果較好的TFT-LCD已越來(lái)越多被采用,但對(duì)于價(jià)格敏感的低端產(chǎn)品或在一些特殊場(chǎng)合,由于STN-LCD[1]和TFT-LCD[2]價(jià)格相差較大,所以還在大量使用單色或灰度液晶屏,許多企業(yè)往往不得不開(kāi)發(fā)2套軟硬件平臺(tái),分別用于不同價(jià)格和檔次的同類產(chǎn)品??紤]到目前許多嵌入式芯片往往集成了LCD控制器,市售的LCD控制模塊一般都同時(shí)支持STN-LCD和TFT-LCD顯示,在軟硬件設(shè)計(jì)上同時(shí)支持兩種類型的液晶屏,將大大提高開(kāi)發(fā)效能和方便生產(chǎn)管理。本文以嵌入式ARM為硬件平臺(tái),提出了同時(shí)兼容STN-LCD和TFT-LCD兩類液晶屏的通用軟硬件設(shè)計(jì)方案,在硬件上采用一個(gè)跳線,軟件上采用同一個(gè)程序來(lái)實(shí)現(xiàn)兩種不同類型的液晶屏兼容顯示。
本文選擇高性能的32位NXP公司LPC2478 ARM7作為主控芯片。LPC2478處理器是一款具有極高集成度并以ARM7TDMI-S為內(nèi)核的微控制器,支持實(shí)時(shí)仿真和嵌入式跟蹤,處理器時(shí)鐘高達(dá)72 MHz。片內(nèi)集成資源豐富,該芯片的成本和功耗都比較低。所有的這些特性使LPC2478系列ARM特別適用于工業(yè)控制和醫(yī)療系統(tǒng)方面[3]。
LPC2478片內(nèi)集成LCD控制器,直接為多種彩色和單色LCD顯示屏的接口提供了所有必需的控制信號(hào)。顯示分辨力最高支持1 024×768。LCD控制器用于將像素編碼數(shù)據(jù)轉(zhuǎn)換成所需格式,并產(chǎn)生相應(yīng)的時(shí)序以驅(qū)動(dòng)各種單屏或雙屏的單色和彩色LCD顯示屏。該LCD控制還具有兩個(gè)獨(dú)立的DMA FIFO緩存器,采用了DMA FIFO后,SDRAM中的幀緩存中的圖像數(shù)據(jù)以DMA方式傳輸?shù)絃CD控制器數(shù)據(jù)緩沖器FIFO,不占用系統(tǒng)總線時(shí)間[4]。
單色STN-LCD選用夏普LM057QB1T07,它是一款5.7 in的藍(lán)底白字的STN液晶屏,分辨力為320×240,亮度是400 cd/m2,背光為L(zhǎng)ED,接口類型為FFC[5]。TFT-LCD選用夏普LQ057Q3DC12,它是一款5.7 in的QVGA TFT液晶顯示器件,分辨力為320×240,色彩為26萬(wàn)色,亮度是500 cd/m2,背光為1×CCFL燈管,接口類型為T(mén)TL[6]。
液晶屏硬件接口部分原理如圖1所示,液晶模塊驅(qū)動(dòng)器采用LPC2478內(nèi)部自帶的LCD控制器。J1為單色STN-LCD LM057QB1T07接口,J2為T(mén)FT-LCD LQ057Q3DC12接口。
以字符“LCD”開(kāi)頭的管腳標(biāo)號(hào)均為L(zhǎng)PC2478的液晶控制腳,并可通過(guò)設(shè)置寄存器來(lái)使每個(gè)引腳工作在不同的方式,以便適用于不同類型的LCD顯示屏。升壓電路采用MAX629芯片及其外圍元器件組成,輸出16~32 V的正電壓作為單色STN-LCD的顯示驅(qū)動(dòng)電源電路。因LQ057Q3DC12內(nèi)部帶有顯示驅(qū)動(dòng)電源電路,所以TFT-LCD無(wú)須外加該電路。電阻R1為液晶顯示程序的跳線電阻,連接到LPC2478的P2_15腳。不焊上R1時(shí),P2_15口為低電平,電路為單色STN-LCD顯示方式;焊上R1時(shí),P2_15口為高電平,電路為T(mén)FT-LCD顯示方式。
本文軟件的開(kāi)發(fā)環(huán)境為RealView MDK-ARM 4.14,在圖形用戶界面程序設(shè)計(jì)開(kāi)發(fā)上,充分考慮其通用性和可移植性,使用C語(yǔ)言和部分匯編語(yǔ)言編寫(xiě)。
從圖2中可以看出,只要在GUI底層做一些修改和應(yīng)用程序中定義使用的顏色值,就能實(shí)現(xiàn)一個(gè)代碼工程兼容雙屏顯示功能,詳見(jiàn)如下說(shuō)明。
ColorDispEn位變量表示當(dāng)前液晶選擇狀態(tài)。開(kāi)機(jī)上電后,需檢測(cè)液晶跳線腳的電平,如果是高電平,表示為T(mén)FT-LCD顯示方式,使ColorDispEn置位;如果是低電平,表示為單色STN-LCD顯示方式,ColorDispEn清零。程序段如下:
因兩款液晶顯示器像素都為320×240,所以像素定義如下:
液晶顯示緩沖區(qū)定義成一個(gè)二維數(shù)組。對(duì)于單色STN屏,每個(gè)點(diǎn)像素只對(duì)應(yīng)1 bit;對(duì)于16 bit的TFT屏,每個(gè)點(diǎn)像素對(duì)應(yīng)于2 byte。所以緩沖區(qū)定義如下:
在顏色的處理上,對(duì)于不同的液晶顯示模塊,定義不同的顏色數(shù)據(jù)類型TCOLOR??紤]到程序的通用性和芯片存儲(chǔ)空間的有限,筆者設(shè)置LQ057Q3DC12工作在16 bit/pixel(比特/像素),5∶6∶5 RGB色彩模式,所以定義為無(wú)符號(hào)的16位數(shù)。
在人機(jī)界面的中間層和應(yīng)用軟件設(shè)計(jì)上,均按彩色界面方式進(jìn)行程序編寫(xiě),但為了在單色顯示時(shí)能區(qū)分開(kāi)前景和背景的不同,彩色顯示時(shí)又不影響顯示效果,需要把用到的所有前景顏色值定義到DispColorUsed[]數(shù)組,把背景顏色值定義到BakColorUsed[]數(shù)組,并做一定的計(jì)算后存放在BakColor[]數(shù)組中,具體計(jì)算流程如圖3所示。
具體思路如下:如果有背景顏色與某前景顏色相同,G分量值為零,則把對(duì)應(yīng)的背景顏色G分量值加1;如果G分量值大于零,則減1。筆者用GetBkColor()函數(shù)來(lái)計(jì)算當(dāng)前的背景值,用InitBakColor()函數(shù)來(lái)初始化Bak?Color[]數(shù)組。
筆者參考μC/GUI[8]的設(shè)計(jì),再移植了部分ZLG/GUI代碼,開(kāi)發(fā)了自己的輕量級(jí)CH/GUI代碼庫(kù),能很好地支持雙屏兼容顯示。以下為各種文本、圖形的測(cè)試代碼和顯示效果(見(jiàn)圖4)。
顯示效果如圖4所示,圖4左邊為沒(méi)有焊R1的STN-LCD LM057QB1T07顯示效果,右邊為焊上R1后的TFT-LCD LQ057Q3DC12顯示效果,結(jié)果令人滿意。
考慮到兼容雙屏顯示處理會(huì)占用一定的系統(tǒng)資源,筆者在RealView MDK-ARM軟件,LPC2478主頻72 MHz的仿真條件下,對(duì)測(cè)試代碼的CPU運(yùn)行時(shí)間進(jìn)行測(cè)試,結(jié)果如表1所示。
表1 2種方法的CPU運(yùn)行時(shí)間對(duì)比
測(cè)試結(jié)果證明,雙屏兼容顯示會(huì)占用一定的CPU時(shí)間,但考慮當(dāng)前CPU的運(yùn)行速度,實(shí)際影響效果是有限的,符合一般場(chǎng)合的應(yīng)用。筆者已在此平臺(tái)上為客戶開(kāi)發(fā)了一種人機(jī)界面控制系統(tǒng),在系統(tǒng)中實(shí)現(xiàn)了文本、圖形和選單等顯示功能,效果如圖5所示。
通過(guò)LPC2478芯片、LM057QB1T07和LM057QB1T07相互結(jié)合的應(yīng)用實(shí)例,驗(yàn)證了其方法的可行性。本文設(shè)計(jì)方法已經(jīng)成功應(yīng)用于某廣播電視設(shè)備廠家的人機(jī)界面控制系統(tǒng)中,根據(jù)客戶的需求,一套軟硬件平臺(tái)就可裝配兩種不同的液晶顯示屏,系統(tǒng)工作可靠,顯示效果令人滿意。另外,該方法也適合不同的軟硬件平臺(tái),只需對(duì)其作稍微的修改,即可實(shí)現(xiàn)不同規(guī)格的雙屏或多屏之間的兼容顯示,因此本方案具有一定的實(shí)際應(yīng)用價(jià)值。
[1]吳騰奇.黑白液晶顯示技術(shù)[J].電視技術(shù),1997,21(9):78-79.
[2]周咸春,梁維銘.大尺寸TFT-LCD驅(qū)動(dòng)芯片分析與展望[J].電視技術(shù),2006,30(10):33-35.
[3]NXP Semiconductors.LPC24××user manual[EB/OL].[2011-04-03].http://www.nxp.com/#/pip/pip=[pip=LPC2478]|pp=[t=pip,i=LPC2478]:3-4.
[4]李俊,張團(tuán)善.LPC2478彩色模擬TFT-LCD的顯示驅(qū)動(dòng)設(shè)計(jì)[J].液晶顯示,2010(8):35-36.
[5]SHARP Corporation.LM057QB1T07 LCD specification[EB/OL].[2011-04-03].http://www.sharpsma.com/Page.aspx/americas/en/part/LM057 QB1T07/:5-6.
[6]SHARP Corporation.LQ057Q3DC12 LCD specification[EB/OL].[2011-04-10].http://www.sharpsma.com/Page.aspx/americas/en/part/LQ057Q 3DC12/:2.
[7]ARM Ltd and ARM Germany GmbH.ARM development tools help files[EB/OL].[2011-04-12].https://www.keil.com/cmsis/download/.
[8]Micrium Technologies Corporation.μC/GUI User manual[EB/OL].[2011-04-15].http://micrium.com/page/downloads/windows_gui_trial.