LCD滚动显示屏设计.doc_第1页
LCD滚动显示屏设计.doc_第2页
LCD滚动显示屏设计.doc_第3页
LCD滚动显示屏设计.doc_第4页
LCD滚动显示屏设计.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

井冈山大学电子与信息工程学院课程设计报告20112012学年第二学期课程名称 单片机原理与应用课程设计 设计题目 LCD滚动显示屏设计 学生姓名 张绪景 学 号 80523046 专业班级 09电信本(2)班 指导教师 2012年6月4日一、设计题目LCD滚动显示屏设计二、设计要求 实现第一行从左侧移入“COME ON ! ” ,同时第二行从左侧移入“”,然后停留在屏幕上。三、设计目的 当今是一个信息化的时代,信息的重要性不言而喻的,获取手段显得尤其重要。人们所接受的信息有70%来自于人的视觉,无论用何种方式获取的信息最终需要有某种显示方式来表示。在当代显示技术中,主流的有LED显示屏和LCD液晶显示,而在这些显示技术中,尤其以液晶显示器LCD(Liquid crystal display)为代表的平板显示器发展最快,应用最广。LCD是典型的发光器件,它以材料科学为基础,综合利用了精密机械,光电及计算机技术,并正在微机械,微光学,纤维光学等前沿领域研究基础上,向高集成化,智能化方向发展。(1)平板型结构 无眩光,不刺激人眼,不会引起眼睛疲劳; 显示信息量大(因为像素可以做得很小) ;易于彩色化(在色谱上可以非常准确的复现) ;无电磁辐射(对人体安全,利于信息保密) 。(2)长寿命液晶显示技术发展迅猛,市场预测表明,液晶显示平均年销售呈增长10%13%,不久的将来有可能取代CRT,成为电子信息产品的主要显示器件,另外,液晶显示器对空间电磁辐射的干扰不敏感,且在紧凑的仪器空间不需要专门的屏蔽保护,因为LCD具有低压微功耗、被动显示型、易于彩色化、无电磁辐射、长寿命等特点。因而在各种便携式仪器,仪表将会越来越广泛的应用。特别是在电池供电的单片机产品中,液晶显示更是必选的显示器件。本设计是基于Atmel89C52单片机为主控芯片,结合1602液晶显示模板等外围电路,通过软件程序,来实现液晶显示英文字母以及数字的功能。四、设计方案 此次设计通过ATMEL公司的单片机Atmel89C52对整个LCD显示电路进行控制。根据上面的功能要求,本设计是基于51单片机的LCD1602滚动屏显示,该设计是以AT89C52基本系统为核心的一套应用系统,其中包括单片机、复位电路、外围电路、显示电路、系统软件等部分的设计五、硬件设计 根据上面的功能要求,硬件系统主要模块有单片机模块显示模块开关模块,用到的主要硬件:Atmel89C52单片机、开关、电阻、电容、排阻等。1. 单片机模块Atmel89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,Atmel89C52可以按照常规方法进行编程,也可以在线编程。本设计中Atmel89C52使用12MHz晶振。该单片机的最小系统能够运行的必要条件是需要有电源电路、晶振电路和复位电路。电源电路是给单片机系统供电用的,晶振电路是为整个系统提供时钟的,而复位电路是是单片机可以完成自动上电复位,和手动复位的。为了实现题目要求的功能,我们只需在单片机最小系统的基础上增加功能模块,并由单片机I/O口引出数据线来控制功能模块,以发出各种控制信号命令,来完成相应的操作。如下图1.1为单片机复位电路,其中有电容C1和R1组成的为上电自动复位电路,当上电时由于电容的充电作用会产生一个短暂的高电平是单片机复位。而当需要手动复位时只需按下复位按键即可。图1.1 单片机复位电路如下图1.2为单片机的晶振电路,它是来给单片机系统提供一个稳定的时钟,是单片机系统能够正常工作。其中C2和C3为起振电容,是用于帮助晶振起振的。图1.2 晶振电路如下图1.3为单片机最小系统板,是单片机系统正常工作时所需的最小单位。图1.3 单片机最小系统版2. 显示模块 2.1 LCD1602引脚功能LCD1602引脚如图2.1所示图2.1 LCD1602引脚图引脚图的功能如表2-1所示表-引脚功能图2.1.2 LCD1602显示模指令集(1)清屏功能:清DDROM值和AC值(2)归位功能:光标复位,光标返回到地址00H(3)输入方式设置功能:设置光标,画面移动方式。其中:I/D=1:数据读写操作后,AC 自加一;I/D=0:数据读写操作后,AC 自减一;S=1:数据读写操作,画面平移;S=0:数据读写操作,画面不动;(4)显示开关控制功能:设置显示、光标和闪烁开关。其中:D 表示显示开关,D=1 为开,D=0 为关;C 表示光标开关,C=1 为开,C=0 为关;B 表示闪烁开关,B=1 为开,B=0 为关。(5)光标、画面位移功能:光标、画面移动。其中:S/C=1 画面移动一个字符位;S/C=0 光标移动一个字符位;R/L=1:右移;R/L=0 左移。(6)功能设置功能:工作方式设置(初始化指令)。其中:DL=1,8 位数据接口;DL=0,4 位数据接口;N=1,两行显示;N=0,一行显示;F=1,5*10 点阵显示;F=0,5*7 点阵显示。(7)CGRAM 地址设置功能:设置CGRAM 地址,A5A0=03FH。(8)DDRAM 地址设置功能:设置DDRAM 地址。其中:N=0,一行显示A6A0=04FH;N=1 两行显示,首行A6A0=02FH,次行A6A0=4067H。(9)读BF 及AC 值功能:读忙BF 和地址计数器AC 的值。其中:BF=1:忙,BF=0:准备好。此时AC 值意义为最近一次地址设置(CGRAM 或DDRAM)定义。(10)写数据功能:根据最近设置的地址性质,数据写入CGRAM 或DDRAM 中。(11)读数据功能:根据最近设置的地址性质,从CGRAM 或DDRAM 数据读出。2.2 控制器接口时序说明2.2.1 基本操作时序:(1)读状态输入:RS=L,RW=H,E=H 输出:DB0DB7=状态字(2)写指令输入:RS=L,RW=L,E=下降沿脉冲,DB0DB7=指令码 输出:无 (3)读数据输入:RS=H,RW=H,E=H输出:DB0DB7=数据(4)写数据 输入:RS=H,RW=L,E=下降沿脉冲,DB0DB7=数据 输出:无2.2.2 基本时序图如下图2.2所示: 图2.2 时序图2.3 系统电路图系统的电路图如图2.3 所示:图2.3 系统电路图运行状况如图2.4:图2.4 电路运行情况六、软件分析根据前面的要求以及硬件的设置情况,本系统的软件部分需要进行中断设置。具体流程图如图6.1所示初始化成8位口,2行显示,5*7阵列初始化成8位口,2行显示,5*7阵列开始初始化成8位口,2行显示,5*7阵列设置开显示,不显示光标设置自动加1清显示器lcd1602写命令Lcd1602写数据两行显示延时结束图6.1 程序流程图程序清单:void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com)lcdrs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_data(uchar date)lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;void init()lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);void main()init();write_com(0x80+0x10);for(num=0;num13;num+)write_data(tablenum);delay(20);write_com(0x80+0x50);for(num=0;num15;num+)write_data(table1num);delay(20);for(num=0;num25;num+)write_com(0x18);delay(200);while(1);七、程序调试编译软件采用keil UV3,调试用反汇编窗口,如下图7.1所示 图7.1 反汇编窗口 下面我们中点分析主函数里显示第一行的程序,其主要功能是将将缩写字符在第一行从右侧分别按一定的速度一如到LCD显示屏上。因为第一行要一如13个字符,所以需要移动13次才能将数据移入LCD显示屏上去,所以我们使用了一个for循环语句实现的。反汇编如下图7.2所示。图7.2 主函数反汇编窗口经过与结果比对从中我们可以看出num这个变量是存放在寄存器num(0x08)中的,运行过程是先利用CLR清零指令将累加器A清理,再用MOV传送指令将num(0x08)清零。通过下面的图7.3可以观察到num变量的值为0x00。图7.3 变化观擦窗口要实现给LCD显示屏第一行显示所要移入的数据,我们可以先将单片机引脚电平拉低,过一会儿再将单片机引脚电平拉高,就可以实现上升沿的效果。执行完后的可以从下图7.4看出数据已经移入了LCD显示屏中去。图7.4 执行完程序后的结果下面我们来分析数据时如何在LCD显示屏中按要求显现出来的。首先,写数据命令将数据指针定位到第一行第一个字处,即“write_com(0x80+0x40)”命令存放在R7里。然后写完第一行要显示的字,在每个字之间做一个简短延时。这个延时时间也必须设置合适,时间太长会影响写入及显示的速度,太短又会影响控制器接收数据的稳定性。在写入数据的时候,首先通过 CLR A ;MOV num(0x08) ,A ;来把num(0x08)清零。再把存放在num(0x08)里的数据写入A 寄存器里去,通过for语句把第一行十三个字依次存放到寄存器A中,然后从屏幕右边整屏向左移入“COME ON !”,然后停留在屏幕上。第一行输入第一个字时的结果如下图7.5所示。第一行输入最后一个字的结果如下图7.6所示。图7.5 输入第一个字时的结果 图7.6 输入第13个字时的结果最后是for循环的判断变量num的值和更新变量num部分。从图中可以看出执行完INC自加一后num变量变为了0x01,分别如图7.7, 图7.8所示。图7.7 num变量加1窗口图7.8 变量更新后的窗口八、整体电路图及Proteus仿真Proteus软件用于系统的仿真,编译软件采用keil UV3。程序的仿真用英国的labcenter公司的Proteus V7.1。其果如下:加电后的运行效果如图8.1所示。图8.1 运行效果图九、总结与展望随着科学技术发展的日新日异,单片机已经成为当今计算机应中空前活跃的领域,在生活中可以说得是无处不在,因此作为二十一纪的大学来说掌握单片机的开发技术是十分重要的。单片机作为我们的主要专业课之一,虽然在开始学习时我们对这门课并没有什么兴趣,觉得那些程序指令枯燥乏味,但在这次课程设计后我们发现自己在一点一滴的努力中对单片机的兴趣也在逐渐增加。通过这次的单片机课程设计,我们更进一步了解到单片机的优点和强大功能,在查找资料的过程中,认识到单片机应用的广泛性。在实现这些功能的同时,对单片机系统有了一个更深刻的认识。同时通过此次课程设计,熟练掌握了C语言的编程方法,进一步熟悉了外部中断的使用方法,学习了中断优先级的设置方法。通过使用仿真软件Proteus,深化了对软硬件联合调试的意义的理解。但由于我们的知识水平有限,设计的单片机交通灯系统还是存在一些的缺点和不足。如没能实现左右转向信号灯的设计,不能根据车流量的大小来控制各方向的通车时间,希望在以后的学习过程中,能够尽快的解决这些问题。最后,我们觉得作为电信专业的学生,单片机的课程设计是很有意义的,在这个过程中可以学会如何把自己平时所学的东西应用到实际中。虽然我们对这门课懂的并不多,很多基础的东西都还没有很好的掌握,觉得有点难,也没有很有效的办法通过自身去理解,但是靠着这一个多星期的“学习”,在小组同学的帮助和讲解下,自己开始主动学习并逐步从基础慢慢开始弄懂它。我们认为这个收获应该说是相当大的。我觉得课程设计反映的是一个从理论到实际应用的过程,这个过程对缺乏实际经验的我们是非常重要的。通过这次单片机课程设计使我们认识到自身知识及能力的薄弱,更让我知道实践的重要性。在以后的学习过程中,我们会更加努力学习MCU的相关知识和应用,真正能够运用单片机组成的微控制系统解决各种实际的问题。九、参考文献 1 王守中编著.51单片机开发入门与典型实例.北京:人民邮电学出版社,20072 徐爱钧编著.单片机原来实用教程基于Proteus虚拟仿真.北京:电子工业出版社,20093 李泉溪主编.单片机原理与应用实例仿真.北京:北京航空航天大学出版社,20094 吴金戌、沈庆阳、郭庭吉编著.8051单片机实践与应用.清华大学出版社,2002附录一:LCD滚动显示屏完整程序#include#define uchar unsigned char#define uint unsigned intuchar code table=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论