1、摘 要电子万年历是一种非常广泛日常计时工具,它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。本设计是基于51的单片机进行的电子万年历设计。硬件部分主要由AT89C52单片机,LED显示电路,以及调时按键电路等组成。在单片机的选择上使用了AT89C52单片机,显示器使2片7SEG-MPX8-CA和一片7SEG-MPX4-CA。7SEG-MPX8-CA是一种八个共阳二极管显示器,7SEG-MPX4-CA是一种四个共阳二极管显示器。为了更轻松的控制这三片显示器,使
2、用了3片74HC164来驱动。74HC164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。软件方面主要包括日历程序、时间调整程序,公历转阴历程序,显示程序等。所有程序编写完成后,在wave软件中进行调试,在Proteus软件中嵌入单片机内进行仿真。关键词:时钟电钟;DS1302;DS18B20;动态扫描;单片机AbstractElectronic calendar is a very extensive daily timing tool, it can be years, months, days, Sunday, hours, minutes and seconds for
3、 time, also has a variety of functions such as a leap year compensation, for digital electronic calendar using visual digital display, can display year, month, day, Sunday, when, minutes and seconds, and temperature information, also has a time calibration function.The design is based on the 51SCM f
4、or the design of electronic calendar. The hardware part is mainly composed of AT89C52SCM, LED display circuit, as well as the timing circuit. In the selection of single chip computer on the use of AT89C52 single-chip microcomputer, display so that 2 pieces of7SEG-MPX8-CA and a 7SEG-MPX4-CA. 7SEG-MPX
5、8-CA is a eight common anode diode display,7SEG-MPX4-CA is a four common anode diode display. In order to more easily control the three display, using3 pieces of 74HC164to drive. 74HC164 is a 8 bit edge triggered a shift register, serial input parallel output data, and then. Software mainly includes
6、 calendar program, time to adjust the procedure, the Gregorian calendar to lunar calendar program, display program. All programming is completed, in the wave software for debugging, in the software of Proteus embedded microcontroller simulation.Key words: clock clock; DS1302; DS18B20; dynamic scan;
7、single chip microcomputer目 录摘要 IAbstractII1设计要求.11.1设计要求.12系统的硬件设计与实现.12.1电路设计框图.12.2系统硬件的概述.12.3主要单元电路的设计.1 2.3.1单片机主控制模块的设计.1 2.3.2时钟电路模块的设计.2 2.3.3电路原理及说明.3 2.3.4显示模块的设计.53系统的软件设计.63.1程序流程框图.63.2子程序的设计.9 3.2.1读、写DS1302子程序.94系统仿真115总结11参考文献.11致谢. 12附录一:系统电路图 13附录二:系统程序清单.141设计要求1.1设计要求()基本要求 具有年、月
8、、日、星期、时、分、秒等功能; 万年历具有闰月识别显示功能; 具备年、月、日、星期、时、分、秒校准功能;()创新要求 万年历具有阴历显示功能;具有测量室内温度功能;2系统的硬件设计与实现2.1 电路设计框图LED数码管动态扫描显示模块AT89S52主控制模 块键盘模块 DS1302时钟模块2.2 系统硬件概述本电路是由AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,
9、并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由DS18B20构成;显示部份由个数码管,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线都能独立地作输出或输入。单
10、片机的最小系统如下图所示,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供电。
11、当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.KHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。中有在SCLK 为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。
12、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的日历、时间寄
13、存器内容:“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 RD 1 A4 A
14、3 A2 A1 A0 / CK /WR 表-1 DS1302的控制字格式(3) 数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如下图-4所示 图-3 DS1302读/写时序图(4) DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表-2。 表-2 DS1302的日历、时间寄存器此外,DS1302 还有年份寄存器、控制寄
15、存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。 2.3.4显示模块的设计如图5所示,采用动态扫描显示,由个数码管,3-8译码器74LS138接1K限流电阻,再接8550三极管接到共阳数码管的COM位码,每位选择相应的列。74ls47接240
16、限流电阻,再接共行的LED数码管的断码。图-4 LED动态扫描显示3系统的软件设计3.1程序流程框图开始初始化读、写日期、时间和温度分离日期时间温度显示值显示子程序农历自动更新子程序日期、时间修改子程序闰月子程返回定时闹铃子程序开始初始化读、写日期、时间和温度分离日期时间温度显示值显示子程序农历自动更新子程序日期、时间修改子程序闰月子程返回定时闹铃子程序图-A 主程序流程图开始置阳历总天数当前月加1总天数中加入该月天数月加当前号数是总天数与当前月同?总天数中加入号计算阳历天数结束,总天数中的数据为当前日期在阳历中的第几天图-B计算阳历程序流程图NYNY开始控制键有效,进入年调整程序等待按键程序
17、加键有效减键有效年加1年减1控制键有效,进入月调整程序等待按键程序加键有效减键有效月加1月减1控制键有效,进入日调整程序等待按键程序加键有效减键有效日加1日减1控制键有效,进入星期调整程序等待按键程序加键有效减键有效星期加1星期减1控制键有效,进入小时调整程序等待按键程序加键有效减键有效小时加1小时减1控制键有效,进入分钟调整程序等待按键程序加键有效减键有效分钟加1分钟减1按键有效,跳出时间调整程序,进入主循环程序图-C 时间调整程序流程图3.2 子程序的设计3.2.1 读、写DS1302子程序42 ;写1302程序WRITE: CLR SCLK NOP SETB RST NOP MOV A,
18、32H MOV R4,#8WRITE1: RRC A ;送地址给1302 NOP NOP CLR SCLK NOP NOP NOP MOV IO,C NOP NOP NOP SETB SCLK NOP NOP DJNZ R4,WRITE1 CLR SCLK NOP MOV A,31H MOV R4,#8WRITE2: 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 RS
19、T NOP MOV A,32H MOV R4,#8READ1: RRC A ;送地址给1302 NOP MOV IO,C NOP NOP NOP SETB SCLK NOP NOP NOP CLR SCLK NOP NOP DJNZ R4,READ1 MOV R4,#8READ2: CLR SCLK NOP ;从1302中读出数据 NOP NOP MOV C,IO NOP NOP NOP NOP NOP RRC A NOP NOP NOP NOP SETB SCLK NOP DJNZ R4,READ2 MOV 31H,A CLR RST RET4系统仿真 5总结在整个设计过程中,充分发挥了人的
20、主观能动性,自主学习,学到了许多课本上没法学到的知识,较好的完成了作品,达到了预期的目的,完成了最初的设想。通过这次设计,认识到对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,查阅了很多资料,理清了思路,渐渐开始得心应手。在此次设计中,知道了无论做什么事要有一颗平常的心,不要想着走捷径,一步一个脚印才是硬道理。通过这次设计,会让我以后的学习和办事变得更加严谨、更加有耐心、更加有条理。 参考文献【1】 刘勇. 数字电路. 电子工业出版社, 2004.【2】 何希才、邹炳强. 通用电子电路应用400例. 北京电子工
21、业出版社. 2005【3】 杨子文. 单片机原理及应用. 西安电子科技大学出版社, 2006.【4】 江世明、黄同成. 单片机原理及应用.中国铁道出版社,2010致 谢经过十天的努力,终于完成的论文的设计,这次论文的顺利完成,首先要感谢辅导老师的细心教导,教会了我们如何写论文,后面我们终于搞出了像样的论文,对所学知识也有了更深入的了解,并且能够将所学知识融会贯通,这些都归功于指导老师孜孜不倦的教导;再次要感谢我们的老师,是他教给了我们全面的基础知识,如果没有精湛的基础知识作为后盾,一切都是不可能的;最后还要感谢给过我指导的每一个同学,是通过大家的帮忙,才完成了这个起先一点也不懂的论文设计,对于
22、大家,在这里一并感谢,谢谢!附录一:系统电路图附录二:系统程序清单CONFIG12 EQU 7FH TEMPH EQU 21H TEMPL EQU 20H REG2 EQU 22H REG3 EQU 23H REG4 EQU 24H DAT EQU P0.7 SCLK EQU P3.2 IO EQU P3.3 RST EQU P3.4 year DATA 66H month DATA 65H week DATA 64H day DATA 63H hour DATA 62H mintue DATA 61H second DATA 60HORG 0000H LJMP START ORG 001BH
23、 LJMP INTT1START: ;初值 LCALL ZJ SETB EA MOV SCON,#00H ; 串行输出,方式0 MOV TMOD,#10H ;计数器1,方式1 MOV TL1,#00H MOV TH1,#00H MOV 32H,#8EH MOV 31H,#00H ;允许写1302 LCALL WRITE MOV 32H,#90H MOV 31H,#0A6H ;1302充电,充电电流1.1MA LCALL WRITE ;主程序MAIN1: MOV 32H,#8DH ;读出年 LCALL READ MOV year,31HMOV 32H,#8BH ;读出星期 LCALL READ
24、MOV week,31HMOV 32H,#89H ;读出月 LCALL READ MOV month,31H MOV 32H,#87H ;读出日 LCALL READ MOV day,31HMOV 32H,#85H ;读出小时 LCALL READ MOV hour,31H MOV 32H,#83H ;读出分钟 LCALL READ MOV mintue,31HMOV 32H,#81H ;读出秒 LCALL READ MOV second,31H ;分离缓存MOV R0,year ;年分离,送显示缓存 LCALL DIVIDE MOV 7BH,R1 MOV 4BH,R1 MOV 7CH,R2
25、MOV 4CH,R2 MOV 78H,week MOV 48H,week MOV R0,month ;月分离,送显示缓存 LCALL DIVIDE MOV 79H,R1 MOV 49H,R1 MOV 7AH,R2 MOV 4AH,R2 MOV R0,day ;日分离,送显示缓存 LCALL DIVIDE MOV 76H,R1 MOV 46H,R1 MOV 77H,R2 MOV 47H,R2 MOV R0,hour ;小时分离,送显示缓存 LCALL DIVIDE MOV 74H,R1 MOV 44H,R1 MOV 75H,R2 MOV 45H,R2 MOV R0,mintue ;分钟分离,送显
26、示缓存 LCALL DIVIDE MOV 72H,R1 MOV 42H,R1 MOV 73H,R2 MOV 43H,R2 MOV R0,second ;秒分离,送显示缓存 LCALL DIVIDE MOV 70H,R1 MOV 40H,R1 MOV 71H,R2 MOV 41H,R2 CLR EA LCALL TOUTOU SETB EA LCALL DISPLAY LCALL GENGXIAN ;更新农历程序 JNB P0.1,SETG111 JNB F0,SSS setb P0.4 ;非闰月,则p0.4清零,指示灯亮 LJMP MAIN1SETG111: LJMP SETGSSS: clr
27、 P0.4 ;闰月,则p0.4置位,指示灯不亮 LJMP MAIN1 ;温度TOUTOU: LCALL CHUSHI LCALL RDTEMP MOV A,TEMPL ANL A,#11110000B MOV TEMPL,A MOV A,TEMPH ANL A,#00000111B ORL A,TEMPL SWAP A MOV 25H,A MOV A,25H MOV B,#64H DIV AB MOV A,B MOV B,#0AH DIV AB SWAP A ORL A,B MOV 10H,A RETCHUSHI: LCALL RESET MOV A,#0CCH LCALL WRITE111
28、MOV A,#4EH LCALL WRITE111 MOV A,#CONFIG12 LCALL WRITE111 RETRDTEMP: LCALL RESET MOV A,#0CCH LCALL WRITE111 MOV A,#44H LCALL WRITE111 LCALL DL1MS LCALL RESET MOV A,#0CCH LCALL WRITE111 MOV A,#0BEH LCALL WRITE111 LCALL ERAD111 MOV TEMPL,A LCALL ERAD111 MOV TEMPH,A RETRESET:LA: SETB DAT MOV 52H,#200LB:
29、 CLR DAT DJNZ 52H,LB SETB DAT MOV 52H,#30LC: DJNZ 52H,LC CLR C ORL C,DAT JC LB MOV 58H,#80LD: ORL C,DAT JC LP DJNZ 58H,LD SJMP LALP: MOV 52H,#250LF: DJNZ 52H,LF RETWRITE111: MOV 53H,#8W51HA: SETB DAT MOV 54H,#8 RRC A CLR DATW52HA: DJNZ 54H,W52HA MOV DAT,C MOV 54H,#30W53HA: DJNZ 54H,W53HA DJNZ 53H,W5
30、1HA SETB DAT RETERAD111: CLR EA MOV 58H,#8RD1A: CLR DAT MOV 54H,#6 NOP SETB DATRD2A: DJNZ 54H,RD2A MOV C,DAT RRC A MOV 55H,#30RD3A: DJNZ 55H,RD3A DJNZ 58H,RD1A SETB DAT RET ;公历设置程序SETG : SETB TR1 SETB ET1 MOV 32H,#8EH MOV 31H,#00H ;允许写1302 LCALL WRITE MOV 32H,#80H MOV 31H,#80H ;1302停止振荡 LCALL WRITEG
31、WAIT: ; LCALL DISPLAY JNB P0.1,GWAITSETG1: LCALL DISPLAY JNB P0.1,SETG2 JNB P0.2,GADDYEAR JNB P0.3,JIANYEAR AJMP SETG1GADDYEAR: MOV R7,66H ;年加一 LCALL ADD1 MOV 66H,A CJNE A,#51H,GADDYEAR1 MOV 66H,#00H AJMP GADDYEAR1JIANYEAR: MOV R7,66H ;年减一 LCALL JIAN1 MOV 66H,A CJNE A,#00H,GADDYEAR1 MOV 66H,#51HGADD
32、YEAR1: MOV 32H,#8CH ;年值送人1302 MOV 31H,66H LCALL WRITE MOV R0,66H LCALL DIVIDE ;年分离送显示缓存 MOV 4BH,R1 MOV 7BH,R1 MOV 4CH,R2 MOV 7CH,R2WAITT1: ; LCALL DISPLAY JNB P0.2,WAITT1 JNB P0.3,WAITT1 AJMP SETG1SETG2: SETB 0AH ;调月时闪标志GWAIT2: LCALL DISPLAY JNB P0.1,GWAIT2SETG3: LCALL DISPLAY JNB P0.1,SETG4 JNB P0.
33、2,GADDMONTH JNB P0.3,JIANMONTH AJMP SETG3GADDMONTH: MOV R7,65H ;月加一 LCALL ADD1 MOV 65H,A CJNE A,#13H,GADDMONTH1 MOV 65H,#01H AJMP GADDMONTH1JIANMONTH: MOV R7,65H ;月减一 LCALL JIAN1 MOV 65H,A CJNE A,#00H,GADDMONTH1 MOV 65H,#12HGADDMONTH1: MOV 32H,#88H ;月值送人1302 MOV 31H,65H LCALL WRITE MOV R0,65H LCALL
34、DIVIDE ;月分离,送显示缓存 MOV 79H,R1 MOV 49H,R1 MOV 7AH,R2 MOV 4AH,R2WAITT2: ; LCALL DISPLAY JNB P0.2,WAITT2 JNB P0.3,WAITT2 AJMP SETG3SETG4: SETB 0BH ;调日时闪标志GWAIT4: LCALL DISPLAY JNB P0.1,GWAIT4SETG5: LCALL DISPLAY JNB P0.1,SETG6 JNB P0.2,GADDDAY JNB P0.3,JIANDAY AJMP SETG5GADDDAY: MOV R7,63H ;日加一 LCALL AD
35、D1 MOV 63H,A CJNE A,#32H,GADDDAY1 MOV 63H,#01HJIANDAY: MOV R7,63H ;日减一 LCALL JIAN1 MOV 63H,A CJNE A,#00H,GADDDAY1 MOV 63H,#31HGADDDAY1: MOV 32H,#86H ;日值送人1302 MOV 31H,63H LCALL WRITE MOV R0,63H LCALL DIVIDE ;日分离,送显示缓存 MOV 76H,R1 MOV 46H,R1 MOV 77H,R2 MOV 47H,R2WAITT3: ; LCALL DISPLAY JNB P0.2,WAITT3
36、 JNB P0.3,WAITT3 AJMP SETG5SETG6: SETB 0CH ;调星期时闪标志GWAIT6: LCALL DISPLAY JNB P0.1,GWAIT6SETG7: LCALL DISPLAY JNB P0.1,SETG8 JNB P0.2,GADDWEEK JNB P0.3,JIANWEEK AJMP SETG7GADDWEEK: MOV R7,64H ;星期加一 LCALL ADD1 MOV 64H,A CJNE A,#07H,GADDWEEK1 MOV 64H,#00H AJMP GADDWEEK1JIANWEEK: MOV R7,64H ;星期减一 LCALL
37、JIAN1 MOV 64H,A CJNE A,#00H,GADDWEEK1 MOV 64H,#06HGADDWEEK1: MOV 32H,#8AH MOV 31H,64H ;星期值送人1302 LCALL WRITE MOV R0,64H LCALL DIVIDE ;星期值分离送显示缓存 MOV 48H,R1 MOV 78H,R1WAITT4: ; LCALL DISPLAY JNB P0.2,WAITT4 JNB P0.3,WAITT4 AJMP SETG7SETG8: SETB 0DH ;调小时时闪标志GWAIT8: LCALL DISPLAY JNB P0.1,GWAIT8SETG9:
38、LCALL DISPLAY JNB P0.1,SETG10 JNB P0.2,GADDHOUR JNB P0.3,JIANHOUR AJMP SETG9GADDHOUR: MOV R7,62H ;小时加一 LCALL ADD1 MOV 62H,A CJNE A,#24H,GADDHOUR1 MOV 62H,#00H AJMP GADDHOUR1JIANHOUR: MOV R7,62H ;小时减一 LCALL JIAN1 MOV 62H,A CJNE A,#00H,GADDHOUR1 MOV 62H,#23HGADDHOUR1: MOV 32H,#84H ;小时值送人1302 MOV 31H,6
39、2H LCALL WRITE MOV R0,62H LCALL DIVIDE ;小时值分离送显示缓存 MOV 74H,R1 MOV 44H,R1 MOV 75H,R2 MOV 45H,R2WAITT5: ;LCALL DISPLAY JNB P0.2,WAITT5 JNB P0.3,WAITT5 AJMP SETG9SETG10: SETB 0EH ;调分时候闪标志GWAIT10: LCALL DISPLAY JNB P0.1,GWAIT10SETG11: LCALL DISPLAY JNB P0.1,SETGOUT JNB P0.2,GADDMINTUE JNB P0.3,JIANMINTUE AJMP SETG11GADDMINTUE: MOV R7,61H ;分钟加一 LCALL ADD1 MOV 61H,A CJNE A,#60H,GADDMINTUE1 MOV 61H,#00H AJMP GADDMINTUE1JI
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922