矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 6072|回复: 26

求助:STC89C52 频率计读数偏低

[复制链接]
     
发表于 2020-2-13 21:30:31 | 显示全部楼层 |阅读模式
本帖最后由 bobby_jack 于 2020-2-13 21:34 编辑

我用89C52及74HC390做了一台频率计。但实际使用时其读值要比输入频率低上万分之一点五左右。比如5000K的显示是4999.4K,  20000K的显示是19997.2K等。但在另一只晶振测试器(实际上就是PIC16F648A做的频率计带晶振,兼信号发生器)上的读值是正常的。
我换过外部时钟晶振,但未见效果。
我也怀疑是否是因为89C52计数器的重新加载造成丢失,但网上用此单板做频率计的不用其数,也没听到别人反映此类问题。
百思不得其解。特向坛友讨教。
谢谢。
     
发表于 2020-2-15 14:07:34 | 显示全部楼层
说几个编程思路吧:

1. 手动重装:重装时间与理论有偏差,不推荐;
2. 自动重装:重装时间准确,但中断时间÷中断周期 也就是前台比例有待计算,太高了很不好;
3. 不重装:类似于2方法,中断周期最长,前台比例最低,推荐之。
回复 支持 1 反对 0

使用道具 举报

     
发表于 2020-2-13 23:27:39 | 显示全部楼层
STC89C52 做频率计,50毫秒做计数周期,其精度可达五万分之一,10毫秒做计数周期,其精度只能达万分之一。
回复 支持 反对

使用道具 举报

     
发表于 2020-2-14 06:33:05 | 显示全部楼层
您得提供您的测量思路,否则很难判断,特别是中断处理过程,不同的时钟模式下的调用占时都是不同的,会影响总的计数值。
回复 支持 反对

使用道具 举报

     
发表于 2020-2-14 07:53:46 | 显示全部楼层
如果是直接计数请把闸门时间延长一点点。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-2-14 10:19:15 | 显示全部楼层
本帖最后由 bobby_jack 于 2020-2-14 10:20 编辑

谢谢各位帮助。
我是第一次与单片机打交道,完全是个新手。用的外部时钟是12MHz,62.5ms。
正如3楼所说,中断处理程序与计数密切相关。我试了试,简单地在中断处理程序中再加上二个if判断就能使读数再减小100Hz(在测试频率为 5MHz情况下,其它频率类推),但又不得不在此程序中加代码。
现在用了个偷懒方法,即在最终读数上加0.076%,这样正好补偿了丢失。但肯定会损失精确度。
是否可以增大在计数器重装载值的方法来取代加成,或用更快的晶振(如24,或36MHz的)?
再次谢谢。

回复 支持 反对

使用道具 举报

     
发表于 2020-2-15 12:45:35 | 显示全部楼层
bobby_jack 发表于 2020-2-14 10:19
谢谢各位帮助。
我是第一次与单片机打交道,完全是个新手。用的外部时钟是12MHz,62.5ms。
正如3楼所说, ...

LZ,你把电路图和程序放上来,让大家学习下看看吧
回复 支持 反对

使用道具 举报

     
发表于 2020-2-15 15:42:47 来自手机 | 显示全部楼层
设备自己测自己频率源的频率看看是不是标称值,如果是,说明需要校准下,如果不是,说明存在问题。
回复 支持 反对

使用道具 举报

     
发表于 2020-2-15 15:45:55 | 显示全部楼层
以后拿stm32试试
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-2-15 21:14:49 | 显示全部楼层
t3486784401 发表于 2020-2-15 14:07
说几个编程思路吧:

1. 手动重装:重装时间与理论有偏差,不推荐;

谢谢回复。
你的意思是中断处理时不关计时器,让它自行溢出,自行重新从零开始(自动装载0)?
我在硬件操作方面是新手,所以问题非常外行,请原谅。
回复 支持 反对

使用道具 举报

     
发表于 2020-2-16 01:02:53 | 显示全部楼层
bobby_jack 发表于 2020-2-15 21:14
谢谢回复。
你的意思是中断处理时不关计时器,让它自行溢出,自行重新从零开始(自动装载0)?
我在硬 ...

是的,只要是不重新装载(=重装0),就可以确保定时器一直在连续的走,时间也就可以准确计算。

这样的话中断间隔是最长的,你可以有更长的时间处理,例如计数中断次数。
回复 支持 反对

使用道具 举报

     
发表于 2020-2-16 01:19:10 | 显示全部楼层
这个有一定的技巧,要动实现态测量。
回复 支持 反对

使用道具 举报

     
发表于 2020-2-16 07:41:25 | 显示全部楼层
bobby_jack 发表于 2020-2-14 10:19
谢谢各位帮助。
我是第一次与单片机打交道,完全是个新手。用的外部时钟是12MHz,62.5ms。
正如3楼所说, ...

如果按照乘以系数;则,如果在频率高端校准,则低端会不准;因为不是线性关系的。
我也在学校stc51.   lz的程序是怎么运行的?说说思路?
回复 支持 反对

使用道具 举报

     
发表于 2020-2-16 08:07:53 | 显示全部楼层
bobby_jack 发表于 2020-2-14 10:19
谢谢各位帮助。
我是第一次与单片机打交道,完全是个新手。用的外部时钟是12MHz,62.5ms。
正如3楼所说, ...


说一下STC的51系列单片机的适用情况。
1.在标称12MHz钟频下,计数器的最高计数频率是500KHz,这是性能和结构决定的,不要试图改变它。如果想通过提高钟频来提高计数频率也是不可取的,因为在更高的时钟模式下的读、写、算术运算等等的所耗时间都与标称模式下大相径庭,已经不能用计算代码时间的方法来精确计算总耗时。
2.频率计的最好实现方式是外接计数器,这种方式几乎没有位数的限制。单片机自带的计数器作为定时(例如闸门)使用,不要参与计数过程。其实在任何功能种类的仪器中,单片机都不能直接参与生产过程,而是作为管理者存在,管理生产的过程是单片机的长处,单片机在功能仪器中所起的作用一定要认识清楚。
3.51系列单片机直接用作生产过程是有局限的,网上所售51系列单片机所做的频率计都有或多或少的问题,就是因为没有搞清应用的范围。

回复 支持 反对

使用道具 举报

     
发表于 2020-2-16 08:33:41 | 显示全部楼层
longshort 发表于 2020-2-16 08:07
说一下STC的51系列单片机的适用情况。
1.在标称12MHz钟频下,计数器的最高计数频率是500KHz,这是性 ...

STC15系列单片机计数的最高频率接近时钟的二分之一,也就是说在12M频率下接近6兆,实际应该可以到4M没什么问题。我用24M时钟计数到8-10兆。试验的STC15单片机在等精度下可以做到万分之几的误差,计数到10Mhz没任何问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-29 05:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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