基于AT89S52单片机实现12864液晶屏显示Word下载.docx
《基于AT89S52单片机实现12864液晶屏显示Word下载.docx》由会员分享,可在线阅读,更多相关《基于AT89S52单片机实现12864液晶屏显示Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
学年设计任务要求
实现基于单片机对于128*64液晶屏的控制,以及文字显示
学年设计工作进度计划
序号
起止日期
工作内容
分工情况
1
2010-7-2
~
2010-7-5
商讨问题的解决路径和初步实施方案。
本小组组员根据个人所学情况,对问题认真分析,想出自己特色的实施方案,为下次会议的方案选择做准备
2
2010-7-6
2010-9-5
暑期时间个成员在家对课程设计进行分析。
。
小组人员对课程设计进行具体的分析
3
2010-12
对个人工作进行分析并对最后的进行检验
小组成员对最后程序进行研究、检验并发表自己的见解
4
2010-9-12
对已经完成的实验在实验室中老师进行知道分析
小组成员根据老师的指导,进行实验报告的完成。
教研室审核意见:
教研室主任签字:
年月日
摘要:
本文介绍以AT89S52单片机为控制核心,利用四位按键输入,以128*64液晶作为屏幕的显示模块。
该模块硬件结构结单、功能齐全,工作稳定,可完成目前绝大部分设备的显示。
关键词:
AT89S52单片机;
液晶;
中文显示
1绪论
1.1研究背景
液晶是现在电子产品中使用越来越多的一种显示器件。
我们经常会在各种各样的电子产品和仪器上看到液晶显示器的存在。
这些液晶品种繁多,功能不一。
有的是字符型,有的是点阵型。
常常用来显示各种参数。
包括电压、电流、温度及各种电气参数和一些特定信息。
液晶不但用来显示各种文字还可以被设计成各种图案、通过改变里面特定显示RAM的内容。
还还可以动态的显示各种图案及画面。
液晶的使用打破了以往单一的声光显示功能,为人们提供了更多丰富多彩的显示信息。
许多学校研究了基于128×
64点阵液晶显示的智能温度控制器的设计与实现及相关研究。
本次设计就是基于AT89S52单片机实现128*64液晶屏显示。
1.2主要工作
首先是每个成员通过看书和上网找资料以便对AT89S52单片机有所了解,然后再开始进行设计。
在用AT89S52单片机实现128*64液晶屏菜单显示时主要用的方法是C语言单片机原理,及数字逻辑的相关知识。
进行实验时先进行平台搭建,之后在电脑上先仿真设计,成功后再实际进行电路的连接。
1.3本文结构
本文的第一部分主要是对题目和该实现目标的分析,以及本文的主要大意,第二部分是对设计步骤的描述和有关的需求分析,第三部分则是对该程序的详细设计。
该系统在认真分析可行性的基础上,提出了功能模块的构想,通过各个功能模块的有机结合,在单片机的有效调用下,实现128*64液晶屏的显示。
2硬件的设计
2.1要求
深入理解液晶屏显示原理及字符显示原理实现基于AT89S52的单片机对于128*64液晶屏的控制,实现中文显示。
2.2电路的设计
2.2.1平台搭建
整个设计首先是在protues软件中进行硬件的搭建及仿真的。
因为通过protues软件能仿真模拟电路、数字电路、数模混合电路;
能绘制原理图、PCB图;
几乎包括实际中所有使用的仪器等。
而其最大的优点在还是于能够对单片机进行实物级的仿真,可自行设计电路从程序的编写,编译到调试,目标版的仿真一应俱全。
支持汇编语言和C语言的编程。
还可配合KeilC实现程序的联合调试,将Proteus中绘制的原理图作为实际中的目标板,而用KeilC集成环境实现对目标板的控制,与实际中通过硬件仿真器对目标板的调试几乎完全相同,并且支持多显示器的调试,即Proteus运行在一台计算机上,而KeilC运行在另一台计算机上,通过网络连接实现远程的调试。
因此,本次设计选择在protues软件中进行仿真设计。
2.2.2模块设计
整个设计的核心部件是AT89S52单片机、128*64的液晶屏及周边的晶振和按键等原件。
2.3单片机的选择
本设计选用AT89S52系列单片机是因为其管脚排列如图1。
AT89S52,8位单片机是MSC-51系列产品的升级版,有世界著名半导体公司ATMEL在购买MSC-51设计结构后,利用自身优势技术(掉电不丢数据)闪存生产技术对旧技术进行改进和扩展,同时使用新的半导体生产工艺,最终得到成型产品。
与此同时,世界上其他的著名公司也通过基本的51内核,结合公司自身技术进行改进生产[1]。
AT89S52片内集成256字节程序运行空间、8K字节Flash存储空间,支持最大64K外部存储扩展。
根据不同的运行速度和功耗的要求,时钟频率可以设置在0-33M之间。
片内资源有4组I/O控制端口、3个定时器、8个中断、软件设置低能耗模式和断电保护。
可以在4V到5.5V宽电压范围内正常工作。
不断发展的半导体工艺也让该单片机的功耗不断降低。
同时,该单片机支持计算机并口下载,简单的数字芯片就可以制成下载线,仅仅几块钱的价格让该型号单片机畅销10年不衰。
根据不同场合的要求,这款单片机提供了多种封装,本次设计根据最小系统有时需要更换单片机的具体情况,使用双列直插DIP-40的封装。
图1AT89S52引脚排列图
2.4LCD模块的结构
通常所见的LCD模块分为:
LCM(玻璃)、背光、PCB板;
而背光和PCB板部分其实是可有可无的,视具体的LCD模块而定。
点阵的LCD模块按照驱动控制器的集成方式,大可分为两种:
COB和COG.。
MzL02-12864为一块128*64点阵的LCD显示模块,模块上的LCM采用COG技术将控制(包括显存)、驱动器集成在LCM的玻璃上,[2]接口简单、操作方便;
为方便用户的使用,在LCM的基础上设计了MzL02-12864模块,将模块所必需的外围电容电阻集成到模块上,并引出多种形式的引线接口方便用户使用。
MzL02-12864模块与各种MCU均可进行方便简单的接口操作。
2.4.1模块接口引脚
图2.1LCD接口引脚
其具体功能如下
表2.1
接口引脚名
说明
LEDK
背光负极输入
NC
空
C86
并行接口选择:
高电平:
6800总线低电平:
8080总线
PS
串行/并行接口选择,高电平:
并行总线接口低电平:
串行接口
5
EP
6800系列MPU的时钟信号使能脚(EP),当选择总线接口为8080时,该线为RD信号
6
WR
6800系列MPU的读/写控制信号(R/W);
8080系列MPU总线的写使能信号
7
A0
数据命令选择脚
8
Reset(RST)
复位脚(低电平复位)
9
CS
片选(低电平有效)
10
LEDA
背光正极输入
11
GND
地
12-19
DB7~DB
8位数据总线
2.5连接方式
在实际应用中,液晶模块与单片机的连接方式很多,从占用I/O口线的多少来分有串行方式和并行方式,其中串行方式速度较慢,占用的口较少,并行方式分为4线和8线,速度较快,占用的I/O口多,实际应用中以并行方式居多。
LCD12864的管脚共有20个之多,但是连接的电路并不复杂。
但是需要注意的是LCD的电源共有2组,一组是用于驱动LCD显示,另一组用于背光显示。
可将这两组连再一起或者背光电源省略。
[3]另外有个输入管脚V0需要接入LCD调整电压来调节对比度。
通常刚使用液晶时的问题是由此引起的,对比度过高于或过低均会使屏幕无法正常显示。
它可接至10K-20K电位器的调整端,电位器两端分别接至VDD与VEE。
目前市场上某些LCD12864的对比度可由单片机操作其寄存器调节,可根据不同的条件进行选择。
其余的端口均连接至单片机。
本文将IO口DB0-DB7连接至P2口,RS、RW、E、CS1、CS2、RET分别连接至P1.0至P1.5。
[4]其他硬件部分,四位按键分别连接P3.2-P3.5,由于四位按键已能完成基本功能,操作简单,使用方便,分别设置为左右选择键,上下选择键,且节省单片机IO口,因此不采用矩阵键盘目前51系列单片机是国内外应用最广泛的一类单片机的P0口和P3口的部份引脚与DMC20261型液晶显示连接电路如图2.2所示[5]
图2.2单片机与液晶屏的连接
3软件设计
3.1字符的显示
在数字电路中,所有数据都是由0和1保存的,同样LCD也利用了这一方法。
在点阵LCD上显示的只有两种颜色,因此可利用0和1来表示这两种颜色。
假设空格是由16*16个0组成的,再显示16*16的字体时,将其中某些点置为1便可再视觉上形成一个汉字,这些二进制数称为代位码。
而这些由0和1转换而成的16进制数据便是字模。
不同的汉字有不同的字模,相同的汉字不同的字体也有不同的字模。
而将字模设为16*16像素是因为这样基本可以将汉字显示清楚准确,更高像素则更为清楚准确,但是却更多地占用了LCD的面积。
与汉字不同的是,一个字符只需要16*8的像素便即可。
假设要在LCD12864屏幕上准确正确的显示出汉字,则需要将16*16的汉字分为两行,每行由16列组成,这16列每列存再8个点,用2位16进制数(8位二进制数)表示这8个点,16个16进制数可表示1行,32个16进制数则能表示整个汉字。
通过LCD12864,则可将这些字模信息还原成汉字或图像。
[6]
MzL02-12864液晶显示模块的显示器(玻璃)上的显示点与驱动控制芯片中的显示缓存RAM是一一对应的;
驱动控制芯片当中共有65(8Pagex8bit+1)X132个位的显示RAM区。
而显示器的显示点阵大小为64X128点,所以实际上在液晶显示模块中有用的显示RAM区为128*64个位;
按byte为单位划分,共分为8个Page,每个Page为8行,而每一行为128个位(即128列)驱动控制芯片的显示RAM区每个byte的数据对应屏上的点的排列方式为:
纵向排列,低位在上高位在下。
3.2显示模块函数的设计
3.2.1LCD底层接口驱动程序
首先是LCD的初始化,包含对LCD的复位与关开显示。
利用LCD的初始化函数voidLCD_Init(void),其中对液晶操作的延时为两个_nop_();
语句以确保时序的正确性。
初始化完毕后执行写命令函数voidLCD_WriteCmd(ucharCmdCode)和写数据函数voidLCD_WriteData(ucharData)。
空闲状态检测时利用读状态函数ucharLCD_ReadStatus(void)读入的状态BUSY与RST位均为0时即检测到LCD空闲,跳出while循环,将E置0后跳出函数。
对于液晶的读写均用到空闲状态检测以保证液晶的正常显示[7]。
3.2.2用户接口驱动程序
为了方便对LCD的使用,本设计提供了多个对LCD操作的子函数。
使模块功能提升,方便屏幕显示界面的美化。
清屏函数voidLCD_Clear(void),其原理为将DDRAM中所有数据置0,则屏幕上所有显示内容被清除。
图像显示函数voidLCD_Writeimage(ucharx,uchary,ucharm,ucharn,ucharcode*image)。
该函数的功能为在第x行第y列为起始位置显示一张m*n的图片(x范围0-3,y范围0-7,m、n要求为16的整数倍)[8]。
显示汉字函数voidLCD_Writehz(ucharx,uchary,ucharn,ucharcode*hanzi,ucharstate)。
该函数功能为在指定的屏幕位置显示hanzi数组存放的汉字。
其中参数表示第x行第y列显示n个汉字(x范围0-3,y范围0-7,屏幕显示4行8列汉字)。
state参数为表示汉字的是否反色显示。
由于该LCD分为左右两屏,因而该函数主要使文字能在两屏上正常显示。
该函数可正确显示16*8的字符型数据。
其中x,y代表字符显示位置(x范围0-3,y范围0-15,屏幕显示4行16列字符)。
参数m为需要显示的数字或字母。
该函数与显示汉字函数类似,内部运用Case语句对m进行判断并选择不同的字模写入到LCD的DDRAM中。
设置图形显示模式函数voidLCD_SetPaintMode(uintModeCode)。
参数ModeCode可以是下列几种情况:
为0时,覆盖显示,图形所在位置的原有显示内容将被覆盖掉;
为1时,叠加显示,图形所在位置中原有的黑色点将被保留;
为2时,擦除显示,图形反色显示,但图形所在位置中原有的白色点将被保留;
为3时,异或显示,图形中每一个点与原有的点做异或,即如果图形中某点的颜色与其所在位置原有的颜色相同,则该点显示白色,如果新颜色与原来颜色不同,则该点显示黑色。
ModeCode的值保存在全局变量CurPaintMode中[9]。
显示点函数voidLCD_PutPixel(uintx,uinty)。
该函数功能为在屏幕坐标为x,y的地方放置一点(x范围0-127,y范围0-63[10])
具体工作的流程图如下:
4.系统测试与调试
在keilC中编写程序并调试成功,调试结果如图4.1:
图4.1程序调试
先在在protues软件中连接好电路如图4.2所示:
图4.2电路连接图
把程序调试成功后生成的hex文件输入仿真软件后调试结果如图4.2所示:
图4.3显示结果
5.致谢
在学年设计结束的时候,向帮助我们分析和指导的赵亮老师致谢。
本次实验中组员们都在尽自己的全力去查阅资料积极地讨论,都提出了自己的独特观点,使这次的设计能够顺利的完成,再次的向帮助过我们的人致谢!
6.学年设计总结与体会
通过这次实验我们自己选择芯片连接电路,以及编写程序。
其中遇到许多困难,在老师的帮助和不懈鼓励下我们终于顺利完成这个实验
7.结束语
本文介绍液晶显示屏与AT89S52单片机接口的设计方法,硬件电路与软件实现简单易行。
基于AT89S52单片机实现128*64液晶屏菜单显示。
及液晶显示的工作原理
参考文献
[1]何立民.单片机高级教程——应用与设计[M].北京:
北京航空航天大学出版社,1999.
[2]刘大茂.智能仪器(单片机应用系统设计)[M].北京:
机械工业出版社,1998.
[3]李维缇,郭强.液晶显示器件应用技术[M].北京:
电子工业出版社,2000.
[4]曾兴雯,刘乃安,陈键.高频电路原理与分析[M].3版.西安:
西安电子科技大学出版社,2001.
[5]]刘波.单片机与液晶控制器的接口设计[J].机械工程与自动化,2006(4):
63—64
[6]林秋华,王兢,刘志远.字符显示原理[J].计算机应用2001
(1):
31—33.
[7]谭浩强.C语言程序设计[M].2版.北京:
清华大学出版社,1999.
[8]呼克佑,师智斌,刘爽英.c语言程序设计[M].北京:
中国宇航出版社,2002.
[9]王建校,杨建国.宁改娣,等.51系列单片机及C51程序设计[M].北京:
科学出版社,2002.
[10]徐均,张银玲.基于虚拟仪器技术的LCR测试仪的设计[J].广西轻工业,2008
(1):
59—60
指导教师评语:
指导教师签名:
成绩