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