摘 要: 提出了一種基于DSP和ST7920控制模塊進行液晶顯示的實現(xiàn)方法,介紹了液晶顯示控制器ST7920的性能特點,給出了DSP與液晶顯示屏LM3303A-B硬件接口設(shè)計、軟件設(shè)計" title="軟件設(shè)計">軟件設(shè)計程序流程以及詳細的液晶顯示程序。設(shè)計的該顯示模塊能夠應(yīng)用于工程機械上。
關(guān)鍵詞: DSP ST7920 液晶顯示屏 接口
DSP是一種適合于數(shù)字信號處理的實時高速的高性能微處理器,已廣泛應(yīng)用于自動控制、圖像處理、通信技術(shù)、網(wǎng)絡(luò)設(shè)備、儀器、儀表和家電領(lǐng)域。液晶顯示屏以其顯示直觀、便于操作的特點被用作各種便攜式系統(tǒng)的顯示終端。傳統(tǒng)液晶大多用單片機控制,而單片機的數(shù)字信號處理能力遠低于DSP芯片,使得其應(yīng)用范圍受到限制?;诖?,本文選用TOPWAY公司生產(chǎn)的、以ST7920為控制芯片的128×64點陣3.3V簡體中文字庫的LM3303A-B型圖形液晶,介紹了一種基于DSP和ST7920的液晶顯示屏的設(shè)計。
1 ST7920控制器介紹
LM3303A-B型液晶顯示屏是香港TOPWAY公司采用臺灣銘創(chuàng)電子公司生產(chǎn)的ST7920控制器的液晶顯示屏。它由128×64點陣構(gòu)成、接口方便(3.3V)、設(shè)計簡單、功耗低、價格便宜,可用于各種設(shè)備的顯示終端[1]。
ST7920支持8位、4位并行或2線、3線串行兩種接口方式" title="接口方式">接口方式,帶有ZMB的中文字型" title="字型">字型CGROM,該字庫ROM中含有8192個16×16點陣的中文字型,可利用代碼簡單方便地顯示漢字。16KB的半寬字型HCGROM,提供了126個168點陣的ASCII字符庫,便于英文和其他常用字符顯示。64×16位元" title="位元">位元的字型產(chǎn)生CGRAM,用戶可以根據(jù)需要構(gòu)造生僻字。64×26位元的繪圖GDRAM,方便構(gòu)造圖形??刂破骶哂欣L圖及文字畫面混合顯示功能。另外,控制器提供基本指令與擴充指令命令,功能強大。
2 DSP與液晶顯示屏硬件接口設(shè)計
由于LM3303A-B具有串/并行多種接口方式,針對DSP外圍I/O豐富且處理速度快的特點選用8位并行的接口方式,這種方式下雖然接線多,但是速度比串行要快得多,所以將PSB引腳接高電平。
DSP 與LM3303A-B之間的接口電路如圖1所示。由于LM3033A-B是3.3V簡體中文圖形液晶,所以DSP與液晶之間不用電平轉(zhuǎn)換。其中DSP 的IOPE0~IOPE7用作數(shù)據(jù)接口,與LCD模塊的數(shù)據(jù)線DB0~DB7相連,完成與LM3303A-B 間的數(shù)據(jù)傳送;IOPF0與RS相連,決定是數(shù)據(jù)(RS=0)還是命令(RS=1);IOPF1與R/W相連,決定是寫入(RW=0)還是讀出(RW=1); IOPF2與E相連,工作狀態(tài)使能。IOPD0與/RST相連用于復位。VDD接+3.3V輸入電源。A與K引腳間的電壓為顯示屏內(nèi)部發(fā)光二極管提供電壓,使其產(chǎn)生背光;參考文獻[1]中要求調(diào)節(jié)顯示屏的對比度是在V0與VOUT之間串接一個電位器,但在實際應(yīng)用中無法實現(xiàn),而是采用V0直接接+5V的上拉電阻且空出VOUT,可以有效地調(diào)節(jié)顯示對比度。
3 DSP控制液晶顯示屏的軟件設(shè)計
從程序的可移植性和通用性方面考慮,選擇C語言進行軟件模塊的設(shè)計實現(xiàn)。這里通過液晶顯示屏的初始化過程以及如何顯示文本和一幅圖畫來具體說明DSP控制液晶顯示屏的軟件設(shè)計。
3.1 軟件設(shè)計程序流程
DSP要控制液晶顯示屏系統(tǒng)運行,首先應(yīng)將系統(tǒng)接通電源,系統(tǒng)自動復位。復位后進行系統(tǒng)初始化、液晶初始化。在初始化完畢后,系統(tǒng)可以通過控制器發(fā)出的指令調(diào)用相關(guān)函數(shù),完成相應(yīng)的顯示功能。其主程序流程圖如圖2所示。
3.2 系統(tǒng)及液晶初始化
系統(tǒng)初始化禁止所有可屏蔽中斷,并關(guān)總中斷,在進行關(guān)鍵設(shè)置時不允許發(fā)生中斷,以免產(chǎn)生干擾。允許符號位擴展,將B0配置為數(shù)據(jù)存儲空間。設(shè)置IOPE0~IOPE7為LCD數(shù)據(jù)接口。
液晶初始化需首先進行復位清屏,如果液晶顯示屏正常工作,便可寫命令到LCD。其中用到用戶定義的函數(shù)LCD_WriteCommand(uchar cmdcode)和函數(shù)LCD_Busy(),其作用分別為寫命令到LCD和判斷ST7920內(nèi)部是否處于忙碌狀態(tài)。這里值得注意的是,當ST7920在接受指令前,DSP必須先確認ST7920內(nèi)部處于非忙碌狀態(tài),即讀取BF標志位時BF需為0,方可接受新的指令。
3.3 ST7920的讀寫時序
在軟件設(shè)計過程中,只有產(chǎn)生符合ST7920的讀寫時序后才能對液晶正確操作,否則液晶顯示屏不會有任何輸出。
本系統(tǒng)中的DSP主頻為30MHz,相對而言,液晶屬于慢速的外設(shè),所以在讀寫子程序中應(yīng)該插入一些延時等待。根據(jù)圖3和圖4中的時序圖可以編寫以下讀寫子程序(其中為了提高 程序的可移植性與可讀性,在程序開頭都用了宏定義,限于篇幅在此不再給出):
void LCD_WriteCommand(uchar cmdcode)//寫命令到LCD
{
clr_LCD_RS;
clr_LCD_RW;
clr_LCD_E;
LCD_Out_Data(cmdcode);
set_LCD_E;
Delay(10);
clr_LCD_E;
Delay(100);
set_LCD_RW;
}
void LCD_WriteData(uchar lcddata)//寫數(shù)據(jù)到LCD
{
set_LCD_RS;
clr_LCD_RW;
clr_LCD_E;
LCD_Out_Data(lcddata);
set_LCD_E;
Delay(10);
clr_LCD_E;
Delay(100);
set_LCD_RW;
}
/*忙判別*/
void LCD_Busy(void)
{
clr_LCD_RS;
set_LCD_RW;
clr_LCD_E;
for(;;) //若液晶空閑則停止等待
{
if(!(LCD_In_Data&0x80) )break;
}
set_LCD_E;
Delay(10);
clr_LCD_E;
Delay(100);
clr_LCD_RW;
}
3.4 液晶顯示程序設(shè)計
液晶初始化完成后,可調(diào)用函數(shù)void dis_txt()進行文本的寫入與顯示。詳細代碼如下(其中函數(shù)void dis_hz(char*s)用來顯示字符串):
void dis_hz(char*s)//顯示文本字符串
{ while(*s>0)
{LCD_WriteData(*s++);Delay(10);}
void dis_txt()//DDRAM
{
LCD_Busy();
LCD_WriteCommand(0x01);//清屏
LCD_WriteCommand(0x82);//設(shè)定DDRAM地址為0x82
dis_hz(″TOPWAY″);//字母數(shù)字直接送ASCII即可
LCD_WriteCommand(0x90);//設(shè)定DDRAM地址為0x90
dis_hz(″LM3033 測試程序″);
LCD_WriteCommand(0x89);//設(shè)定DDRAM地址為0x89
dis_hz(″TMS320LF2407A″);
LCD_WriteCommand(0x9A);//設(shè)定DDRAM地址為0x9A
dis_hz(″實驗系統(tǒng)″);
}
液晶顯示屏顯示圖片,調(diào)用void Disp_Img(uchar*img)函數(shù),先完成地址歸位和清屏等相關(guān)工作,其后的關(guān)鍵功能代碼實現(xiàn)如下:
LCD_WriteCommand(0x34);//選擇8位數(shù)據(jù)流,擴充指令,繪圖顯示關(guān)
LCD_Busy();
for(y=0;y<32;y++)
{
for(x=0;x<8;x++)
{
LCD_WriteCommand(0x80+y);//先將垂直的位元組坐標(Y)寫入GDRAM
LCD_WriteCommand(0x80+x);//再將水平坐標(X)寫入GDRAM
LCD_WriteData(img [j++]);//將D15~D8寫入到RAM中
LCD_WriteData(img [j++]);//將D7~D0寫入到RAM中
}
LCD_WriteCommand(0x36);//選擇8位數(shù)據(jù)流,擴充指令,繪圖顯示開
Delay (30);
}
本文對基于DSP和ST7920液晶顯示模塊" title="液晶顯示模塊">液晶顯示模塊的實現(xiàn)方法進行了探討,對顯示模塊ST7920進行了有效的控制, 所應(yīng)用程序均在TMS320LF240x系列的軟件編譯環(huán)境CCS V2.0下調(diào)試通過。液晶顯示屏能夠正常顯示連續(xù)的漢字、字符以及圖形,性能穩(wěn)定。與同類型的其他圖形點陣液晶顯示模塊相比,其硬件電路結(jié)構(gòu)簡單、方式靈活、對于其他型號的接口芯片也有參考價值。該顯示模塊能夠應(yīng)用于工程機械上。
參考文獻
[1] LM3033A-0B LCD Module User Manual[Z].Shenzhen Top-way Technology Co.,Ltd.
[2] 劉和平.TMS320LF240xDSP C語言開發(fā)應(yīng)用[M].北京航空 航天大學出版社,2005.
[3] 李敏,孟臣.串行接口中文圖形點陣液晶顯示模塊的應(yīng)用[J].中國電子網(wǎng),2004.
[4] 王鑫,傅豐林,陳健.一種基于DSP控制的液晶顯示屏的設(shè)計及實現(xiàn)[J].集成電路應(yīng)用,2003,(5):64-66.
[5] 范艷開,張怡,趙芙蓉.基于DSP的液晶模塊的顯示原理及實現(xiàn)[J].集成電路應(yīng)用,2004,(6):74-76.