ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:25.42KB ,
资源ID:22863327      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22863327.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(D03编号241021文件名如何实现准确的电子时钟.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

D03编号241021文件名如何实现准确的电子时钟.docx

1、D03编号241021文件名如何实现准确的电子时钟如何实现准确的电子时钟?用单片机做时钟(除了用专门的时钟心片外)在编写定时1秒的程序中,除了采用:1。一秒只装一次初值。2。装初值时加上定时计数器已经计的数。3。和标准对比修正初值除了这些,还有什么方法? RE:如何实现准确的电子时钟? - beijing / li_mu 回复于2001-3-15 17:27:00 用一个6502,他是32768赫兹时钟, RE:如何实现准确的电子时钟? - shenzhen / soul 回复于2001-3-15 18:03:00 加上自动校时功能。 RE:如何实现准确的电子时钟? - 广州 / donggu

2、ang 回复于2001-3-15 20:11:00 mc146818,50B的用户RAM,10B的时钟简单吗? RE:如何实现准确的电子时钟? - 珠海 / 赵崇伟 回复于2001-3-16 0:06:00 1,使用稳频晶振,很贵2,单片机小心不要丢中断,会使时间变慢3,使用gps授时 RE:如何实现准确的电子时钟? - 西安 / xinxin 回复于2001-3-16 0:13:00 谢过各位了。软件方面还有什么改进吗? RE:如何实现准确的电子时钟? - 南京 / 魏小龙 回复于2001-3-16 7:25:00 最好配上收音头,1小时或1天收一次中央台的哨声用于校正,可保证累积误差最少

3、RE:如何实现准确的电子时钟? - 西安 / xinxin 回复于2001-3-16 11:38:00 好注意,谢谢 RE:如何实现准确的电子时钟? - 珠海 / PILUJUN 回复于2001-3-16 16:29:00 软件方面几乎没有什么方法了!另外可以用双振子的MCU及高精度的晶振,如NEC的MCU就有一个32768Hz的副振子,可以专用于时钟,极大地提高时钟的准确度。 RE:如何实现准确的电子时钟? - 西安 / xinxin 回复于2001-3-18 0:59:00 正象大家所说,解决了软件问题之后,时钟的精度就取决于硬件了,影响晶体频率精度的主要因素是温度,如果能使晶体的温度恒定

4、,定时精度可以提高。 RE:如何实现准确的电子时钟? - 广东 / 晓奇 回复于2001-3-18 1:07:00 春夏秋冬,这么大的温差,真的不好做。恒温的精度也伤脑筋哪,我做了一个时钟大约3天左右差1秒,不是很稳定,也许就是温度问题。 RE:如何实现准确的电子时钟? - 西安 / xinxin 回复于2001-3-18 1:31:00 我到临潼天文台去过,哪里的标准钟放在地下,温度恒定,专家说,现在的晶体可以达到-6次方精度,一天86400秒,约误差0.8秒,如果恒温,提高一个数量级没问题。RE:如何实现准确的电子时钟? - 广东 / 晓奇 回复于2001-3-18 1:53:00 谢谢x

5、inxin大虾,看来软件上的工夫确实已经做尽了,我还用上了闰nop同样还是有误差。 RE:如何实现准确的电子时钟? - xian / jiangyu 回复于2001-3-18 9:33:00 xinxin 老师,我忘记了从什么帖子里看到你在51定时器装一次初值的程序,你能讲讲原理吗?我在杂志上看到的定时准确需要考虑中断响应时间,我在时钟程序的中断程序在后边,可是我怎么调定时精度都无法达到我的手表的精度,两天差1S左右,初值加1快,初值减1慢,我觉得好象不是晶体不稳的问题,是无法细调的问题。请你讲讲。晶体6M,计数50000次。IN_TO:PUSH ACCPUSH PSWMOV A,#0B0HA

6、DD A,TL0MOV TL0,AMOV TH0,#3CHDJNZ 23H,NEXTMOV 23H,#10INC 22HNEXT:POP PSWPOP ACCRETI其中22H放秒。 RE:如何实现准确的电子时钟? - 西安 / xinxin 回复于2001-3-18 10:54:00 你分析的对,确实是不能细调的问题。在51定时器做电子钟的误差分析里,有3项:1。机器周期误差,由晶体频率相对变化的误差产生。2。中断响应延迟误差。3。调整精度产生的误差,就是计数初值改变1对应的时间差。第1条是更精确定时问题,与硬件有关,楼上有讨论。第2条你已经考虑过了。第3条是你的程序问题:可以这么计算,你的

7、定时常数改变1,对应的1S定时改变了多少?每1次中断,你的定时器计数50000,共10次,机器周期2US:50000*10*2US=1S,定时常数改变1,设计数器改为50001,则定时间隔为:50001*10*2US=1.000020S,改变了20US,每天86400S,共计86400*20US=1.7S当然两天改变超过1S。即使你把晶体频率提高到12M,每天也会差0.85S.采用1S装一次初值,可以使调节精度增加8-10倍:中断程序为:IN_TO:DJNZ 23H,T0_ENDMOV 23H,#8PUSH ACCPUSH PSWMOV A,#0E0HADD A,TL0MOV TL0,AMOV

8、 TH0,#5EHINC 22HPOP PSWPOP ACCT0_END:RETI其思想是:计数器每次溢出后继续由0在计数,同样是500000次计数,500000=8*65536-24288,其中24288=5EE0H,如果计数初值改变1,则对应的计数值改变为:8*65536-24287=500001,也就是改变了1个机器周期,只有2US,一天0.17S.调节精度提高了10倍。这个帖子发出后,我也在想进一步提高的办法。采用稳频晶体是硬件上的考虑。在软件上还有什么办法可以更细的调节?受 晓奇 兄 “润”的启发,我想,采用另一个计数器,1分钟装一次初值,那细调精度就可以提高60倍,到达每分钟时,再

9、对秒计时的采取“润”修正,但这只是个想法,实现起来还有困难,比如两个计数器的优先问题,会不会相互影响。望大家出高招。RE:如何实现准确的电子时钟? - shenzhen / yap 回复于2001-3-18 11:03:00 还是程序问题, 定时准确确实需要考虑中断响应时间. 对于你的应用, 加1快, 不加1慢, 假如误差正好为0.5的话, 计数50000次的误差率为0.5/50000=1/100000, 那么一天的误差为86400/100000=0.864秒, 所以两天差1秒也就不足为奇了(手表也有误差的).给你一个软件解决的办法供参考, 用此方法可以达到软件上的零误差, 计时精度完全取决于

10、晶振的精度.其实也很简单, 不用给定时器装任何初值, 定时器总是从0到65535后自动翻转, 然后你计中断数n, 用n去计算时间. 对于6M的频率, 每个中断的时间为 131072 us.还有些算法技巧, 自己去琢磨吧. RE:如何实现准确的电子时钟? - 广东 / 晓奇 回复于2001-3-18 11:20:00 定时还是要以秒为单位,把秒单位误差消除到最小以后,一般会出现日误差,或数日误差1秒,我的做法是把这个误差秒摊算为多少个nop,在把这个nop有选择的插入在rewrite之前,这样的修正解决了一点精度问题,这是从世界时润秒里抄来的,如果想简单还可以:假定是3天快一秒,则每3天在后半夜

11、润上1秒,神不知鬼不觉,不过这样的钟别卖给“夜猫子”,给夜猫子的最好在白天润秒好一点:)我自己做的钟还没有调好呢,主要是实验了一下,找到了解决的办法以后就不再有那么浓厚的兴趣了,有点“叶公好龙”。RE:如何实现准确的电子时钟? - 西安 / xinxin 回复于2001-3-18 11:29:00 晓奇兄,你如果找到了好的办法,也告诉我们,让我们分享。我有一种增大计数器计数位数的方法,不知对你有用没用?我是想用在日修正里,用T1计一日,T1一日中断一次。实际方法也很简单,就是更改TH1.7,发现是1了就清0,同时计下清0的次数,到达一天时才允许T1中断。RE:如何实现准确的电子时钟? - xi

12、an / jiangyu 回复于2001-3-18 11:38:00 我理解了,xinxin 和 shenzhen / yap 说的是相同的道理,不过 xinxin 的更详细,还给出了程序,并且计算了初值,8次中断,其中7次是和 yap 说的初值为0一样,只有一次装初值。谢谢楼上几位了。 RE:如何实现准确的电子时钟? - 广东 / 晓奇 回复于2001-3-18 11:43:00 xinxin的长时间中断一次的做法确实让我大受启发,我用at89c51,一个扫描键盘和显示,一个定时算秒,资源好像就这么多了,我当初编定时好像是每秒钟重装ct0 90几次,还算了一个表,逐个分频法试,如果一早有xi

13、nxin的办法,就不用那么辛苦了 :) RE:如何实现准确的电子时钟? - xian / jiangyu 回复于2001-3-18 11:54:00 有用就好。不过具体实现起来还有一点一定要注意,就是把TH0.7由1清为0的时候,要查一下TL0.7,如果TL0.7=1就别清TH0.7,只有在TL0.7=0时才清TH0.7,也就是要避开进位的可能。 RE:如何实现准确的电子时钟? - 西安 / xinxin 回复于2001-3-18 12:20:00 jiangyu: 看来你电话里说的问题已经解决了,我还没试呢。 RE:如何实现准确的电子时钟? - shenzhen / yap 回复于2001-

14、3-18 12:24:00 为什么要装初值? 不要因为计算问题去牺牲精度, 我就是把我的计时单位定义为1个中断(0.131072) 秒, 只是在显示时再去换算成以时分秒为单位的时间. RE:如何实现准确的电子时钟? - 上海 / tyw 回复于2001-3-18 16:21:00 各位讨沦了半天,想干什么?要这样精确的时钟,我的看法是如果作为分时计度器之类的抄表系统终端计时,靠晶振是不够的,十年以后的累计不可想象.我的方法是用中央台校时信号校准,看似复杂一点,但大批量加工时,可把校时装置模块化.最好用短波10M信号,能加入频率锁相电路,性能更可靠.中波的我做过,电容器用高频蜡封固,开了一年也不

15、逃台,中波优点是频带较宽. RE:如何实现准确的电子时钟? - 景洪市 / suncat 回复于2001-3-18 19:47:00 32768Hz的晶体,加上一个24分频就可以了,价格也就0.5+1.2元。 RE:如何实现准确的电子时钟? - 景洪市 / suncat 回复于2001-3-18 19:49:00 32768Hz的晶体,加上一个分频就可以了,价格也就0.5+1.2元。 RE:如何实现准确的电子时钟? - 深圳 / hunterluo 回复于2001-3-18 23:42:00 时钟源的精度是问题的关键,软件只是为了显现这个精度,并不能提高精度,32768的精度不高(在5-10P

16、PM)左右,进行温度补尝差不多是唯一办法了,或象手表那样带在身上,就很准了。 RE:如何实现准确的电子时钟? - 西安 / xinxin 回复于2001-3-19 13:14:00 总结一下:外加晶体震荡除非是恒温或稳频晶体能提高精度,用普通方法外加普通晶体确实无法提高精度。单片机用的晶体据说可达到1-5PPM,比普通手表的晶体5-10可能还要稍高,至少可以说差不多相同的精度吧。上边软件的讨论目的是在把软件的资源发掘到最大。RE:如何实现准确的电子时钟? - 郑州 / 谢占军121 回复于2001-3-19 15:50:00 我想了解89c51的串行通讯,以及用vb6.0编写通讯程序. RE:

17、如何实现准确的电子时钟? - 扬州市 / sldz 回复于2001-3-20 22:22:00 利用50赫芝交流电压过零点脉冲作门开关,对ALE+RD的脉冲进行记数,然后将记数值与初值通过一定的算法比对修正。 RE:如何实现准确的电子时钟? - Nanjing / 星星 回复于2001-3-21 20:17:00 楼上的讨论使我糊涂了,好象说定时器中断可能产上几个不确定的机器周期的误差。其实用定时器可做的不多计或少计一个机器周期!没有累计误差。我的定时器每秒中断100或200次,用这10mS或5mS做钟基准,也没因软件产生多大误差。我的钟精度只与晶体有关。我可没有定时器单独做钟,还要用这5-1

18、0m做采样、测试、键盘等。提高时钟精度应设法提高晶体的精度。 RE:如何实现准确的电子时钟? - 西安 / xinxin 回复于2001-3-21 23:09:00 to 上海 / tyw:请较详细介绍用电台报时信号校准时钟的方法。 RE:如何实现准确的电子时钟? - 广东 / 晓奇 回复于2001-3-21 23:50:00 请到c51论坛上艘一下“时钟”,那里曾经有过一轮“博杀” RE:如何实现准确的电子时钟? - 深圳 / hunterluo 回复于2001-3-21 23:53:00 一般买到的通用晶体(单片机本振用)不作校准使用,精度在几十PPM,比钟表的要差些,一般通信用的晶体是5

19、PPM,10PPM,小于2PPM,一般都要温度补尝了。1PPM的价格在10元以上,体积一般都大很多,进口仪器用1PPM的温补晶体要一千多! RE:如何实现准确的电子时钟? - Nanjing / 星星 回复于2001-3-22 7:52:00 那儿有较便宜的 1ppm 晶体?价格多少? RE:如何实现准确的电子时钟? - 上海 / tyw 回复于2001-3-25 9:53:00 收音头可用普通外差式收音机(如有一种袖珍式的用耳塞听的调频调幅收音机就很合用),直接从喇叭或耳机插口取出信号(可能要作一些电平调整),输送到二个带通滤波器的输入端,一个调到1600Hz,一个调到1000Hz(最后一响

20、),带通可用LM567做,外围另件少.(也可用LM324做,较复杂)在时钟分计时到58分时对两个带通输出端采样,如能测出带通输出大于0.5秒就计一次数(小于0.5秒有可能是音乐声),1600Hz计数5次,1000Hz计一次,条件满足,就对你的电子钟分十位,个位清零.如果清零前分十位为0,则时个位不处理,分十位不为0,则还需对时个位加1.在每小时的58分左右能符合1600Hz大于0.5秒且连响5次再加1000Hz一次只能是报时信号.这个概率足够大了.收音机调到550KHz(中央台),频带较宽,不易跑台,复盖面广,不用天线.用调频段,容易实现锁频,但复盖面不大(100Km方园),郊区收不好.短波复

21、盖面广,易锁频,但通频带窄,要天线锁相环,中波可用LM567(500K)或CD4046做,但几百pf的变容二极管不好找.短波锁相(即压控振荡器)价格较贵(20多元).不过我用中波试过,密封双连把拉线盘拆掉,调好频率后用高频蜡固定,用了一年很正常(室内!). RE:如何实现准确的电子时钟? - 西安 / xinxin 回复于2001-3-25 13:34:00 讲的很详细,谢谢TYW。 RE:如何实现准确的电子时钟? - 广州 / jw5th 回复于2001-3-26 4:07:00 买一只信誉不错的石英表,(年误差不超过2秒,如RADO等),其余的不必祥述了吧。 RE:如何实现准确的电子时钟?

22、 - 深圳 / jasum 回复于2001-3-26 11:12:00 用单片机做时钟,如果用32.768KHz的晶振,再使用一个定时中断,软件处理容易,精度由硬件影响. 若用其它频率作为定时器的时钟源,软件处理绝对不要引起累积误差,所以计数为循环计数, 不置初值, 因此装初值,加补偿绝对不可取, 这是初学者常犯的错误,若无人指点,会一直被此问题困扰. RE:如何实现准确的电子时钟?大家请注意,没有误差 - 郑州 / syj 回复于2001-3-26 16:44:00 我来说几句,你们可以用8031的定时中断方式2计数初值自动装入,误差当然就没有了只不过1秒钟中断次数较频繁,对其他程序有一点影

23、响,我做过这么1个万年历,准确度是DS12887的300多倍(12MHZ/32。768KHZ)不行给我发EMAIL RE:如何实现准确的电子时钟? - 绵阳市 / yunlong_z 回复于2001-3-26 20:14:00 jiangy先生:那段程序里是不是还应该考虑ADD A,TL0和MOV TL0,A所占有的周期?RE:如何实现准确的电子时钟? - 西安 / xinxin 回复于2001-3-27 0:33:00 实际上,初值5EE0H是理论值,象ADD A,TL0之类的固定误差可以通过对初值的微调加以修正。如果1S的计数有500000次,可以修正到1/500000。 RE:如何实现准

24、确的电子时钟? - Nanjing / 星星 回复于2001-3-27 9:59:00 TO tyw:前几声应是 800Hz. 你可能调在谐波上了。 RE:如何实现准确的电子时钟? - Nanjing / 星星 回复于2001-3-27 10:08:00 如果真需要很高精度,建议买个GPS接收头它每秒都有数字输出,精度不比中央台差。 RE:如何实现准确的电子时钟? - 西安 / xinxin 回复于2001-3-27 13:16:00 GPS的精度就高多了,但是RMB数得4位呀。对于民用,电台校时足够了。 RE:如何实现准确的电子时钟? - 广州 / vectorlee 回复于2001-3-2

25、7 17:31:00 程序准有个鸟用!在这行谁都知道晶振没几个准! RE:如何实现准确的电子时钟? - 广东 / 晓奇 回复于2001-3-27 18:22:00 醉翁之意不在酒啊,老兄。主要是讨论编程思路、技巧。 RE:如何实现准确的电子时钟? - 广州 / jw5th 回复于2001-3-28 7:15:00 定时系数非自动重载方式的软件导致的定时误差来自两个因素:1、定时器计数溢出后,定时器立即停止计数,要等当前正在执行的指令运行结束后的下一个机器周期,才能响应中断,每次响应前执行到哪一条指令不可预测,导致的延迟也就不可预测。2、定时系数重载后,定时器才重新开始计数,因此而导致的延迟可以

26、预测。RE:如何实现准确的电子时钟? - Lianyungang / makesoft 回复于2001-3-28 10:19:00 不同意楼上的说法定时器计数溢出后,定时器立即停止计数。 RE:如何实现准确的电子时钟? - 广东 / 晓奇 回复于2001-3-28 13:01:00 溢出后会自动继续计数,只不过是从零开始. RE:如何实现准确的电子时钟? - 广州 / jw5th 回复于2001-3-28 18:51:00 Sorry,是我的错,我把其他CPU的特性搬到51来了. RE:如何实现准确的电子时钟? - 西安 / xinxin 回复于2001-3-28 18:52:00 定时器是独

27、立于CPU的硬件计数器,51CPU只管理启动和装初值。一旦定时器启动之后,就一直在计数,正象 makesoft 和晓奇所说的 在定时器溢出后会从0重新开始计数,不存在等待问题。定时的误差除了晶体自身的误差(主要指晶体的频率漂移误差,而晶体频率偏离标称值的固定的绝对误差是可以修正的)以外,就是来自从定时器溢出中断到装初值这段时间的误差,由于从溢出到响应中断的时间不确定,所以存在不定的误差。还有上边提到的修正精度问题。采用1秒装1次初值就是为了提高定时修正精度的。在装初值时加上计数器已经计的数值,就是为了解决从定时器溢出到装初值之间的不确定误差的。深圳 / jasum 的特殊晶体32768晶体选择

28、有独到之处,免除了装初值的误差。RE:如何实现准确的电子时钟? - 上海 / tyw 回复于2001-3-28 19:03:00 Sorry,前几声应是 800Hz.最后一响,中央台为1000Hz,上海台为1600Hz. RE:如何实现准确的电子时钟? - guangzhou / wuyingjie 回复于2001-3-30 0:53:00 我曾考虑过类似的钟,用PIC单片机,双晶振,16位计数器产生秒中断,即秒误差不大于1/32786,如果有误差(肯定有),设定修正值,每天清除一次误差,每月再清一次,每年还要清一次。这样经过几年的经验积累,这钟的准确度应该很高。就算温度影响,一个地方每年的平

29、均气温相差不大,就算晶振不准,这钟也都很准了。理论上,每年误差小于1秒。我估计10秒以内应该是不成问题的。晶振不在于准,而在于稳。如果高兴用个大功率(5W)电阻来恒温,也没什么难的。当然,如果有广播对时,我上面说的也就意义不大。美国、英国、日本、意大利等已有了实时间无线广播(每分钟一帧),中国也可能会实现的。那时的广播钟任何时刻分钟都是准确的。 RE:如何实现准确的电子时钟? - 广州 / jw5th 回复于2001-4-1 7:55:00 在广州的朋友可以试一试接受139.000MHz的信号,每5分钟一帧,512BPS夹杂在寻呼信号中发送。 RE:如何实现准确的电子时钟? - 绵阳市 / y

30、unlong 回复于2001-4-2 11:05:00 wuyingjie :请问如何用大功率电阻来对晶体恒温?请指点。 RE:如何实现准确的电子时钟? - 苏州 / lyghj 回复于2001-4-4 17:44:00 以前在无线电杂志(应该在85年以后,95年以前)上看到有这样一种思路:彩色电视信号的副载波信号要求要有很高的稳定性,CCTV的电视信号中的副载波好象是用原子钟稳频的。所以可以利用这个信号来稳定时钟,不过这样虽然收音头可以省掉了,但要多加了个高频头和相应的中放电路。 RE:如何实现准确的电子时钟? - 广东 / 晓奇 回复于2001-4-4 17:50:00 可以选择合适的ptc恒温吧?lm399稳压源好像就有恒温电路 RE:如何实现准确的电子时钟? - 深圳 / 小麦 回复于2001-5-21 23:01:00 经过这番讨论,我想大家都懂了,我真是收益不少呀! RE:如何实现准确的电子时钟? - 西安 / xinxin 回复于2001-5-22 1:02:00 还有人来E-MAIL问调节精度问题,回答如下:(以6MHZ晶体为例)采用方式1定时 1S=10*(65536-15536)*2US ,如果初值15536修改1时,调节量为1S/50000,一天就是1.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1