基于at89c51单片机的多功能电子万年历的设计毕业设计_第1页
基于at89c51单片机的多功能电子万年历的设计毕业设计_第2页
基于at89c51单片机的多功能电子万年历的设计毕业设计_第3页
基于at89c51单片机的多功能电子万年历的设计毕业设计_第4页
基于at89c51单片机的多功能电子万年历的设计毕业设计_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计论文基于AT89C51单片机的多功能电子万年历的设计学生姓名学院名称专业名称电子信息工程技术指导教师2012年5月12日摘要本文介绍了基于AT89C51单片机的多功能电子万年历的硬件结构和软硬件设计方法。系统以AT89C51单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年、月、日、时、分、秒进行计时,还具有温度显示等多种功能。万年历采用直观的数字显示,可以在LED上同时显示年、月、日、周日、时、分、秒,还具有时间校准等功能。此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,具有广阔的市场前景。关键字AT89C51;电子万年历;DS1302;DS18B20目录1绪论111课题研究的背景112课题的研究目的与意义113课题解决的主要内容12系统的总体设计221系统方案的构想与确定222器件的选用2221单片机的选择23系统硬件的设计431系统硬件电路设计4311系统硬件框图4312AT89C51单片机5313温度传感器的介绍8314DS1302104系统的软件设计1341主程序1342从1302读取日期和时间程序145PROTEUS使用1551编程环境PROTEUS1552用PROTEUSISIS对电子万年历的硬件电路设计1553用PROTEUSISIS进行电子万年历的仿真测试19结论21致谢22参考文献25附录23附录1241绪论11课题研究的背景随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。它可以对年、月、日、时、分、秒进行计时,还具有温度显示等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89C51单片机作为核心,功耗小,能在3V的低压工作,电压可选用35V电压供电。此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。12课题的研究目的与意义二十一世纪是数字化技术高速发展的时代,而单片机在数字化高速发展的时代扮演着极为重要的角色。电子万年历的开发与研究在信息化时代的今天亦是当务之急,因为它应用在学校、机关、企业、部队等单位礼堂、训练场地、教学室、公共场地等场合,可以说遍及人们生活的每一个角落。所以说电子万年历的开发是国家之所需,社会之所需,人民之所需。由于社会对信息交换不断提高的要求及高新技术的逐步发展,促使电子万年历发展并且投入市场得到广泛应用。13课题解决的主要内容本课题所研究的电子万年历是单片机控制技术的一个具体应用,主要研究内容包括以下几个方面(1)选用电子万年历芯片时,应重点考虑功能实在、使用方便、单片存储、低功耗、抗断电的器件。(2)根据选用的电子万年历芯片设计外围电路和单片机的接口电路。(3)在硬件设计时,结构要尽量简单实用、易于实现,使系统电路尽量简单。(4)根据设计的硬件电路,编写控制AT89C51芯片的单片机程序。(5)通过编程、编译、调试,把程序下载到单片机上运行,并实现本设计的功能。(6)在硬件电路和软件程序设计时,主要考虑提高人机界面的友好性,方便用户操作等因素。(7)软件设计时必须要有完善的思路,要做到程序简单,调试方便。2系统的总体设计单片机电子万年历的制作有多种方法,可供选择的器件和运用的技术也有很多种。所以,系统的总体设计方案应在满足系统功能的前提下,充分考虑系统使用的环境,所选的结构要简单使用、易于实现,器件的选用着眼于合适的参数、稳定的性能、较低的功耗以及低廉的成本。21系统方案的构想与确定系统的功能往往决定了系统采用的结构,经过成本,性能,功耗等多方面的考虑决定用LM016L和LEDMPX做显示器,RESPACK8对单片机AT89C51进行供电,时间芯片DS1302以及温度传感器DS18B20温度传感器连接单片机AT89C51。从而实现多功能电子万年历的功能。22器件的选用单片机AT89C51显示屏LM016L温度传感器DS18B20传感器DS1302排阻RESPACK8221单片机的选择单片机自70年代问世以来以微处理器(MPU)技术及超大规模集成电路技术的发展为先导,用广泛的应用领域拉动得到蓬勃发展,单片机功能正日渐完善。单片机的应用,使许多领域的技术水平和自动化程度大大提高,可以说当今世界正在经受一场以单片机技术为标志的新技术革命浪潮的冲击。主要单片机类型如下1MCS51系列单片机MCS51系列单片机主要是指INTEL公司生产的以51位内核的单片机芯片,具有8位CPU、4K字节ROM、128字节RAM、可扩展外部64K字节RAM和ROM、2个16位的定时器/计数器、4个8位并行I/O口、1个全双工串行I/O口、21字节的专用寄存器、5个中断源、片内自带振荡器、片内单总线等功能部件。(2)AT89C51单片机AT89C51单片机的主要特性如下与MCS51产品指令系统完全兼容4K字节的在线编程FLASH存储器,1000次擦写周期4055V的工作电压范围全静态工作模式033MHZ三级程序存储器锁1288字节内部RAM32个可编程I/O口线2个16位定时/计数器6个中断源全双工串行UART通道低功耗空闲和掉电模式中断可从空闲模式唤醒系统看门狗(WDT)及双数据指针掉电标识和快速编程特性具有掉电状态下的中断恢复功能灵活的在系统编程(ISP字节或页写模式)由于AT89C51单片机片内有4K字节的在线编程FLASH存储器,可以擦写1000次,具有掉电模式,而且具有掉电状态下的中断恢复功能,对设计开发非常实用。所以选用AT89C51单片机作为电子万年历芯片的控制单片机。3系统硬件的设计根据上述所确定的系统方案构想,下面进行系统硬件电路的具体设计,系统的总体结构框图如图所示。31系统硬件电路设计311系统硬件框图系统硬件框图如图31年月日时分秒,显示屏7图31系统硬件框图P0AT89C51P2P1P3DS1302温度显示器DS18B20312AT89S51单片机本系统采用的是美国ATMEL公司生产的AT89C51单片机,首先我们来熟悉一下AT89C51单片机的外部引脚和内部结构。1单片机的引脚功能AT89C51单片机有40个引脚。VCC电源电压5VGND接地P0口P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线服用,在访问期间激活内部上拉电阻。在FLASH编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时要求外接上拉电阻。P1口P1口是一个带内部上拉电阻的8位双向I/O,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。FLASH编程和程序校验期间,P1接收低8位地址。P2口P2口是一个带内部上拉电阻的8位双向I/O,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVXDPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(MOVXRI指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。FLASH编程和程序校验期间,P2亦接收低高位地址和其他控制信号。P3口P3口是一组带内部上拉电阻的8位双向I/O,P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部的上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,见表31所示P3口还接收一些用于FLASH闪速存储器编程和程序校验的控制信号。表31P3口的第二功能图端口引脚第二功能P30RXD(串行输入口)P31TXD(串行输出口)P32INT0(外中断0)P33INT1(外中断1)P34T0(定时/计时器0外部输入)P35T1(定时/计时器1外部输入)P36WR(外部数据存储器写选通)P37RD(外部数据存储器读选通)RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT溢出将使引脚输出高电平,设置SFRAUXR的DISRT0(地址8EH)可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存器允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过多特殊功能寄存器(SFR)区中的8EH单元的D0位置,可禁止ALE操作。该位置后,只有一条MOVX和MOVC指令ALE才会被激活。另外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。PSEN程序存储允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN信号。EA/VPP外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需要注意的是如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。FLASH存储器编程时,该引脚加上12V的变成电压VPPXTAL1振荡器反相放大器及内部时钟发生器的输入端。XTAL2振荡器反相放大器的输出端。AT89C51单片机内部结构2AT89C51单片机与MCS51完全兼容看门狗(WDT)WDT是一种需要软件控制的复位方式。WDT由13位计数器和特殊功能寄存器中的看门狗定时器复位存储器(WDTRST)构成。WDT在默认情况下无法工作;为了激活WDT,用户必须往WDTRST寄存器(地址0A6H)中依次写入01EH和0E1H。当WDT激活后,晶振工作,WDT在每个机器周期都会增加。WDT计时周期依赖于外部时钟频率。除了复位(硬件复位或WDT溢出复位),没有办法停止WDT工作。当WDT溢出,它将驱动RSR引脚输出一个高电平。可编程串口(UART)在AT89C51中,UART的操作与AT89C51和AT89C52一样。AT89C51系列单片机的串行通信口可以工作于同步和异步通信方式。当工作于异步方式时,它具有全双工的操作功能,也就是说,它可以同时进行数据的发送和接收。串行口内的接收器采用的是双缓冲结构,能够在接收到的第一个字节从接收寄存器读走之前就开始接收第二个字节(当然,如果第二个字节接收完毕,而第一个字节仍然没有被读走,那将会丢掉一个字节)。串行口的发送和接收操作都是通过特殊功能寄存器中的数据缓冲寄存器SBUF进行的,但在SBUF的内部,接收寄存器和发送寄存器在物理结构上是完全独立的。如果将数据写入SBUF,数据会被送入发送寄存器准备发送。如果执行SBUF指令,则读出的数据一定来自接收缓存器。因此,CPU对SBUF的读写,实际上是分别访问2个不同的寄存器。这2个寄存器的功能决不能混淆。振荡电路AT89C51系列单片机的内部振荡器,由一个单极反相器组成。XTAL1反相器的输入,XTAL2为反相器的输出。可以利用它内部的振荡器产生时钟,只要XTAL1和XTAL2引脚上一个晶体及电容组成的并联谐振电路,便构成一个完整的振荡信号发生器,此方式称为内部方式。另一种方式由外部时钟源提供一个时钟信号到XTAL1端输入,而XTAL2端浮空。在组成一个单片机应用系统时,多数采用这种方式,这种方式结构紧凑,成本低廉,可靠性高。在电路中,对电容C1和C2的值要求不是很严格,如果使用高质的晶振,则不管频率为多少,C1、C2通常都选择30PF。定时/计数器AT89C51单片机内含有2个16位的定时器/计数器。当用于定时器方式时,定时器的输入来自内部时钟发生电路,每过一个机器周期,定时器加1,而一个机器周期包含有12个振荡周期,所以,定时器的技术频率为晶振频率的1/12,而计数频率最高为晶振频率的1/24。为了实现定时和计数功能,定时器中含有3种基本的寄存器控制寄存器、方式寄存器和定时器/计数器。控制寄存器是一个8位的寄存器,用于控制定时器的工作状态,方式寄存器是一个8位的寄存器,用于确定定时器的工作方式,定时器/计数器是16位的计数器,分为高字节和低字节两部分。RAM高于7FH内部数据存储器的地址是8位的,也就是说其地址空间只有256字节,但内部RAM的寻址方式实际上可提供384字节。的直接地址访问同一个存储空间,高于7FH的间接地址访问另一个存储空间。这样,虽然高128字节区分与专用寄器,即特殊功能寄存器区的地址是重合的,但实际上它们是分开的。究竟访问哪一区,存是通过不同的寻址方式加以区分的。SFRSFR是具有特殊功能的所有寄存器的集合,共含有22个不同寄存器,它们的地址分配在80HFFH中。虽然如此,不是所有的单元都被特殊功能寄存器占用,未被占用的单元,其内容是不确定的。如对这些单元进行读操作,得到的是一些随机数,而写入则无效,所以在编程时不应该将数据写入这些未确定的地址单元中,特殊功能寄存器主要有累加器ACC、B寄存器、程序状态字寄存器PSW、堆栈指针SP、数据指针DPTR、I/O端口、串行口数据缓冲器SBUF、定时器寄存器、捕捉寄存器、控制寄存器。中断系统AT89C51单片机有6个中断源,中断系统主要由中断允许寄存器IE、中断优先级寄存器IP、优先级结构和一些逻辑门组成。IE寄存器用于允许或禁止中断;IP寄存器用于确定中断源的优先级别;优先级结构用于执行中断源的优先排序;有关逻辑门用于输入中断请求信号。在整个中断响应过程中CPU所执行的操作步骤如下(1)完成当前指令的操作(2)将PC内容压入堆栈(3)保存当前的中断状态(4)阻止同级的中断请求(5)将中断程序入口地址送PC寄存器(6)执行中断服务程序(7)返回313温度传感器的介绍AT89C51作为温度测试系统设计的核心器件。该器件是INTEL公司生产的MCS一5L系列单片机中的基础产品,采用了可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS51的CMOS产品。不仅结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,而且继承和扩展了MCS48单片机的体系结构和指令系统。单片机小系统的电路图如图2所示。DS18B20可以程序设定912位的分辨率,精度为05C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EPROM中,掉电后依然保存。温度传感器DS18B20引脚如图3所示。8引脚封装TO92封装图2温度传感器引脚功能说明NC空引脚,悬空不使用;VDD可选电源脚,电源电压范围355V。当工作于寄生电源时,此引脚必须接地。DQ数据输入/输出脚。漏极开路,常态下高电平。GND为电源地DS18B20内部结构主要由四部分组成64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRCX8X5X41)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。DS18B20中的温度传感器可完成对温度的测量,以12位转化为例用16位符号扩展的二进制补码读数形式提供,以00625/LSB形式表达,其中S为符号位。这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于00625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于00625即可得到实际温度。例如125的数字输出为07D0H,250625的数字输出为0191H,250625的数字输出为FF6FH,55的数字输出为FC90H。DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。该字节各位的意义如下TMR1R011111低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如表1所示(DS18B20出厂时被设置为12位)表1DS18B20温度转换时间表R1R0分辨率/位温度最大转向时间00993750110187510113751112750根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。314DS1302现在流行的串行时钟电路很多,如DS1302、DS1307、PCF8485等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32768KHZ晶振。DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为25V55V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。DS1302的引脚排列,其中VCC1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由VCC1或VCC2两者中的较大者供电。当VCC2大于VCC102V时,VCC2给DS1302供电。当VCC2小于VCC1时,DS1302由VCC1供电。X1和X2是振荡源,外接32768KHZ晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在VCC25V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端双向,后面有详细说明。SCLK始终是输入端。DS1302的控制字节的最高有效位位7必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据位5至位1指示操作单元的地址最低有效位位0如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1902,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表1。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH写、FFH读。DS1302与CPU的连接需要三条线,即SCLK7、I/O6、RST5。DS1902与89C2051的连接图,其中,时钟的显示用LED。DS1302与CPU的连接,实际上,在调试程序时可以不加电容器,只加一个32768KHZ的晶振即可。只是选择晶振时,不同的晶振,误差也较大。另外,还可以在上面的电路中加入DS18B20,同时显示实时温度。只要占用CPU一个口线即可。LED还可以换成LCD,还可以使用北京卫信杰科技发展有限公司生产的10位多功能8段液晶显示模块LCM101,内含看门狗WDT/时钟发生器及两种频率的蜂鸣器驱动电路,并有内置显示RAM,可显示任意字段笔划,具有34线串行接口,可与任何单片机、IC接口。功耗低,显示状态时电流为2A典型值,省电模式时小于1A,工作电压为24V33V,显示清晰。DS1302的实时时间流程。根据流程框图,不难采集实时时间。下面对DS1302的基本操作进行编程根据本人在调试中遇到的问题,特作如下说明DS1302与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位MSBD7必须为逻辑1,如果D70,则禁止写DS1302,即写保护;D60,指定时钟数据,D61,指定RAM数据;D5D1指定输入或输出的特定寄存器;最低位LSBD0为逻辑0,指定写操作输入,D01,指定读操作输出。在DS1302的时钟日历或RAM进行数据传送时,DS1302必须首先发送命令字节。若进行单字节传送,8位命令字节传送结束之后,在下2个SCLK周期的上升沿输入数据字节,或在下8个SCLK周期的下降沿输出数据字节。DS1302与RAM相关的寄存器分为两类一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,在此方式下可一次性读、写所有的RAM的31个字节。要特别说明的是备用电源B1,可以用电池或者超级电容器01F以上。虽然DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。可以用老式电脑主板上的36V充电电池。如果断电时间较短几小时或几天时,就可以用漏电较小的普通电解电容器代替。100F就可以保证1小时的正常走时。DS1302在第一次加电后,必须进行初始化操作。初始化后就可以按正常方法调整时间。DS1302存在时钟精度不高,易受环境影响,出现时钟混乱等缺点。DS1302可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析及对异常数据出现的原因的查找具有重要意义。传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。但是,如果在系统中采用时钟芯片DS1302,则能很好地解决这个问题。4系统的软件设计电子万年历的功能是在程序控制下实现的。该系统的软件设计方法与硬件设计相对应,按整体功能分成多个不同的程序模块,分别进行设计、编程和调试,最后通过主程序将各程序模块连接起来。这样有利于程序修改和调试,增强了程序的可移植性。41主程序主程序如图41所示开始液晶屏的初始化读DS1302分离出的数据送人显示缓存缓存中的数据显示出来读温度程序液晶屏上显示温度返回图41主程序图42从1302读取日期和时间程序读1302日期和时间调整时间和日期YN图42从1302读取程序系统初始化开始需要调整时间吗5PROTEUS使用51编程环境PROTEUSPROTEUS软件是由英国LABCENTERELECTRONICS公司开发的EDA工具软件,由ISIS和ARES两个软件构成,其中ISIS是一款便捷的电子系统仿真平台软件,ARES是一款高级的布线编辑软件,它集成了高级原理布线图、混合模式SPICE电路仿真、PCB设计以及自动布线来实现一个完整的电子设计。52用PROTEUSISIS对电子万年历的硬件电路设计通过PROTEUSISIS软件的VSM(虚拟仿真技术),用户可以对模拟电路、数字电路、模数混合电路,以及基于微控制器的系统连同所有外围接口电子元器件一起仿真。用PROTEUSISIS设计硬件电路的过程选择设计图纸的到小根据设计所使用到元器件的多少,选择合适大小的设计图纸,操作是单击菜单栏上的SYSTEMSETSHEETSIZE,然后弹出如图51所示的对话框,从中选择合适大小的图纸,也可以选择USER进行图纸的自定义设置。在设计过程中也可以通过此方法调整图纸的大小。图51选取仿真所需的元器件选取元器件的方式是,单击如图52所示的按钮“P”。会弹出如图53所示的窗口。图52图53从此窗口的左上角的“KEYWORDS”中输入电子万年历设计用到的器件,如输入“AT89C51”,在中间会列出带有输入关键字的元器件,选择合适的元器件并双击它,则已经选择好了该元器件。然后再在“KEYWORDS”中输入其他所需的元器件,用同样的方法进行操作。最后选择好所有的元器件如图54所示。图54所用器件其中DS18B20代表温度传感器,AT89C51代表单片机会,DS1302代表时钟芯片,RESPACK8代表八排电阻。把元器件放到图纸的合适位置,进行布线单击如图54所示的元器件AT89C51,再在右边图纸上单击,就把元器件放入到了图纸上。再用同样的方法把DS1302放入到图纸的合适位置。如果元器件放置错误,这可通过两次右击删除所放置的元器件,如果位置放得不理想,可以先右击该器件,然后按住左键进行移动。在布线之前,如果觉得元器件的引脚的方向不好布线,则可以通过单击这四个按钮进行调整,这四按钮的意思分别是顺时针旋转90,逆时针旋转90,沿Y轴对称,沿X轴对称。通过这样的调整,可以使整个布局合理一些。接着进行布线,由于PROTEUSISIS有自动布线的功能,比如要把AT89C51的P2口连到DS18B20的DQ口,只要先在P2引脚上单击一下,再在DQ引脚上单击,则ISIS自动将两个引脚连上线。图55AT89C51与DS1302的连接编辑窗口连接端子要让最后的设计成功仿真时,必须放置并连接端子。选择,从中可以选择电路原理中的两个通用的端子,一个是接地,一个是电源。如图56所示。图56连接端子在PROTEUSISIS中的最终设计图如图57所示图57仿真图最后分别对各元器件的属性值进行设置,单击按钮,进行电气检测,查看接线是否合理,说明硬件电路已经顺利的完成。53用PROTEUSISIS进行电子万年历的仿真测试添加WAVE中编写的代码文件单击工具栏中的文件新建文件夹在弹出的对话框中编写程序编译源程序,生成HEX目标代码文件单击项目全部编译。如果编译结果没有错误,会出现如图58所示的结果。图58加载HEX目标代码文件通过如图59所示的对话框,选择刚才编译生成的HEX文件。设置使单片机的运行频率为6MHZ。图59单击按钮,进行对电子万年历的仿真测试,运行结果如图510所示。图510仿真测试PROTEUS的调试功能由于使用的是汇编语言编写的程序,如果在测量的时候测量值显示错误,说明程序中存在问题,这个问题只用在仿真测量的时候才能被发现,这时可以使用PROTEUS对程序进行调试。单击按钮,再单击菜单栏中的DEBUG,可以在最下面选择打开内存观察窗口,寄存器值观察窗口,汇编语言源代码窗口等等。在汇编语言源代码窗口中,也可以在所需要设置断点的语句前双击设置断点,当设置断点的时候,程序运行到所设断点处停止,从而可以在内存、寄存器等的值的变化,从而找出程序出错的地方。结论本课题从理论到实际应用,用AT89C51单片机与DS1302等一些电路的组合,成功的设计出了一个电子万年历。而且所设计的电子万年历设计也按当初要求的能够在PROTEUS中进行仿真,并且能够很精确的显示年历。可以说该电子万年历具有很高的实用价值。在软件设计的过程中,利用了WAVE这个软件在程序录入和调试的时候的优越性,让我能够在编写软件的时候很方便的发现软件中的错误,现在已经能够使用KEIL对所设计的程序进行调试。对于PROTEUS这款软件,也能熟练掌握电路设计仿真。由于平时没有接触过这两个软件,加上毕业设计的时间有限,对于他们的连接调试程序,未能熟练掌握,但以后有机会的话会再好好学习的。本次设计的电子万年历也存在的不足的地方,有待于以后的改进。致谢经过三个多月的时间,毕业设计按照预期完成了,由于本人的知识水平有限,论文和设计中有遗漏和缺陷的地方恳请指正。感谢我的指导老师张庭给了我莫大的帮助,在他悉心的指导和严格的要求下,作品和论文顺利完成了。论文从选题和最终完成,凝结着导师的辛勤的汗水,她不辞劳苦的教导、严谨的作风使我终生受益。在此毕业设计完成之际,谨向导师和所有帮助过我的老师致以崇高的敬意和衷心的感谢。还有感谢家人、朋友还有宿舍里所有的室友,是他们给我创造了良好的学习氛围,在学习和生活中给了我支持和帮助。在以后的学习生活中我会时时敦促自己更加努力,不辜负师长、亲人、朋友对我的期望。参考文献1赵长德微型计算机原理与接口技术M北京机械工业出版社,1999983502曾一江单片机原理与接口技术北京科学出版社,20063王忠民微型计算机原理M西安西安科技大学出版社,20031554王金明数字系统设计与VERILOGHDL北京电子工业出版社,20111附录附录1引脚定义RSBITP30RWBITP31EBITP32DB0_DB7EQUP1RSTBITP34SCLKBITP35IOBITP37MODEBITP33定义数据存储地址DS1302_ADDRDATA50H地址寄存器DS1302_DATADATA51H数据寄存器TIME_YEARDATA52HTIME_MONTDATA53H月寄存器TIME_DAYDATA54H天寄存器WEEK_DATADATA55H星期寄存器HOURDATA56H小时寄存器MINTUEDATA57H分钟寄存器SECONDDATA58H秒钟寄存器MONMAXDATA59H显示数据缓冲地址TIME_YEAR_HBUFDATA40HTIME_YEAR_LBUFDATA41HMONT_HBUFDATA42HMONT_LBUFDATA43HTIME_DAY_HBUFDATA44HTIME_DAY_LBUFDATA45HWEEK_DATA_HBUFDATA46HWEEK_DATA_LBUFDATA47HHOUR_HBUFDATA48HHOUR_LBUFDATA49HMINTUE_HBUFDATA4AHMINTUE_LBUFDATA4BHSECOND_HBUFDATA4CHSECOND_LBUFDATA4DHDATA_BUSBITP27FLAGBIT00H标志位TEMP_LEQU30H温度值低字节TEMP_HEQU31H温度值高字节TEMP_DPEQU32H温度小数TEMP_INTEQU33H温度值整数TEMP_BWEQU34H温度百位数TEMP_SWEQU35H温度十位数TEMP_GWEQU36H温度个位数DIS_BWEQU37H显示百位数DIS_SWEQU38H显示十位数DIS_GWEQU39H显示个位数DIS_DPEQU3AH显示小数位DIS_ADDEQU3BH显示地址程序开始ORG0000HAJMPSTARTORG0013HLJMPINT_1ORG0050HSTARTSETBEASETBEX1MOVSP,70HLCALLINITIALZE调用初始化液晶屏幕LCALLINIT_P调用初始画面MOVA,01H清液晶屏,写成空白LCALLWRITE_COMLCALLMAIN123MOVTIME_YEAR,10HMOVTIME_MONT,01HMOVTIME_DAY,01HMOVWEEK_DATA,05HMOVHOUR,09HLCALLRW_DS1302主程序MAINLCALLRD_DS1302LCALLDATA_BUFLCALLDISPLAY日历显示子程序LCALLREAD_TEMP调读温度程序LCALLPROCESS调数据处理程序AJMPMAIN中断子程序INT_1CLREX1JNBMODE,SETBSCLKSETBIOMOVR4,01HAGAINMOVR1,6光标置年位MOVA,TIME_YEARLCALLKEYMOVTIME_YEAR,ACJNER4,01H,QAZ0MOVR4,00HMOVTIME_YEAR_HBUF,0D3HMOVTIME_YEAR_LBUF,0D3HLJMPQAZ1QAZ0LCALLDATA_BUFMOVR4,01HQAZ1LCALLDISPLAY日历显示子程序JBMODE,AGAINJNBMODE,AGAIN1光标置月位MOVR1,5MOVA,TIME_MONTLCALLKEYMOVTIME_MONT,ACJNER4,01H,QAZ2MOVR4,00HMOVMONT_HBUF,0D3HMOVMONT_LBUF,0D3HLJMPQAZ3QAZ2LCALLDATA_BUFMOVR4,01HQAZ3LCALLDISPLAYJBMODE,AGAIN1JNBMODE,AGAIN2光标置天位MOVR1,4MOVA,TIME_DAYLCALLKEYMOVTIME_DAY,ACJNER4,01H,QAZ4MOVR4,00HMOVTIME_DAY_HBUF,0D3HMOVTIME_DAY_LBUF,0D3HLJMPQAZ5QAZ4LCALLDATA_BUFMOVR4,01HQAZ5LCALLDISPLAYJBMODE,AGAIN2JNBMODE,AGAIN3光标置周位MOVR1,3MOVA,WEEK_DATALCALLKEYMOVWEEK_DATA,ACJNER4,01H,QAZ6MOVR4,00HMOVWEEK_DATA_HBUF,0D3HMOVWEEK_DATA_LBUF,0D3HLJMPQAZ7QAZ6LCALLDATA_BUFMOVR4,01HQAZ7LCALLDISPLAYJBMODE,AGAIN3JNBMODE,AGAIN4光标置小时位MOVR1,2MOVA,HOURLCALLKEYMOVHOUR,ACJNER4,01H,QAZ8MOVR4,00HMOVHOUR_HBUF,0D3HMOVHOUR_LBUF,0D3HLJMPQAZ9QAZ8LCALLDATA_BUFMOVR4,01HQAZ9LCALLDISPLAYJBMODE,AGAIN4JNBMODE,AGAIN5光标置分位MOVR1,1MOVA,MINTUELCALLKEYMOVMINTUE,ACJNER4,01H,QAZ10MOVR4,00HMOVMINTUE_HBUF,0D3HMOVMINTUE_LBUF,0D3HLJMPQAZ11QAZ10LCALLDATA_BUFMOVR4,01HQAZ11LCALLDISPLAYJBMODE,AGAIN5JNBMODE,MOVA,00HMOVSECOND,ALCALLRW_DS1302LCALLDATA_BUFLCALLDISPLAYMOVA,01H清液晶屏,写成空白LCALLWRITE_COMMOVA,08LCALLWRITE_COMMOVA,0CHLCALLWRITE_COMSETBEX1RETIKEYJBSCLK,NEXT1调时间/日期子程序JNBSCLK,INCANEXT1JBIO,NEXT2JNBIO,DECA调节状态下的显示字程序NEXT2CJNER1,1,JLCALLMINTURN调分标志打开,调用调分子程序JCJNER1,2,J1LCALLHOUTURN调时标志打开,调用调时子程序J1CJNER1,3,J2LCALLWEETURN调周标志打开,调用调周子程序J2CJNER1,4,J3LCALLTIME_DAYTURN调日标志打开,调用调日子程序J3CJNER1,5,J4LCALLMONTURN调月标志打开,调用调月子程序J4CJNER1,6,J5LCALLYEATURN调年标志打开,调用调年子程序J5RETMINTURNMOVR0,AANLA,0FH调分子程序CJNEA,0AH,MINMOVA,R0ADDA,6MOVR0,AMINMOVA,R0ANLA,0F0H超过六十分,分变为一CJNEA,60H,MIN1MOVR0,00HMIN1MOVA,R0CJNEA,0FFH,MIN2小于一分,分变为五十九MOVR0,59HMIN2MOVA,R0ANLA,0FHCJNEA,0FH,MIN3MOVA,R0SUBBA,6HMOVR0,AMIN3MOVA,R0RETHOUTURNMOVR0,A调时子程序CJNEA,24H,HOU超过二十三点,时变为零MOVR0,00HHOUMOVA,R0CJNEA,0FFH,HOU1小于零点,时变为二十三MOVR0,23HHOU1MOVA,R0ANLA,0FHCJNEA,0AH,HOU2MOVA,R0ADDA,6HMOVR0,AHOU2MOVA,R0ANLA,0FHCJNEA,0FH,HOU3MOVA,R0SUBBA,6HMOVR0,AHOU3MOVA,R0RETWEETURNMOVR0,A调周子程序CJNEA,7H,WEE超过周七,周变为一MOVR0,00HWEEMOVA,R0CJNEA,0FFH,WEE1小于周一,周变为七MOVR0,6HWEE1MOVA,R0RETTIME_DAYTURNMOVR0,AMOVA,TIME_MONT判断月大/月小SUBBA,2HJNZNOTTWOMOVMONMAX,28HAJMPOKNOTTWOMOVA,TIME_MONTSUBBA,4HJNZJUDGEMOVMONMAX,30HAJMPOKJUDGEMOVA,TIME_MONTSUBBA,6HJNZJUDGE1MOVMONMAX,30HAJMPOKJUDGE1MOVA,TIME_MONTSUBBA,9HJNZJUDGE2MOVMONMAX,30HAJMPOKJUDGE2MOVA,TIME_MONTSUBBA,11HJNZJUDGE3MOVMONMAX,30HAJMPOKJUDGE3MOVMONMAX,31HOKMOVA,R0调日子程序ANLA,0FHCJNEA,0AH,TIME_DAYDAYMOVA,R0ADDA,6MOVR0,ATIME_DAYDAYMOVA,R0超过最大天,天变为一SUBBA,MONMAXMOVA,PSWANLA,80HJNZTIME_DAYDAY1MOVR0,1HTIME_DAYDAY1MOVA,R0小于一天,天变为最大天CJNEA,0H,TIME_DAYDAY2MOVR0,MONMAXTIME_DAYDAY2MOVA,R0ANLA,0FHCJNEA,0FH,TIME_DAYDAY3MOVA,R0SUBBA,6HMOVR0,ATIME_DAYDAY3MOVA,R0RETMONTURNMOVR0,A调月字子程序CJNEA,13H,MON超过十二月,变为一月MOVR0,1HMONMOVA,R0CJNEA,0H,MON1小于一月,变为十二月MOVR0,12HMON1MOVA,R0ANLA,0FHCJNEA,0AH,MON2MOVA,R0ADDA,6HMOVR0,AMON2MOVA,R0ANLA,0FHCJNEA,0FH,MON3MOVA,R0SUBBA,6HMOVR0,AMON3MOVA,R0RETYEATURNMOVR0,A调年子程序CJNEA,9AH,YEA超过九九年,年变为零零年MOVR0,0HYEAMOVA,R0CJNEA,0FFH,YEA1小于零零年,年变为九九年MOVR0,99HYEA1MOVA,R0ANLA,0FHCJNEA,0AH,YEA2MOVA,R0ADDA,6HMOVR0,AYEA2MOVA,R0ANLA,0FHCJNEA,0FH,YEA3MOVA,R0SUBBA,6HMOVR0,AYEA3MOVA,R0RET读1302子程序RD_DS1302MOVDS1302_ADDR,8DH读DS1302中的年LCALLREAD调用读DS1302子程序MOVTIME_YEAR,DS1302_DATA把读000000000000000000000000000MOVTIME_MONT,DS1302_DATA把读出的月数据存入月寄存器中MOVDS1302_ADDR,87H读DS1302中的天LCALLREADMOVTIME_DAY,DS1302_DATA把读出的天数据存入天寄存器中MOVDS1302_ADDR,85H读DS1302中的小时LCALLREADMOVHOUR,DS1302_DATA把读出的天数据存入小时寄存器中MOVDS1302_ADDR,83H读DS1302中的分钟LCALLREADMOVMINTUE,DS1302_DATA把读出的天数据存入分钟寄存器中MOVDS1302_ADDR,81H读DS1302中的秒钟LCALLREADMOVSECOND,DS1302_DATA把读出的天数据存入秒钟寄存器中RET写1302子程序RW_DS1302MOVDS1302_ADDR,8EH写DS1302控制指令MOVDS1302_DATA,00H写数据到DS1302的8E控制寄存器中,允许对其进行写操作LCALLWRITE调用写DS1302子程序MOVDS1302_ADDR,8CHMOVDS1302_DATA,TIME_YEARLCALLWRITEMOVDS1302_ADDR,8AHMOVDS1302_DATA,W

温馨提示

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

评论

0/150

提交评论