[信息与通信]电子万年历的设计论文.doc_第1页
[信息与通信]电子万年历的设计论文.doc_第2页
[信息与通信]电子万年历的设计论文.doc_第3页
[信息与通信]电子万年历的设计论文.doc_第4页
[信息与通信]电子万年历的设计论文.doc_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

太原工业学院毕业设计(论文) 太原工业学院毕业论文(设计)题目名称: 电子万年历的设计 学生姓名: 李 俊 珑 班级学号: 095011114 专 业: 机械设计制造及其自动化 指导教师: 张焕梅/讲师 时 间: 2011.12.1 至 2011.6.10 诚信声明 本人郑重声明:本论文及其研究工作是本人在指导教师的指导下独立完成的,在完成论文时所利用的一切资料均已在参考文献中列出。 本人签名: 年 月 日毕业设计(论文)任务书设计(论文)题目: 电子万年历的设计 系部: 机械工程系 专业: 机械设计制造及其自动化 学号: 0950111 14 学生: 李俊珑 指导教师(含职称):张焕梅(讲师)专业负责人: 1设计(论文)的主要任务及目标本设计目标是实现电子万年历的设计,要求完成万年历的基本功能,实现日期和时间的显示;系统应保持一定的走时精度。完成系统总体设计,硬件设计和软件设计等;完成各种硬件图的绘制及仿真,完成相应流程图的绘制和程序的编制。并用软件进行仿真。完成开题报告等相关文档的编写。 2设计(论文)的基本要求和内容 (1)、查阅相关文献资料,并撰写开题报告;(2)、熟悉开发环境、系统总体设计;(3)、系统硬件设计;(4)、系统软件设计;(5)、毕业设计说明书。3主要参考文献张道德 单片机接口技术(C51) 北京:水利水电出版社 龚运新 单片机C语言开发M.清华大学出版社,20064进度安排设计(论文)各阶段名称起 止 日 期1查阅相关文献资料,撰写开题报告12月 1日-3月31日2确定整体设计方案,并进行外文翻译4月 1日- 4月20日3系统硬件设计,系统软件设计(4)、系统软件设计;4月21日- 5月21日4逐步修改、完善设计5月22日- 5月31日5撰写毕业论文等相关文档,毕业答辩6月 1日- 6月30日注:一式4份,系部、指导教师各1份、学生2份:毕业设计(论文)及答辩评分表各一份电子万年历的设计 【摘要】电子万年历在日常生活中最常见,应用也最广泛。本次数字时钟电路根据设计要求采用DS1302和AT89C51单片机来实现时、分、秒24小时计时,采用LED数码管显示。文章的核心主要从硬件设计和软件编程两个大的方面。硬件电路设计主要包括中央处理单元电路、时钟电路,软件用C语言来实现,主要包括主程序、时间设置子程序等软件模块。电路基本能实现显示时间、调整时间功能达到了设计的要求和目的。 操作简单易学,显示一目了然。在按键当中,有设置、加1、减1三个按键,设置用于设定需要调节的是年、月、日、时、分、秒中的哪一项;加1键用于把所选项数据加1;减1键用于把所选项数据减1。综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。【关键词】: AT89C51单片机,DS1302时钟芯片,LED显示模块Design of electronic calendar Student: Li Jun Long, Taiyuan Institute of Mechanical Engineering Instructor: Zhang Huanmei, Taiyuan Institute of Mechanical Engineering ABSTRACTDigital clock in the daily life of the most common applications are the most widely used. The digital clock circuit design requirements based on AT89C51 microcontroller used to achieve the DS1302 and the hours, minutes, seconds, 24-hour timer, LED digital display. . The core of the article, mainly from the hardware design and software programming are two major aspects. Hardware circuit design includes a central processing unit circuit, clock circuit, the software implementation using C language, including the main program, the time set subprogram software modules. Basic circuit can realize display the time, adjust the time function to achieve the design requirements and objectives. Easy to learn, showing at a glance. Among the keys, there are settings, plus 1, minus 1, three buttons, set the required adjustment is used to set year, month, day, hour, minute and second in which one; plus a key for the selected pieces of data plus 1; by a key option for the data to the minus 1. This calendar has a convenient summary read, intuitive display, versatile, circuit simplicity, low cost and many other advantages, in line with the development trend of electronic instrumentation, and has broad market prospects. Key words: AT89C51 microcontroller, DS1302 clock chip, LED display module 目录1前言.12总体介绍.32.1电子万年历简介.32.2设计方案的选择 .32.2.1 DS12887芯片.42.2.2 DS1302芯片.42.3 显示模块的选择.53系统硬件设计.63.1主控芯片AT89C51简介.63.1.1 AT89C51引脚功能说明.7 3.2 时钟芯片DS1302 .93.2.1DS1302工作原理.93.2.2DS1302的寄存器.93.3 温度传感器DS18B20简介.103.4 硬件总体框图设计.113.5 DS1302与单片机的接口设计. .113.6 显示设计.113.6.1结构种类.113.6.2 显示原理.124 系统软件设计.144.1 主程序流程图.154.2 各子程序设计.154.2.1温度检测子程序流程图.154.2.2显示子程序流程图.164.2.3 时间调整子程序设计.164.3 阳历程序设计. .184.4 阴历程序设计.18结论.23致谢.24参考文献.25附录:硬件连接图及系统程序清单.27电子万年历设计1 前言随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!因此,电子万年历的出现带来了钟表计时业界跨跃性的进步我国生产的电子万年历有很多种,总体上来说以研究多功能电子万年历为主,使万年历除了原有的显示时间,日期等基本功能外,还具有闹铃,报警等功能。商家生产的电子万年历更从质量,价格,实用上考虑,不断的改进电子万年历的设计,使其更加的具有市场。本设计为软件,硬件相结合的一组设计。在软件设计过程中,应对硬件部分有相关了解,这样有助于对设计题目的更深了解,有助于软件设计。基本的要了解一些主要器件的基本功能和作用。除了采用集成化的时钟芯片外,还有采用MCU的方案,利用AT89系列单片微机制成万年历电路,采用软件和硬件结合的方法,控制LED数码管输出,分别用来显示年、月、日、时、分、秒,其最大特点是:硬件电路简单,安装方便易于实现,软件设计独特,可靠。AT89C51是由ATMEL公司推出的一种小型单片机。95年出现在中国市场。其主要特点为采用Flash存贮器技术,降低了制造成本,其软件、硬件与MCS-51完全兼容,可以很快被中国广大用户接受。本文介绍了基于AT89C51单片机设计的电子万年历。首先在前言中简单介绍了单片机的发展与其在中低端领域中的优势以及课题的开发意义;接着介绍了AT89C51单片机的硬件结构和本毕业设计所要外扩的LED显示及其驱动方法,并在此基础上实现了万年历基本电路的设计;然后使用单片机汇编语言进行万年历程序的设计,程序采用模块化结构,使得逻辑关系简单明了,维护方便。2 总体介绍注意整篇文章的页脚不对!2.1 电子万年历简介基于MCS-51单片机的数字时钟系统具有显示准确、直观、易于调整等特点。 单片机自诞生以来给全世界人类的生活和工作起到了剧烈的变化,而MCS-51单片机是我国使用最早、最易掌握和应用的一款单片机。通过该系统的设计,对单片机的原理和功能有了较系统和全面的掌握,初步学习到有关工程设计的方法和思路。这样以后的就业面会更加宽广,也可以满足当今社会对单片机开发人才的大量需要。 纵观传统的电路设计,大部分是采用分立元件进行设计,既复杂成本又高。随着集成化的发展,现在系统的设计都是在模块化的基础上设计系统的。近些年,随着科技的发展和社会的进步,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的需求。多功能数字钟不管在性能还是在样式上都发生了质的变化,有电子闹钟、数字闹钟等等。单片机在多功能数字钟中的应用已是非常普遍的,人们对数字钟的功能及工作顺序都非常熟悉。但是却很少知道它的内部结构以及工作原理。由单片机作为数字钟的核心控制器,可以通过它的时钟信号进行计时实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。通过键盘可以进行定时、校时功能。输出设备显示器可以用液晶显示技术和数码管显示技术。本课题是基于智能化和模块化的前提下设计数字时钟的,通过对设计目标的分析,分立出各个模块,然后根据各个模块的功能,选择适当的芯片进行设计的。本文的主要内容是利用51单片机设计一个数字时钟系统,使其实现以下功能:1.够通过键盘设定时间和日历;2.具有实现系统日期和时间的调整与设置;3.时钟误差小于1秒/每天;4.实现其他的功能,如温度显示。通过对系统功能的分析,该系统包括主控模块,数字时钟模块,温度数据采集模块,显示模块等。然后对系统进行了硬件设计和软件设计,实现系统的功能。本设计要求能够通过键盘设定时间和日历,通过LED显示,时钟误差小于1秒/每天。2.2 设计方案的选择数字时钟芯片在本设计里起决定性作用,用了数字时钟芯片的选取尤为重要。2.2.1 DS12887芯片使用并行接口时钟芯片DS12887设计时钟电路。该设计方案用AT89S51主控,利用并行时钟芯片DS12887为核心计时芯片,组成数字时钟电路。该电路能够准确计时,还附加许多其它功能,在掉电时能保存用户设置参数和故障状态参数等重要参数。设计电路图如下:图2.1 DS12887与CPU接口电路该设计虽然能完成所要求的任务,综合性能也较好,但其并行接口方式占用大量接口资源,给其它设计带来诸多不便。2.2.2 DS1302芯片使用串行接口时钟芯片DS1302设计时钟电路。该设计方案以单片机AT89C51为主控芯片,以串行时钟芯片DS1302为核心计时芯片,组成数字时钟电路。该电路不但能准确地计时,而且,其三线接口可以节省接口资源,在断电后不丢失时间和数据信息。该设计方案的接口电路如图所示: 图2.2 DS1302与C51的接口电路通过以上两种设计方案的比较,我们可以看到,设计方案二接口简单、计时可靠、综合性能良好。所以选用第二种设计方案。2.3 显示模块的选择2.3.1 采用LED液晶显示屏:液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用LED液晶显示屏。2.3.2 采用点阵式数码管显示:点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。2.3.3 采用LED数码管动态扫描: LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。所以采用了LED数码管作为显示。 第 VI 页 共 LI 页太原工业学院毕业设计(论文)3 系统硬件设计3.1 主控芯片AT89C51简介AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及AT80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89C51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,片内时钟振荡器。此外,AT89C51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。 图3.1 AT89C51外形结构和引脚分布图主要功能特性:兼容MCS-51指令系统 128x8 bit内部RAM4k可反复擦写(1000次)Flash ROM 2个外部中断源32个双向I/O口 低功耗空闲和省电模式4.5-5.5V工作电压 中断唤醒省电模式2个16位可编程定时/计数器 3级加密时钟频率0-33MHz 软件设置空闲和省电功能全双工UART串行中断口线 双数据寄存器指针可以看出AT89C51提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个数据指针,两个16位定时器/计数器,一个5向量两级中断结构,一个全双工串行通信口,以及片内振荡器和时钟。同时, AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式时停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式是在RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到一个硬件复位。3.1.1 AT89C51引脚功能说明VCC:电源电压GND:地P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口,作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端口。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号校验期间,P1接收低8位地址。表3.1 P1口第二功能端口引脚第二功能P1.5MOSI(用于ISP编程)P1.6MISO(用于ISP编程)P1.7SCK(用于ISP编程) P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I。在访问位地址的外部数据存储器(如执行:MOVX Ri 指令)时,P2口线上的内(也即特殊功能寄存器,在整个访问期间不改变。Flash 编程或校验时,P2也接收高位地址和其它控制信号。P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端口时,被外部拉低的P3口将用上拉电阻输出电流I。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,P3口的第二功能如下表3.2。表3.2 为 P3口的第二功能端口功能第二功能端口引脚第二功能RXD(P3.0)串行输入口T0(P3.4)定时/计数器0外部输入TXD(P3.1)串行输出口T1(P3.5)定时/计数器1外部输入INT0(P3.2)外中断0WR(P3.6)外部数据存储器写选通INT1(P3.3)外中断1RD(P3.7)外部数据存储器读选通RST:复位输入。当振荡工作时,RST引脚出现两个机器周期上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不再访问外部存储器,ALE仍以时钟振荡频率的1/6输出的正脉冲信号,因此它可对外输出时钟或用于定时目地,要注意的是:当访问外部数据存储器时将跳过一个ALE脉冲。如有必要,可通过对特殊功能寄存器 第XII页 共 LI 页(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置禁位后,只有一条MOVX 和MOVC指令ALE才会被激活。此外,该引脚伎被微弱拉高,单片机执行外部程序时,应设置ALE无效。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器,高有两次有效的PSEN信号。EA/VPP:外部访问允许。欲使CPU访问外部程序存储器(地址0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上12V的编程电压VPP。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。3.2 时钟芯片DS13023.2.1 DS1302的工作原理:DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图4.3所示。DS1302的控制字如表4.3所示。控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。表3.3 DS1302的控制字格式 RAM RD 1 A4 A3 A2 A1 A0 / CK /WR在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。3.2.2 DS1302的寄存器:DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。 3.3 温度传感器DS18B20简介 DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现912位的数字值读数方式。可以分别在93.75 ms和750 ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。它有如下特点:(1)独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。(2)在使用中不需要任何外围元件。(3)可用数据线供电,电压范围:+3.0 +5.5 V。(4)测温范围:-55 +125 。固有测温分辨率为0.5 。(5)通过编程可实现912位的数字读数方式。(6)用户可自设定非易失性的报警上下限值。(7)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。DS18B20的连接情况如下图:VDDDQGNDP3.4+5VR14.7K 3.2 DS18B20的连接图1、GND为接地端;2、DQ为数字信号输入/输出端;3、VDD为外接供电电源输入端(在寄生电源接线方式时接地)。3.4 硬件总体框图设计该设计的硬件电路由主控部分(单片机AT89C51)、计时部分(实时时钟芯片DS1302)、温度数据采集模块、显示部分(八段数码管)3个部分组成。各部分之间相互协作,构成一个统一的有机整体,实现数字时钟的功能。各部分的硬件结构框图设计如下:MCS-51单片机数字时钟芯片时间、日期、温度显示调时键盘温度传感器 图3.3 系统硬件结构框图太原工业学院毕业设计(论文)3.5 DS1302与单片机的接口设计时钟芯片DS1302与单片机AT89C51的接口是由3条线来完成的,单片机AT89C51的P1.4与时钟芯片的数据传输端相连,P1.3用来作为DS1302输入时钟SCLK控制端,P1.2控制DS1302的复位输入端。DS1302接标准32.768KHz石英晶振。3.6 显示设计3.6.1结构种类七段LED显示器(数码管)系发光器件的一种。常用的LED发光器件有两类:数码管和阵。数码管内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的亮暗组成字符。常见数码管有10根管脚。管脚排列如下图所示。其中COM为公共端,根据内部发光二极管的接线形式可分为共阴极和共阳极两种。使用时,共阴极数码管公共端接地,共阳极数码管公共端接电源。每段发光二极管需510mA的驱动电流才能正常发光,一般需加限流电阻控制电流的大小。八段数码显示管有两种,一种是共阳数码管,其内部是由八个阳极相连接的发光二极管组成;另一种是共阴数码管,其内部是由八个阴极相连接的发光二极管组成。二者原理不同但功能相同。本设计的时间显示选用6个共阴八段数码管LED,其外形和内部结构如图6.3所示: A B C D E F G H12345678COM图3.4 八段共阴数码管LED3.6.2 显示原理 LED数码管的ag七个发光二极管。加正电压的发光,加零电压的不能发光,不同亮暗的组合就能形成不同的字型,这种组合称为字型码。共阳极和共阴极的字型码是不同的。 可采用硬件译码输出字型码控制显示内容,如采用74LS48、CD4511(共阴极)或74LS46(74LS47)、CD4513(共阳极)。也可用单片机I/O口直接输出字型码控制数码管的显示内容。本设计用74LS373。用单片机驱动LED数码管显示有很多方法,按显示方式分有静态显示和动态显示。动态显示的特点:动态扫描方法是用其接口电路把所有数码管的8个笔划段ag和dp同名端连在一起,而每一个数码管的公共极COM各自独立地受I/O线控制。CPU向字段输出口送出字形码时,所有数码管接收到相同的字形码。但究竟是哪个数码管亮,则取决于COM端,COM端与单片机的I/O口相连接,由单片机输出位码到I/O控制何时哪一位数码管亮。动态扫描用分时的方法轮流控制各个数码管的COM端,使各个数码管轮流点亮。在轮流点亮数码管的扫描过程中,每位数码管的点亮时间极为短暂。但由于人的视觉暂留现象及发光二极管的余辉,给人的印象就是一组稳定的显示数据。优点:当显示位数较多时,采用动态显示方式比较节省I/O口,硬件电路也较静态显示简单。缺点:其稳定度不如静态显示方式。而且在显示位数较多时CPU要轮番扫描,占用CPU较多的时间。 本电路采用的数码管如下图所示:显示 农历:年月日各占用两位 显示阳历:年月日各用占两位 显示时间: 时分秒各占用两位 3.5 本电路采用的数码管显示图电路图在附录1。4 系统软件设计根据系统的硬件设计,知道系统的主要单元有主控芯片单元、时钟芯片单元、时间温度显示单元、时间调整单元等。单片机AT89C51对时钟芯片DS1302的控制需要通过程序驱动来实现,程序主要完成两个方面的任务:利用单片机实现对DS1302寄存器的地址定义和控制字的写入;实现对DS1302的数据读取。程序首先进行初始化,在主程序的循环程序中首先调用数据处理程序,然后调用显示程序,再判断是否有按键按下,若有按键按下则转到相应的功能程序执行;调时闪烁中断服务程序用于被调单元的闪烁显示。调时程序用于调整分钟、小时;整日期的程序用于调整年、月、日。软件设计的程序有主程序、温度检测子程序、显示子程序、时间调整子程序等。 根据显示的顺序,设计出系统的软件流程图。4.1 主程序流程结束写入数据到DS1302键盘扫描同时显示初始化开始图读取时钟芯片内的数据并启动AD转换电路显示时间、温度数据 图4.1 主程序流程图4.2 各子程序设计4.2.1温度检测子程序流程图开始启动温度检测电路 启动AD转换电路 计算对应温度的K值返回图4.2 温度检测子程序流程图4.2.2时间显示子程序流程图 开始分离出单个位计算要显示的阳历(年月日),农历(年月日),时分秒选通要显示的位,然后送显示数据,并延时结束图4.3 时间显示子程序流程图4.2.3 时间调整子程序设计调整时间用4个调整按扭,2个作为移位、控制用,另外两个作为加和减用,分别定义为控制按扭、移位钮、加按扭、减按扭。在调整时间的过程中,要调整的位与别的位应该有区别,所以增加了闪烁功能,即调整的位一直在闪烁,直到调整下一位。闪烁原理就是,让要调整的一位每各一定时间熄灭一次,比如说50MS。利用定时器计时,当达到50MS益出时,就送给该位熄灭符,在下一次益出时,再送正常显示的值,不断交替,直到调整该位结束。此时送正常显示值给该位,再进入下一位调整闪烁程序。时间调整程序程流程图如图4.4所示。控制键有效,进入年调整程序等待按键程序年加1减键有效加键有效月加1减键有效等待按键程序控制键有效,进入月调整程序月减1加键有效控制键有效,进入日调整程序控制键有效,进入星期调整程序等待按键程序年减1等待按键程序加键有效加键有效减键有效减键有效日加1星期加1星期减1日减1控制键有效,进入分调整程序控制键有效,进入(小)时调整程序等待按键程序等待按键程序加键有效加键有效减键有效减键有效分加1(小)时加1分减1(小)时减1控制键有效,跳出时间调整程序,进入主循环程序图4.4 时间调整程序流程图4.3 阳历程序设计因为使用了时钟芯片DS1302,阳历程序只需从DS1302各寄存器中读出年、周、月、日、(小)时、分、秒等数据,再处理即可。在首次对DS1302进行操作之前,必须对它进行初始化,然后从DS1302中读出数据,再经过处理后,送给显示缓冲单元。阳历程序流程图见图7.2所示。 开始初使化1302从1302开始震荡从1302中读出年、周、月、日、(小)时、分、秒读出的数据都为BCD码,将其高低位分离,送显示缓冲单元图4.5 阳历程序流程图4.4 阴历程序设计阴历程序的实现是要靠阳历日期来推算的。要根据阳历来推算阴历日期,首先要设计算法。推算方法是,根据阳历当前日期在一年中的天数来计算阴历日期。阳历一个月不是30天就是31天(2月除外,闰年2月为29天)。阴历一年有12个月或13个月(含闰月),一个月为30天或29天。如果把一个只有29天的月称为小月,用1为标志,把30天的月称为大月,用0为标志,那么12位二进制就能表示一年12个月的大小。如果有闰月,则把闰月的月份作为一个字节的高四位,低四位表示闰月大小,大月为0,小月为1,这样一个字节就包含了所有的闰月的信息。阴历春节和阳历元旦相差的天数也用一个字节表示。总共用4个字节就可以存储一年中任何一天阴历和阳历的对应关系的有关数据,例如2004年的阴历和阳历对应关系如表7.1所列。表4.1 2004年的阴历和阳历对应关系表月份123456789101112闰2月大小小大大大小大小大小大小大小天数29303030293029302930293029二进制1000101010101十六进制425212004年的春天和元旦差21天,这样2004年的信息表为:21,42H,52H,21H。其中表示12个月大小信息的字节,第四位和第七位不同。第一个字节为十进制,其他的都为十六进制。按此方法,50年的阳历和阴历对应关系表总共使用200字节。20002050年的关系表:35,15H,51H,00H(2000) 23,11H,52H,41H(2001) 42,12H,65H,00H(2002)31,11H,32H,00H(2003) 21,42H,52H,21H(2004) 39,52H,25H,00H(2005)28,25H,04H,71H(2006) 48,66H,42H,00H(2007) 37,33H,22H,00H(2008)25,15H,24H,51H(2009) 44,05H,52H,00H(2010) 33 ,22H, 65H, 00H (2011)22, 21H, 25H,41H(2012) 40,24H,52H,00H(2013) 30 ,52H, 42H, 91H (2014)49, 55H, 05H,00H(2015) 38,26H,44H,00H(2016) 27 ,53H, 50H, 60H (2017)46, 53H, 24H,00H(2018) 35,25H,54H,00H(2019) 24 ,41H, 52H, 41H (2020)42, 45H, 25H,00H(2021) 31,24H,52H,00H(2022) 21 ,51H, 12H, 21H (2023)40, 55H, 11H,00H(2024) 28,26H,21H,61H(2025) 47 ,26H, 61H, 00H (2026)36, 13H, 31H,00H(2027) 25,05H,31H,51H(2028) 43 ,12H, 54H, 00H (2029)33, 51H, 25H,00H(2030) 22,42H,25H,31H(2031) 41 ,32H, 22H, 00H (2032)30, 55H, 02H,71H(2033) 49,55H,22H,00H(2034) 38 ,26H, 62H, 00H (2035)27, 13H, 64H,60H(2036) 45,13H,32H,00H(2037) 34 ,12H, 55H, 00H (2038)23, 10H, 53H,51H(2039) 42,22H,45H,00H(2040) 31 ,52H, 22H, 00H (2041)21, 52H, 44H,21H(2042) 40,55H,44H,00H(2043) 29 ,26H, 50H, 71H (2044)47, 26H, 64H,00H(2045) 36,25H,32H,00H(2046) 25 ,23H, 32H, 50H (2047)44, 44H, 55H,00H(2048) 32,24H 45H,00H(2049) 22 ,55H, 11H, 30H (2050)有了算法和数据以后,就可设计软件了。首先要根据当前的日期,算出阳历为该年中的第几天。图7.3为计算阳历中任何一天在该年中为第几天的程序流程图。总天数中加入该月天数当前月为1月?当前号数是总天数月数加1总天数中加入号数计算阴历天数结束,总天数的数据为当前日期在阴历年中第几天与前月同?置阳历总天数为0NN Y Y 图 4.6 计算阳历天数程序流程图计算出当前阳历日期为该年

温馨提示

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

评论

0/150

提交评论