1、 目 录 摘 要 1 第一章 电子万年历硬件设计与实现 2 1.1 电子万年历系统设计 2 1.1.1系统设计框图 2 1.1.2 系统硬件概述 2 1.2系统硬件各模块作用 2 1.2.1单片机主控制模块 2 1.2.1.1单片机功能特性描述 2 1.2.1.2引脚功能 3 1.3显示模块 7 1.4万年历电子钟电路设计 9 1.4.1系统电路图 9 1.4.2 电路图分析 9 第二章 电子万年历软件设计 10 2.1 程序流程框图 10 2.1.1 总流程图 10 2.1.2 时间调整程序流程图 11 2.2 部分程序的设计 13 2.2.1读、写D
2、S1302子程序 13 第三章 指标测 14 3.1 测试仪器 14 3.2硬件测试 14 3.3软件测试 14 3.4测试结果分析与结论 15 3.4.1 测试结果分析 15 3.4.2 测试结论 15 第四章 设计总结 16 致 谢 17 参考文献 18 19 摘 要 万年历电子钟是一种非常广泛的日常计时工具,在现代社会生活中越来越流行。它可以对年、月、日、周、时、分、秒进行
3、计时,还具有闰年补偿等多种功能。 万年历电子钟设计是基于单片机进行的,可以显示年、月、日、时、分、秒、周及温度信息,具有可调整日期和时间功能。设计包含STC89C52单片机模块、LED数码管模块、键盘模块、DS1302时钟模块、闹钟控制模块。STC89C52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3-5V电压供电。LED数码管动态扫描,对于显示数字最合适,价格适中,而且采用动态扫描法与单片机连接时,占用的单片机口线少。DS1302的使用寿命长,误差小。对于万年历电子钟采用直观的数字显示,可以同时显示年、月、日,周日,时、分、秒等信息,还具有时间校准,闹钟,闹钟状态校准等功能。
4、 关键词:STC89C52,DS1302,74HC164,LED数码管 第一章 电子万年历硬件设计与实现 1.1 电子万年历系统设计 STC89C52 主控制模 块 按键控制模块 闹钟控制模块 DS1302时钟模块 LED数码管动态扫描显示模块 1.1.1系统设计框图 1.1.2 系统硬件概述 本电路是由STC89C52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;本源程序采用DS1302做专用的走时,停电后也可以正常走时90天以上;本源程序
5、充分利用了STC89C51的新功能,设定的定时控制数据可以停电10年不丢失;本程序设计了误差自动校正,如果因为晶振的误差导致一天走时快1秒或者慢1秒的话,本程序每天都会在深夜自动校正后再在正确时间基础上计时;本程序还设计了快速走时摸拟运行状态(是正常走时的100倍以上);本程序还有6位数的阳历年月日显示,既可以当日历还可以当电子钟,也有6位数字显示时间。 1.2系统硬件各模块作用 1.2.1单片机主控制模块 1.2.1.1单片机功能特性描述 STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系
6、统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T
7、可选。 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的输出缓冲器
8、可驱动(吸收或者输出电流方式)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时,通过内部的上拉电阻把
9、端口拉到高电平,这时可用作输入口。P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。 P3端口(P3.0~P3.7,10~17引脚):P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。 P3口除作为一般I/O口外,还有其他一些复用功能。 单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒
10、相放大器的输入,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给DS130
11、2供电。当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为串行数据输入输出端(
12、双向),后面有详细说明。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
13、是时钟暂停标志位,当该位为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数据
14、输入输出(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 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与R
15、AM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 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给
16、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为
17、串行数据输入端(双向)。SCLK始终是输入端。 图 1-4 DS1302的引脚图 1.3显示模块 LED单元模块,由集成有多行、多列的发光二极管四边形模块构成,所述的四边形模块至少一边为带有一组以上凹凸槽块的边缘。所述的四边形模块至少可有一组对边两壁均带有一组以上凹凸槽块,其中,两对边凹凸槽块可呈对应状,亦可呈对称状。所述的四边形模块的主视面上可带有用于模糊模块拼接界限的装饰结构。 图1-5 显示电路 1.4万年历电子钟电路设计 1.4.1系统电路图
18、 图1—5 系统电路图 1.4.2 电路图分析 本电路是由STC89C52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;显示部份由
19、6个数码管,74HC1648 位串入、并出移位寄存器构成。使用动态扫描显示方式对数字的显示。 STC89C52单片机为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引脚为电源端。 其中Vcc1为后备电源,Vcc2
20、为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。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置为低电平,则会终止此次数
21、据传送,I/O引脚变为高阻态。上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。中有在SCLK 为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。SCLK始终是输入端。 第二章 电子万年历软件设计 2.1 程序流程框图 2.1.1 总流程图 开始 初始化 读、写日期、时间和温度 分离日期\时间\温度显示值 显示子程序 农历自动更新子程序 日期、时间修改子程序 闰月子程 返回 定时闹铃子程序
22、 图2-1 总程序流程图 2.1.2 时间调整程序流程图 图2-2时间调整程序流程图 2.2 部分程序的设计 2.2.1读、写DS1302子程序 写1302程序WRITE: CLR SCLK NOP SETB RST NOP MOV A,32H MOV R4,#8 WRITE1: RRC A ;送地址给1302 NOP NOP CLR SCLK NOP NOP NOP MOV IO,C NOP NOP NOP SE
23、TB SCLK NOP NOP DJNZ R4,WRITE1 CLR SCLK NOP MOV A,31H MOV R4,#8 WRITE2: RRC A NOP ;送数据给1302 CLR SCLK NOP NOP MOV IO,C NOP NOP NOP SETB SCLK NOP NOP DJNZ R4,WRITE2 CLR RST RET ;读1302程序 READ: CLR SCLK NOP NOP SETB R
24、ST NOP MOV A,32H MOV R4,#8 READ1: RRC A ;送地址给1302 NOP MOV IO,C NOP NOP NOP SETB SCLK NOP NOP NOP CLR SCLK NOP NOP DJNZ R4,READ1 MOV R4,#8 READ2: CLR SCLK NOP ;从1302中读出数据 NOP NOP MOV C,IO NOP NOP NOP NOP NOP RR
25、C A NOP NOP NOP NOP SETB SCLK NOP DJNZ R4,READ2 MOV 31H,A CLR RST R 第三章 指标测 3.1 测试仪器 序号 名称 型号 1 计算机机 2 双路直流稳压电源 CA17303D 3 V8通用单片机仿真器 V8/L 4 数字万用表 FT212 3.2硬件测试 万年历电子钟的电路系统较大,对于焊接方面更是不可轻视,庞大的电路系统中只要出于一处的错误,则会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,
26、否则会刺被带有包皮的导线,则会对电路造成短路现象。 在本万年历电子钟的设计调试中遇到了很多的问题。回想这些问题只要认真多思考都是可以避免的,以下为主要的问题: (1)LED数码管的断码错乱,原因出于没有认真看清 a、b 、c等引脚信息。 解决:重新排列74HC164的输出端,相应接入LED数码管,即可解决出现在的断码或乱码。 (2)对万年历修改时间或日期时,有时LED数码管被屏蔽掉,造成不亮现象。 解决:根据仪器的测试,发现电路的驱动能力不足,最后在DS1302时钟芯片的/CS、SCLK、RET端接入5.1K的上拉电阻后,电路的驱动能力才能满足,即可解决不亮现象。 3.3软件测试
27、 万年历电子钟是多功能的数字型,可以看当前日期,时间,闹钟。万年历电子钟功能很多,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。在软件的调试过程中主要遇到的问题如下: 1.烧入程序后,LED数码管显示闪动,而且亮度不均匀。 解决:首先对调用的延时进行逐渐修改,可以解决显示闪动问题。其次,由于本作品使作动态扫描方式显示的数字,动态扫描很快,人的肉眼是无法看出,但是调用的显示程序时,如果不在反回时屏蔽掉最后的附值,则会出现很亮的现象,所以在显示的后面加了屏蔽子令,最后解决了此问题。 2.修改时间、日期时
28、没有农历没有自动对应上。 解决:把不相关的程序暂时屏蔽,地农历的子程序独立调试,发现在调用农历自动更新时,对十进制和十六进制处理不好,所以会造成错乱。最后把相应的十进制进行修改,使得可以与十六进制对应,最后解决了此问题. 3.4测试结果分析与结论 3.4.1 测试结果分析 (1).在测试中遇到发光二极管、LED数码管为不显示时,首先使用试测仪对电路进行测试,观察是否存在漏焊,虚焊,或者元件损坏. (2).LED 数码管显示不正常,还有亮度不够,首先使用试测仪对电路进行测试,观察电路是否存在短路现象。查看烧写的程序是否正确无误,对程序进行认真修改。 3.4.2 测试结论 经过
29、多次的反复测试与分析,可以对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力.同时在软件的编程方面得到更到的提高,对编程能力得到加强.同时对所学的知识得到很大的提高与巩固. 第四章 设计总结 通过此次毕业设计,我不仅把知识融会贯通,而且丰富了大脑,同时在查找资料的过程中也了解了许多课外知识,开拓了视野,认识了将来电子的发展方向,使自己在专业知识方面和动手能力方面有了质的飞跃。 毕业设计是我作为一名学生即将完成学业的最后一次作业,他既是对学校所学知识的全面总结和综合应用,又为今后走向社会的实际操作应用铸就了一个良好开端,毕业设计是我对所学知识理论的检验与总结
30、能够培养和提高设计者独立分析和解决问题的能力;是我在校期间向学校所交的最后一份综和性作业,从老师的角度来说,指导做毕业设计是老师对学生所做的最后一次执手训练。其次,毕业设计的指导是老师检验其教学效果,改进教学方法,提高教学质量的绝好机会。 总之,不管学会的还是学不会的的确觉得困难比较多,真是万事开头难,不知道如何入手。最后终于做完了有种如释重负的感觉。此外,还得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。 在此要感谢我们的指导老师魏老师对我悉心的指导,感谢老师们给我的帮助。在设计过程中,我通
31、过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次毕业设计的最大收获和财富,使我终身受益。 致 谢 首先我必须感谢院领导对我们毕业生在毕业设计过程中的支持与关怀! 其次我要特别感谢魏老师,不管在选题阶段,还是在设计阶段,在制作阶段,正是她给
32、予我不断的指导与帮助,导师渊博的学识、严谨的治学态度、求实创新的工作作风、对事业和科学的执着追求,以及对我谆谆教诲给我留下了深刻的印象,使我受益终身。在课题的研究设计过程中,我不仅从魏老师那里学到许多专业知识,更重要的是学会了学习新知识并将其巩固的方法,这无疑是一把开启未来生活的钥匙,特此向魏老师表示衷心的感谢! 最后我要感谢我的同学们,在设计和焊接过程遇到困难时,正是由于同学们的帮助我才能顺利的克服困难,我毕业设计的完成离不开同学们的帮助!在大学三年的学习生活中,还得到了许多领导和老师的热情关心和帮助,在此,向所有关心和帮助过我的领导、老师、同学和朋友们表示由衷的谢意! 衷心的感谢在百忙之
33、中评阅论文和参加答辩的各位老师! 参考文献 [1] 陈永利 《电子电路基础》.中国铁道出版社 2006.08 [2] 吴金戌 沈庆阳 郭庭吉《8051单片机实践与应用》.清华大学出版社 2006.12 [3] 单片机开发应用技术试验系统实验指导书 [4] 张俊谟.《单片机中级教程》.北京航空航天大学出版, 2006.03 [5] 余发山.《单片机原理及及应用技术》.中国矿业大学出版社, 2003.12 [6] 李飞光.《单片机课程设计实例指导》.北京航空航天大学出版社, 2004 [7] 李振声.《实验电子技术》(P182~193).国防工业大学出版社,2001 附录 实物图






