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

上传人:b****1 文档编号:22863327 上传时间:2023-04-28 格式:DOCX 页数:16 大小:25.42KB
下载 相关 举报
D03编号241021文件名如何实现准确的电子时钟.docx_第1页
第1页 / 共16页
D03编号241021文件名如何实现准确的电子时钟.docx_第2页
第2页 / 共16页
D03编号241021文件名如何实现准确的电子时钟.docx_第3页
第3页 / 共16页
D03编号241021文件名如何实现准确的电子时钟.docx_第4页
第4页 / 共16页
D03编号241021文件名如何实现准确的电子时钟.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

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

《D03编号241021文件名如何实现准确的电子时钟.docx》由会员分享,可在线阅读,更多相关《D03编号241021文件名如何实现准确的电子时钟.docx(16页珍藏版)》请在冰豆网上搜索。

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

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

如何实现准确的电子时钟?

用单片机做时钟(除了用专门的时钟心片外)在编写定时1秒的程序中,除了采用:

1。

一秒只装一次初值。

2。

装初值时加上定时计数器已经计的数。

3。

和标准对比修正初值

除了这些,还有什么方法?

RE:

如何实现准确的电子时钟?

-beijing/li_mu回复于2001-3-1517:

27:

00

用一个6502,他是32768赫兹时钟,

RE:

如何实现准确的电子时钟?

-shenzhen/soul回复于2001-3-1518:

03:

00

加上自动校时功能。

RE:

如何实现准确的电子时钟?

-广州/dongguang回复于2001-3-1520:

11:

00

mc146818,50B的用户RAM,10B的时钟简单吗?

RE:

如何实现准确的电子时钟?

-珠海/赵崇伟回复于2001-3-160:

06:

00

1,使用稳频晶振,很贵

2,单片机小心不要丢中断,会使时间变慢

3,使用gps授时

RE:

如何实现准确的电子时钟?

-西安/xinxin回复于2001-3-160:

13:

00

谢过各位了。

软件方面还有什么改进吗?

RE:

如何实现准确的电子时钟?

-南京/魏小龙回复于2001-3-167:

25:

00

最好配上收音头,1小时或1天收一次中央台的哨声用于校正,可保证累积误差最少

RE:

如何实现准确的电子时钟?

-西安/xinxin回复于2001-3-1611:

38:

00

好注意,谢谢

RE:

如何实现准确的电子时钟?

-珠海/PILUJUN回复于2001-3-1616:

29:

00

软件方面几乎没有什么方法了!

另外可以用双振子的MCU及高精度的晶振,如NEC的

MCU就有一个32768Hz的副振子,可以专用于时钟,极大地提高时钟的准确度。

RE:

如何实现准确的电子时钟?

-西安/xinxin回复于2001-3-180:

59:

00

正象大家所说,解决了软件问题之后,时钟的精度就取决于硬件了,影响晶体频率精度的主要因素是温度,如果能使晶体的温度恒定,定时精度可以提高。

RE:

如何实现准确的电子时钟?

-广东/晓奇回复于2001-3-181:

07:

00

春夏秋冬,这么大的温差,真的不好做。

恒温的精度也伤脑筋哪,我做了一个时钟大约3天左右差1秒,不是很稳定,也许就是温度问题。

RE:

如何实现准确的电子时钟?

-西安/xinxin回复于2001-3-181:

31:

00

我到临潼天文台去过,哪里的标准钟放在地下,温度恒定,专家说,现在的晶体可以达到-6次方精度,一天86400秒,约误差0.8秒,如果恒温,提高一个数量级没问题。

RE:

如何实现准确的电子时钟?

-广东/晓奇回复于2001-3-181:

53:

00

谢谢xinxin大虾,看来软件上的工夫确实已经做尽了,我还用上了闰nop同样还是有误差。

RE:

如何实现准确的电子时钟?

-xian/jiangyu回复于2001-3-189:

33:

00

xinxin老师,我忘记了从什么帖子里看到你在51定时器装一次初值的程序,你能讲讲原理吗?

我在杂志上看到的定时准确需要考虑中断响应时间,我在时钟程序的中断程序在后边,可是我怎么调定时精度都无法达到我的手表的精度,两天差1S左右,初值加1快,初值减1慢,我觉得好象不是晶体不稳的问题,是无法细调的问题。

请你讲讲。

晶体6M,计数50000次。

IN_TO:

PUSHACC

PUSHPSW

MOVA,#0B0H

ADDA,TL0

MOVTL0,A

MOVTH0,#3CH

DJNZ23H,NEXT

MOV23H,#10

INC22H

NEXT:

POPPSW

POPACC

RETI

其中22H放秒。

RE:

如何实现准确的电子时钟?

-西安/xinxin回复于2001-3-1810:

54:

00

你分析的对,确实是不能细调的问题。

在51定时器做电子钟的误差分析里,有3项:

1。

机器周期误差,由晶体频率相对变化的误差产生。

2。

中断响应延迟误差。

3。

调整精度产生的误差,就是计数初值改变1对应的时间差。

第1条是更精确定时问题,与硬件有关,楼上有讨论。

第2条你已经考虑过了。

第3条是你的程序问题:

可以这么计算,你的定时常数改变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:

DJNZ23H,T0_END

MOV23H,#8

PUSHACC

PUSHPSW

MOVA,#0E0H

ADDA,TL0

MOVTL0,A

MOVTH0,#5EH

INC22H

POPPSW

POPACC

T0_END:

RETI

其思想是:

计数器每次溢出后继续由0在计数,同样是500000次计数,500000=8*65536-24288,其中24288=5EE0H,如果计数初值改变1,则对应的计数值改变为:

8*65536-24287=500001,也就是改变了1个机器周期,只有2US,一天0.17S.

调节精度提高了10倍。

这个帖子发出后,我也在想进一步提高的办法。

采用稳频晶体是硬件上的考虑。

在软件上还有什么办法可以更细的调节?

受晓奇兄“润”的启发,我想,采用另一个计数器,1分钟装一次初值,那细调精度就可以提高60倍,到达每分钟时,再对秒计时的采取“润”修正,但这只是个想法,实现起来还有困难,比如两个计数器的优先问题,会不会相互影响……。

望大家出高招。

RE:

如何实现准确的电子时钟?

-shenzhen/yap回复于2001-3-1811:

03:

00

还是程序问题,定时准确确实需要考虑中断响应时间.对于你的应用,加1快,不加1慢,假如误差正好为0.5的话,计数50000次的误差率为0.5/50000=1/100000,那么一天的误差为86400/100000=0.864秒,所以两天差1秒也就不足为奇了(手表也有误差的).

给你一个软件解决的办法供参考,用此方法可以达到软件上的零误差,计时精度完全取决于晶振的精度.

其实也很简单,不用给定时器装任何初值,定时器总是从0到65535后自动翻转,然后你计中断数n,用n去计算时间.对于6M的频率,每个中断的时间为131072us.

还有些算法技巧,自己去琢磨吧.

RE:

如何实现准确的电子时钟?

-广东/晓奇回复于2001-3-1811:

20:

00

定时还是要以秒为单位,把秒单位误差消除到最小以后,一般会出现日误差,或数日误差1秒,我的做法是把这个误差秒摊算为多少个nop,在把这个nop有选择的插入在rewrite之前,这样的修正解决了一点精度问题,这是从世界时润秒里抄来的,如果想简单还可以:

假定是3天快一秒,则每3天在后半夜润上1秒,神不知鬼不觉,不过这样的钟别卖给“夜猫子”,给夜猫子的最好在白天润秒好一点:

我自己做的钟还没有调好呢,主要是实验了一下,找到了解决的办法以后就不再有那么浓厚的兴趣了,有点“叶公好龙”。

RE:

如何实现准确的电子时钟?

-西安/xinxin回复于2001-3-1811:

29:

00

晓奇兄,你如果找到了好的办法,也告诉我们,让我们分享。

我有一种增大计数器计数位数的方法,不知对你有用没用?

我是想用在日修正里,用T1计一日,T1一日中断一次。

实际方法也很简单,就是更改TH1.7,发现是1了就清0,同时计下清0的次数,到达一天时才允许T1中断。

RE:

如何实现准确的电子时钟?

-xian/jiangyu回复于2001-3-1811:

38:

00

我理解了,xinxin和shenzhen/yap说的是相同的道理,不过xinxin的更详细,还给出了程序,并且计算了初值,8次中断,其中7次是和yap说的初值为0一样,只有一次装初值。

谢谢楼上几位了。

RE:

如何实现准确的电子时钟?

-广东/晓奇回复于2001-3-1811:

43:

00

xinxin的长时间中断一次的做法确实让我大受启发,我用at89c51,一个扫描键盘和显示,一个定时算秒,资源好像就这么多了,我当初编定时好像是每秒钟重装ct090几次,还算了一个表,逐个分频法试,如果一早有xinxin的办法,就不用那么辛苦了:

RE:

如何实现准确的电子时钟?

-xian/jiangyu回复于2001-3-1811:

54:

00

有用就好。

不过具体实现起来还有一点一定要注意,就是把TH0.7由1清为0的时候,要查一下TL0.7,如果TL0.7=1就别清TH0.7,只有在TL0.7=0时才清TH0.7,也就是要避开进位的可能。

RE:

如何实现准确的电子时钟?

-西安/xinxin回复于2001-3-1812:

20:

00

jiangyu:

看来你电话里说的问题已经解决了,我还没试呢。

RE:

如何实现准确的电子时钟?

-shenzhen/yap回复于2001-3-1812:

24:

00

为什么要装初值?

不要因为计算问题去牺牲精度,我就是把我的计时单位定义为1个中断(0.131072)秒,只是在显示时再去换算成以时分秒为单位的时间.

RE:

如何实现准确的电子时钟?

-上海/tyw回复于2001-3-1816:

21:

00

各位讨沦了半天,想干什么?

要这样精确的时钟,我的看法是如果作为分时计度器之类的

抄表系统终端计时,靠晶振是不够的,十年以后的累计不可想象.我的方法是用中央台校

时信号校准,看似复杂一点,但大批量加工时,可把校时装置模块化.最好用短波10M信号,

能加入频率锁相电路,性能更可靠.中波的我做过,电容器用高频蜡封固,开了一年也不逃

台,中波优点是频带较宽.

RE:

如何实现准确的电子时钟?

-景洪市/suncat回复于2001-3-1819:

47:

00

32768Hz的晶体,加上一个24分频就可以了,价格也就0.5+1.2元。

RE:

如何实现准确的电子时钟?

-景洪市/suncat回复于2001-3-1819:

49:

00

32768Hz的晶体,加上一个15分频就可以了,价格也就0.5+1.2元。

RE:

如何实现准确的电子时钟?

-深圳/hunterluo回复于2001-3-1823:

42:

00

时钟源的精度是问题的关键,软件只是为了显现这个精度,并不能提高精度,

32768的精度不高(在5--10PPM)左右,进行温度补尝差不多是唯一办法了,或象手表那样带在身上,就很准了。

RE:

如何实现准确的电子时钟?

-西安/xinxin回复于2001-3-1913:

14:

00

总结一下:

外加晶体震荡除非是恒温或稳频晶体能提高精度,用普通方法外加普通晶体确实无法提高精度。

单片机用的晶体据说可达到1-5PPM,比普通手表的晶体5-10可能还要稍高,至少可以说差不多相同的精度吧。

上边软件的讨论目的是在把软件的资源发掘到最大。

RE:

如何实现准确的电子时钟?

-郑州/谢占军121回复于2001-3-1915:

50:

00

我想了解89c51的串行通讯,以及用vb6.0编写通讯程序.

RE:

如何实现准确的电子时钟?

-扬州市/sldz回复于2001-3-2022:

22:

00

利用50赫芝交流电压过零点脉冲作门开关,对ALE+RD的脉冲进行记数,然后将记数值与初值通过一定的算法比对修正。

RE:

如何实现准确的电子时钟?

-Nanjing/星星回复于2001-3-2120:

17:

00

楼上的讨论使我糊涂了,好象说定时器中断可能产上几个不确定的机器周期的误差。

其实用定时器可做的不多计或少计一个机器周期!

没有累计误差。

我的定时器每秒中断100或200次,用这10mS或5mS做钟基准,也没因软件产生多大误差。

我的钟精度只与晶体有关。

我可没有定时器单独做钟,还要用这5-10m做采样、测试、键盘等。

提高时钟精度应设法提高晶体的精度。

RE:

如何实现准确的电子时钟?

-西安/xinxin回复于2001-3-2123:

09:

00

to上海/tyw:

请较详细介绍用电台报时信号校准时钟的方法。

RE:

如何实现准确的电子时钟?

-广东/晓奇回复于2001-3-2123:

50:

00

请到c51论坛上艘一下“时钟”,那里曾经有过一轮“博杀”

RE:

如何实现准确的电子时钟?

-深圳/hunterluo回复于2001-3-2123:

53:

00

一般买到的通用晶体(单片机本振用)不作校准使用,精度在几十PPM,比钟表的要差些,一般通信用的晶体是5PPM,10PPM,小于2PPM,一般都要温度补尝了。

1PPM的价格在10元以上,体积一般都大很多,进口仪器用1PPM的温补晶体要一千多!

RE:

如何实现准确的电子时钟?

-Nanjing/星星回复于2001-3-227:

52:

00

那儿有较便宜的1ppm晶体?

价格多少?

RE:

如何实现准确的电子时钟?

-上海/tyw回复于2001-3-259:

53:

00

收音头可用普通外差式收音机(如有一种袖珍式的用耳塞听的调频调幅收音机就很合用),直接从喇叭或耳机插口取出信号(可能要作一些电平调整),输送到二个带通滤波器的输入端,一个调到1600Hz,一个调到1000Hz(最后一响),带通可用LM567做,外围另件少.(也可用LM324做,较复杂)在时钟分计时到58分时对两个带通输出端采样,如能测出带通输出大于0.5秒就计一次数(小于0.5秒有可能是音乐声),1600Hz计数5次,1000Hz计一次,条件满足,就对你的电子钟分十位,个位清零.如果清零前分十位为"0",则时个位不处理,分十位不为"0',则还需对时个位加"1".在每小时的58分左右能符合1600Hz大于0.5秒且连响5次再加1000Hz一次只能是报时信号.这个概率足够大了.收音机调到550KHz(中央台),频带较宽,不易跑台,复盖面广,不用天线.用调频段,容易实现锁频,但复盖面不大(100Km方园),郊区收不好.短波复盖面广,易锁频,但通频带窄,要天线锁相环,中波可用LM567(500K)或CD4046做,但几百pf的变容二极管不好找.短波锁相(即压控振荡器)价格较贵(20多元).

不过我用中波试过,密封双连把拉线盘拆掉,调好频率后用高频蜡固定,用了一年很正常(室内!

).

RE:

如何实现准确的电子时钟?

-西安/xinxin回复于2001-3-2513:

34:

00

讲的很详细,谢谢TYW。

RE:

如何实现准确的电子时钟?

-广州/jw5th回复于2001-3-264:

07:

00

买一只信誉不错的石英表,(年误差不超过2秒,如RADO等),其余的不必祥述了吧。

RE:

如何实现准确的电子时钟?

-深圳/jasum回复于2001-3-2611:

12:

00

用单片机做时钟,如果用32.768KHz的晶振,再使用一个定时中断,软件处理容易,精度由硬件影响.若用其它频率作为定时器的时钟源,软件处理绝对不要引起累积误差,所以计数为循环计数,不置初值,因此装初值,加补偿绝对不可取,这是初学者常犯的错误,若无人指点,会一直被此问题困扰.

RE:

如何实现准确的电子时钟?

大家请注意,没有误差-郑州/syj回复于2001-3-2616:

44:

00

我来说几句,你们可以用8031的定时中断方式2

计数初值自动装入,误差当然就没有了

只不过1秒钟中断次数较频繁,对其他程序有

一点影响,我做过这么1个万年历,准确度是

DS12887的300多倍(12MHZ/32。

768KHZ)

不行给我发EMAIL

RE:

如何实现准确的电子时钟?

-绵阳市/yunlong_z回复于2001-3-2620:

14:

00

jiangy先生:

那段程序里是不是还应该考虑ADDA,TL0和MOVTL0,A所占有的周期?

RE:

如何实现准确的电子时钟?

-西安/xinxin回复于2001-3-270:

33:

00

实际上,初值5EE0H是理论值,象ADDA,TL0之类的固定误差可以通过对初值的微调加以修正。

如果1S的计数有500000次,可以修正到1/500000。

RE:

如何实现准确的电子时钟?

-Nanjing/星星回复于2001-3-279:

59:

00

TOtyw:

前几声应是800Hz.

你可能调在谐波上了。

RE:

如何实现准确的电子时钟?

-Nanjing/星星回复于2001-3-2710:

08:

00

如果真需要很高精度,

建议买个GPS接收头

它每秒都有数字输出,精度不比中央台差。

RE:

如何实现准确的电子时钟?

-西安/xinxin回复于2001-3-2713:

16:

00

GPS的精度就高多了,但是RMB数得4位呀。

对于民用,电台校时足够了。

RE:

如何实现准确的电子时钟?

-广州/vectorlee回复于2001-3-2717:

31:

00

程序准有个鸟用!

在这行谁都知道晶振没几个准!

RE:

如何实现准确的电子时钟?

-广东/晓奇回复于2001-3-2718:

22:

00

醉翁之意不在酒啊,老兄。

主要是讨论编程思路、技巧。

RE:

如何实现准确的电子时钟?

-广州/jw5th回复于2001-3-287:

15:

00

定时系数非自动重载方式的软件导致的定时误差来自两个因素:

1、定时器计数溢出后,定时器立即停止计数,要等当前正在执行的指令运行结束后的下一个机器周期,才能响应中断,每次响应前执行到哪一条指令不可预测,导致的延迟也就不可预测。

2、定时系数重载后,定时器才重新开始计数,因此而导致的延迟可以预测。

RE:

如何实现准确的电子时钟?

-Lianyungang/makesoft回复于2001-3-2810:

19:

00

不同意楼上的说法‘定时器计数溢出后,定时器立即停止计数’。

RE:

如何实现准确的电子时钟?

-广东/晓奇回复于2001-3-2813:

01:

00

溢出后会自动继续计数,只不过是从零开始.

RE:

如何实现准确的电子时钟?

-广州/jw5th回复于2001-3-2818:

51:

00

Sorry,是我的错,我把其他CPU的特性搬到51来了.

RE:

如何实现准确的电子时钟?

-西安/xinxin回复于2001-3-2818:

52:

00

定时器是独立于CPU的硬件计数器,51CPU只管理启动和装初值。

一旦定时器启动之后,就一直在计数,正象makesoft和晓奇所说的在定时器溢出后会从0重新开始计数,不存在等待问题。

定时的误差除了晶体自身的误差(主要指晶体的频率漂移误差,而晶体频率偏离标称值的固定的绝对误差是可以修正的)以外,就是来自从定时器溢出中断到装初值这段时间的误差,由于从溢出到响应中断的时间不确定,所以存在不定的误差。

还有上边提到的修正精度问题。

采用1秒装1次初值就是为了提高定时修正精度的。

在装初值时加上计数器已经计的数值,就是为了解决从定时器溢出到装初值之间的不确定误差的。

深圳/jasum的特殊晶体32768晶体选择有独到之处,免除了装初值的误差。

RE:

如何实现准确的电子时钟?

-上海/tyw回复于2001-3-2819:

03:

00

Sorry,前几声应是800Hz.最后一响,中央台为1000Hz,上海台为1600Hz.

RE:

如何实现准确的电子时钟?

-guangzhou/wuyingjie回复于2001-3-300:

53:

00

我曾考虑过类似的钟,用PIC单片机,双晶振,16位计数器产生秒中断,即秒误差不大于1/32786,如果有误差(肯定有),设定修正值,每天清除一次误差,每月再清一次,每年还要清一次。

这样经过几年的经验积累,这钟的准确度应该很高。

就算温度影响,一个地方每年的平均气温相差不大,就算晶振不准,这钟也都很准了。

理论上,每年误差小于1秒。

我估计10秒以内应该是不成问题的。

晶振不在于准,而在于稳。

如果高兴用个大功率(5W)电阻来恒温,也没什么难的。

当然,如果有广播对时,我上面说的也就意义不大。

美国、英国、日本、意大利等已有了实时间无线广播(每分钟一帧),中国也可能会实现的。

那时的广播钟任何时刻分钟都是准确的。

RE:

如何实现准确的电子时钟?

-广州/jw5th回复于2001-4-17:

55:

00

在广州的朋友可以试一试接受139.000MHz的信号,每5分钟一帧,512BPS夹杂在寻呼信号中发送。

RE:

如何实现准确的电子时钟?

-绵阳市/yunlong回复于2001-4-211:

05:

00

wuyingjie:

请问如何用大功率电阻来对晶体恒温?

请指点。

RE:

如何实现准确的电子时钟?

-苏州/lyghj回复于2001-4-417:

44:

00

以前在《无线电》杂志(应该在85年以后,95年以前)上看到有这样一种思路:

彩色电视信号的副载波信号要求要有很高的稳定性,CCTV的电视信号中的副载波好象是用原子钟稳频的。

所以可以利用这个信号来稳定时钟,不过这样虽然收音头可以省掉了,但要多加了个高频头和相应的中放电路。

RE:

如何实现准确的电子时钟?

-广东/晓奇回复于2001-4-417:

50:

00

可以选择合适的ptc恒温吧?

lm399稳压源好像就有恒温电路

RE:

如何实现准确的电子时钟?

-深圳/小麦回复于2001-5-2123:

01:

00

经过这番讨论,我想大家都懂了,我真是收益不少呀!

RE:

如何实现准确的电子时钟?

-西安/xinxin回复于2001-5-221:

02:

00

还有人来E-MAIL问调节精度问题,回答如下:

(以6MHZ晶体为例)

采用方式1定时1S=10*(65536-15536)*2US,如果初值15536修改1时,调节量为1S/50000,一天就是1.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 起诉状

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

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