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