基于单片机的万年历课程设计.doc_第1页
基于单片机的万年历课程设计.doc_第2页
基于单片机的万年历课程设计.doc_第3页
基于单片机的万年历课程设计.doc_第4页
基于单片机的万年历课程设计.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

一、前 言随着电子技术的迅速发展,特别是随大规模集成电路出现,给人类生活带来了根本性的改变。由其是单片机技术的应用产品已经走进了千家万户。电子万年历的出现给人们的生活带来的诸多方便。本设计是基于51系列的单片机进行的电子万年历设计,采用八位数码管显示年月日时分秒及温度信息,具有可调整日期和时间功能。时间、日期调整由三个按键来实现,并可对闹铃开关进行设置。日历能显示阳历和阴历年、月、日以及星期、时、分、秒。设计以STC89C52RC单片机为核心,构成单片机控制电路;以DS1302时钟芯片作为万年历信号发生器;以DS18B20作为检测温度的传感器。关键词 时钟电钟;DS1302;DS18B20;数码管;单片机。 二、系统概述及总体方案2.1系统概述本电子万年历采用单片机控制技术和数码管显示方案,可以很好的完成万年历和实时温度显示。它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。2.2总体方案2.2.1单片机芯片:采用AT89S52,片内ROM全都采用Flash ROM;能以3V的超低压工作;同时也与MCS-51系列单片机完全相同,该芯片内部存储器为8KB ROM 存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。所以选择采用AT89S52作为主控制系统.2.2.2 时钟芯片:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA.且同组同学已从Maxim申请到了这种芯片,所以本设计采用了这种芯片。2.2.3 测温传感器:测温可以采用热敏电阻加上模数转换得到电压,然后将测到的电压送到单片机,由单片机处理得到温度值。但是这种方法实现起来复杂,且精度难以达到很高,所以本设计没有采用这种方式。DS18B20是一种数字温度传感器,一根线就可以与单片机IO联接,将测到的温度以数字形式传送到单片机,所以使用简单;它的测温误差为+-0.5度,可以达到较好的精度,在日常的应用中足够。这种芯片应用广泛,所以本设计也采用了这种测温方式。三、系统硬件设计3.1.总体方案组成框图多个数码管显示AT89C52时钟模块(DS1302)温度检测模块(DS18B20) 总体方案组成框图3.2. 时钟模块设计DS1302通过三线接口实现与单片机的通信,因DS1302功耗很小,即使电源掉电后通过3V的纽扣电池仍能维持DS1302精确走时。3.2.1 DS1302特性介绍DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。3.2.2 DS1302管脚介绍 各引脚的功能为:1、Vcc2:5V电源。当Vcc2Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2 Vcc1时,由Vcc1向DS1302供电。2 3、X1、X2 是外接晶振脚 (32.768KHZ的晶振)。4、 地(GND)。5、CE/RST:复位脚。6、I/O:数据输入输出口。7、 SCLK:串行时钟,输入。8 、Vcc1:备用电池端;3.2.3 DS1302与单片机接口电路图 DS1302与单片机接口电路3.3. 实时环境温度采集模块DS18B20通过单总线实现与单片机的通信,每个DS18B20都有一个唯一的序列号,可以方便的实现组网检测。3.3.1 单总线介绍1. 单总线即只有一根数据线,系统中的数据交换,控制都由这根 线完成。2. 单总线通常要求外接一个约为 4.7K10K 的上拉电阻,这样,当总线闲置时其状态为高电平。3.3.2 DS18B20特性介绍1. DS18B20 单线数字温度传感器,即“一线器件”,其具有独特的优点:2. 采用单总线的接口方式 与微处理器连接时 仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。 单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。3. 测量温度范围宽,测量精度高 DS18B20 的测量范围为 -55 + 125 ; 在 -10+ 85C 范围内,精度为 0.5C 。4. 在使用中不需要任何外围元件。5. 支持多点组网功能 多个 DS18B20 可以并联在惟一的单线上,实现多点测温。6. 供电方式灵活 DS18B20 可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而 使系统结构更趋简单,可靠性更高。7. 测量参数可配置 DS18B20 的测量分辨率可通过程序设定 912 位。8. 负压特性 电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。9. 掉电保护功能 DS18B20 内部含有 EEPROM ,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。10. DS18B20 具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。3.3.3 DS18B20管脚介绍DS18B20的管脚排列:1. GND为电源 地。2. DQ为数字信号输入输出端。3. VCC为外接供电电源输入端,在寄生电源接线方式时接地。3.3.4 DS18B20与单片机连接图3.4. 显示模块设计3.4.1 数码管显示为了符合生活实际需求,我们选用多个数码管做显示模块,利用74HC595移位特性,将要显示的数据通过单片机串口传输给74HC595移位芯片,再驱动多个数码管。数码管显示电路3.4.2 74HC595芯片介绍74HC595是硅结构的CMOS器件, 兼容低电压TTL电路,遵守JEDEC标准。 74HC595是具有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。 数据在SHcp的上升沿输入到移位寄存器中,在STcp的上升沿输入到存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。 移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。 8位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。三态。 将串行输入的8位数字,转变为并行输出的8位数字,例如控制一个8位数码管,将不会有闪烁。3.4.3 74HC595芯片的特点8位串行输入 /8位串行或并行输出 存储状态寄存器,三种状态 输出寄存器(三态输出:就是具有高电平、低电平和高阻抗三种输出状态的门电路。)可以直接清除 100MHz的移位频率。数码管驱动电路四、系统软件设计 软件设计是本设计的关键,软件程序编写的好坏直接影响着系统运行情况的良好。因本程序涉及的模块较多,所以程序编写也采用模块化设计,C语言具有编写灵活、移植方便、便于模块化设计的特点,所以本系统的软件采用C51编写。4.1. 主程序流程图设计该设计主程序流程图如下图所示。开始开机动画DS1302写入时间读取DS1302时间农历时间转换读取温度值更新万年历数据 主程序流程图4.2显示程序流程图设计显示程序利用单片机的串口工作方式0,TXD作为74HC595的时钟信号,RXD作移位数据信号,将数据通过串口发送到数码管显示,流程图如下图所示开始初始化串口向串口发送一个字节数据发送字节数加一字节数小于21?结束五、软件仿真5.1. 软件调试过程1、仿真:打开KEIL 2,输入所编写的源程序并对程序进行编译,在软件的帮助下检查其中的错误并进行反复修改,知道编译正确后运行,确保没有错误以后对正确的源程序进行保存,保存时给其命名,以便将来载入程序时容易找到。2、打开PROTEUS软件,并出画单片机电子万年历具体运行电路图。3、检查所画电路运行图,确保没有错误以后,在PROTEUS下对原理图进行加载KEIL 2下的源程序。4、加载完成后,单击电路图框下的开始按钮,进行仿真。软件调试一般包括分块调试和联机调试两个阶段。程序的分块调试一般在单片机开发装置上进行,可根据所调程序功能块的入口参量初值编制一个特殊的程序段,并连同被调程序功能块一起在开发装置上运行;也可配合对应硬件电路单独运行某程序功能块,然后检查是否正确,如果执行结果与预想的不一致,可以通过单步运行或设置断点的方法,查出原因并加以改正,直到运行结果正确为止。这时该 程序功能块已调试完毕,可去掉附加程序段。其它程序功能块可按此法进行调试。程序联机调试就是将已调试好的各程序功能块按总体结构联成一个完整程序,在所研制的硬件电路上运行。从而试验程序整体运行的完整性、正确性和与硬件电路的配合情况。在联调中可能会有某些支路上的程序、功能块因受条件制约而得不到相应的输入参数,这时,调试人员应创造条件进行模拟调试。在联调中如发现硬件问题也应及时修正,直到单片机系统的软件、硬件全部调试成功为止。系统调试完成后,还要进行一段时间的试运行,从而检验系统的稳定性和抗干扰能力,验证系统功能是否达到设计要求,是否达到预期的效果。5.2. 仿真结果通过在KEIL2下对源程序的编译,改正了其中的很多错误,然后运行,保证源程序的正确性。然后按原理图选择正确合理的电器元件,画出正确的电路图,加载源程序运行,顺利实现了单片机数字万年历的“年”“月”“日”、“温度”、“星期”、“小时”、“分钟”、“秒”、农历的月日的显示。该数字万年历的显示效果图如下图所示。 数字万年历运行图六、总结体会数字万年历是一种在日常生活中随处可见的电子产品,随着电子技术的不断更新,数字万年历已经进入了大家小户。它集日历、时钟、温度计于一体,成为家庭里非常实用方便的小家电。这次专业课程设计很高兴能够分到数字万年历设计这个课题,经过查阅资料,了解了数字万年历的基本功能与原理后,便开始着手根据不同模块查找适合的芯片,基于AT89C52单片机,利用DS1320时钟芯片来运行系统,再加上一个DS18B20温度传感器芯片,便能实现万年历的基本功能了,结果用发光二极管显示。原理并不难,但是要实现万年历的基本功能就必须得弄懂这几个模块的基本原理,还要配套上严谨的程序,这样才能真正地实现出来。在经过一个多星期的学习,慢慢地了解了了各个模块的基本联系。在做课程设计的过程中,有很多的知识还是通过查阅文档或请教同学来获得的,让我了解到自己的很多不足,很多知识还是有待进一步增强。如果要学习某些知识,就必须通过实践来学习,这样才能把知识融会贯通,真正地掌握。最后感谢刘望军老师的指导和同学们的帮助。七、附 录源程序代码:#include1302.h#include18b20.hsbit CLT = P32; /74HC595数据更新控制端口/*DS1302实时时钟芯片的寄存器位置*/#define SECOND 0x80 #define MINUTE 0x82#define HOUR 0x84 #define DAY 0x86#define MONTH 0x88#define WEEK 0x8A#define YEAR 0x8C int sec,min,hour,mon,day,week,year;/counter; /秒,分,时,日期,月份,星期,年/*共阴数码管驱动代码*/unsigned char code SEG_TAB10=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,;/*开机动画显示驱动代码*/unsigned char code F_TAB7=0x01,0x03,0x07,0x0f,0x1F,0x3F; /*万年历初始化数据表*/unsigned char Display_TAB21=0x7D,0x5B,0x3F,0x06, /农历月日0x05, /星期: - 7 0x3F,0x06, /温度:个、十 - 100x3F,0x3F, /秒:个、十 - 000x3F,0x3F, /分:个、十 - 000x3F,0x06, /时:个、十 - 100x6F,0x3F, /日:个、十 - 090x5B,0x06, /月:个、十 - 120x5B,0x06,0x3F,0x5B, /年:个、十、百、千 - 2012; /*/ /Name: Uart_Send/Description: 串口发送万年历数据显示/Calls: 主函数调用/Input: p:指向数据地址/Output: 无 /Return: 无/*/void Uart_Send(char *p) char i=0;CLT = 0; for(i=0;i21;i+)SBUF = *p+;while(! TI);TI = 0;CLT = 1;/*/ /Name: Delay/Description: 延时子函数/Calls: 延时调用/Input: 无/Output: 无 /Return: 无/*/void Delay1(int n)while(n-); /*/ /Name: Uart_Send/Description: 串口发送万年历数据显示/Calls: 主函数调用/Input: 无/Output: 无 /Return: 无/*/void Start_Flash(char *p) char i=0,n=0;for(n=0;n7;n+)CLT = 0; for(i=0;i21;i+)SBUF = *p;while(! TI);TI = 0;CLT = 1;p+;Delay1(30000); /*/ /Name: Write/Description: 把显示初值写入到DS1302的内部寄存器中/Calls: 延时调用/Input: 无/Output: 无 /Return: 无/*/void Write_DS1302(void)Write_1302(SECOND,0x00);Write_1302(MINUTE,0x37);Write_1302(HOUR,0x18);Write_1302(DAY,0x24);Write_1302(MONTH,0x12);/Write_1302(WEEK,0x07);Write_1302(YEAR,0x12); /*/ /Name: Read_DS1302/Description: 把要显示初值从DS1302的内部寄存器中读取出来/Calls: 延时调用/Input: 无/Output: 无 /Return: 无/*/void Read_DS1302(void)sec=Read_1302(SECOND);Display_TAB7=SEG_TABsec%16;Display_TAB8=SEG_TABsec/16;Delay(100);min=Read_1302(MINUTE);Display_TAB9=SEG_TABmin%16;Display_TAB10=SEG_TABmin/16;Delay(100);hour=Read_1302(HOUR);Display_TAB11=SEG_TABhour%16;Display_TAB12=SEG_TABhour/16;Delay(100);day=Read_1302(DAY);Display_TAB13=SEG_TABday%16;Display_TAB14=SEG_

温馨提示

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

评论

0/150

提交评论