基于单片机的液晶显示设计毕业设计.docx
《基于单片机的液晶显示设计毕业设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的液晶显示设计毕业设计.docx(128页珍藏版)》请在冰豆网上搜索。
基于单片机的液晶显示设计毕业设计
苏州经贸职业技术学院
毕业设计(论文)材料
毕业设计(论文)课题:
12864液晶显示的设计
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
矚慫润厲钐瘗睞枥庑赖。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
聞創沟燴鐺險爱氇谴净。
作者签名:
日 期:
摘要
本文设计主要介绍了以AT89S52单片机为控制设备,AMPIRE128*64液晶显示器为显示设备,实现的一个可以显示静态汉字、动态汉字、字符、图片以及由多个图片形成的简单动画的液晶显示设计。
通过设置PCtoLCD2002取模软件和畔畔字模提取软件的相关参数值,再根据AMPIRE128*64LCD的指令表及程序设计等提取所要用的汉字、字符、图片程序送往液晶显示器显示,并可做一些灵活的动态显示变换,提升显示效果。
本文在KEIL软件下,采用的是C语言进行软件设计,C语言使用助记符、符号、和数字等来表示指令的程序语言,容易理解和记忆且通用性强,设计方便。
利用Proteus软件进行仿真和验证系统的正确性。
纣忧蔣氳頑莶驅藥悯骛。
关键词:
单片机、AMPIRE128*64LCD显示、Proteus
前言
毕业设计,要求学生更多的完成软硬件结合的动手实践方案,解决目前学生课程设计过程中普遍存在的缺乏动手能力的现象。
而单片机设计的目的与任务是训练学生综合运用已学课程“单片机工程项目应用技术”的基本知识,独立进行单片机应用技术和开发工作,掌握单片机程序设计和应用电路设计、分析及调试检测。
在单片机应用系统中,良好的人机界面是不可缺少的重要组成部分,用户可通过人机界面获取系统运行状态及一些过程参数,方便用户操作。
在通常情况下,人机界面用两种方法实现,一种是用普通的数码管LED实现,LED显示器价格低廉,发光强度高,机械性能好,在普通单片机系统中应用较为广泛;另一种则是液晶显示。
本设计使用的是AMPIRE128*64LCD。
颖刍莖蛺饽亿顿裊赔泷。
随着社会的发展,越来越多的地方需要应用显示功能,例如,各种数字显示仪器中的显示、广告屏、数码产品等。
传统的数码管显示已经远远不能满足各行各业的需求。
基于单片机LCD显示是一种用单片机来控制的显示系统,它不仅能显示各种数字、字母,还能显示各种字体的汉字以及一些简单的图像和动画,使用起来极为便利,只要通过对单片机写入一定的程序来控制LCD的显示即可完成,根据程序的不同而产生不同效果以满足各种需求。
濫驂膽閉驟羥闈詔寢賻。
本设计采用AT89S52模拟仿真,大致要求为:
设计12864液晶显示与单片机的显示接口电路,显示简单的静态/动态汉字,图片以及由多个图片组成的简单动画。
銚銻縵哜鳗鸿锓謎諏涼。
第一章绪论
1.1单片机选型
此设计是通过单片机来控制LCD来显示一些要求的汉字、字符、图片及简单动画等。
单片机种类繁多,由于上课着重介绍了51系列的单片机,故对此类型的单片机比较熟悉,故在此设计中选用的单片机为AT89S52,方便操作和进一步学习加深。
挤貼綬电麥结鈺贖哓类。
1.2LCD方案论证
方案一:
使用LCD1602成本低,程序控制简单,但它只能显示16*2个半宽字型符,不能显示汉字,比较单调。
赔荊紳谘侖驟辽輩袜錈。
方案二:
LCD128*64硬件上提供8位,4位并行接口及串行接口供选择,64*16位字符显示RAM,2M位中文字型ROM,总共提供8192个中文字型(16*16点阵),16K位半宽字型ROM,总共提供126个西文字型(16*8点阵),64*16位字符产生RAM。
在软件上提供文字与图形混合显示、画面清除、显示移位、反白显示等功能,相对于LCD1602来说功能丰富且由于AMPIRE128*64LCD能够显示的资料比较容易得到,又比较通俗易懂,便于快速上手。
塤礙籟馐决穩賽釙冊庫。
综合以上方案,决定选用AMPIRE128*64LCD用来作为显示。
1.3LCD显示原理
LCD由两块玻璃板构成,厚约1mm,其间由包含有液晶材料的5µm均匀间隔隔开。
因为液晶材料本身并不发光,所以在显示屏两边都设有作为光源的灯管,而在液晶显示屏背面有一块背面板(或称匀光板)和反光膜,背光板是由荧光物质组成的可以发射光线,其作用主要是提供均匀的背景光源。
裊樣祕廬廂颤谚鍘羋蔺。
背光板发出的光线在穿过第一层偏振过滤层之后进入包含成千上万液晶液滴的液晶层。
液晶层中的液滴都被包含在细小的单元格结构中,一个或多个单元格构成屏幕上的一个像素。
在玻璃板与液晶材料之间是透明的电极,电极分为行和列,在行与列的交叉点上,通过改变电压而改变液晶的旋光状态,液晶材料的作用类似于一个个晓得光阀。
在液晶材料周边是控制电路部分和驱动电路部分。
党LCD中的电极产生电场时,液晶分子就会产生扭曲,从而将穿越其中的光线进行有规则的折射,然后经过第二层过滤层的过滤在屏幕上显示出来。
仓嫗盤紲嘱珑詁鍬齊驁。
1.4设计要求
在本次课题研究中我将参考从各个方面收集到的文献,博取其精华。
研究方法则是采用单片机设计LCD显示,通过初始化12864LCD,并设定各个汉字、字符、图片的地址信息,以研究AMPIRE128*64LCD的工作原理及设计。
绽萬璉轆娛閬蛏鬮绾瀧。
研究的设计要求包括以下方面:
1、通过LCD将所设定的汉字、图片等显示在外;
2、汉字可做简单的移动变换等;
3、可以显示一些图片;
4、利用图片做出简单的动画效果;
5、单片机C程序编程语言。
第二章硬件电路设计
2.1.硬件系统结构图
此设计控制系统由AT89S52单片机芯片、LCD显示电路、电源电路、复位电路、晶体振荡电路组成。
单片机
LCD显示器
电源电路
复位电路
晶振电路
图2.1总设计框图
2.2AT89S52单片机最小系统设计
单片机最小系统主要由单片机AT89S52、电源电路、复位电路、时钟电路组成。
2.2.1AT89S52单片机
AT89S52主要功能特性:
•一个8位微处理器
•256字节的数据存储器和32个特殊功能寄存器,用于存放可读/写的数据
•8K字节的内部快闪程序存储器,用于存放程序、原始数据或表格
•3个16位定时/计时器,用以对外部事件进行计数,也可用作定时器
•4个8位可编程的输入/输出(I/O)并行端口,每个端口既可做输入,也可做输出
•一个全双工异步串行口(UART)串行通道,用于数据的串行通信
•6个中断源,2个优先级
•可寻址各64KB的外部程序存储器、数据存储器空间
•有位寻址功能
•片内振荡器即内部时钟电路,石英晶体和微调电容需要外接。
最高允许振荡频率为32MHz
•可降至0Hz静态逻辑操作,具有支持2种软件,可选择节电工作方式,即休闲方式及掉电方式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
骁顾燁鶚巯瀆蕪領鲡赙。
•在线编程(ISP)功能
•内部集成看门狗计时器
•双数据指示器
•电源关闭标记
•全新的加密算法
•向下完全兼容MCS-51全部子系列产品,兼容MCS-51指令系统
2.2.2电源电路设计
单片机所使用的电源根据实际需要设计,这里将220v电压转变为+5v电压。
如下图,利用桥式整流电路将220v电压降压整流,然后经过电容滤波,LM7805稳压电路,最后转为+5v直流电压。
稳压二极管VD3的作用有两个:
一个是降低集成稳压电路7805(U1)的输入电压;二是防止总线断电时,电容C5上所存储的电荷向总线释放。
电容C8、C9是滤波电容,7805是+5V的集成稳压电路,C10、C11是去耦电容,发光二极管VD4是电源指示灯,R13是VD4的限流电阻。
瑣钋濺暧惲锟缟馭篩凉。
图2.2+5v直流电路
2.2.3时钟电路设计
单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得到的时钟信号比较稳定,实际使用中常采用这种方式。
鎦诗涇艳损楼紲鯗餳類。
图2.3振荡电路图
2.2.4复位电路设计
单片机在启动运行时,都需要先复位,它的作用是使CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。
MCS-51系列单片机本身,一般不能自动进行复位,必须配合相应的外部电路才能实现。
复位电路的作用就是使单片机在上电时能够复位或运行出错时进行复位状态。
栉缏歐锄棗鈕种鵑瑶锬。
图2.2按键与上电复位电路
2.3AMPIRE128*64LCD简介
本系统采用液晶显示模块AMPIRE128X64,为单色LCD。
屏幕分为两半控制,控制引脚为CS1和CS2,数据通过移位寄存器输入。
辔烨棟剛殓攬瑤丽阄应。
图2.3AMPIRE128*64外形图
管脚一共18个。
CS1左半屏片选端,CS2右半屏片选端;VCC、GND就是VCC、GND,没啥好说的;V0液晶显示驱动电压,在网上找的仿真实例中有的这个脚就悬空,我是通过一个电位器接到VCC;RS数据指令选择信号,H为数据,L为指令,有的资料上也叫D/I,我估计是DATA和INSTRUCTIONS这两个单词的缩写;R/W读写选择信号,H为读,L为写,这肯定是READ和WRITE的缩写。
E为LCD使能端,R/W为L时,E信号下降沿锁存DB7-DB0;R/W为H时,E为H,DDRAM数据读到DB7-DB0,如果只写不读的话可以接地处理。
DB0-DB7数据传输端口。
RST复位信号,不过还没弄明白是怎么回事,参考一些资料后接VCC处理。
-VOUT估计和V0差不多,液晶显示驱动电压。
峴扬斕滾澗辐滠兴渙藺。
2.3.1主要参数
表2-1主要参数
显示容量:
128*64点阵
模块最佳工作电压:
5.0V
工作电压:
4.8~5.2V
点尺寸:
0.48*0.48mm
工作电流:
5.1mA(5.0V)
工作温度:
-20~60℃
背光源颜色:
黄绿
储存温度:
-30~70℃
背光源电流:
<140mA
2.3.2主要指令代码
表2-2指令代码
指令码
功能
3EH
关显示
3FH
开显示
指令码
功能
0C0H
设置显示初始行
指令码
功能
0B8H+页码(0~7)
设置数据地址页指针
40H+列码(0~63)
设置数据地址列指针
2.3.2写操作时序
(时序参数均为NS级,单片机为US级,故不用考虑延时)
图2.4写操作时序图
2.3.4读操作时序
(时序参数均为NS级,单片机为US级,故不用考虑延时)
图2.5读操作时序图
2.4LCD与单片机接口
表2-3引脚简介
编号
符号
引脚说明
编号
符号
引脚说明
1
VCC
电源地
10
DB3
DataI/O
2
VDD
电源正极(+5V)
11
DB4
DataI/O
3
V0
LCD偏压输入
12
DB5
DataI/O
4
RS
数据/命令选择端(H/L)
13
DB6
DataI/O
5
R/W
读写控制信号(H/L)
14
DB7
DataI/O
6
E
使能信号
15
CS1
片选IC1信号
7
DB0
DataI/O
16
CS2
片选IC2信号
8
DB1
DataI/O
17
RTS
复位端(H:
正常工作,L:
复位)
9
DB2
DataI/O
18
VEE
LCD驱动负压输出
2.5电路设计图
见附录
第三章系统软件设计
3.1总体流程图
基于单片机的12864液晶显示软件设计主要由显示子程序、读出并处理12864LCD显示程序等组成。
为了充分发挥AT89S52优越的性能价格比,系统软件采用C语言编写以增强系统的实时性。
在设计上尽量做到硬件“软化”,使系统硬件设计得到简化。
詩叁撻訥烬忧毀厉鋨骜。
LCD显示
则鯤愜韋瘓賈晖园栋泷。
图3.1总体流程图
3.212864LCD程序
voidinit(void)//**左边屏初始化
{l_wcode(0x3f);//***屏幕开显示
l_wcode(0xc0);
l_wcode(0xb8);//***第一页开始
l_wcode(0x40);//***第一列开始
r_wcode(0x3f);//**右边屏初始化
r_wcode(0xc0);
r_wcode(0xb8);
r_wcode(0x40);
}
voidcheckbusy(void)//***忙检测函数*****
{E=1;
RS=0;//命令
RW=1;//写
P0=0xff;
ACC=P0;
while(!
busy);
}
voidl_wcode(charl_code)//**左写命令函数
{checkbusy();
P2=0xf2;//11110010;E=1,RW=0,RS=0,CS2=1,CS1=0
P0=l_code;
E=1;
E=0;
}
voidl_wdata(charl_data)//**左写数据显示胀鏝彈奥秘孫戶孪钇賻。
{
checkbusy();
P2=0xf6;//11110110;E=1,RW=0,RS=1,CS2=1,CS1=0
P0=l_data;
E=1;
E=0;
}
voidr_wcode(charr_code)//**右命令函数
{checkbusy();
P2=0xf1;//11110001;E=1,RW=0,RS=0,CS2=0,CS1=1
P0=r_code;
E=1;
E=0;
}
voidr_wdata(charr_data)//**右数据函数
{checkbusy();
P2=0xf5;//11110101;E=1,RW=0,RS=1,CS2=0,CS1=1
P0=r_data;
E=1;
E=0;}
voidshow()//**显示从四个角回到中间**图片
{ywei=0xb8;
end=0xba;
over=0xbe;
for(lshu=0x40,you=0x70;lshu<0x71;lshu=lshu+0x17,you=you-0x17)鳃躋峽祷紉诵帮废掃減。
{
k=0;
{for(i=ywei;i{l_wcode(i);
l_wcode(lshu);//**lshu是每次移动的列数变量
for(j=16;j>0;j--)
{
l_wdata(tab2[k++]);//j=16是为了显示一个字的控制
}
r_wcode(i);
r_wcode(you);
for(j=16;j>0;j--)
{r_wdata(tab2[k++]);}
k=k+32;}
k=32;
for(fan=over;fan{
l_wcode(fan);
l_wcode(lshu);
for(j=16;j>0;j--)
{l_wdata(tab2[k++]);}
r_wcode(fan);
r_wcode(you);
for(j=16;j>0;j--)
{
r_wdata(tab2[k++]);
}
k=k+32;
}
over--;
}
if(lshu>=0x60)//**if为真是四个字汇聚后的稍长延时时间
delay(800);
else
delay(500);
clean();
ywei=ywei+0x01;//**为每次控制移动的增量(页数)
end=end+0x01;
if(end==0xbe)
break;
}
}
voiddelay(intms)//**延时函数
{
intf,n;
for(f=ms;f>0;f--)
for(n=110;n>0;n--);
}
voidclean()//**清屏函数
{for(i=0xb8;i<0xc0;i++)
{l_wcode(i);
l_wcode(0x40);
for(j=64;j>0;j--)
{l_wdata(0x00);}
}
for(i=0xb8;i<0xc0;i++)
{r_wcode(i);
r_wcode(0x40);
for(j=64;j>0;j--)
{r_wdata(0x00);}}
}
3.3程序清单及注释
见附录
第四章仿真调试和结果分析
4.1仿真步骤
第一步在Proteus中画好电路图
在Proteus中新建空白文件保存,从元件库中选取并放置元器件和电源、地终端,按原理图连好线。
第二步电气检测
电路设计完成后,单击工具栏中电气检查按钮“
”,会跳出检查结果窗口,如图4-1所示。
窗口前面是一些文本信息,完成接着是电气检查结果列表。
若有错,会有详细说明。
当规则检查出现:
NETLISTGENERATEDOKNOERCERRORDFOUND,表示通过检查。
稟虛嬪赈维哜妝扩踴粜。
图4-1电气检测窗口
第三步加载目标代码文件和设置时钟频率
将两种方法得到的目标代码文件心梦.hex加载到单片机中。
在ISIS编辑区中双击单片机,则弹出如图4-2所示的加载目标代码文件和设置时钟频率的窗口。
单击在ProgramFile栏右则“
”的按钮,弹出文件列表,将心梦.hex文件加载到AT89S52芯片中。
陽簍埡鲑罷規呜旧岿錟。
图4-2加载目标代码文件和设置时钟频率
第四步仿真
点击仿真按钮中的运行按钮
,启动系统仿真。
此程序是自己找的一个关于12864液晶显示的程序。
我在调试的过程中发现这个程序还有些不完善的地方,离我的设计目标还是有一定的差距。
因此我开始对此程序进行修改,尽量的使其适合我的设计目标。
沩氣嘮戇苌鑿鑿槠谔應。
在程序编译部分,我使用的是KEIL软件,对程序进行编译调试最后生成HEX文件,以便把其下载在芯片之中,最后成功的生成HEX文件。
KEIL软件的使用课件可以见附件。
钡嵐縣緱虜荣产涛團蔺。
4.2仿真结果及分析
1)仿真运行后,清屏,首先显示宽为16,高位32的字符3,2,1以及小图片。
图4.3动态字符图
2)分别显示下面三幅128*64的图片。
图4.4显示图片图
3)显示从四个角落回到中间的四个16*16的图像。
图4.4动态图形图
图像由16点阵所得,分别通过左/右旋转90度得到程序。
图4.5单个图形图
4)显示由12幅图片构成的简单动画,其实就是将延时时间缩成很短,造成视觉上的效果就成了连续的动作,形成了动画。
懨俠劑鈍触乐鹇烬觶騮。
图4.6简单动画图
5)显示一个一个的出现汉字,控制想要的字数,最终形成完整的句子。
图4.7动态字符图
6)显示延时时间较长的两幅图片。
图4.8显示图片图
7)先显示静态的汉字,然后上半部分变换,最后显示移动的结束语over
图4.9动静态汉字图
第五章取模软件的使用方法
5.1PCtoLCD2002取模软件的使用方法
1)参数设置
本次课程设计的点阵格式是阴码,取模方式为列行式,取模走向是逆向(地位在前),自定义格式为C51格式,最好将行前缀与行后缀的“{}”去掉,像素大小为8。
謾饱兗争詣繚鮐癞别瀘。
图5.1PCtoLCD2002取模软件的参数设置图
2)汉字及字符的取模图如下:
本次的课程设计,需要将字模的上下行分开输入,否则汉字的上下部分将会分开,排列成左右形式。
图5.2PCtoLCD2002取模软件的汉字取模图
图5.3字模显示效果图
3)图形的取模图如下:
切记打开的图片,保存格式为单色位图.bmp,尺寸大小不可超过128*64。
否则取模软件中打开的图片将会显示不出来。
呙铉們欤谦鸪饺竞荡赚。
图5.4PCtoLCD2002取模软件的图片取模图
图5.5图片显示效果图
5.2畔畔字模提取软件的使用方法
将所想要显示的16*16的图形在点阵中点出来,可左右旋转90度得出另外四个方向的图形,当从四个角落汇合至中间时,能拼凑出不同效果。
莹谐龌蕲賞组靄绉嚴减。
方法如图所示:
图5.616点阵图形取模图
图5.716点阵图形显示效果图
总结
本次设计虽然没有特别的复杂,但是由于初次涉及这样的设计,没有任何的经验,过程还是倍感吃力的。
首先就是LCD的选择,因为之前没有学习过这样的器件,算是一个新的概念,所以认识不全,有些不知所措。
其次就是软件的编写,要得到正确的汉字以及图片的地址信息,花费了较长时间才找到相匹配的取模软件。
然后研究如何获取正确的参数,其中图片的取模就很令我苦恼,最后在老师的辅导下才得以提取正确。
程序有了之后,再进行相关的变换,最终得到新颖的效果。
麸肃鹏镟轿騍镣缚縟糶。
在这次的设计过程中虽然尝到了设计的困难,但是更重要的是让我感受到了它的魅力,不知不觉的就想要做出更多的花样,特别是成功仿真后,着实有一种成就感。
在此次过程中不仅巩固了我对Word及单片机的使用,同时也让我对LCD显示以及取模软件有了一个较为清晰的了解,弥补了我的一个盲区,使我有了知识和精神双方面的收获,相信这将是一次有意义的设计。
納畴鳗吶鄖禎銣腻鰲锬。