自做的频率计,如何避免数字显示的跳动!
最近自做了一频率计,但是显示一直跳动,问下DX应该如何避免数字显示的跳动呢?谢 先用成品频率计比对一下信号源 信号源无问题的,个人觉得应该在程序里改进下,但是不知道怎么改呢,现在的程序就是把计算出的频率直接送液晶显示! 你测个有源晶振的频率看看,50MHZ以下最多只能跳一个字 软件滤波去掉极端值、只使用连续相等的值、取平均值,等等…… 关键还是测的频率不准,另外液晶的刷新频率不能太高。 软件滤波?时间是不是长了些啊? while(1)
{
read_data();
writecommand(0x80);
display(freq);
if(dis_flag==1)
{
dis_flag=0;
writecommand(0x80);
display(freq);
star_count();
SEI();
open_gate();
}
if(time_ok>=10)//读数据和数据处理
{
time_ok=0;
freq=1000000.0*freq1/freq2;
auto_temp=(unsigned long int)(freq);
automatic(auto_temp);
if(time_count>=count_want)
{
dis_flag=1;
CLI();
close_gate();
count_want=0;
time_count=0;
stop_count();
clear_counter();
}
} 根本就用不着软件滤波,08年参加电赛时用51单片机做过一个频率计,测量范围为0.01hz—30Mhz,全量程小数点后三位非常稳定。 选用好的基准,改用等精度计数! wajlh 你好,可以说下怎么实现的吗?或者加q吧。。376357378 采用等精度计数,晶振采用了有源晶振(后来证实普通晶振短期内也很稳定)。以前在坛子里发过一个仿真的电路。在下面帖子的的六楼
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=1804670&bbs_page_no=1&search_mode=4&search_text=mtxmxt&bbs_id=9999 学习 我做的就是等精度了,仿真图如下http://cache.amobbs.com/bbs_upload782111/files_22/ourdev_510822.jpg
(原文件名:未命名.jpg)
就是程序不懂该怎么处理才能避免跳动! 我写的程序没有滤波程序,照样稳定。建议楼主先不要计算。把两个计数值直接显示出来,看看是否稳定。
如果两个计数值都稳定,则是计算频率的程序有问题。否则查找计数部分的问题。 还是没查找出问题,用了滤波程序,不过还是没彻底的解决问题 对于这样的跳动 一般都是有外部干扰造成 最好是多次采样后 计算平均值 再显示
我是从 51转过来 的 AVR新手
可不可以 告诉我 你们是用什么 来编写 AVR C程序的?
我一直都是用汇编 想用C写数学_运算
还有 你们 是用什么来仿真的啊?
谢咯~~ 回楼上,现在就是仿真而已啊,没什么外部的了,有可能是定时或者执行程序时间造成的,还不知道呢!我现在是用iccavr编写的,proteus仿真! 其实 最好的方法 是搭建一个最小系统
借助示波器的自举方波信号 做信号源 来同步测试
用定时器1的捕获模块来捕获频率周期 经过计算
用串口发送 采集的频率信息 到pc 用串口调试软件就可以很好接收这样程序可以很简化 还很方便
我就是这样来写程序的
因为仿真器 太理想了 很多问题 无法真实地反映
你试试吧 ~~~~ 采样后的数据,去除最大值和最小值,再取平均值,不知道行不行 多取几次频率,计算平均值,然后显示。 不要盲目去除最到最小值
最好先行比对一下 最大值 和 最小值 是否偏离上次的有效值很多
若不多 可以参与平均值计算
若很多 则认定为干扰信号 放弃之
^_^ 我正在用M16做频率计打个记号先
页:
[1]