摘 要: 介紹了基于TMS320F2812 DSP控制液晶顯示的設(shè)計與實現(xiàn)方法。結(jié)合HX8309-A液晶控制器與DSP芯片的特點設(shè)計了兩者的硬件接口電路,給出了字符、24 bit BMP圖像與振動數(shù)據(jù)波形顯示的軟件設(shè)計思路與部分程序。在此基礎(chǔ)上對液晶顯示模塊的功能進行優(yōu)化設(shè)計,如減少液晶模塊功耗、加快液晶刷新速率、考慮突發(fā)情況等,增強用戶體驗與系統(tǒng)的人性化,為一些手持設(shè)備的圖像顯示與管理提供了一種可借鑒的方法。
關(guān)鍵詞: 手持振動分析儀;液晶顯示模塊;HX8309-A;TMS320F2812;優(yōu)化設(shè)計
隨著生產(chǎn)設(shè)備的日益大型化、復(fù)雜化、綜合化,工業(yè)生產(chǎn)對設(shè)備的依賴程度越來越高。在設(shè)備出現(xiàn)故障前及時發(fā)現(xiàn)問題并采取有效的措施,不僅可減少工廠生產(chǎn)損失,更可以減少或避免人員傷亡與環(huán)境污染。對于一般設(shè)備,其出現(xiàn)的故障不會造成工廠大面積停產(chǎn),可以采用離線監(jiān)測設(shè)備對其進行周期或非周期性檢測。本文的手持振動分析儀就是專為完成該功能而設(shè)計的。
該手持振動分析儀配有相應(yīng)的液晶顯示模塊,直觀給出當前工作溫度與振動信息,方便用戶對設(shè)備的運行狀態(tài)進行判斷。由于本手持振動分析儀具有信號頻譜顯示功能,綜合考慮采用高速信號處理器TMS320F2812(以下簡稱F2812) DSP作為系統(tǒng)處理器。本文著重介紹了在手持振動分析儀中應(yīng)用的一種基于DSP的液晶顯示模塊,并對其進行了優(yōu)化。
1 系統(tǒng)介紹
手持振動分析儀的硬件主要包括電源管理模塊、信號處理模塊、數(shù)據(jù)采集模塊、F2812 DSP微處理器模塊、液晶顯示模塊和接口模塊。鍵盤和液晶屏作為該手持設(shè)備人機接口的輸入、輸出設(shè)備。
圖1給出了該設(shè)備數(shù)據(jù)采集、處理與顯示部分結(jié)構(gòu)圖。具體工作過程為:由傳感器采集的信號經(jīng)過調(diào)理電路進行濾波與適度放大,送入AD芯片,再經(jīng)過F2812 DSP進行FFT變換與頻譜分析,最終在液晶屏上顯示時域波形或頻域波形。
2 硬件設(shè)計
2.1 HX8309-A特點簡介
本系統(tǒng)液晶顯示模塊為自定制。液晶屏采用晶采光電的2.0寸176×220點陣式TFT彩色液晶AM-176220JTNQW-00H-B,具有亮度高、分辨率適中、色彩飽和度好等特點。其控制器采用Himax公司的TFT彩屏控制器HX8309-A,主要特點[1]如下:(1)內(nèi)部擁有一個87 120 B圖形顯示緩存RAM; (2)支持低功率消耗結(jié)構(gòu),供電電壓在2.4 V~3.3 V范圍內(nèi)也能正常工作; (3)通過配置寄存器,可設(shè)置為向液晶GRAM寫入數(shù)據(jù),并且地址寄存器沿X地址或Y地址自動加1(或減1)。如設(shè)置為地址沿X方向自動加1,到行尾時將自動跳到下一行行首,無需每次都寫入地址,從而大大提高了液晶刷圖速度;(4)支持軟件節(jié)能功能,可選擇待機模式、睡眠模式或8色模式以減少液晶顯示模塊的功耗。
2.2 液晶顯示模塊與F2812硬件接口
F2812具有外部接口XINTF,而液晶顯示模塊的工作電壓范圍是從2.4 V~3.3 V,兩者電平相容,可直接相連而無需任何電平轉(zhuǎn)換電路。如圖2所示,液晶顯示模塊數(shù)據(jù)線與F2812的外圍數(shù)據(jù)接口XD[0]~XD[15]相連;液晶顯示模塊的復(fù)位管腳、片選、讀寫控制線分別與F2812的復(fù)位腳、外部接口區(qū)選擇信號線、讀寫選通信號相連,液晶顯示模塊的RS引腳與F2812通用輸入/輸出GPIOF9相連,該引腳控制向寄存器寫命令(RS=1)或者向寄存器寫數(shù)據(jù)(RS=0)。當F2812的外部接口區(qū)選擇信號線被選中時,該引腳自動變低,因此液晶顯示模塊與其無需地址信號線,大大簡化了系統(tǒng)間的硬件連接。
2.3 系統(tǒng)外部存儲與數(shù)據(jù)轉(zhuǎn)換模塊
系統(tǒng)通過F2812外部接口擴展兩片512 KB×16 SRAM,通過SPI接口外接兩片F(xiàn)lash芯片以完成大量信號數(shù)據(jù)與圖形用戶界面圖片的數(shù)據(jù)處理、顯示與存儲。需要在系統(tǒng)掉電后也能保存的數(shù)據(jù)(如圖形用戶界面圖片和需要上傳到上位機的信號數(shù)據(jù)等)均保存在Flash芯片中,系統(tǒng)臨時性數(shù)據(jù)可以放入SRAM,這樣既提高了讀寫數(shù)據(jù)的速度,也確保了有用數(shù)據(jù)的安全性。
3 軟件設(shè)計
考慮程序編寫的規(guī)范性,與液晶顯示模塊相關(guān)的程序都放入一個C文件中,編寫相應(yīng)函數(shù)模塊,并供系統(tǒng)軟件全局調(diào)用。
3.1字符的顯示
可使用取字模軟件或網(wǎng)上現(xiàn)成的字符數(shù)組得到對應(yīng)的數(shù)組數(shù)據(jù)。將該數(shù)組存入F2812的存儲器中,再逐位讀入,1對應(yīng)填充前景色,0對應(yīng)背景色。其中,字寬不是8的倍數(shù)的用0填充,補齊至8的倍數(shù)。具體顯示字符的代碼如下:
將要顯示的字符寫入目標地址中,待數(shù)據(jù)準備好液晶全屏顯示
Input FromBuff: 字符數(shù)組源地址
Input ToBuff: 目標地址
Input beg_x, beg_y: 液晶顯示的起始X、Y坐標
Input nWidth, nHeight: 字寬與字高
Input backcolor: 背景色
Input fontcolor: 前景色
void Show(Uint16 *FromBuff,Uint16 *ToBuff, int16 beg_x, int16 beg_y, int16 nWidth, int16 nHeight , Uint16 backcolor, Uint16 fontcolor)
{
Uint16 i,j,l,width;
Uint16 bit[16]; // 1~16 bit字寬均可
width = nWidth;
while(width % 8 != 0) //字寬不是8的倍數(shù)要補0
width++;
for(j=beg_x+nWidth; j>beg_x;j--)
{
for(l = 0; l < width / 8; l++)
{
for(i = 0; i < 8; i++)
{
bit[i+l*8]=((*FromBuff)>>(7-i)) & 0x01;
if(bit[i+l*8]==0) bit[i+l*8]=backcolor;
else bit[i+l*8]=fontcolor;
}
FromBuff++;
}
for(i=0; i<nHeight; i++)
*(ToBuff + 176*(220-i-beg_y) + j ) = bit[i];
//將需要顯示的字符信息寫入SRAM目標地址中,等待數(shù)據(jù)準備好液晶全屏顯示
}
}
3.2 BMP圖形顯示
本設(shè)計用戶界面使用24 bit BMP文件,而數(shù)據(jù)接口采用16 bit,為方便數(shù)據(jù)處理并節(jié)省存儲空間,在儲存數(shù)據(jù)時就先將24 bit數(shù)據(jù)按照rgb565格式轉(zhuǎn)為16 bit數(shù)據(jù)儲存到Flash中,再對其進行讀出、修改。需要注意的是,大多BMP文件都是倒向的位圖,即圖像的第一行數(shù)據(jù)是儲存在BMP文件的最后一行,因此在讀取圖像數(shù)據(jù)時需要與其他類型數(shù)據(jù)的顯示區(qū)別開。
3.3 波形顯示
先從Flash中將波形顯示圖像數(shù)據(jù)讀取到SRAM中,再將波形數(shù)據(jù)寫入SRAM相應(yīng)位置,待數(shù)據(jù)準備好后再在液晶屏上整體顯示。舉例說明,經(jīng)過A/D轉(zhuǎn)換得到一組數(shù)字信號共1 024點,液晶上代表時間軸坐標顯示范圍為17~113,故在該范圍內(nèi)需1 024/(113-17)=10,即每10點在同一時間點坐標進行顯示,多余的點予以舍棄。接下來的描點畫線可以有兩種處理方法:一種是在每組的10個點中分別找出最大與最小值,再對這兩點進行描線;另一種是在同一時間刻度點上將這10點進行兩兩描點畫線,得到在該時刻的最大與最小值。經(jīng)實驗,兩種方法耗時相近。前種方法得到的波形相對光滑,但由于每組數(shù)據(jù)均需找到最小與最大,會增加軟件的長度與復(fù)雜度;后一種方法思路簡單,軟件復(fù)雜度降低,只需重復(fù)描點畫線。因此本設(shè)計采用后一種波形顯示方法。
采用小振動臺測得對象溫度與速度信號時域波形的顯示效果如圖3所示。
以上內(nèi)容只介紹了液晶模塊的基本操作與應(yīng)用。在此基礎(chǔ)上還可以考慮對液晶模塊進行優(yōu)化設(shè)計,如對液晶顯示模塊在硬件及軟件方面進行低功耗設(shè)計。另外,液晶刷新速率慢則效率低下;太快不僅耗能,而且可能會使DSP對其他響應(yīng)變慢,因此其刷新速率也是需要著重考慮的地方。再有,增加人性化的設(shè)計,讓用戶更輕松、貼心地使用產(chǎn)品。
4 液晶顯示模塊的優(yōu)化
4.1系統(tǒng)低功耗設(shè)計
硬件方面,主要是對液晶背光方面進行考慮。液晶背光源使用的驅(qū)動電源有一定的工作電壓范圍,在這個范圍內(nèi)液晶背光的亮度與工作電流配比最佳。當小于工作電壓范圍的最小值時,工作電流雖小但背光亮度差;大于這個工作電壓范圍的最大值,背光亮度無明顯變化而工作電流卻會以直線形式增加[2],不僅增加功耗,也會使液晶工作一段時間后發(fā)熱發(fā)燙,影響液晶顯示效果。因此需要選擇合適的背光電阻將工作電壓調(diào)整好以達到最佳的液晶背光亮度與電流配比。
軟件方面,由于液晶顯示模塊支持待機模式與休眠模式,在設(shè)計中考慮,若系統(tǒng)在一段設(shè)定時間內(nèi)無操作,F(xiàn)2812向液晶控制寄存器發(fā)送命令,啟動待機模式、休眠模式或8色顯示模式以達到節(jié)能的目的;一旦有新的操作,再喚醒液晶顯示模塊。
4.2 液晶屏刷新速率的提高
本液晶顯示模塊所選用的液晶控制器速度足以滿足需求,所用處理芯片F(xiàn)2812的處理速度也遠遠比液晶屏控制器快,因此在兩者都選定后,軟件的設(shè)計就成為提高液晶屏刷新速率的關(guān)鍵。
采用液晶突發(fā)模式,每次只需要設(shè)定起始地址,液晶地址寄存器便在每次讀寫數(shù)據(jù)后按所設(shè)置的方式,地址自動加1或減1,刷新速率較快。
液晶全屏顯示一幅176×220的24 bit BMP圖像需要先將圖像數(shù)據(jù)從Flash讀取到RAM中,再將數(shù)據(jù)傳送到液晶顯示模塊予以顯示。采用F2812內(nèi)部定時器進行定時,前一步驟耗時約839 ms,而液晶顯示只需41 ms。這樣用戶在菜單選擇時,按下一個鍵至少需等待880 ms下一幅圖才顯示完全,遠不能滿足人眼需求。
由此看出,圖像顯示的耗時主要在圖像數(shù)據(jù)從Flash讀取到SRAM過程中。在此基礎(chǔ)之上,考慮增加顯示緩存,即在將當前界面數(shù)據(jù)從Flash讀至SRAM并在液晶上予以顯示時,考慮下一步所有可能的按鍵操作,在后臺將可能出現(xiàn)的下幾幅圖像數(shù)據(jù)讀至SRAM的后續(xù)地址中,再根據(jù)實際的按鍵操作確定SRAM的相應(yīng)圖像數(shù)據(jù)起始地址。這樣就避免了后續(xù)操作中圖像數(shù)據(jù)從Flash向SRAM傳遞的過程,使圖像顯示速度加快,用戶體驗得到了很好的改善。
4.3系統(tǒng)人性化考慮
除了基本設(shè)計外,還需盡可能多地考慮某些突發(fā)狀況。當儀器的某個鍵被長久按壓時(如異物的擠壓),可視為是對儀器的誤操作。但如果不在軟件方面對這種情況進行考慮,系統(tǒng)會對儀器的操作進行響應(yīng),出現(xiàn)不希望的結(jié)果的同時也增加了耗能。
針對這種情況,可以在軟件設(shè)計中考慮,在某個鍵被持續(xù)按下超過系統(tǒng)設(shè)定的時間后,液晶屏上彈出一個窗口,詢問用戶是否選擇長按該鍵以進行操作。如果是被某個東西壓住某個鍵,則在一段時間內(nèi)不會有對此詢問的回應(yīng),液晶顯示模塊將進入待機模式或者休眠模式以節(jié)能;如果是用戶的真實操作,用戶此時只需按照菜單進行選擇便可進行下一步的操作。
參考文獻
[1] HX8309-A 176RGB×220 dot, 262, 144-Color TFT controller Driver with Internal RAM[EB/OL](2005-11-xx)
[2012-02-26].http://www.mcuchina.com/tft_doc/HX8309-A_2.0.pdf.
[2] 李維諟,郭強.液晶顯示應(yīng)用技術(shù)[M].北京:電子工業(yè)出版社,2000:213-214.