基于DS1302的单片机电子时钟的实现.docx
- 文档编号:7292690
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:15
- 大小:19.27KB
基于DS1302的单片机电子时钟的实现.docx
《基于DS1302的单片机电子时钟的实现.docx》由会员分享,可在线阅读,更多相关《基于DS1302的单片机电子时钟的实现.docx(15页珍藏版)》请在冰点文库上搜索。
基于DS1302的单片机电子时钟的实现
基于DS1302的单片机电子时钟的实现
DS1302是Dallas公司生产的一种实时时钟芯片。
它通过串行方式与单片机进行数据传送,能够向单片机提供包括秒、分、时、日、月、年等在内的实时时间信息,并可对月末日期、闰年天数自动进行调整;它还拥有用于主电源和备份电源的双电源引脚,在主电源关闭的情况下,也能保持时钟的连续运行。
另外,它还能提供31字节的用于高速数据暂存的RAM。
鉴于上述特点,DS1302已在许多单片机系统中得到应用,为系统提供所需的实时时钟信息。
一、DS1302的主要特性
1.DS1302引脚排列图
DS1302的各引脚的功能如下:
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工作不稳定的主要原因。
(2) DS1302时钟的产生基于外接的晶体振荡器,振荡器的频率为32768Hz。
该晶振通过引脚X1、X2直接连接至DS1302,即DS1302是依靠外部晶振与其内部的电容配合来产生时钟脉冲的。
由于DS1302在芯片本身已经集成了6pF的电容,所以,为了获得稳定可靠的时钟,必须选用具有6pF负载电容的晶振。
然而,许多人在选用晶振时仅仅注意了晶振的额定频率值,而忽视了晶振的负载电容大小,甚至连许多经销商也不能提供所售晶振的负载电容。
所以即使在使用中选用了符合32768Hz的晶振,但如果该晶振的负载电容与DS1302提供的6pF不一致时,就会影响晶振的起振或导致振荡频率的偏移,出现上述在应用中的问题。
三、利用辅助电容实现负载匹配
(1) 当所选的晶振负载电容不是6pF时,可以采用增加辅助电容的方法提高或降低DS1302振荡器的电容性负载,使之与晶体所需的电容值匹配。
如果已知晶体的负载电容为CI,若CI<6pF,则可以增加一个并联电容CS以产生所需的总负载电容CI,即CI=6pF+CS;若CI>6pF,则可以在晶体的一端增加一个串联电容CS,以产生所需的负载电容CI,即1/CI=1/6pF+1/CS,通过计算即可得出应增加的辅助电容大小。
(2) 在使用前对晶体的负载电容并不知道的情况下,通过测定晶体振荡频率的方法可以确定该晶体的负载电容。
对于晶体振荡器来说,其振荡频率与负载电容之间的关系是确定的。
以本文讨论的DS1302使用的32768Hz晶振为例:
当它工作于所要求的负载电容时,能较准确地产生32768Hz的频率;当它的负载电容小于6pF时,其振荡频率会正向偏移;当它的负载电容大于6pF时,其振荡频率就会负向偏移。
因此,对于未知负载电容的晶体应首先采用实验的方法,在其两端加入辅助电容使晶体起振,然后用频率计测出振荡频率。
若测得频率大于32768Hz,说明负载电容偏小;若测得频率小于32768Hz,说明负载电容偏大。
对辅助电容逐步调整,最终使振荡频率尽可能接近32768Hz,则此时晶体端所接负载电容的总和就是适合该晶体的负载电容。
结论
以上方法经我们在实际工作中多次使用,证明确实有效。
它放宽了DS1302在使用中对晶振的条件要求,增强了DS1302在工作中的稳定性,对DS1302更广泛地应用具有积极的意义。
SECLEQU30H;;;定义(时。
分。
秒)
SECHEQU31H
MINLEQU32H
MINHEQU33H
HOURLEQU34H
HOURHEQU35H
ORG0000H
LJMPMAIN
ORG000BH;中断入口
LJMPTNTT0
ORG0100H
MAIN:
MOVSECL,#00H
MOVSECH,#00H
MOVMINL,#00H
MOVMINH,#00H
MOVHOURL,#00H
MOVHOURH,#00H
;;;;;;;;;;;;;;;;;
MOV36H,#0BH
MOV37H,#00H
MOV38H,#00H
MOV39H,#00H
;;;;;;;;;;;;;;;;
MOV40H,#00H
;;;;;;;;;;;;;;;;;
;;定时开关的地址;
;;;;;;;;;;;;;;;;;
MOV60H,#00H
MOV61H,#00H
MOV62H,#00H
MOV63H,#00H
MOV64H,#00H
MOV65H,#00H
MOV66H,#00H
MOV67H,#00H
;;;;;;;;
MOVR5,#00H
MOVR1,#00H
MOVR2,#00H
MOVR3,#02H
MOVR4,#00H
MOVR6,#00H
;;;;;;;;;;;;;;;;;;;;
;数码管的共公端地址;
;;;;;;;;;;;;;;;;;;;;
MOV41H,#0FEH
MOV42H,#0FDH
MOV43H,#0FBH
MOV44H,#0F7H
MOV45H,#0EFH
MOV46H,#0DFH
SETBP2.7
;;;;;;;;;;;;;;;;;;;;;;;;;;;
LOOP:
SETBEA
SETBET0
MOVTMOD,#01H
MOVTL0,#0BH
MOVTH0,#38H
SETBTR0
MOVR0,#18
LJMPCS
CS:
LCALLDIS
LJMPCS
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;
;;;加1子程序;;;
;;;;;;;;;;;;;;;
DIAY1:
MOVTL0,#0BH
MOVTH0,#38H
RETI
TNTT0:
;中断入口;;
DJNZR0,DIAY1
MOVR0,#18
;;;;;;;;;;
;秒加1;;
;;;;;;;;;;
;;低位;;;
MOVA,SECL
SS:
INCA
MOVSECL,A
JNBP3.2,AS;;;设置分
JNBP3.1,HH1;;;设置时
WWQ:
CJNEA,#0AH,DIAY1
MOVSECL,#00H
;;高位;;;;
MOVA,SECH
INCA
MOVSECH,A
CJNEA,#06H,DIAY1
MOVSECH,#00H
;;;;;;;;;;
;分加1;;
;;;;;;;;;;
;;低位;;;
MOVA,MINL
INCA
MOVMINL,A
CJNEA,#0AH,DIAY1
MOVMINL,#00H
;;高位;;;;
MOVA,MINH
INCA
MOVMINH,A
CJNEA,#06H,DIAY1
MOVMINH,#00H
;;;;;;;;;;
;时加1;;
;;;;;;;;;;
;;低位;;;
MOVA,HOURL
INCA
INCR1
MOVHOURL,A
CJNER1,#24,D1
LCALLD2
D1:
CJNEA,#0AH,DIAY1
MOVHOURL,#00H
;;高位;;;;
MOVA,HOURH
INCA
MOVHOURH,A
CJNEA,#03H,DIAY1
MOVHOURH,#00H
RET
HH1:
LCALLHH
RET
AS:
LCALLMM
RET
;;;;;;;;;;;;;;
;;;24小时清0;;
;;;;;;;;;;;;;;
D2:
MOVA,#0AH
MOVR1,#00H
RET;;;结束加1子程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;动态扫描时间显示;
;;;;;;;;;;;;;;;;;;;
KK:
LCALLONF7
RET
ONOFF1:
LCALLONOFF
RET
DDD1:
JNBP3.3,$
LCALLNUOL1
RET
DIS:
;;;秒;;;
JNBP3.0,ONOFF1;;直开关机
JNBP3.3,ddd1;;;进入闹钟设置
JNBP3.4,KK;;;定时开关机
MOVDPTR,#TAB
MOVA,SECL
MOVCA,@A+DPTR
MOVP0,A
MOVP2,41H
LCALLDIAY
MOVA,SECH
MOVCA,@A+DPTR
MOVP0,A
MOVP2,42H
LCALLDIAY
;;;;分;;;
MOVA,MINL
MOVCA,@A+DPTR
MOVP0,A
MOVP2,43H
SETBP0.2
LCALLDIAY
MOVA,MINH
MOVCA,@A+DPTR
MOVP0,A
MOVP2,44H
LCALLDIAY
;;;;时;;;;;
MOVA,HOURL
MOVCA,@A+DPTR
MOVP0,A
MOVP2,45H
SETBP0.2
LCALLDIAY
MOVA,HOURH
MOVCA,@A+DPTR
MOVP0,A
MOVP2,46H
LCALLDIAY
MOVA,MINL
LCCG:
;;铃声比较;;;;;;;
CJNEA,36H,DF
MOVA,MINH
CJNEA,37H,DF
MOVA,HOURL
CJNEA,38H,DF
MOVA,HOURH
CJNEA,39H,DF
LCALLLC
DF:
;;定时开机比较;;;;;;;
MOVA,MINL
CJNEA,60H,DG
MOVA,MINH
CJNEA,61H,DG
MOVA,HOURL
CJNEA,62H,DG
MOVA,HOURH
CJNEA,63H,DG
LCALLOON
DG:
;;定时关机比较;;;;;;;
MOVA,SECL
CJNEA,#00H,TT
MOVA,SECH
CJNEA,#00H,TT
MOVA,MINL
CJNEA,64H,TT
MOVA,MINH
CJNEA,65H,TT
MOVA,HOURL
CJNEA,66H,TT
MOVA,HOURH
CJNEA,67H,TT
LCALLOFF
TT:
RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;
;设置时钟,分&时;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;
MM:
;;;设置分;;;;
MOV30H,#00H
MOV31H,#00H
MOVA,MINL
INCA
MOVMINL,A
CJNEA,#0AH,DD
MOVMINL,#00H
MOVA,MINH
INCA
MOVMINH,A
CJNEA,#06H,DD
MOVMINH,#00H
HH:
;;设置时;;;
MOV30H,#00H
MOV31H,#00H
MOVA,HOURL
INCA
INCR1
MOVHOURL,A
CJNER1,#24,D4
LCALLD2
D4:
CJNEA,#0AH,DD
MOVHOURL,#00H
MOVA,HOURH
INCA
MOVHOURH,A
CJNEA,#03H,DD
MOVHOURH,#00H
DD:
LCALLWWQ
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;铃声;;;
;;;;;;;;;;;;;;
LC:
LCALLDIAY
CLRP2.7
LCALLDELAY
RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;
;;;按键直开关机子程序;;
;;;;;;;;;;;;;;;;;;;;;;
ONOFF:
;;
JNBP3.0,$
LCALLDELAY1
LCALLMN
LCALLDELAY
MOV41H,#0FFH
MOV42H,#0FFH
MOV43H,#0FFH
MOV44H,#0FFH
MOV45H,#0FFH
MOV46H,#0FFH
DJNZR3,END1
LCALLDELAY1
MOV41H,#0FEH
MOV42H,#0FDH
MOV43H,#0FBH
MOV44H,#0F7H
MOV45H,#0EFH
MOV46H,#0DFH
MOVR3,#02H
END1:
LJMPSS
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;按键响声;;
;;;;;;;;;;;;
MN:
CLRP2.7
LCALLDIAY
RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;
;;;定时开关机子程序;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;
ONF7:
JNBP3.4,$
LCALLMN
LCALLDELAY
ONF:
;;;开设置;;;;;
JNBP3.0,ONF3;跳到关设置
JNBP3.4,ON1;分设置
JNBP3.3,ON2;时设置
LCALLON5;;显示分
LCALLON6;;显示时
LJMPONF
ONF3:
;;关设置;;;;
JNBP3.0,$
LCALLMN
ONF1:
JNBP3.0,EE;;返回;;
JNBP3.4,ON3;分设置
JNBP3.3,ON4;时设置
LCALLON7;;显示分
LCALLON8;;显示时
LJMPONF1
EE:
JNBP3.0,$
LCALLMN
LJMPCS
RET
ON1:
;;;开机分设置加1;;
JNBP3.4,$
LCALLMN
MOVA,60H
INCA
MOV60H,A
CJNEA,#0AH,ONF5
MOV60H,#00H
MOVA,61H
INCA
MOV61H,A
CJNEA,#06H,ONF5
MOV61H,#00H
ONF5:
LJMPONF
ON2:
;;;开机时设置加1;;
JNBP3.3,$
LCALLMN
MOVA,62H
INCA
INCR4
MOV62H,A
CJNER4,#24,FF
LCALLON69
FF:
CJNEA,#0AH,ONF5
MOV62H,#00H
MOVA,63H
INCA
MOV63H,A
CJNEA,#03H,ONF5
MOV63H,#00H
LJMPONF
ON69:
;24小时清0
MOVA,#0AH
MOVR4,#00H
RET
ON3:
;;关机分设置加1;;
JNBP3.4,$
LCALLMN
MOVA,64H
INCA
MOV64H,A
CJNEA,#0AH,ONF6
MOV64H,#00H
MOVA,65H
INCA
MOV65H,A
CJNEA,#06H,ONF6
MOV65H,#00H
ONF6:
LJMPONF1
ON4:
;;关机时设置加1;;
JNBP3.3,$
LCALLMN
MOVA,66H
INCA
INCR5
MOV66H,A
CJNER5,#24,FF11
LCALLFF22
FF11:
CJNEA,#0AH,ONF0
MOV66H,#00H
MOVA,67H
INCA
MOV67H,A
CJNEA,#03H,ONF0
MOV67H,#00H
ONF0:
LJMPONF1
FF22:
;24小时清0
MOVA,#0AH
MOVR5,#00H
RET
ON5:
;;开机显示分;
MOVDPTR,#TAB
MOVA,60H
MOVCA,@A+DPTR
MOVP0,A
MOVP2,43H
LCALLDIAY
MOVA,61H
MOVCA,@A+DPTR
MOVP0,A
MOVP2,44H
LCALLDIAY
RET
ON6:
;;开机显示时;
MOVDPTR,#TAB
MOVA,62H
MOVCA,@A+DPTR
MOVP0,A
SETBP0.2
MOVP2,45H
LCALLDIAY
MOVA,63H
MOVCA,@A+DPTR
MOVP0,A
SETBP0.2
MOVP2,46H
LCALLDIAY
RET
ON7:
;;关机显示分;
MOVDPTR,#TAB
MOVA,64H
MOVCA,@A+DPTR
MOVP0,A
SETBP0.2
MOVP2,43H
LCALLDIAY
MOVA,65H
MOVCA,@A+DPTR
MOVP0,A
SETBP0.2
MOVP2,44H
LCALLDIAY
RET
ON8:
;;关机显示时;
MOVDPTR,#TAB
MOVA,66H
MOVCA,@A+DPTR
MOVP0,A
SETBP0.2
MOVP2,45H
LCALLDIAY
MOVA,67H
MOVCA,@A+DPTR
MOVP0,A
SETBP0.2
MOVP2,46H
LCALLDIAY
RET
OFF:
;;定时关机
MOV41H,#0FFH
MOV42H,#0FFH
MOV43H,#0FFH
MOV44H,#0FFH
MOV45H,#0FFH
MOV46H,#0FFH
RET
OON:
;;定时开机
MOV41H,#0FEH
MOV42H,#0FDH
MOV43H,#0FBH
MOV44H,#0F7H
MOV45H,#0EFH
MOV46H,#0DFH
RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;
;铃声设置;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;
DDD:
JNBP3.0,$
LCALLMN
LJMPCS;;返回;;
RET
NUOL1:
MOV36H,#0BH
NUOL:
JNBP3.0,DDD;;返回;;
JNBP3.4,WW1;跳设置分
JNBP3.3,WW2;跳设置时
LCALLNUOL2;;跳显示分
LCALLNUOL3;;跳显示时
LJMPNUOL
WW1:
;;设置分
JNBP3.4,$
LCALLMN
MOVA,36H
INCA
MOV36H,A
CJNEA,#0AH,NUOL
MOV36H,#00H
MOVA,37H
INCA
MOV37H,A
CJNEA,#06H,NUOL
MOV37H,#00H
LJMPNUOL
WW2:
;;设置时
JNBP3.3,$
LCALLMN
MOVA,38H
INCA
INCR2
MOV38H,A
CJNER2,#24,D0
LCALLD9
D0:
CJNEA,#0AH,NUOL
MOV38H,#00H
MOVA,39H
INCA
MOV39H,A
CJNEA,#03H,NUOL
MOV39H,#00H
LJMPNUOL
D9:
;24小时清0
MOVA,#0AH
MOVR2,#00H
MOV36H,#00H
MOV37H,#00H
RET
NUOL2:
;;显示分
MOVDPTR,#TAB
MOVA,36H
MOVCA,@A+DPTR
MOVP0,A
MOVP2,43H
LCALLDIAY
MOVA,37H
MOVCA,@A+DPTR
MOVP0,A
MOVP2,44H
LCALLDIAY
RET
NUOL3:
;;显示分
MOVDPTR,#TAB
MOVA,38H
MOVCA,@A+DPTR
MOVP0,A
MOVP2,45H
LCALLDIAY
MOVA,39H
MOVCA,@A+DPTR
MOVP0,A
MOVP2,46H
LCALLDIAY
RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;
;延时&;;;;;;
;;;;;;;;;;;;
DELAY:
;延时子程序.
MOVR7,#0AH
D7:
MOVR6,#0FFH;
Dp:
DJNZR6,Dp
DJNZR7,D7;
RET;
DIAY:
MOVR6,#05H
T2:
MOVR7,#0FFH
DJNZR7,$
DJNZR6,T2
RET
DELAY1:
;延时子程序.
MOVR7,#0FFH
D71:
MOVR6,#0FFH;
Dp1:
DJNZR6,Dp1
DJNZR7,D71;
RET;
TAB:
DB 0EBH,081H,0DAH,0D9H,0B1H
DB079H,07BH,0C1H,0FBH,0F9H
RET
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 DS1302 单片机 电子 时钟 实现