
万年历电子钟.doc
20页目 录摘 要 1第一章 电子万年历硬件设计与实现 21.1 电子万年历系统设计 21.1.1系统设计框图 21.1.2 系统硬件概述 21.2系统硬件各模块作用 21.2.1单片机主控制模块 21.2.1.1单片机功能特性描述 21.2.1.2引脚功能 31.3显示模块 71.4万年历电子钟电路设计 91.4.1系统电路图 91.4.2 电路图分析 9第二章 电子万年历软件设计 102.1 程序流程框图 102.1.1 总流程图 102.1.2 时间调整程序流程图 112.2 部分程序的设计 132.2.1读、写DS1302子程序 13第三章 指标测 143.1 测试仪器 143.2硬件测试 143.3软件测试 143.4测试结果分析与结论 153.4.1 测试结果分析 153.4.2 测试结论 15第四章 设计总结 16致 谢 17参考文献 181 摘 要万年历电子钟是一种非常广泛的日常计时工具,在现代社会生活中越来越流行。
它可以对年、月、日、周、时、分、秒进行计时,还具有闰年补偿等多种功能万年历电子钟设计是基于单片机进行的,可以显示年、月、日、时、分、秒、周及温度信息,具有可调整日期和时间功能设计包含STC89C52单片机模块、LED数码管模块、键盘模块、DS1302时钟模块、闹钟控制模块STC89C52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3-5V电压供电LED数码管动态扫描,对于显示数字最合适,价格适中,而且采用动态扫描法与单片机连接时,占用的单片机口线少DS1302的使用寿命长,误差小对于万年历电子钟采用直观的数字显示,可以同时显示年、月、日,周日,时、分、秒等信息,还具有时间校准,闹钟,闹钟状态校准等功能关键词:STC89C52,DS1302,74HC164,LED数码管第一章 电子万年历硬件设计与实现1.1 电子万年历系统设计STC89C52主控制模 块按键控制模块闹钟控制模块DS1302时钟模块LED数码管动态扫描显示模块1.1.1系统设计框图 1.1.2 系统硬件概述本电路是由STC89C52单片机为控制核心,具有编程功能,低功耗,能在3V超低压工作;本源程序采用DS1302做专用的走时,停电后也可以正常走时90天以上;本源程序充分利用了STC89C51的新功能,设定的定时控制数据可以停电10年不丢失;本程序设计了误差自动校正,如果因为晶振的误差导致一天走时快1秒或者慢1秒的话,本程序每天都会在深夜自动校正后再在正确时间基础上计时;本程序还设计了快速走时摸拟运行状态(是正常走时的100倍以上);本程序还有6位数的阳历年月日显示,既可以当日历还可以当电子钟,也有6位数字显示时间。
1.2系统硬件各模块作用1.2.1单片机主控制模块1.2.1.1单片机功能特性描述 STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止最高运作频率35Mhz,6T/12T可选1.2.1.2引脚功能 VCC(40引脚):电源电压VSS(20引脚):接地P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O口作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。
在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线此时,P0口内部上拉电阻有效在Flash ROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节验证时,要求外接上拉电阻P1端口(P1.0~P1.7,1~8引脚):P1口是一个带内部上拉电阻的8位双向I/O口P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口 P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)在对Flash ROM编程和程序校验时,P1接收低8位地址 P2端口(P2.0~P2.7,21~28引脚):P2口是一个带内部上拉电阻的8位双向I/O端口P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
P3端口(P3.0~P3.7,10~17引脚):P3是一个带内部上拉电阻的8位双向I/O端口P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流P3口除作为一般I/O口外,还有其他一些复用功能单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端,如图 2-1 所示 图1—1 单片机最小系统1.2.2 DS1302的结构及工作原理1.2.2.1.引脚功能及结构 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引脚变为高阻态上电运行时,在Vcc≥2.5V之前,RST必须保持低电平只有在SCLK为低电平时,才能将RST置为高电平I/O为串行数据输入输出端(双向),后面有详细说明SCLK始终是输入端1.2.2.2 时钟芯片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时,写保护位防止对任一寄存器的写操作1.2.2.3 DS1302的控制字节DS1302的控制字如表2-1所示控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出1.2.2.4数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7如下图2-2所示图1-2 DS1302读/写时序图1.2.2.5 DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表1-3。
表1-3 DS1302的日历、时间寄存器此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读) 图 2-3示出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始终是输入端 图 1-4 DS1302的引脚图1.3显示模块LED单元模块,由集成有多行、多列的发光二极管四边形模块构成,所述的四边形模块至少一边为带有一组以上凹凸槽块的边缘所述的四边形模块至少可有一组对边两壁均带有一组以上凹凸槽块,其中,两对边凹凸槽块可呈对应状,亦可呈对称状所述的四边形模块的主视面上可带有用。
