摘 要:液晶顯示是目前單片機技術中廣泛應用的功能。利用功能強大的AT89S52型單片機和編程軟件Visual C++,設計一種新型液晶顯示控制電路。從AT89S52單片機和DMC20261型LCD液晶顯示屏的性能特點入手,結合實際經驗實現二者之間的接口設計。經過調試,該控制系統取得了比較滿意的設計結果,且系統軟硬件設計簡單方便、穩定可靠,可廣泛應用于智能化儀器儀表及各種宣傳場所,為嵌入式控制系統提供高靈活、高性價比的解決方案。
關鍵詞:AT89S52單片機;DMC20261液晶顯示屏;硬件接口;軟件設計
中圖分類號:TP368.1文獻標識碼:B
文章編號:1004373X(2008)2202204
Design of LCD Control Circuit Based on AT89S52
CHEN Jingpei,XU Yongmei
(Huaian Broadcasting and Television University,Huaian,223005,China)
Abstract:The liquid crystal display is the widespread application function in present monolithic integrated circuit technology.The design uses powerful AT89S52 single chip computer and programming software Visual C + +,designs a new type of LCD control circuit.From the AT89S52 and DMC20261 liquid crystal display monitor′s performance characteristics,according to experience,it introduces between two connection technology,contains the mature hardware electric circuit and the software design.The experimental resultsindicate that,this design is simple,convenient,stable and reliable,it is widely applied in the intellectualized instrument measuring appliance and each kind of sounding board,provids high nimble,high performance solution for embedded control system.
Keywords:AT89S52 single chip computer;DMC20261 LCD;hardware interface;software design
1 AT89S52單片機簡介
1.1 芯片主要特性
AT89S52單片機是Atmel公司新近推出的高檔、增強型產品。它是一個低功耗、高性能CMOS 8位微控制器,片內含通用8位中央處理器和ISP FLASH存儲單元,8 kB ISP(In-system programmable)的可反復擦寫1 000次的FLASH只讀程序存儲器,片上FLASH允許程序存儲器在系統可編程,亦適于常規編程器。器件采用Atmel公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統及80C51引腳結構,在單芯片上,擁有靈巧的8 位CPU 和在系統可編程FLASH,使得AT89S52為眾多嵌入式控制應用系統提供高靈活、高性價比的解決方案。
1.2 AT89S52管腳排列
AT89S52單片機有PDIP,PLCC和TQFP等3種封裝形式(常見的PDIP排列見圖1)。
2 DMC20261型液晶顯示屏
DMC20261型液晶顯示模塊內部由3部份組成:LCD控制器、驅動器、顯示器。如圖2所示。

目前大部分LCD液晶顯示器的控制器都有采用型號為HD44780的集成控制器。HD44780是集控制器、驅動器于一體,專用于字符顯示控制驅動集成電路。HD44780是字符型液晶顯示控制器的代表電路。其主要特點是:
HD44780不僅作為控制器而且具有驅動40×16點陣液晶像素的能力,且驅動能力可通過外接驅動器擴展360列驅動;顯示緩沖區及用戶自定義的字符發生器CGRAM全部內藏在芯片內;具有適用于M6800系列MPU的接口,并且接口數據傳輸可為8位數據和4位數據傳輸2種方式;具有簡單而功能較強的指令集,可實現字符移動,閃爍等顯示功能(見表1);由于HD44780的DDRAM容量所限,HD44780可控制的字符高達每行80個字,也就是5×80=400點,內藏有16路行驅動器和40路列驅動器,所以HD44780本身就具驅動有16×40點陣LCD能力(即單行16個字符2行8個字符);內藏的字符發生存儲器(CGROM)已經存儲了160個不同的點陣字符圖形(見圖3),比如數字“1”的代碼是00110001B(31H),又如大寫的英文字母“A”的代碼是01000001B(41H)。

2.1 液晶屏控制器的指令
字符LCD的指令共有11條,詳細功能和用法見表1。
2.2 字符圖形代碼
字符圖形代碼(如圖3所示)。

3 液晶顯示屏與AT89S52接口的設計
3.1 硬件電路設計
在實際應用中,液晶模塊與單片機的連接方式很多。從占用I/O口線的多少來分有串行方式和并行方式,其中串行方式速度較慢、占用的I/O口少,并行方式分為4線和8線、速度較快、占用的I/O口多,實際應用中以并行方式居多。目前51系列單片機是國內外應用最廣泛的一類,下面介紹筆者設計成功的接口電路供大家參考。
單片機的P0口和P3口的部份引腳與DMC20261型液晶顯示連接電路如圖4所示。
3.2 軟件設計
由DMC20261字符圖形代碼及控制器的指令特點編寫一個簡單的顯示程序“淮安市高職院”。其中P35為命令/字符、P36為讀/寫、P37為脈沖引腳,P0口為數據端,每個漢字占5列8行點陣,兩行最多可編16字。主程序流程圖如圖5所示。后面附上用調整軟件Dev C++IDE編寫并調試成功的程序。

注:*表示可以為0或1。
控制系統實用程序如下:
#include
#include
#define RS P35//定義P35為命令/數據引腳//
#define RW P36//定義P36為讀寫//
#define E P37//定義P37為脈沖//
unsigned char count,sec,min,hr;
void delay(unsigned int duration) //延遲函數//
{
while (duration--!=0);
}
void store() //脈沖函數//
{
E=1;
delay(300);
E=0;
delay(300);
}
void LCD_init()//顯示器初始化函數//
{
RS=0;
RW=0;
P0=0X38; //定義顯示器為兩行//
store();
P0=0X0C;//顯示光標//
store();
P0=0X06;//屏不移動//
store();
P0=0X01;//清除命令//
store();
P0=0X02;//返回原位置//
store();
}
void LCD_print(unsigned char k) //輸送數據到顯示器//
{
P0=k;
RS=1;
RW=0;
store();
}
void LCD_command(unsigned char m)//輸送命令到顯示器//
{
P0=m;
RS=0;
RW=0;
store( );
}
void display_chinese()
{
LCD_command(0x40); //“淮”,字符存儲器開始地址為40H,占5列8行//
LCD_print(0x0a);
LCD_print(0x1f);
LCD_print(0x0a);
LCD_print(0x1f);
LCD_print(0x0a);
LCD_print(0x0f);
LCD_print(0x1a);
LCD_print(0x0f);
LCD_command(0x48); //“安”//
LCD_print(0x04);
LCD_print(0x1f);
LCD_print(0x15);
LCD_print(0x04);
LCD_print(0x1f);
LCD_print(0x0a);
LCD_print(0x04);
LCD_print(0x0a);
LCD_command(0x50); //“市” //
LCD_print(0x04);
LCD_print(0x00);
LCD_print(0x1f);
LCD_print(0x04);
LCD_print(0x1f);
LCD_print(0x15);
LCD_print(0x15);
LCD_print(0x15);
LCD_command(0x58); //“高”//
LCD_print(0x04);
LCD_print(0x1f);
LCD_print(0x0e);
LCD_print(0x1f);
LCD_print(0x11);
LCD_print(0x1f);
LCD_print(0x1f);
LCD_print(0x11);
LCD_command(0x60); //“職”//
LCD_print(0x1e);
LCD_print(0x14);
LCD_print(0x1f);
LCD_print(0x17);
LCD_print(0x1f);
LCD_print(0x14);
LCD_print(0x1f);
LCD_print(0x04);
LCD_command(0x68); //“院”//
LCD_print(0x1A);
LCD_print(0x17);
LCD_print(0x15);
LCD_print(0x1A);
LCD_print(0x12);
LCD_print(0x15);
LCD_print(0x1D);
LCD_print(0x15);
LCD_command(0xC5); //顯示字符于第二行//
LCD_print(0);
LCD_print(1);
LCD_print(2);
LCD_print(3);
LCD_print(4);
LCD_print(5);}
void main(){
LCD_init();//顯示器初始化//
display_chinese(); //顯示漢字//
for(;;);}


4 結 語
本文介紹液晶顯示屏與AT89S52單片機接口的設計方法,硬件電路與軟件實現簡單易行。AT89S52高性能單片機功耗低、兼容性強、具有可反復擦寫1 000次的ISP FLASH在系統可編程單元。
DMC20261型液晶顯示屏具有簡單而功能較強的指令集,可實現字符滾動、閃爍等顯示功能,且文字清晰準確,廣泛應用于智能化儀器儀表及各種宣傳場所,為嵌入式控制系統提供高靈活、高性價比的解決方案。
參考文獻
[1]AT89S52單片機功能特性[EB/OL].http://www.atmel.com,pdfprodoct/DSP/8051architecture/search-AT89S52/ AT89S52,2006.
[2]程敬鋒.LCD液晶顯示屏的內部結構[EB/OL].http://www.natiem.com,2006.
[3]焦娟麗,郭學良.液晶顯示器在單片機控制系統中的應用 [J].現代顯示,2006(9):39-42.
[4]張志良.單片機原理與控制技術[M].北京:機械工業出版社,2001.
[5]居水榮.單片機及其發展趨勢[J].微納電子技術,2001(2):13-15.
[6]周立功.ARM嵌入式系統基礎教程[M].北京:北京航空航天大學出版社,2005.
[7]Daniel P Bovet,Marco Cesati.Understanding the Linux Kernel [M].O′Reilly,2000.
[8]譚浩強.C語言程序設計[M].2版.北京:清華大學出版社,1999.
[9]呼克佑,師智斌,劉爽英.C語言程序設計[M].北京:中國宇航出版社,2002.
[10]Brian W Kernighan,Dennis M Ritchie.The C Programming Language[M].北京:機械工業出版社,2004.
[11]李維緹,郭強.液晶顯示器件應用技術[M].北京:電子工業出版社,2000.
[12]Kyungbuk.P-type Technology for Large Size Low Temperature Poly-Si TFT-LCDs.2000:1 116-1 119.
[13]劉波.單片機與液晶控制器的接口設計[J].機械工程與自動化,2006(4):63-64,67.
作者簡介 陳京培 女,1972年出生,江蘇淮安人,碩士,淮安廣播電視大學講師、工程師。