基于单片机的电子万年历带计算器《单片机课程设计报告》系别:电气工程系班级:本电气113班指导老师:吴巧媚组员:杨祺杰、段湘文、刘强、李鹏宇大纲1、内容摘要2、设计任务及要求3、内容设计4、系统框架图5、电路设计原理图6、各部分电路的说明7、元件清单8、测试结果与分析9、总结与体会10、致谢一、内容摘要本设计要制作的就是单片机于生活中最为常见的几种应用——简易计算器和电子万年历。本简易计算器和电子万年历以AT89S52单片机作为核心,可以显示简易的计算和时间,时间可以人为设定;另外还可以显示当前的日历,显示格式为年(四位),月(两位),日(两位)。设置时间的位切换、设定数值、启动定时器、切换日历通过外部中断来实现。简易计算器不仅可以进行简易的计算还可以显示时间。简易计算器显示电路由LCD1602组成,制作该装置的材料需要有软硬件的支持,硬件方面AT89C51单片机,晶振,电源,液晶屏LCD1602,DS1302时钟芯片。本次设计在电子万年历的基础上加上了计算器,通过切换键来实现两个功能的互换。计算器可以进行7位数的加、减、乘、除,但是最大有效显示结果为9位数。具体实现功能如下:1、显示年、月、日、时、分、秒等信息2、具有可调整日期和时间功能3、与即时时间同步(不接外部电源)4、按切换键后可进行简单的四则运算二、设计任务及要求1、本课题设计的是简单的计算器和万年历,可以进行四则运算和显示时间,为了得到较好的显示效果,所以采用背光LCD1602显示数据和结果;2、计算器部分:键盘包括数字键(0-9)、符号键(+、-、*、/、.)、清除键(ON/C)和等号键(=),故需要16个按键,设计中采用4*4矩阵键盘;3、时间显示的部分,有年、月、日、时、分、秒,时间显示和计算器控制键的分别设置,故需要一个功能切换的按键。显示时间状态时,可以对当前的时间进行设置;4、执行程序:开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符(包过小数),计算器在内部执行数值转换和存储,并等待再次键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果;5、错误提示:当单片机执行程序中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算器得到的结果大于计算器的显示范围时,计算器会在LCD上提示溢出(显示-1);当除数为0时,计算器会在LCD上提示错误,显示“0”。三、内容设计•AT89S52单片机•时钟芯片DS1302•液晶显示器LCD1602•整体设计设计方案•4*4键盘电路•电路原理图•软件设计•硬件调试与分析单片机的介绍与应用原理1、单片机的介绍AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业89C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,3个16位定时器/计数器,1个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。单片机的工作方式:正常工作时消耗11~20mA电流,空闲状态时为1.7~5mA电流,掉电方式为5~50μA。2、单片机的应用(1)在智能仪器仪表上的应用(2)在工业控制中的应用(3)在家用电器中的应用(4)在计算机网络和通信领域中的应用(5)单片机在医用设备领域中的应用(6)在各种大型电器中的模块化应用(7)单片机在汽车设备领域中的应用LCD1602的介绍LCD1602已很普遍了,具体介绍我就不多说了,市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样(背光与不背光)。其优点为:显示质量高,数字式接口,体积小、质量轻,功耗低(10mW)显示方式:段式、字符式、点阵式;本次用到的是字符型液晶LCD1602,专门用于字母、数字、符号等点阵式LCD。驱动方式:静态驱动、单纯(主动)矩阵驱动三种。LCD1602主要技术参数显示容量:16×2个字符芯片工作电压:4.5—5.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.95×4.35(W×H)mmLCD1602的原理及其应用LCD1602的引脚图•LCD1602的引脚说明•第1脚:VSS为地电源。第2脚:VDD接5V正电源。•第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。(正常工作电压为0.3V左右)•第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。•第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。•第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。•第7~14脚:D0~D7为8位双向数据线。•第15脚:背光源正极。•第16脚:背光源负极。时钟芯片DS1302的工作原理•DS1302的简介•DS1302是美国DALLAS公司推出的一种高性能、低功耗(功耗小于1mw;2.5V时,小于300nA)、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。DS1302的结构•DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据传送的方法。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向)。SCLK为时钟输入端。DS1302电路原理图•电路原理图如下,DS1302与单片机的连接也仅需要3条线:CE引脚、SCLK串行时钟引脚、I/O串行数据引脚,Vcc2为备用电源,外接32.768kHz晶振,为芯片提供计时脉冲。DS1302的引脚功能DS1302时钟芯片后备电源的选择•选择纽扣电池RC1220作为后备电源•锂二氧化锰电池,其命名是按IEC的标准命名。其中C-以锂金属为负极,以二氧化锰为正极的化学电池体系,R-表示电池的形状为圆柱形,如果是方形则F替代;12表示电池的直径是12.5mm,20代表电池的高度为2.0mm。标称电压为3.0V,终止电压(endpointvoltage)为2.0V,额定容量为40mAh四、系统框架图五、整体设计方案•设计方法•本电路设计采用AT89S52单片机为核心,利用12MHz晶振产生频率的时钟脉冲信号,利用液晶屏LCD1602显示计算及其时间信息,通过对AT89S52单片机的编程控制液晶屏LCD1602的显示。显示时间和简易计算的信息同在LCD1602,通过按键切换选择。外部按键可及时设定或调整时间或计算的信息。硬件设计•本系统以AT89S52单片机为核心,本系统选用12MHZ的晶振,,使得单片机有合理的运行速度。起振电容22pF对振荡器的频率高低、振荡器的稳定性和起振的快速性影响较合适,复位电路为按键高电平复位。DS1302时钟芯片选用32.768KHz的晶振,以此保持时间的准确性。并在后备电源处提供了后备电源,当没有外接电源时,后备电源就供电,这样就可以保持时钟芯片的不断电及掉电也可以准确计时。本系统中的后备电源采用3v的电子电源,其寿命可达一年以上。液晶显示器采用背光的,本次设计选用16引脚的LCD1602。六、电路设计原理图七、各部分电路的说明•复位电路•51单片机是高电平复位。所以本设计采用的是上电复位和手动复位相结合的方式。•矩阵键盘•计算器输入数字和其他功能按键要用到很多按键(触点式开关按键),如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。矩阵键盘采用四条I/O线作为行线,四条I/O线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。•键盘的工作方式:中断扫描方式(提高CPU的工作效率)•矩阵式键盘按键的识别:行线通过上拉电阻接到+5V电源,无键按下时,行处于高电平,列处于低电平。当有键按下时,行的电平由高电平变低电平。CPU根据行电平的变化,就能判断有键按下。•LCD1602的显示电路•本设计采用液晶屏LCD1602来显示输出数据,通过D0-D7引脚向LCD写指令字或写数据以使LCD实现不同的功能或显示相应的数据。•DS1302时钟电路•电路原理图如上,DS1302与单片机的连接也仅需要3条线:CE引脚、SCLK串行时钟引脚、I/O串行数据引脚,Vcc2为备用电源,外接32.768kHz晶振,为芯片提供计时脉冲。八、元件清单九、测试结果与分析1、软件设计:本电路软件设计采用C语言编写程序(具体程序在附加中给出)。程序设计主要包括简易计算的编程,按键编程,时间控制编程,液晶屏LCD1602的显示编程(共四条程序,编程采用程序模块式)。程序编程好后,编译没有出错后,就直接生产hex文件,然后进行(proteus)软件仿真。2、软件仿真:在硬件设计完成后,利用软件对其进行仿真,这样,就会减少在做硬件时的错误,做到更准确。本次我采用Proteus软件仿真。经过此次的软件仿真,仿真结果正常,可以顺利的进行硬件制作。3、硬件调试:前期的那些准备工作都是为了这最后的一步,先把元件排版好后,就是自己动手焊接,制作出完整的实物。在确保焊接无误后,接着将之前编好的程序烧写进单片机,做最后的硬件调试。(看效果是否和仿真的效果一致,如果和仿真相同,那么作品就成功地完成了。要是没有达到仿真时的效果,那么就是焊接时出现了失误。)我们的硬件测试比较顺利,我们的作品完成了!用proteus绘制的仿真图proteus仿真效果图作品实物演示图十、总结与体会本次课程设计是对以前学过的理论知识进行了巩固,加深了理解,提高了应用的能力,提高了自己的发现、分析、解决问题的能力,还有更重要的就是