找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6900|回复: 4
打印 上一主题 下一主题
收起左侧

关于ds1302的问题

[复制链接]
跳转到指定楼层
楼主
ID:25867 发表于 2010-9-3 15:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有个问题就是,ds1302的晶振有没必要加6PF的电容呢?我发现在51hei-5开发板上用手放在晶振上,时间走的就明显的快,不知道是怎么回事.
[此贴子已经被作者于2010-9-3 15:52:27编辑过]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2010-9-3 16:52 | 只看该作者
完全没有必要加6PF的电容,因为ds1302芯片的内部已经集成了这个电容,用手摸那个很小的圆筒晶振会导致会导致各种不可预见的错误,因为你摸上去就是改变了他的分布电容,以及人体所带的静电还有肯能造成干扰。所以一定不要用手去摸小圆筒晶振
回复

使用道具 举报

板凳
ID:20083 发表于 2010-9-4 16:15 | 只看该作者
我用ds1302做的电子钟,老是会自己走快。。 半个月大概快了两分钟
回复

使用道具 举报

地板
ID:1 发表于 2010-9-5 01:12 | 只看该作者

  你的15天快120秒,算一起来一天也有8秒的误差,你这种情况在实际应用中是很常见的,解决方法:

 

   用DS1302制作电子时钟,由于32678K的晶振误差原因造成时钟走时不准确,在国内能买到的晶振精度都不高,每天误差都差6到10秒,如果购买国外的高精度的晶振价格又非常高,不如用单片机的计时器编程走时更准确,可以进行误差调整,本人作了几个用DS1302时钟,由于32678K晶振的原因,每天都快6-9秒之间,原来用的方法是每天自动校一次,由于每天的误差不是整数,比如每天快7.6秒,这样每天就得自动校8秒,又造成每天慢0.4秒,每月误差又是12秒,走时还是不准确,本人改成了每差1秒校正一次的方法,原理是:比如每天快7.6秒,24*60/7.6=189,也就是189分钟快1秒,每189分钟就自动校一次时钟,这样校时理论上每年的误差最大不到6秒,本人的时钟4个月误差不到1秒,属于相当准确喽,现在提供给大家分享。

设计原理是:

由于程序的大小和原理不同,每分钟读取DS1302的次数也不同,这样先设置二个变量,一个是分钟比较变量,用于判断分钟不等相等时计数器变量加1,另一个是校时计数变量,用于校时时间计数,当计数器变量等于189时,DS1302自动修正一次,程序如下:
代码:

变量设置
BJBL DATA 20H ;分钟比较变量,用于判断分钟不等相等时计数器加1
JSBL DATA 21H ;校时计数变量,用于校时时间计数
MOV BJBL,#00H
MOV JSBL,#00H
自动校时子程序
AUTOXS:
MOV A,MIN
CJNE A,BJBL,AS1
JMP AS2
AS1: MOV BJBL,A
MOV A,JSBL
INC A
MOV JSBL,A
AS2: MOV A,JSBL
CJNE A,#0D3H,AS5
MOV A,SEC
CJNE A,#01H,AS5 ;秒等于1时校回到0秒

MOV R1,#8EH ;写保护寄存器
MOV R0,#00H ;允许写入
LCALL WRITE ;调用写DS1302程序

MOV R1,#80H ;写秒寄存器
MOV R0,#00H ;启动振荡器工作
LCALL WRITE ;调用写DS1302程序

MOV R1,#8EH ;写保护寄存器
MOV R0,#80H ;禁止写入
LCALL WRITE ;调用写DS1302程序

MOV JSBL,#00H
AS5: RET
将此子程序在每次读取DS1302时调用
回复

使用道具 举报

5#
ID:21655 发表于 2010-10-11 22:39 | 只看该作者
管理员很耐心哦,楼主也不说声谢谢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表