问题:
用C51系列单片机测TTL(f<50KHz)的信号,精度达到0.001Hz,用12MHz的单片机还是更高?怎么计算是否达到这个精度?
=============================================
解答:
这个0.001Hz的测量精度,在单片机领域是不能达到的。
精度为0.001Hz,一般是指最大的绝对误差。
当测量50KHz信号的时候,显示数值不应超过:49 999.999Hz ~ 50 000.001Hz。
这才是精度达到了0.001Hz。
12MHz的单片机,根本别想达到这个精度!!!
测量频率,有“测量频率”和“测量周期”两种方法。
如果采用“测量频率”的方法,也就是“定时计数”法。
为了统计出来 49 999 999 ~ 50 000 001 的区别,就要用1000s的时间(16分钟多)。
时间短了,就达不到0.001Hz的精度要求。
“定时计数”法用时太长,不实用,那就再看看“测量周期”法。
用单片机的确是可以测出50KHz信号的周期是20us,取倒数,确实能换算出50 000Hz。
但是输入的频率,以0.001Hz 分档,再输入几个看看:
频率是49 999.999Hz,它的周期是20.0000004us;
频率是49 999.998Hz,它的周期是20.0000008us;
……
……
呵呵,不用多说了,大家一眼就可以看出,这0.0000004us的差别,单片机是分辨不出来的。
也就是说,单片机分辨不出来49 999.999Hz和49 999.998Hz的区别。
所以,0.001Hz的精度,是不可能达到的。
谁说能达到?
=============================================
最佳答案:
精确到50KHZ到0.001Hz用12M晶振足够了.
12M晶振在C51系列单片机中的机器周期是1us,机器执行指令的时间也就几us,在测量时考虑的是频率上限50KHZ即20us周期,用测单位时间里脉冲个数的方法可行,测频率下限时用测周期的方法可行.自己写程序时设计一个转换点就行了,能达到较高的精度.所以用12M晶振绝对能达到你的要求.
不过你的0.001HZ是1000秒的周期,这个数字转换用来测量人都要等老了(16分钟多).要求的频率其实也用不了那么低的.