
51单片机电子万年历设计电路图及程序[借鉴].doc
35页word可编辑实用文档摘 要:电子万年历是一种非常广泛日常计时工具 ,对现代社会越来越流行它可以对年、月、日、周日、时、分、秒进行计时 ,还具有闰年补偿等多种功能 ,而且DS1302的使用寿命长 ,误差小对于数字电子万年历采用直观的数字显示 ,可以同时显示年、月、日、周日、时、分、秒和温度等信息 ,还具有时间校准等功能该电路采用AT89S52单片机作为核心 ,功耗小 ,能在3V的低压工作 ,电压可选用3~5V电压供电本设计是基于51系列的单片机进行的电子万年历设计 ,可以显示年月日时分秒及周信息 ,具有可调整日期和时间功能在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备在硬件与软件设计时 ,没有良好的基础知识和实践经验会受到很大限制 ,每项功能实现时需要那种硬件 ,程序该如何编写 ,算法如何实现等 ,没有一定的基础就不可能很好的实现在编写程序过程中发现以现有的相关知识要独自完成编写任务困难重重 ,在老师和同学的帮助下才完成了程序部分的编写万年历的设计过程在硬件与软件方面进行同步设计硬件部分主要由AT89C52单片机 ,LED显示电路 ,以及调时按键电路等组成在单片机的选择上本人使用了AT89C52单片机 ,该单片机适合于许多较为复杂控制应用场合。
显示器使用2片7SEG-MPX8-CA和一片7SEG-MPX4-CA7SEG-MPX8-CA是一种八个共阳二极管显示器 ,7SEG-MPX4-CA是一种四个共阳二极管显示器为了能更轻松的控制这三片显示器 ,本人使用了3片74HC164来驱动74HC164 是 8 位边沿触发式移位寄存器 ,串行输入数据 ,然后并行输出软件方面主要包括日历程序、时间调整程序 ,公历转阴历程序 ,显示程序等程序采用汇编语言编写 ,以便更简单地实现调整时间及阴历显示功能所有程序编写完成后 ,在wave软件中进行调试 ,确定没有问题后 ,在Proteus软件中嵌入单片机内进行仿真最后总在老师同学的帮助以及自己的努力下完成了此次电子万年历的设计关键词:~~~~~~目录~~~~~~一、设计要求与方案论证 ………………………………………………………………………41.1 设计要求 ……………………………………………………………………………………41.2 系统基本方案选择和论证 …………………………………………………………………41.2.1单片机芯片的选择方案和论证 ………………………………………………………41.2.2 显示模块选择方案和论证 ……………………………………………………………41.2.3 时钟芯片的选择方案和论证 …………………………………………………………4二.系统的硬件设计与实现………………………………………………………………………52.1 电路设计框图 ………………………………………………………………………………52.2 系统硬件概述 ………………………………………………………………………………52.3 主要单元电路的设计 ………………………………………………………………………62.3.1单片机主控制模块的设计 ……………………………………………………………62.3.2时钟电路模块的设计 …………………………………………………………………62.3.3电路原理及说明 ………………………………………………………………………72.3 4显示模块的设计 ………………………………………………………………………8三、系统的软件设计 ……………………………………………………………………………93.1程序流程框图 ………………………………………………………………………………93.2 子程序的设计 ………………………………………………………………………………93.2.1读、写DS1302子程序 ………………………………………………………………10五、作品总结……………………………………………………………………………………12六、致谢词………………………………………………………………………………………12参考文献…………………………………………………………………………………………13附录一:系统电路图……………………………………………………………………………14附录二:系统程序清单…………………………………………………………………………15附录三:系统使用说明书………………………………………………………………………40 一、设计要求与方案论证1.1 设计要求:(1)基本要求① 具有年、月、日、星期、时、分、秒等功能;② 万年历具有闰月识别显示功能;③ 具备年、月、日、星期、时、分、秒校准功能;( 2 ) 创新要求① 万年历具有阴历显示功能;② 具有测量室内温度功能;1.2 系统基本方案选择和论证1.2.1单片机芯片的选择方案和论证:方案一: 采用89C51芯片作为硬件核心 ,采用Flash ROM ,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP编程技术, 当在对电路进行调试时 ,由于程序的错误修改或对程序的新增功能需要烧入程序时 ,对芯片的多次拔插会对芯片造成一定的损坏。
方案二: 采用AT89S52,片内ROM全都采用Flash ROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KB ROM 存储空间 ,同样具有89C51的功能 ,且具有编程可擦除技术 ,当在对电路进行调试时 ,由于程序的错误修改或对程序的新增功能需要烧入程序时 ,不需要对芯片多次拔插 ,所以不会对芯片造成损坏所以选择采用AT89S52作为主控制系统.1.2.2 显示模块选择方案和论证:方案一: 采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用LED液晶显示屏.方案二: 采用点阵式数码管显示 ,点阵式数码管是由八行八列的发光二极管组成 ,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示.方案三:采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少所以采用了LED数码管作为显示1.2.3时钟芯片的选择方案和论证:方案一: 直接采用单片机定时计数器提供秒信号 ,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用 ,节约成本 ,但是 ,实现的时间误差较大所以不采用此方案方案二: 采用DS1302时钟芯片实现时钟 ,DS1302芯片是一种高性能的时钟芯片 ,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数 ,而且精度高,位的RAM做为数据暂存区 ,工作电压2.5V~5.5V范围内 ,2.5V时耗电小于300nA.1.3 电路设计最终方案决定综上各方案所述,对此次作品的方案选定: 采用AT89S52作为主控制系统; DS1302提供时钟;数字式温度传感器;LED数码管动态扫描作为显示二.系统的硬件设计与实现2.1 电路设计框图 2.2 系统硬件概述本电路是由AT89S52单片机为控制核心 ,具有编程功能 ,低功耗 ,能在3V超低压工作;时钟电路由DS1302提供 ,它是一种高性能、低功耗、带RAM的实时时钟电路 ,它可以对年、月、日、周日、时、分、秒进行计时 ,具有闰年补偿功能 ,工作电压为2.5V~5.5V采用三线接口与CPU进行同步通信 ,并可采用突发方式一次传送多个字节的时钟信号或RAM数据DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。
可产生年、月、日、周日、时、分、秒 ,具有使用寿命长 ,精度高和低功耗等特点 ,同时具有掉电自动保存功能;温度的采集由DS18B20构成;显示部份由21个数码管 ,74ls138、74ls47译码器构成使用动态扫描显示方式对数字的显示2.3 主要单元电路的设计2.3.1单片机主控制模块的设计 AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3) ,每一条I/O线都能独立地作输出或输入单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端. 如图-1 所示 图-1 主控制系统 2.3.2时钟电路模块的设计图-2示出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进行操作如果在传送过程中RSTS置为低电平 ,则会终止此次数据传送 ,I/O引脚变为高阻态上电动行时 ,在Vcc大于等于2.5V之前 ,RST必须保持低电平中有在SCLK 为低电平时 ,才能将RST置为高电平 ,I/O为串行数据输入端(双向)SCLK始终是输入端 图-2 DS1302的引脚图2.3.3电路原理及说明(1) 时钟芯片DS1302的工作原理: DS1302在每次进行读、写程序前都必须初始化 ,先把SCLK端置 "0" ,接着把RST端置"1" ,最后才给予SCLK脉冲;读/写时序如下图4所示。
图5为DS1302的控制字 ,此控制字的位7必须置1 ,若为0则不能把对DS1302进行读写数据对于位6 ,若对程序进行读/写时RAM=1 ,对时间进行读/写时 ,CK=0位1至位5指操作单元的地址位0是读/写操作位 ,进行读操作时 ,该位为1;该位为0则表示进行的是写操作控制字节总是从最低位开始输入/输出的表6为DS1302的日历、时间寄存器内容:"CH"是时钟暂停标志位 ,当该位为1时 ,时钟振荡器停止 ,DS1302处于低功耗状态;当该位为0时 ,时钟开始运行"WP"是写保护位 ,在任何的对时钟和RAM的写操作之前 ,WP必须为0当"WP"为1时 ,写保护位防止对任一寄存器的写操作2) DS1302的控制字节DS1302的控制字如表-1所示控制字节的高有效位(位7)必须是逻辑1 ,如果它为0 ,则不能把数据写入DS1302中 ,位6如果0 ,则表示存取日历时钟数据 ,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作 ,为1表示进行读操作 ,控制字节总是从最低位开始输出 RAM。
