基于51单片机的1602LCD多态显示器设计.doc_第1页
基于51单片机的1602LCD多态显示器设计.doc_第2页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

西安工程大学单片机 课 程设计学院: 计算机学院 专 业 班 级: 信科四班 课 题 名 称:基于51单片机的1602lcd多态显示器设计 指 导 教 师: 组长:组员:、目录一. 摘要6二总体设计方案72.1设计要求7三at89c51机介绍73.1单片机结构介绍73.2单片机组成原理9四复位电路工作原理94.1上电自动复位原理10五数码管显示电路125.1 led数码显示器的结构135.2 led数码显示器的分类155.3 led数码显示方式16六时钟电路模块17七程序设计及原理图187.1程序设计187.2原理图237.3 pcb图237.4元件清单24八结束语25九参考文献26摘要近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动着传统控制检测日新月异的更新。由于单片机具有体积小、易于产品化、面向控制、集成度高、功能强、可靠性高、价格低等特点,其在工业控制、机电一体化、智能仪表、通信等诸多领域中得到了广泛的应用。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用。但是仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。本报告针对1602 lcd显示器的设计的需求,介绍了mcs-51单片机的部分基本原理,如51单片机的复位功能,延时功能等等。lcd动态显示系统需要用到锁存器、lcd显示器,hd44780等主要模块,通过不同的模块之间相互作用,完成lcd动态显示的初步硬件结构。对于lcd显示器来说,采用以软件为主的接口方法,即采用keil uvision3软件程序进行译码。【关键词】 单片机 keil3 1602lcd显示器 二总体设计方案 lcd显示器器以at89c51单片机为核心,起着控制作用。系统包括锁存器、lcd显示器,hd44780。lcd显示的总体设计思路分为五个模块:复位电路,晶振电路模块,at89c51,lcd显示电路模块,上拉电阻模块。2.1设计要求:1)、应用mcs-51单片机设计lcd电路。2)、选用液晶显示器,从左到右显示“welcome to www.xpu.edu.cn”。3)、硬件设计根据设计的任务选定合适的单片机,根据控制对象设计接口电路。设计的单元电路必须有工作原理,器件的作用,分析和计算过程4)、软件设计根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试并打印程序清单;5)、原理图设计根据所确定的设计电路,利用proteus等有关工具软件绘制电路原理图,生成pcb板图、提供元器件清单。三、硬件设计3.1 80c51单片机80c51 芯片内部集成了 cpu、ram、rom、定时/计数器和i/o口等各功能部件,并由内部总线把这些部件连接在一起。80c51单片机内部包含以下一些功能部件:一个8位cpu;一个片内振荡器和时钟电路;4kb rom(80c51有4kb掩膜rom,87c51有4kb eprom,80c31片内有无rom); 128b内ram; 可寻址64kb的外rom和外ram控制电路; 两个16位定时/计数器; 21个特许功能寄存器; 4个8位并行i/o口,共32条可编程i/o端线; 一个可编程全双工串行口;5个中断源,可设置成2个优先级。振荡器及时序 osc8051cpu程序存储器4kb rom数据存储器256b2个16位定时器/计数器64k总线扩展控制器可编程i/o可编程全双工串行口不同型号mcs-51单片机cpu处理能力和指令系统完全兼容,只是存储器和i/o接口的配置有所不同。其中8051主要包括算术/逻辑部件alu、累加器a、只读存储器rom、随机存储器ram、程序计数器pc、定时器/计数器、i/o接口电路等,还有堆栈寄存器sp等部件。这些部件集成在一块芯片上,通过内部总线连接,构成完整的微型计算机。3.2复位电路复位是单片机的初始化操作,只需给at89c51的复位引脚rst加上大于2个机器周期(即24个时钟振荡周期)的高电平就可得单片机复位.复位时,pc初始化为0000h,使单片机从out单元开始执行程序。除了进入系统的正常初始化之外,由于程序运行出错或操作错误而使系统处于死锁状态。为摆脱死锁状态,也需按复位键使得rst脚为高电平,使单片机重新启动。在系统中,有时会出现显示不正常。为了调试方便,需要设计一个复位电路。at89c51单片机复位电路共有上电复位、按键电平复位和按键脉冲复位。本系统的复位电路主要完成系统的上电复位。复位电路可由简单的rc电路构成,也可使用其它的相对复杂,但功能更完善的电路。本系统采用的电路工作原理是:上电瞬间,rc电路充电,reset引脚端出现正脉冲,只要reset保持10ms以上高电平,就能使单片机有效的复位。当时钟频率选用12mhz时,c取10uf,r取10k,上电自动复位电路由上电瞬间c与r构成充电电路,reset端的电位与电源vcc相同,随着充电电流的减少,reset的电位逐渐下降。rc时间常数越大,上电时reset端保持高电平的时间越长,这组参数足以保证复位操作。若复位电路失效,加电后cpu从一个随机的状态开始工作,系统就不能正常运行。复位电路:3.3.晶振电路晶振是为电路提供频率基准的元器件,晶振可以说是单片机的时钟,有着固定稳固的频率,是一个标准,没有它的话,估计单片机的程序会乱跑,也有可能运行不了,反正是不正常。通常分成有源晶振和无源晶振两个大类,无源晶振需要芯片内部有振荡器,并且晶振的信号电压根据起振电路而定,允许不同的电压,但无源晶振通常信号质量和精度较差,需要精确匹配外围电路(电感、电容、电阻等),如需更换晶振时要同时更换外围的电路。有源晶振不需要芯片的内部振荡器,可以提供高精度的频率基准,信号质量也较无源晶振要好。因价格等因素,实际应用中多采用无源晶振设计的电路居多,除非电路设计时序极其敏感或芯片内部无振荡器的情况(如一些型号的dsp或精密仪器中)。晶振电路:3.4显示电路显示功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解的前提下提供尽可能丰富的信息,全靠软件来解决。通常在显示上采用的方法一般包括两种:一种是静态显示,另一种是动态显示。其中静态显示的特点是显示稳定不闪烁,程序编写简单,但占用端口资源多,所耗得电能较大;动态显示的特点是显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少。为了减少端口资源,降低电能消耗,我们采用的是动态显示方法。显示电路: 四1602结构及工作原理4.1 1602显示器的结构 所谓1602是指显示的内容为16*2,即可以显示两行,每行16个字符。目前市面上字符液晶绝大多数是基于hd44780液晶芯片的,控制原理是完全相同的,因此基于hd44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。 如图3.7所示。字符型lcd1602通常有14条引脚线或16条引脚线的lcd,多出来的2条线是背光电源线vcc(15脚)和地线gnd(16脚),其控制原理与14脚的lcd完全一样.4.2 l1602引脚定义 4.3 控制器hd44780hd44780内置了ddram、cgrom和cgram。 ddram就是显示数据ram,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表: 也就是说想要在lcd1602屏幕的第一行第一列显示一个a字,就要向ddram的00h地址写入“a”字的代码就行了。但具体的写入是要按lcd模块的指令格式来进行的,后面我会说到的。那么一行可有40个地址呀?是的,在1602中我们就用前16个就行了。第二行也一样用前16个地址。对应如下: ddram地址与显示位置的对应关系 (事实上我们往ddram里的00h地址处送一个数据,譬如0x31(数字1的代码)并不能显示1出来。这是一个令初学者很容易出错的地方,原因就是如果你要想在ddram的00h地址处显示数据,则必须将00h加上80h,即80h,若要在ddram的01h处显示数据,则必须将01h加上80h即81h(从80h开始到9fh开始才是空余的自己编写空间其余的空间都有液晶自己的库文件。在cgram中)。 1602液晶模块内部的字符发生存储器(cgrom)已经存储了160个不同的点阵字符图形,如下表所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“a”的代码是01000001b(41h),显示时模块把地址41h中的点阵字符图形显示出来,我们就能看到字母“a” 上表中的字符代码与我们pc中的字符代码是基本一致的。因此我们在向ddram写c51字符代码程序时甚至可以直接用p1a这样的方法。pc在编译时就把“a”先转为41h代码了。 字符代码0x000x0f为用户自定义的字符图形ram(对于5x8点阵的字符,可以存放8组,5x10点阵的字符,存放4组),就是cgram了。五软件设计 5.1程序设计 * 描述: lcd1602 滚动显示 * 显示方式: * 1、从左到右逐字显示,闪动二次,清屏。 * 2、再从右到左逐字显示,闪动二次,清屏。 * 3、周期性地重复上述显示方式。 * */#include /51寄存器文件#include typedef unsigned char byte;/用byte代替unsigned char (无符号字符)typedef bit bool; / 用bool代替bit sbit lcd_rs = p26; /复位端 sbit lcd_rw = p25; /写数据端sbit lcd_ep = p27; /使能端byte code dis1 = welcome to ;byte code dis2 = 01 ;byte code dis3 = ot emoclew ;byte code dis4 = moc.nihcerp.www ;/*延时函数*/delay(int ms) /延时子程序int i;while(ms-) for(i = 0; i 250; i+) _nop_(); /空执行 _nop_(); _nop_(); _nop_(); /*侧忙函数*/bool lcd_bz() bool result;lcd_rs = 0;lcd_rw = 1;lcd_ep = 1;_nop_();_nop_();_nop_();_nop_();result = (bool)(p0 & 0x80); /检测p0最高位是否为1lcd_ep = 0;return result;/返回侧忙结果/*写命令函数*/lcd_wcmd(byte cmd) / 写入指令数据到lcdwhile(lcd_bz();lcd_rs = 0;lcd_rw = 0;lcd_ep = 0;_nop_();_nop_(); p0 = cmd; /将8位指令通过p0口传给1602_nop_();_nop_(); /用于产生一个脉冲宽度_nop_();_nop_();lcd_ep = 1;_nop_();_nop_();_nop_();_nop_();lcd_ep = 0; lcd_pos(byte pos) /设定显示位置lcd_wcmd(pos | 0x80);/*写数据函数*/lcd_wdat(byte dat) /写入字符显示数据到lcdwhile(lcd_bz();lcd_rs = 1;lcd_rw = 0;lcd_ep = 0;p0 = dat; /将8位数据通过p0口传给1602_nop_();_nop_(); /用于产生一个脉冲宽度_nop_();_nop_();lcd_ep = 1;_nop_();_nop_();_nop_();_nop_();lcd_ep = 0; lcd_init() /lcd初始化设定lcd_wcmd(0x38); /16*2显示,5*7点阵,8位数据delay(1);lcd_wcmd(0x0c); /显示开,关光标delay(1);lcd_wcmd(0x06); /移动光标delay(1);lcd_wcmd(0x01); /清除lcd的显示内容delay(1);/*主函数*/main() byte i; lcd_init();/ 初始化lcd delay(10); while(1) lcd_wcmd(0x06);/向右移动光标 lcd_pos(0);/设置显示位置为第一行的第1个字符 i = 0; while(dis1 i != 0) /显示字符wlcome to lcd_wdat(dis1 i ); i+; delay(30);/控制两字之间显示速度 lcd_pos(0x40);/设置显示位置为第二行第1个字符 i = 0; while(dis2 i != 0) lcd_wdat(dis2 i );/显示字符 www.prechin.com i+; delay(30);/控制两字之间显示速度 delay(800);/控制停留时间 lcd_wcmd(0x01);/清除lcd的显示内容 delay(1); lcd_wcmd(0x04);/向左移动光标 lcd_pos(15);/设置显示位置为第一行的第16个字符 i = 0; wh

温馨提示

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

评论

0/150

提交评论