一種基于DSP實現(xiàn)的LCD液晶屏顯示技術(shù)
隨著電子產(chǎn)品集成化的發(fā)展.液晶顯示屏在便攜式儀器中實現(xiàn)圖像或文字的顯示應(yīng)用更為廣泛。同時在當(dāng)今信息時代,數(shù)字圖像處理技術(shù)對實時性、運算量大的要求越來越高,所以高運算速度的DSP芯片在數(shù)字圖像處理領(lǐng)域得到了廣泛的應(yīng)用;其使數(shù)據(jù)采集、控制與人機界面融為一體,由于DSP處理速度快,整個系統(tǒng)能夠由一片DSP芯片控制.體積更小、功耗更低、更便于攜帶[1]。目前大多數(shù)液晶控制器的接[1電路及驅(qū)動程序主要是針對單片機設(shè)計的[2],DSP的液晶屏接口電路參考資料相對較少,而在實際應(yīng)用中,單片機的硬件資源遠遠不夠。所以本文提出一種由DSP控制實現(xiàn)LcD液晶屏顯示的方案。
2 硬件設(shè)計
本系統(tǒng)采用TI公刮的加強型定點DSP芯片TMS320VC54lOA[3],其頻率可達160 MHz,內(nèi)部有64 kRAM空間,可以靈活的映射為數(shù)據(jù)或程序存儲窄間。
液品模塊采用信利公司的MG一128128-2中規(guī)模液品屏[2]。該模塊內(nèi)置有T6963C控制芯片,T6963C的最大特點是具有獨特的硬件初始值設(shè)置功能,顯示驅(qū)動所需的參數(shù)如占空比系數(shù),驅(qū)動傳輸?shù)淖止?jié)數(shù)/行及字符的字體選擇等均由引腳電平設(shè)置。這樣T6963C的初始化在上電時就已經(jīng)基本設(shè)置完成。軟件操作的主要精力就可以全部用于顯示畫面的設(shè)計。
本系統(tǒng)中使VC5410A采用1/O空間擴展方式控制液晶模塊。由于向液晶模塊寫數(shù)據(jù)、寫指令和寫控制信號時。需要鎖存總線,所以采用了鎖存芯片74HC573實現(xiàn)總線的鎖存。74HC573由8個D觸發(fā)器組成。這8個D觸發(fā)器具有共同的鎖存使能(LE)和輸出使能 。LE的下降沿將DO~D7上的數(shù)據(jù)鎖存到O0~O7上的數(shù)據(jù)不隨D0~D7變化。
DSP與液晶顯示模塊部分接口電路如圖l所示。LE的下降沿將D0~D7上的數(shù)據(jù)鎖存到O0~O7上,當(dāng)LE為低時O0~O7上的數(shù)據(jù)不隨D0~D7變化。鎖存器的使能端由Vc5410A的A10和IS控制,即把控制信號鎖存在地址為0400H的I/O空間上。其真值表如表1昕示。
系統(tǒng)中相類似的鎖存電路有3個,寫數(shù)據(jù)(指令)鎖存電路的使能端由DSP的A11和IS控制,將數(shù)據(jù)或指令鎖存住地址為0800H的I/O空間上,讀數(shù)據(jù)鎖存電路使能端DSP的A9和IS控制,將所讀的數(shù)據(jù)鎖存在地址為020OH的1/O空間上。DSP的低8位數(shù)據(jù)線和液晶模塊的數(shù)據(jù)總線連接.負責(zé)將控制指令和顯示數(shù)據(jù)送到顯示模塊的數(shù)據(jù)線上。 vc5410A的內(nèi)部存儲空間有限,所以本系統(tǒng)擴展了一個64 Mb/s的外部程序存儲器SST39VF400A,該芯片的數(shù)據(jù)線和地址線分別與DSP芯片的對應(yīng)相連,片選信號由 控制,讀寫控制引腳與DSP的讀寫信號R/w相連。
3軟件設(shè)計
液晶屏實際是通過若干個象素點來構(gòu)成漢字或圖形的,刈'應(yīng)位為"1"時.液晶點被點亮;為"O"時,不點亮。要顯示漢字或圖肜實際就是按照一定的規(guī)律點亮相應(yīng)的液晶象素點.視覺上看起來就成了一個漢字或圖形。
MG一1 28128-2的控制器T6963C有一系列操作指令,通過指令的調(diào)用可以實現(xiàn)對液晶模塊的控制[4]。在設(shè)計過程中,根據(jù)T6963c的指令系統(tǒng)及與DSP的時序信號波形圖進行編程。T6963指令系統(tǒng)如表2所示。T6963C的控制時序如圖2所示。
液晶模塊一作時序的產(chǎn)生主要是通過控制信號的改變來實現(xiàn)的.在編寫寫指令、寫數(shù)據(jù)、讀數(shù)據(jù)等 子程序之前,首先要確定硬件接口圖的時序,本系統(tǒng)的控制信號接口順序巾高到低依次為:NULL一NUL一OEw-RD-WR-CD一CE-LCD RST,通過訪問I/O空間的0200H,0400H,0800H地址,來控制液晶模塊。
DSP控制液品屏的軟件流程圖如圖3所示。
液品屏上電之后,屏幕上的顯示是隨機的,所以控制程序開始就需要清屏,使屏幕上的液晶點全滅。然后初始化一些顯示參數(shù),例如顯示區(qū)域、娃示方式、顯示狀態(tài)、光標(biāo)狀念等的設(shè)置。然后畫出操作界面背景;DSP控制液晶顯示采用外部中斷辦式。當(dāng)有外部中斷時.前端數(shù)據(jù)采集部分將數(shù)據(jù),開始進入DSP緩存.同時清除顯示區(qū)域上次的顯示,對數(shù)據(jù)進行相應(yīng)的處理。給液晶屏發(fā)送接收數(shù)據(jù)指令,即將LCD的RD引腳置為低電平,然后將顯示數(shù)據(jù)送到LCD數(shù)據(jù)總線上,一個周期的數(shù)據(jù)的采集和顯示即完成。
下面將給出部分C語言的液晶模塊驅(qū)動子程序,首先足一些變量的聲明函數(shù)和用到的庫函數(shù):
#include
#define port LCD cmd port0400
//定義液晶模塊的命令鎖存地址為I/O空間的
0400H
#define port LCD write port0800
∥寫數(shù)據(jù)鎖存地址為0800H
#define port LCD read port0200
//讀數(shù)據(jù)鎖存地址為0200H
#define port_LCD_null;
ioport unsigned short port port_LCD_cmd;
ioport unsigned short port port_LCD_write;
ioport unsigned short port port_LCD_read;
ioport unsigned short port port_LCD_null;
讀命令的子程序:
unsigned short Icd-read-command()
{
{
unsigned short temp;
port LCD_ cmd=0x003F:
port LCD_ null=0x003F;
port LCD_ emd一0x002D;
∥LCD_ RST=1,CE=0,CD=1,WR=1,RD=0,OEW=1
port LCD_ nulI=0x002D;
temp=port LCD_ read:
port LCD_ cmd=0x003F;
port LCD_ null=0x003F;
return(temp);}
畫點子程序:
Void led draw point(unsigned short X,unsigned short y)
{
unsigned short temp;
temp一(y<<4)+(x>>3)+0x100;
led-write-data(temp);
led-write-data(temp>>8);
lcd-write-write-command(0x24);
//送地址指針的控制字24H到命令端口
temp=(0x07一(X&ox07))l 0xF8;
//FOH~FFH把選中的一位置1,即點亮,畫點完成
lcd-write-command(temp);
}
向液晶模塊寫數(shù)據(jù)和寫指令的子程序與讀數(shù)據(jù)的過程相似,只要根據(jù)控制模塊的時序圖給出相應(yīng)的命令即可。然后編寫出初始化、清屏、畫點等子程序,再此基礎(chǔ)上就可以編寫顯示字符、數(shù)字、漢字及圖形等。每條指令的執(zhí)行都是先送入?yún)?shù),再送入指令代碼,然后送顯示數(shù)據(jù)。
4 結(jié) 語
本文提出利用高速率DSP芯片控制液晶屏顯示的技術(shù),并編寫出針對DSP的C語言液晶模塊的驅(qū)動程序,能夠廣泛地應(yīng)用于各種圖像的處理和顯示場合,在調(diào)試和仿真過程中取得了良好的顯示效果。此電路的設(shè)計思想也可以應(yīng)用在其他液晶模塊的接口設(shè)計中,只要對程序稍加改動就可以加以。