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