基于Proteus的LCD显示系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Proteus的LCD显示系统设计
文章利用Proteus软件和keil软件完成了LCD显示系统设计,该系统主要有单片机最小系统和LCD1602组成,并在Proteus软件里进行仿真,结果表明,本系统能够正确显示需要显示的信息。
因此基于Proteus软件仿真系统设计能够让单片机初学者理解晦涩难懂的部分,省钱并且能加快单片机学习和设计的进程。
标签:Proteus;单片机;仿真;液晶显示器
引言
单片机这门课程是自动化、机械电子等专业的一门专业技术必修课程,更是他们找工作就业的一个主要特长和技能,但是很多同学反应这门课程学习起来晦涩难懂,主要原因就是单片机是一门实践性很强的专业技术课,光是理论上课再加上有限的几次硬件实验是不好掌握这门技能的。
Proteus是由Labcenter Electronics开发的功能强大的单片机仿真软件,它包括原理图布图、混合模式仿真及PCB板制作等功能,它提供了丰富的外围硬件,可以仿真模拟电路、数字电路、数模混合电路,其最大的亮点在于能够对微控制器进行实物级的仿真,便于操作,效果逼真[1]。
将Proteus软件引入到单片机教学过程,每节课都能见证单片机实物仿真,能够帮助学生理解很多难懂的概念和程序,让单片机不再那么抽象和难接近,使学习效率大大提高。
LCD的显示控制一直是单片机学习中比较难理解和掌握的知识,用Proteus软件让学生仿真LCD的硬件和软件的实现过程,可以加深学生对LCD的硬件控制和软件编制的理解,由此来更好地掌握LCD 显示技术。
本文设计案例是让LCD滚动显示两行内容:Welcome to jd305和Good study MCU!
1 LCD1602介绍及设置
液晶显示器(Liquid Crystal Display),简称LCD,由于
LCD具有功耗低、体积小、超薄型、显示高品质等特点,而广泛应用在便携式电子产品中。
目前我们所使用的LCD是由LCD面板、驱动与控制电路组合而成的,大部分LCD都使用HD44780集成电路作为控制器,它是集驱动器与控制器于一体的专用于字符显示的LCD显示控制驱动集成电路。
HD44780集成电路应用简单,只要将待显示的字符的ASCⅡ码放入内部数据显示存储器(DD RAM),内部控制线路就会自动通过HD44780的字符发生器将字符传送到显示器上。
LCD1602型可以显示2行,每行可以显示16个字符。
LCD1602共有16个引脚,引脚包括8条数据线、3条控制线和3条电源线,其中RS是寄存器选择引脚,当该引脚是1时,选择是数据,当該引脚是0时,选择的是命令。
E是使能引脚,当E=高脉冲时,可以向LCD1602里写数据或命令。
R/W是读写引脚,当该引脚是1时,读操作,当该引脚是0时,写操作,一般是写,所以该引脚一般接地即可。
显示模式设置,要让LCD显示字符,必须对光标、字符移动方向等进行设置,显示才会符合预期要求。
如要设置为16*2显示、5*7点阵、8位数据接口,指令代码为38H;光标和显示模式设置。
指令代码:0000 01 I/D S,I/D-地址指针加1或减1选择位。
I/D=1,读或写一个字符后地址指针加1;I/D=0,读或写一个字符后地址指针减1。
如写完一个字符后,指针加1,光标右移,指令代码是06H。
其他指令,清屏指令是01H,全屏左移字符指令是18H,全屏右移字符指令是1CH。
2 LCD显示系统硬件电路设计
LCD显示系统由AT89C51、LCD1602、电源电路和复位电路组成[2],LCD1602的D0-D7引脚接单片机的P2口,E引脚接P3.4引脚,RS接P3.5引脚,R/W引脚直接接地控制。
单片机与LCD1602在Proteus软件的连接图如图1所示。
3 LCD显示系统软件设计
在Proteus软件画好电路图,并进行电气规则检查,如果没有错误就可以进行软件设计了。
在keil软件里用C语言编制程序,编译,如果没有错误,即可生成可执行HEX文件。
LCD显示系统C程序如下所示。
#include
#define uchar unsigned char
#define uint unsigned int
uchar code h1[]=“Welcome to jd305”;
uchar code h2[]=“Good study MCU!”;
sbit len=P3 ;//液晶使能端
sbit lrs=P3 ;//液晶数据命令选择端
uchar num;
void delay(uint t)//延时子程序
{
uint x,y;
for(x=t;x>0;x--)
for(y=200;y>0;y--);
}
void write_cm(uchar cm)//写命令子程序{ lrs=0;
P2=cm;
len=0;
delay(10);
len=1;
delay(10);
len=0;
}
void write_shu (uchar shu)//写数据子程序{ lrs=1;
P2=shu;
len=0;
delay(10);
len=1;
delay(10);len=0;
}
void init()//初始化
{ write_cm(0x38);
write_cm(0x0e);
write_cm(0x06);//显示模式設置:数据地址指针加1,光标右移,字符不移
write_cm(0x01);//清屏
}
void main()
{ init();
write_cm(0x80+0x10);//指定第一行地址
for(num=0;num<16;num++)
{
write_shu(h1[num]);//写入第一行显示数据
delay(10);
}
write_com(0x80+0x50);//指定第二行地址
for(num=0;num<15;num++)
{ write_shu(h2[num]);//写入第二行显示数据
delay(10);
}
while(1)
{
for(num=0;num<15;num++)//滚动设置
{ write_cm(0x1c);
delay(100);
}
}
4 Proteus仿真
在KEIL里编译程序生成可执行文件后,利用Proteus软件将可执行HEX文件下载到Proteus电路图的单片机芯片里,具体方法是双击单片机芯片,就可将可执行HEX文件加载到单片机中[3]。
然后点击仿真运行按钮就可观看LCD实物仿真效果,仿真图见图1所示。
5 结束语
基于Proteus的LCD显示系统设计,充分体现了Proteus电路设计、Keil程序设计以及联合仿真调试一体化的设计理念,并且用Proteus软件进行单片机仿真设计,节能、省钱、提高效率,简化了单片机系统设计过程,经过实践证明值得推广应用。
参考文献:
[1]张毅刚,俞洋,刘丹,等.单片机原理与应用设计[M].北京:电子工业出版社,2016.
[2]张成法,安庆森,韩淑琴.基于单片机的LCD显示系统设计[J].信息与电脑,2016(15):128.
[3]吴凌燕,王守权,郭伟波.基于Proteus的LCD显示研究[J].现代电子技术,2011,34(19):208.。