单片机电子时钟.docx
- 文档编号:26320767
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:7
- 大小:17.93KB
单片机电子时钟.docx
《单片机电子时钟.docx》由会员分享,可在线阅读,更多相关《单片机电子时钟.docx(7页珍藏版)》请在冰豆网上搜索。
单片机电子时钟
单片机电子时钟
DS1302是Dallas公司生产的一种实时时钟芯片。
它通过串行方式与单片机进行数据传送,能够向单片机提供包括秒、分、时、日、月、年等在内的实时时间信息,并可对月末日期、闰年天数自动进行调整;它还拥有用于主电源和备份电源的双电源引脚,在主电源关闭的情况下,也能保持时钟的连续运行。
另外,它还能提供31字节的用于高速数据暂存的RAM。
鉴于上述特点,DS1302已在许多单片机系统中得到应用,为系统提供所需的实时时钟信息。
一、DS1302的主要特性
1.引脚排列
500)this.width=500border=0>;图1DS1302引脚排列图
DS1302的引脚排列如图1所示,各引脚的功能如下:
X1,X2——32768Hz晶振引脚端; RST——复位端; I/O——数据输入/输出端; SCLK——串行时钟端; GND——地; VCC2,VCC1——主电源与后备电源引脚端。
2.主要功能
DS1302时钟芯片内主要包括移位寄存器、控制逻辑电路、振荡器、实时时钟电路以及用于高速暂存的31字节RAM。
DS1302与单片机系统的数据传送依靠RST,I/O,SCLK三根端线即可完成。
其工作过程可概括为:
首先系统RST引脚驱动至高电平,然后在作用于SCLK时钟脉冲的作用下,通过I/O引脚向DS1302输入地址/命令字节,随后再在SCLK时钟脉冲的配合下,从I/O引脚写入或读出相应的数据字节。
因此,其与单片机之间的数据传送是十分容易实现的。
二、时钟的产生及存在的问题
(1)在实际使用中,我们发现DS1302的工作情况不够稳定,主要表现在实时时间的传送有时会出现误差,有时甚至整个芯片停止工作。
我们对DS1302的工作电路进行了分析,其与单片机系统的连接如图2所示。
从图中可以看出,DS1302的外部电路十分简单,惟一外接的元件是32768Hz的晶振。
通过实验我们发现:
当外接晶振电路振荡时,DS1302计时正确;当外接晶振电路停振时,DS1302计时停止。
因此,我们认为32768Hz晶振是造成DS1302工作不稳定的主要原因。
500)this.width=500border=0>;图2DS1302与单片机系统的连接图
(2)DS1302时钟的产生基于外接的晶体振荡器,振荡器的频率为32768Hz。
该晶振通过引脚X1、X2直接连接至DS1302,即DS1302是依靠外部晶振与其内部的电容配合来产生时钟脉冲的。
由于DS1302在芯片本身已经集成了6pF的电容,所以,为了获得稳定可靠的时钟,必须选用具有6pF负载电容的晶振。
然而,许多人在选用晶振时仅仅注意了晶振的额定频率值,而忽视了晶振的负载电容大小,甚至连许多经销商也不能提供所售晶振的负载电容。
所以即使在使用中选用了符合32768Hz的晶振,但如果该晶振的负载电容与DS1302提供的6pF不一致时,就会影响晶振的起振或导致振荡频率的偏移,出现上述在应用中的问题。
三、利用辅助电容实现负载匹配
(1)当所选的晶振负载电容不是6pF时,可以采用增加辅助电容的方法提高或降低DS1302振荡器的电容性负载,使之与晶体所需的电容值匹配。
如果已知晶体的负载电容为CI,若CI;6pF,则可以在晶体的一端增加一个串联电容CS,以产生所需的负载电容CI,即1/CI=1/6pF+1/CS,通过计算即可得出应增加的辅助电容大小。
辅助电容的接法如图3所示。
500)this.width=500border=0>;图3CS连接电路图
(2)在使用前对晶体的负载电容并不知道的情况下,通过测定晶体振荡频率的方法可以确定该晶体的负载电容。
对于晶体振荡器来说,其振荡频率与负载电容之间的关系是确定的。
以本文讨论的DS1302使用的32768Hz晶振为例:
当它工作于所要求的负载电容时,能较准确地产生32768Hz的频率;当它的负载电容小于6pF时,其振荡频率会正向偏移;当它的负载电容大于6pF时,其振荡频率就会负向偏移。
因此,对于未知负载电容的晶体应首先采用实验的方法,在其两端加入辅助电容使晶体起振,然后用频率计测出振荡频率。
若测得频率大于32768Hz,说明负载电容偏小;若测得频率小于32768Hz,说明负载电容偏大。
对辅助电容逐步调整,最终使振荡频率尽可能接近32768Hz,则此时晶体端所接负载电容的总和就是适合该晶体的负载电容。
结论
以上方法经我们在实际工作中多次使用,证明确实有效。
它放宽了DS1302在使用中对晶振的条件要求,增强了DS1302在工作中的稳定性,对DS1302更广泛地应用具有积极的意义。
SECLEQU30H;;;定义(时。
分。
秒)SECHEQU31HMINLEQU32HMINHEQU33HHOURLEQU34HHOURHEQU35HORG0000HLJMPMAINORG000BH;中断入口LJMPTNTT0ORG0100HMAIN:
MOVSECL,#00HMOVSECH,#00HMOVMINL,#00HMOVMINH,#00HMOVHOURL,#00HMOVHOURH,#00H;;;;;;;;;;;;;;;;;MOV36H,#0BHMOV37H,#00HMOV38H,#00HMOV39H,#00H;;;;;;;;;;;;;;;;MOV40H,#00H;;;;;;;;;;;;;;;;;;;定时开关的地址;;;;;;;;;;;;;;;;;;MOV60H,#00HMOV61H,#00HMOV62H,#00HMOV63H,#00HMOV64H,#00HMOV65H,#00HMOV66H,#00HMOV67H,#00H;;;;;;;;MOVR5,#00HMOVR1,#00HMOVR2,#00HMOVR3,#02HMOVR4,#00HMOVR6,#00H;;;;;;;;;;;;;;;;;;;;;数码管的共公端地址;;;;;;;;;;;;;;;;;;;;;MOV41H,#0FEHMOV42H,#0FDHMOV43H,#0FBHMOV44H,#0F7HMOV45H,#0EFHMOV46H,#0DFHSETBP2.7;;;;;;;;;;;;;;;;;;;;;;;;;;;LOOP:
SETBEASETBET0MOVTMOD,#01HMOVTL0,#0BHMOVTH0,#38HSETBTR0MOVR0,#18LJMPCSCS:
LCALLDISLJMPCSRET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;加1子程序;;;;;;;;;;;;;;;;;;DIAY1:
MOVTL0,#0BHMOVTH0,#38HRETITNTT0:
;中断入口;;DJNZR0,DIAY1MOVR0,#18;;;;;;;;;;;秒加1;;;;;;;;;;;;;;低位;;;MOVA,SECLSS:
INCAMOVSECL,AJNBP3.2,AS;;;设置分JNBP3.1,HH1;;;设置时WWQ:
CJNEA,#0AH,DIAY1MOVSECL,#00H
;;高位;;;;MOVA,SECHINCAMOVSECH,ACJNEA,#06H,DIAY1MOVSECH,#00H;;;;;;;;;;;分加1;;;;;;;;;;;;;;低位;;;MOVA,MINLINCAMOVMINL,ACJNEA,#0AH,DIAY1MOVMINL,#00H
;;高位;;;;MOVA,MINHINCAMOVMINH,ACJNEA,#06H,DIAY1MOVMINH,#00H;;;;;;;;;;;时加1;;;;;;;;;;;;;;低位;;;MOVA,HOURLINCAINCR1MOVHOURL,ACJNER1,#24,D1LCALLD2D1:
CJNEA,#0AH,DIAY1MOVHOURL,#00H;;高位;;;;MOVA,HOURHINCAMOVHOURH,ACJNEA,#03H,DIAY1MOVHOURH,#00HRETHH1:
LCALLHHRETAS:
LCALLMMRET;;;;;;;;;;;;;;;;;24小时清0;;;;;;;;;;;;;;;;D2:
MOVA,#0AHMOVR1,#00HRET;;;结束加1子程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;动态扫描时间显示;;;;;;;;;;;;;;;;;;;;KK:
LCALLONF7RETONOFF1:
LCALLONOFFRETDDD1:
JNBP3.3,$LCALLNUOL1RETDIS:
;;;秒;;;JNBP3.0,ONOFF1;;直开关机JNBP3.3,ddd1;;;进入闹钟设置JNBP3.4,KK;;;定时开关机MOVDPTR,#TABMOVA,SECLMOVCA,@A+DPTRMOVP0,AMOVP2,41HLCALLDIAY
MOVA,SECHMOVCA,@A+DPTRMOVP0,AMOVP2,42HLCALLDIAY
;;;;分;;;MOVA,MINLMOVCA,@A+DPTRMOVP0,AMOVP2,43HSETBP0.2LCALLDIAY
MOVA,MINHMOVCA,@A+DPTRMOVP0,AMOVP2,44HLCALLDIAY
;;;;时;;;;;MOVA,HOURLMOVCA,@A+DPTRMOVP0,AMOVP2,45HSETBP0.2LCALLDIAY
MOVA,HOURHMOVCA,@A+DPTRMOVP0,AMOVP2,46HLCALLDIAYMOVA,MINL
LCCG:
;;铃声比较;;;;;;;CJNEA,36H,DFMOVA,MINHCJNEA,37H,DFMOVA,HOURLCJNEA,38H,DFMOVA,HOURHCJNEA,39H,DFLCALLLC
DF:
;;定时开机比较;;;;;;;MOVA,MINLCJNEA,60H,DGMOVA,MINHCJNEA,61H,DGMOVA,HOURLCJNEA,62H,DGMOVA,HOURHCJNEA,63H,DGLCALLOONDG:
;;定时关机比较;;;;;;;MOVA,SECLCJNEA,#00H,TTMOVA,SECHCJNEA,#00H,TTMOVA,MINLCJNEA,64H,TTMOVA,MINHCJNEA,65H,TTMOVA,HOURLCJNEA,66H,TTMOVA,HOURHCJNEA,67H,TTLCALLOFFTT:
RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;设置时钟,分&时;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MM:
;;;设置分;;;;MOV30H,#00HMOV31H,#00HMOVA,MINLINCAMOVMINL,ACJNEA,#0AH,DDMOVMINL,#00HMOVA,MINHINCAMOVMINH,ACJNEA,#06H,DDMOVMINH,#00H
HH:
;;设置时;;;MOV30H,#00HMOV31H,#00HMOVA,HOURLINCAINCR1MOVHOURL,ACJNER1,#24,D4LCALLD2D4:
CJNEA,#0AH,DDMOVHOURL,#00HMOVA,HOURHINCAMOVHOURH,ACJNEA,#03H,DDMOVHOURH,#00HDD:
LCALLWWQRET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;铃声;;;;;;;;;;;;;;;;;LC:
LCALLDIAYCLRP2.7LCALLDELAYRET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;按键直开关机子程序;;;;;;;;;;;;;;;;;;;;;;;;ONOFF:
;;JNBP3.0,$LCALLDELAY1LCALLMNLCALLDELAYMOV41H,#0FFHMOV42H,#0FFHMOV43H,#0FFHMOV44H,#0FFHMOV45H,#0FFHMOV46H,#0FFHDJNZR3,END1LCALLDELAY1MOV41H,#0FEHMOV42H,#0FDHMOV43H,#0FBHMOV44H,#0F7HMOV45H,#0EFHMOV46H,#0DFHMOVR3,#02HEND1:
LJMPSSRET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;按键响声;;;;;;;;;;;;;;MN:
CLRP2.7LCALLDIAYRET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;定时开关机子程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ONF7:
JNBP3.4,$LCALLMNLCALLDELAYONF:
;;;开设置;;;;;JNBP3.0,ONF3;跳到关设置JNBP3.4,ON1;分设置JNBP3.3,ON2;时设置LCALLON5;;显示分LCALLON6;;显示时LJMPONFONF3:
;;关设置;;;;JNBP3.0,$LCALLMNONF1:
JNBP3.0,EE;;返回;;JNBP3.4,ON3;分设置JNBP3.3,ON4;时设置
LCALLON7;;显示分LCALLON8;;显示时LJMPONF1EE:
JNBP3.0,$LCALLMNLJMPCSRET
ON1:
;;;开机分设置加1;;JNBP3.4,$LCALLMNMOVA,60HINCAMOV60H,ACJNEA,#0AH,ONF5MOV60H,#00HMOVA,61HINCAMOV61H,ACJNEA,#06H,ONF5MOV61H,#00HONF5:
LJMPONF
ON2:
;;;开机时设置加1;;JNBP3.3,$LCALLMNMOVA,62HINCAINCR4MOV62H,ACJNER4,#24,FFLCALLON69FF:
CJNEA,#0AH,ONF5MOV62H,#00HMOVA,63HINCAMOV63H,ACJNEA,#03H,ONF5MOV63H,#00HLJMPONF
ON69:
;24小时清0MOVA,#0AHMOVR4,#00HRET
ON3:
;;关机分设置加1;;JNBP3.4,$LCALLMNMOVA,64HINCAMOV64H,ACJNEA,#0AH,ONF6MOV64H,#00HMOVA,65HINCAMOV65H,ACJNEA,#06H,ONF6MOV65H,#00HONF6:
LJMPONF1
ON4:
;;关机时设置加1;;JNBP3.3,$LCALLMNMOVA,66HINCAINCR5MOV66H,ACJNER5,#24,FF11LCALLFF22FF11:
CJNEA,#0AH,ONF0MOV66H,#00HMOVA,67HINCAMOV67H,ACJNEA,#03H,ONF0MOV67H,#00HONF0:
LJMPONF1FF22:
;24小时清0MOVA,#0AHMOVR5,#00HRETON5:
;;开机显示分;MOVDPTR,#TABMOVA,60HMOVCA,@A+DPTRMOVP0,AMOVP2,43HLCALLDIAYMOVA,61HMOVCA,@A+DPTRMOVP0,AMOVP2,44HLCALLDIAYRETON6:
;;开机显示时;MOVDPTR,#TABMOVA,62HMOVCA,@A+DPTRMOVP0,ASETBP0.2MOVP2,45HLCALLDIAYMOVA,63HMOVCA,@A+DPTRMOVP0,ASETBP0.2MOVP2,46HLCALLDIAYRET
ON7:
;;关机显示分;MOVDPTR,#TABMOVA,64HMOVCA,@A+DPTRMOVP0,ASETBP0.2MOVP2,43HLCALLDIAYMOVA,65HMOVCA,@A+DPTRMOVP0,ASETBP0.2MOVP2,44HLCALLDIAYRETON8:
;;关机显示时;MOVDPTR,#TABMOVA,66HMOVCA,@A+DPTRMOVP0,ASETBP0.2MOVP2,45HLCALLDIAYMOVA,67HMOVCA,@A+DPTRMOVP0,ASETBP0.2MOVP2,46HLCALLDIAYRET
OFF:
;;定时关机MOV41H,#0FFHMOV42H,#0FFHMOV43H,#0FFHMOV44H,#0FFHMOV45H,#0FFHMOV46H,#0FFHRETOON:
;;定时开机MOV41H,#0FEHMOV42H,#0FDHMOV43H,#0FBHMOV44H,#0F7HMOV45H,#0EFHMOV46H,#0DFHRET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;铃声设置;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DDD:
JNBP3.0,$LCALLMNLJMPCS;;返回;;RETNUOL1:
MOV36H,#0BHNUOL:
JNBP3.0,DDD;;返回;;JNBP3.4,WW1;跳设置分JNBP3.3,WW2;跳设置时LCALLNUOL2;;跳显示分LCALLNUOL3;;跳显示时LJMPNUOL
WW1:
;;设置分JNBP3.4,$LCALLMNMOVA,36HINCAMOV36H,ACJNEA,#0AH,NUOLMOV36H,#00HMOVA,37HINCAMOV37H,ACJNEA,#06H,NUOLMOV37H,#00HLJMPNUOL
WW2:
;;设置时JNBP3.3,$LCALLMNMOVA,38HINCAINCR2MOV38H,ACJNER2,#24,D0LCALLD9D0:
CJNEA,#0AH,NUOLMOV38H,#00HMOVA,39HINCAMOV39H,ACJNEA,#03H,NUOLMOV39H,#00HLJMPNUOLD9:
;24小时清0MOVA,#0AHMOVR2,#00HMOV36H,#00HMOV37H,#00HRET
NUOL2:
;;显示分MOVDPTR,#TABMOVA,36HMOVCA,@A+DPTRMOVP0,AMOVP2,43HLCALLDIAYMOVA,37HMOVCA,@A+DPTRMOVP0,AMOVP2,44HLCALLDIAYRETNUOL3:
;;显示分MOVDPTR,#TABMOVA,38HMOVCA,@A+DPTRMOVP0,AMOVP2,45HLCALLDIAYMOVA,39HMOVCA,@A+DPTRMOVP0,AMOVP2,46HLCALLDIAYRET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;延时&;;;;;;;;;;;;;;;;;;
DELAY:
;延时子程序.
MOVR7,#0AHD7:
MOVR6,#0FFH;Dp:
DJNZR6,Dp
DJNZR7,D7;
RET;DIAY:
MOVR6,#05HT2:
MOVR7,#0FFHDJNZR7,$DJNZR6,T2RETDELAY1:
;延时子程序.
MOVR7,#0FFHD71:
MOVR6,#0FFH;Dp1:
DJNZR6,Dp1DJNZR7,D71;RET;TAB:
DB0EBH,081H,0DAH,0D9H,0B1HDB079H,07BH,0C1H,0FBH,0F9HRETEND
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子 时钟