单片机控制的LCD汉字显示电路设计独家完整版Word文档下载推荐.docx
- 文档编号:7775860
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:44
- 大小:1.80MB
单片机控制的LCD汉字显示电路设计独家完整版Word文档下载推荐.docx
《单片机控制的LCD汉字显示电路设计独家完整版Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机控制的LCD汉字显示电路设计独家完整版Word文档下载推荐.docx(44页珍藏版)》请在冰点文库上搜索。
因此,通过使用单片机可以使我们完成很多令我们意想不到的事情。
所以,本着理论与实践相结合的原则,本设计以单片机为核心控制器件控制LCD显示模块,通过硬件和软件的共同配合实现在128×
64点阵液晶屏上显示汉字、字符等的功能,本系统由ATMEGA8单片机和点阵式液晶显示屏模块构成。
1.2设计要求
系统硬件设计:
系统选用ATMEGA8单片机作为主控和处理设备,LCD12864模块作为输出设备。
系统软件设计:
微控制器处理和LCD模块显示部分的程序设计。
1.3LCD简介及发展
液晶显示器是一种采用了液晶控制透光度技术来实现色彩的显示器。
众所周知,即使长时间观看LCD显示屏幕也不会对眼睛造成伤害,这主要是因为LCD显示器没有辐射,画面图像很稳定。
LCD可分为段位式LCD、字符式LCD和点阵式LCD。
其中,段位式LCD和字符式LCD只能用于字符和数字的简单显示,不能满足图形曲线和汉字显示的要求;
而点阵式LCD不仅可以显示字符、数字,还可以显示各种图形、曲线及汉字,并且可以实现屏幕上下左右滚动、动画、分区开窗口、反转、闪烁等功能,用途十分广泛。
奥地利植物学家F·
Reinetzer在一百多年前发现了液晶。
然而,到20世纪60年代,液晶才逐渐被人类关注。
1961年,F·
Heimeier发现了液晶的动态散射相变等一系列的液晶电光效应。
由此,美国RCA公司成功研制了一系列数字、字符的显示器件以及液晶显示的钟表、驾驶台显示器等实用产品。
1968年,日本当时正在兴起开发电子产品的产业,将大规模集成电路与液晶相结合,开发了一系列电子产品。
从此,日本电子产业蓬勃发展,这也是日本微电子产业闻名世界的起因。
现代液晶显示模块具有低电压、微功耗、易彩色化、被动显示等特点,是主流的显示技术之一。
1.4AVR单片机
1997年,ATMEL发挥自己的技术特长,研发出了全新配置,采用精简指令集的新型单片机,即AVR单片机。
其中,ATMEGA8是ATMEL公司在2002年第一季度推出的一款新型高档单片机。
与MCS-51单片机不同的是,AVR单片机采用Harvard结构,在前一条指令执行的时候就取出下一条指令,而且它的程序存储器和数据存储器是分开组织和寻址的。
AVR单片机内部有三种不同性能和用途的存储器Flash、EEPROM和RAM。
2方案论证
2.1方案一
根据本课题内容,本设计拟采用MCS-51单片机控制液晶显示器显示汉字。
MCS-51型号的单片机我曾在单片机原理、接口及应用的必修课中学习过,对该型号单片机的结构和如何控制都比较熟悉。
本次课题设计需要+5V电源为单片机及液晶显示器提供电压,所以,需要设计一个直流稳压电源来提供所需的+5V电压。
结合模拟电子技术基础所学知识,我了解到,直流稳压电源又分为线性稳压电源和开关型稳压电源。
然而,对于稳定性要求不高的电子电路,整流、滤波后的直流电压即可以作为供电电压。
而且我们曾在模拟电子技术中学习过整流、滤波电路的理论知识,还曾做过一个基于整流、滤波电路的直流稳压电源的实物,所以电源电路设计拟采用三端口稳压器7805及整流桥电路来搭建电路以获得+5V电压。
本次设计要求采用点阵式液晶显示器,我想用LCD1602作为显示设备。
2.2方案二
当我查阅了有关资料,我就发现了另一型号的单片机,即AVR单片机。
结合所学的有关51系列单片机的知识以及对AVR单片机资料的查阅,我了解到,相比之下,AVR单片机比51系列单片机具有更加优良的性能。
最重要的是,AVR单片机能够更高效的执行程序代码。
而且,我认为,既然已经学习过MCS-51系列的单片机,有了单片机的使用的基础,就应该举一反三,所以,我决定挑战性地使用AVR单片机来完成本次毕业设计。
ATmega8L单片机我曾在以前的开放性试验中接触过,了解到该型号单片机芯片内部集成了较大容量的存储器和丰富的硬件接口电路,适合于本次毕业设计。
而且,AVR单片机的价格又与低档单片机的价格相差不大。
所以考虑到以上几点,我决定对方案一进行改进,确定使用单片机ATmega8L。
相比而言,方案二在方案一的基础上做了很大的改进,方案二无论是在实现的难易程度,还是在性能的优越程度上都比方案一更佳。
2.3方案三
经过查阅有关点阵式液晶显示器的资料,我发现了另一类型的点阵式液晶显示器即LCD12864模块,该模块自带中文字库,如果使用该模块来完成本次设计将会更易控制,也会使程序更加精简。
当LCD工作在并行工作状态时,LCD1602会占用了CPU的很多引脚,这会降低系统的性价比。
而LCD12864模块不同,它仅使用几根数据线,就可以完成数据的通信。
所以,我决定采用LCD12864模块即KXM12864作为本设计的显示设备。
3主要模块简介
3.1ATMEGA8简介
Atmega8的数据吞吐率高达1MIPS/MHz,可以减缓系统在功耗和处理速度之间的矛盾。
芯片图:
图3.1ATMEGA8芯片图
由上图可知,该芯片有PORTB、PORTC和PORTD三个I/O口。
其中,PD0、PD1为串行口复用脚,PD2、PD3为外部中断输入复用引脚,PD4、PD5为定时器输入复用引脚。
PC0~PC5为模数转换输入复用引脚,PC6为复位复用引脚。
PB6、PB7为外部时钟信号输入复用引脚。
AVCC为端口A与A/D转换器的电源,不用ADC时,应将其接VCC。
AREF为模拟基准输入复用引脚,不使用,则悬空。
表一ATmega8的端口引脚配置
DDRXn
PORTXn
PUD(SFIOR中)
I/O
上拉电阻
说明
X
输入
关闭
高阻态
1
打开
被外部电路拉低时输出电流
输出
输出低电平(漏电流)
输出高电平(源电流)
DDRX为端口方向寄存器,当DDRX的某一位置1时,相应端口的引脚作为输出使用。
PORTX为端口数据寄存器,当引脚作为输出使用时,PORTX的数据由相应引脚输出。
3.2LCD12864模块简介
3.2.1KXM12864主要技术参数和性能
本设计采用带中文字库的图形点阵液晶显示器模块,即使用KXM12864作为显示设备。
该显示器模块是一种图形点阵式液晶显示器,能显示4行8列(16*16点阵)共32个汉字,也可以显示字符、图形等。
它主要由行驱动器和列驱动器组成,分辨率为128*64,指的是横向有128个点,纵向有64个点。
它含有国标一级、二级简体中文字库。
内部有8192个汉字,所以,常用的汉字在该字库中均能找到。
它还含有16*8个ASCII码字符。
其电源电压宽为+3.0~+6.5V,即工作电压在此范围之间。
工作温度为-20℃~+70℃,当超过其工作温度,液晶模块则会反应很慢,或者显示错误。
3.2.2KXM12864外形尺寸图
了解KXM12864的外形尺寸,可以在做产品时更好地规划设计产品的布局。
3.2.3KXM12864液晶显示指令系统
根据该指令表,可以对该LCD显示模块进行初始化操作。
其中,当RS=0,RW=1,功能设定控制字为30H,如果设置D、C、B均为1,则显示状态开关控制字为0FH,清除屏幕控制字为01H,模式设置控制字为06H。
当MCU向该模块写资料时,应当使RS=1,RW=0。
这样,就可以向该模块写入指令和数据。
之后,即可显示汉字。
3.2.412864液晶显示动态指标及术语
表二并行接口模块说明:
管脚号
管脚名称
电平
管脚功能描述
VSS
0V
电源地
2
VCC
+5V
电源正
3
V0
-
对比度(亮度)调整
4
RS(CS)
H/L
RS=“H”,表示DB7——DB0为显示数据
RS=“L”,表示DB7——DB0为显示指令数据
5
R/W(SID)
R/W=“H”,E=“H”,数据被读到DB7——DB0
R/W=“L”,E=“H→L”,DB7——DB0的数据被写到IR或DR
6
E(SCLK)
使能信号
7
DB0
三态数据线
8
DB1
9
DB2
10
DB3
11
DB4
12
DB5
13
DB6
14
DB7
15
PSB
H:
8位或4位并口方式,L:
串口方式(见注释)
16
NC
空脚
17
RESET
复位端
18
LCD驱动电压输出端
19
BLA
VDD
背光源正端(+5V)
20
BLKK
背光源负端
*注释:
如在实际应用中仅使用并口通讯模式,可将PSB接固定高电平,也可以将模块上的J8和“VCC”用焊锡短接。
图3.2.4(a)8位并行连接时序图
图3.2.4(b)RS、RW功能设定示意图
4硬件设计
4.1设计流程图及设计思路
图4.1硬件电路框图
本设计的设计流程如上图所示,首先要设计出一个+5V的直流稳压电源为该电路提供+5V电压。
之后,通过一个RS232电平转换电路来实现PC机电平到单片机电平的转换。
最后,通过对ATMEGA8编写程序来控制LCD12864模块显示汉字。
其中,该单片机的时钟信号是通过内部振荡方式获得。
4.2各模块电路设计
4.2.1电源电路
图4.2.1(a)直流稳压电路原理
图4.2.1(b)直流稳压电源电路图
本设计首先需要设计一个+5V的直流稳压电源。
如上图所示,220V电源经过变压器降压后,又经过整流器整流,再经三端口稳压器7805稳压,产生+5V电压,给整个电路提供5v的直流电压。
其中通过对焊接好的硬件用万用表进行测试,测得从变压器端经变压后的交流电压为+9.36V,再经整流桥电路整流得到方向不变、大小随时间变化的脉动电压,再经滤波电容C1滤去其交流分量,得到比较平滑的直流电压。
其中,C1的值取得大一些,有利于减小输出端的波纹电压。
之后,经三端口稳压器7805稳压后得到更加稳定的直流电压。
最后,使用C2来防止发生意外跳变时,电压输出产生大的跳变,以此提高电源抗瞬间脉冲冲击干扰的能力。
4.2.2LCD12864模块控制电路
图4.2.2LCD控制模块电路图
如上图所示,采用ATMEGA8对LCD12864模块进行控制,其中,LCD12864模块使用的是KXM12864,根据该型号液晶显示器的特点,设计如下。
该液晶显示器共有20个引脚,由3.2.4中的表二知,LCD12864第1引脚VSS应接电源地;
第2引脚接电源正VCC;
第3引脚为对比度调整,在此可不接;
第4、5、6引脚为控制信号直接接单片机的I/O口;
从第7引脚到第14引脚为LCD的三态数据线,直接接单片机的I/O口;
第15引脚为模式控制引脚,因为并行端口传送数据较为快捷且简单易控,所以本设计是基于8位并行端口设计,因此,直接接VCC高电平;
第16引脚,悬空;
第17引脚为复位端,接高电平VCC;
第18引脚,不接;
第19、20引脚分别为背光源正和背光源负,因此,分别接电源正VCC和电源地。
4.2.3RS232电平转换电路
图4.2.3(a)RS232电平转换电路
MAX232芯片可将PC机的RS-232标准串口设计的单电源电平转换为+5v单电源电平。
RS232电平为-10~+10V,单片机电平为TTL电平为0~5V。
要实现上位机与下位机之间的串行通信,必须通过MAX232进行电平转换,因为PC机串口采用的是RS232电平,而单片机采用的却是TTL电平,如果不进行电平转换,单片机跟PC机的串口就不能进行直接通信。
如上图所示,从RS232端口输出的信号经过MAX232芯片进行转换,最后从T_I1和R_O1输出信号进过ADC3和ADC4模数转换成+5V的TTL电平到达ATMEGA8芯片。
MAX232的芯片图及管脚图如下所示:
图4.2.3(b)MAX232芯片图及管脚图
4.2.4时钟电路
图4.2.4时钟电路图
该单片机时钟信号是通过内部振荡方式获得,在引脚XTAL1和XTAL2上外接一个8MHz的晶振,即可构成内部振荡方式。
当外接一个8MHz的晶振后,就可以构成自激振荡器并产生振荡时钟脉冲。
其中,电容C_JT1和电容C_JT2起着稳定振荡频率、快速起振的作用。
4.3硬件焊接与调试
本设计中的重点是AVR单片机实验板的制作。
其中,ATMEGA8的焊接是十分重要的。
因为该芯片是贴片式芯片,而且引脚数目较多,且引脚间距很小,所以不很容易焊接。
对于ATMEGA8的焊接,必须使用尖头烙铁,且焊接温度设定在270°
C左右。
焊接完成后,必须要检测各引脚是否焊接正确、有无虚焊等。
具体方法是,先使用放大镜检查引脚焊接有无虚焊、连焊,再用万用表的电阻档检查相邻引脚是否短路。
检测方法为将量程开关拨至电阻档上,再将万用表的两个表笔分别放在两引脚上,如果短路,则会发出蜂鸣的响声,否则,为不短路。
最后,进行通电检查,使用PROGISP软件对芯片进行查空,如果结果为查空成功,则表明芯片焊接正常。
最后,就是LCD12864模块的焊接。
该模块一共有20个引脚,分别按照电路图的连接逐个进行焊接。
设计中,我在焊接ATMEGA8芯片时,将芯片的两个引脚短路,但经检查后将多余的锡去除,最后芯片焊接正常。
按照上面的电路图,再逐一进行焊接,之后,硬件焊接完成。
最后一步是进行硬件调试,我在调试中又发现了虚焊与短路的问题,一是ATMEGA8相邻两个管脚连在了一起,后经烙铁拨离后正常;
二是LCD的两个引脚虚焊,致使LCD插电后不亮。
最后找到对应的引脚,重新焊接后正常。
我认为,在焊接过程中最容易出现虚焊和短路的现象,所以在焊接时需要认真、细心。
同时,也要有技巧性的焊接。
比如,对焊锡的使用,使用焊锡的多少要适当,太多容易短路,太少容易虚焊。
为防止短路,还可以用烙铁在焊接处涂抹适量的松香,以达到绝缘的目的。
但是,建议在检测没有短路之后再涂抹松香,否则,如果出现问题,则不容易修改。
4.4方案扩展
方案扩展系统框图:
图4.4方案扩展系统框图
此扩展方案是在原来的设计的基础上加入按键模块。
通过把按键直接与单片机I/O口连接,可以使单片机根据检测按下的不同的按键来显示不同的效果。
具体做法是,编写按键扫描程序,判断哪个键按下,同时,要编写按键消抖程序,以防错判。
之后,编写程序根据按下的键来执行相应的特殊的显示效果,如滚动、闪烁等显示效果。
5软件设计
5.1LCD12864模块初始化流程
图5.1LCD12864初始化流程图
5.2部分程序代码
5.2.1软件延时
延时程序是本设计中很重要的一部分,因为延时时间的长短不仅能决定该LCD模块能否成功初始化,还决定了人眼能不能看到稳定的显示。
在本设计中有两个延时程序,以满足不同延时时间的需要。
而且,第二个延时程序的延时时间比第一个延时程序延时时间长。
voiddelay1(unsignedintt)
{
unsignedintj;
for(;
t>
0;
t--)
for(j=19;
j>
j--);
}
voiddelay2(unsignedintt)
for(j=6425;
5.2.2端口输出函数
由于本设计中从ATMEGA8单片机中的I/O口输出数据时没有使用某个整体的I/O口,只是使用了其中某个I/O口的一部分。
所以传送地址数据时,不能整体传送,只能逐位传送。
而本设计中,又需多次使用数据传送。
所以为了简便起见,则写了一个从I/O口输出8位数据的write函数,以供传送数据使用。
voidwrite(unsignedcharz)
{
if((z&
0x01)==0x01)PORTC|=0x08;
//0000,1000PC3=1
elsePORTC&
=0xf7;
//1111,0111PC3=0
0x02)==0x02)PORTC|=0x10;
//0001,0000PC4=1
=0xef;
//1110,1111PC4=0
0x04)==0x04)PORTC|=0x20;
//0010,0000PC5=1
=0xdf;
//1101,1111PC5=0
0x08)==0x08)PORTB|=0x01;
//0000,0001PB0=1
elsePORTB&
=0xfe;
//1111,1110PB0=0
0x10)==0x10)PORTB|=0x02;
//0000,0010PB1=1
=0xfd;
//1111,1101PB1=0
0x20)==0x20)PORTB|=0x04;
//0000,0100PB2=1
=0xfb;
//1111,1011PB2=0
0x40)==0x40)PORTB|=0x08;
//0000,1000PB3=1
//1011,1111PB3=0
0x80)==0x80)PORTB|=0x10;
//0001,0000PB4=1
//1110,1111PB4=0
5.2.3写数据函数
由3.2.4中的8位并行时序图及RS、RW功能设定示意图知,RS为高电平时,表示写数据。
当RW为低电平时,表示MPU写资料到模块。
当E为低电平时,延时一会儿,向I/O口准备数据,到E为高电平时,没有变化。
再当E为高电平后,延时一会儿,令E为低电平,则数据写入完全。
最后使RW为高电平,RS为低电平,指令书写完成。
voidwrite_12864dat(unsignedchara)
PORTC|=0x01;
//0000,0001rs=1PC0=1写数据
PORTC&
//1111,1101rw=0PC1=0
//1111,1011e=0PC2=0
delay1
(1);
write(a);
PORTC|=0x04;
//0000,0100e=1PC2=1
delay1(10);
delay1
(2);
P
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 控制 LCD 汉字 显示 电路设计 独家 完整版