摘要:LCD液晶顯示已成為人機交互界面的根本。本文主要講述如何實現用單片機來控制LCD液晶顯示進行了一定的研究。本系統是采用89C51單片機為核心控制元件,并結合顯示硬件的特點進行了軟件設計,這種軟硬件結合的方法一方面提高了運行速度,同時也節省了系統的存儲空間。整個系統采用模塊化設計方法,邏輯結構簡潔明了,層次分明,易于擴展。
關鍵詞:單片機;LCD; RS232;串行通信
中圖分類號:TP334 " " " " " " " " " " " " " " 文獻標識碼:A " " " " " " " " " "文章編號:1671-864X(2014)10-0023-02
一、問題的提出
液晶顯示器件近幾十年來發展迅速,液晶顯示屏Liquid Crystal Display簡稱LCD,類型主要有TFT、UFB、TFD、STN等。 LED液晶顯示在亮度、功耗、可視角度和刷新速率等方面,都更具優勢,功耗低更節能,有更好的視頻表現性能,提供更寬的社角,可以顯示文字、數字、圖像和動畫等多媒體信息,LCD產業也成為國家產業布局的重點領域。小到智能手機、數碼相機、電子表,大到電腦顯示屏、智能電視都在普遍用到LCD顯示屏。LCD在顯示市場中起到主導地位,已成為顯示產業中發展速度最快、市場應用最為廣泛的顯示器件,是目前眾多顯示媒體的最佳選擇,它將在更為廣泛的領域中起到更重要的作用。因此,LCD是目前顯示器件中一個最理想的選擇。LCD顯示技術是計算機技術及電子通信技術的結合點,它集成了多項技術為一身,表現出集成性和綜合性特點,另外由于單片機功能強大,控制起來方便,易于形成功能性產業,而關鍵于前端的顯示,基于單片機的LCD顯示將會帶來廣泛的社會效益和經濟效益,具有良好的發展前景。
二、系統的概述
基于單片機的液晶顯示系統,主要分為單片機控制系統模塊和液晶顯示模塊兩個部分。其中單片機控制系統主要負責數據處理與通信任務的完成,將接收前端PC所輸入的信息,并通過RS232串行接口完成單片機與PC機之間的數據傳輸,而前端PC主機主要完成顯示內容的輸入、各類字符的查找和數據的傳送等相關工作。可先采用任何一種編輯軟件將要顯示的內容保存為一個文本文件,以擴展名TXT保存,然后再調用相關的函數在特定的字庫中按照一定算法依次搜索,查找到TXT文件中的內容,并進行比對,從而得到該字符的字模數據。現者,就是將字模數據生成16H字模數據文件,并按取出的字模順序存放。最后把建立好的字符數據,保存起來待用。LCD顯示模塊包括控制模塊和LCD液晶顯示模塊。其中控制模塊負責接收字模數據文件,并協調各模塊間的工作,主控模塊是KS0108。與帶字庫液晶不同,此模塊中含有兩個液晶驅動器,一塊驅動器控制64*64個點,AMPIRE128*64引腳有CS1和CS2,能實現左右顯示。
本系統主要是實現用單片機來控制液晶顯示,控制方式簡潔,數據通信直接,數據發送快捷。
三、系統的設計
基于單片機的液晶顯示系統,設計的關鍵問題是要實現用單片機控制LCD的顯示。我們從顯示方式入手探求顯示效果,根據顯示要求設計相應顯示電路,用軟件方法將顯示內容的實時更新,但注意字模數據的存儲空間及單片機與顯示模塊之間通信的電路設計。
(一)字模數據的存儲設計。
一般單片機中都有內部存儲器ROM,我們在實驗中選用89C51單片機,它只有4K內存空間。如果顯示內容較多,則需要選用帶更大容量的單片機,或者擴展外部空間,這主要和顯示器件的大小有關。
本設計采用24*24點陣來顯示一個漢字,則每一行需要3個Byte數據,一個漢字占24*3=72B,基本漢字近3000多個,我們將常見的漢字,或者與應用環境有關的漢字,寫入單片機內部ROM中,不需要將整個漢字字庫都存入單片機中,這樣可減少讀取時間,便于實時控制。如果為了適應更復雜的應用場所,可考慮采用擴展的外部數據存儲器。一種方法是采用自已造一個專用字庫,運行前裝入單片機的EROM中,但由于單片機尋址能力有限,需要擴充,才能使用,這樣就會增加硬件成本,顯示時速度會有一些影響。另一種方法,就是直接內容操作系統自帶的軟件庫,用軟件的方法進行字庫編碼的轉換,這樣數據通信占據時間比較長,但是采用軟件方法成本相對較低,字符顯示更穩定。因此,從設計成本、顯示內容的穩定性、硬件電路設計的簡易程度等方面綜合考慮,第二種方法明顯優于第一種方法。
(二)通信電路的設計。
通信電路采用位串行傳輸方式。將一個字模數據中的所有位按一定的順序和方式,通過串口一位一位地進行傳送。正是由于串行傳輸時數據按順序逐位傳送,傳輸線只需要一根,硬件成本會降低,另外,其傳送的數據位多且通信距離長,可實現遠距離通信。
四、系統實現與測試
(一)系統硬件結構。
圖1 系統硬件結構圖
2、系統軟件實現
1)數據定義部分
sbit QD = P2^2;
sbit rs = P3^5; //RS為0--命令,1--數據
sbit rw = P3^6; //RW為1--讀,0--寫
sbit en = P3^4; //使能端
sbit cs1 = P2^1; //片選1低電平有效,控制左半屏
sbit cs2 = P2^0; //片選1低電平有效,控制右半屏
unsigned char receive[90];
unsigned char code huan[];……
unsigned char code table1[][16];
2)主要功能函數
void initLCD(); 初始化函數
void clearScreen(uchar screen); 清屏函數
void display(uchar ss,uchar page,uchar column,uchar p[]); "顯示漢字
void display_BMP(uchar img[][64]); 顯示圖片
void display_char(uchar ss,uchar page,uchar column,uchar asc,uchar p1[][16]);顯示字符
void read_busy() //讀“忙”函數--數據線的最高位的DB7=1則busy
{ P0 = 0x00;
rs = 0;
rw = 1;
en = 1;
while(P0 amp; 0x00);
en = 0;
}
void write_LCD_command(uchar value) //寫命令函數
{
read_busy(); //對LCD的每次讀寫都要讀忙
rs = 0; //選擇命令
rw = 0; //寫操作
en = 1; //EN由1--0鎖存有效數據
P0 = value;
en = 0;
rw = 1;
}
void write_LCD_data(uchar value) //寫數據函數
{
read_busy();
rs = 1; //選擇數據
rw = 0;
en = 1;
P0 = value;
en = 0;
rw = 1;
}
3)主函數main()
void main()
{
TMOD = 0x20; //設置定時器1為工作方式2,低8位計數溢出后將高8位的值賦值給低8位,繼續進行定時計數
TH1 = 0xfd;
TL1 = 0xfd;
TR1 = 1;
SM0 = 0;
SM1 = 1;
REN = 1;
EA = 1;
ES = 1;
initLCD(); //初始化12864
clearScreen(0); //清屏
while(1)
{
if(QD == 0 amp;amp; flag == 0)
{
delay(2,82);
if(QD == 0)
{
flag = 1;
while(!QD);
clearScreen(0); //清屏
display(1,4,2 * 16,huan); //歡
display(1,4,3 * 16,ying); //迎
display(2,4,0 * 16,liu); //瀏
display(2,4,1 * 16,lan); //覽
display(1,6,0 * 16,tu); //圖
display(1,6,1 * 16,wen); //文
display(1,6,2 * 16,shu); //輸
display(1,6,3 * 16,ru); //入
display(2,6,0 * 16,yan); //演
display(2,6,1 * 16,shi); //示
display(2,6,2 * 16,cheng); //程
display(2,6,3 * 16,xu); //序
display(1,0,0*16,table2[3]);
//write_LCD_command(0x00|0x80);
//write_LCD_data(0x3a);
write_LCD_command(0+0x80);
write_LCD_command(0+0x80);
write_LCD_data(0x33);
}
}
else if(QD == 0 amp;amp; flag == 1)
{
delay(2,82);
if(QD == 0)
{
flag = 0;
while(!QD);
clearScreen(0);
delay(5,82);
}
}
if(flag == 0 amp;amp; ii != 0)
{
read_data();
}
}
}
void received() interrupt 4
{
RI = 0;
receive[ii ++] = SBUF;
}
(二)系統測試及運行結果。
系統測試能正常顯示中英字符文本,達到了預期的目的。在后期的研究中可增加觸摸模塊,實現顯示內容的交互控制,從而進一步增加交互界面的友好性,方便使用。
參考文獻:
[1]張毅.MCS-51單片機應用設計[M].哈爾濱工業出版社,2012
[2]何立民.單片機高級教程.北京航空航天大學出版社,2010
[3]許思達.基于51單片機的TFT液晶顯示設計.電子元器件應用[J],2010
[4]魯昀.基于LPC2210微控制器的液晶顯示系統設計.計算機技術與應用,2006
[5]魯剛強.基于液晶顯示器的單片機系統設計.科技資訊,2008
[6]張笑微.利用單片機和液晶顯示器實現網線的實時動態顯示.西南科技大學學院院報,2006
作者簡介:
1.馮蕾,女,(1971.4-),籍貫:湖北黃石,學歷:本科,任職單位:湖北工程職業學院,職稱:講師,研究方向為計算機繪圖與多媒體技術。
2.黃海軍,女,(1967.9-),籍貫:湖北黃石,學歷:碩士,任職單位:湖北師范學院,職稱:副教授,研究方向為計算機網絡、多媒體技術在教育中的應用。