基于AT89S52单片机的液晶显示控制电路设计
摘 要:液晶显示是目前单片机技术中广泛应用的功能。利用功能强大的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年出生,江苏淮安人,硕士,淮安广播电视大学讲师、工程师。