wzpanda 发表于 2009-12-4 09:49:25

自做的频率计,如何避免数字显示的跳动!

最近自做了一频率计,但是显示一直跳动,问下DX应该如何避免数字显示的跳动呢?谢

hitler 发表于 2009-12-4 10:09:11

先用成品频率计比对一下信号源

wzpanda 发表于 2009-12-4 10:26:21

信号源无问题的,个人觉得应该在程序里改进下,但是不知道怎么改呢,现在的程序就是把计算出的频率直接送液晶显示!

coody 发表于 2009-12-4 10:43:21

你测个有源晶振的频率看看,50MHZ以下最多只能跳一个字

usingavr 发表于 2009-12-4 11:13:06

软件滤波
去掉极端值、只使用连续相等的值、取平均值,等等……

wajlh 发表于 2009-12-4 12:27:40

关键还是测的频率不准,另外液晶的刷新频率不能太高。

wzpanda 发表于 2009-12-4 12:28:06

软件滤波?时间是不是长了些啊?

wzpanda 发表于 2009-12-4 12:33:49

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();
                       }
               }

wajlh 发表于 2009-12-4 12:35:57

根本就用不着软件滤波,08年参加电赛时用51单片机做过一个频率计,测量范围为0.01hz—30Mhz,全量程小数点后三位非常稳定。

h572 发表于 2009-12-4 14:14:11

选用好的基准,改用等精度计数!

wzpanda 发表于 2009-12-4 15:51:12

wajlh 你好,可以说下怎么实现的吗?或者加q吧。。376357378

wajlh 发表于 2009-12-4 19:20:06

采用等精度计数,晶振采用了有源晶振(后来证实普通晶振短期内也很稳定)。以前在坛子里发过一个仿真的电路。在下面帖子的的六楼
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=1804670&bbs_page_no=1&search_mode=4&search_text=mtxmxt&bbs_id=9999

win100 发表于 2009-12-4 19:24:18

学习

wzpanda 发表于 2009-12-4 20:25:45

我做的就是等精度了,仿真图如下http://cache.amobbs.com/bbs_upload782111/files_22/ourdev_510822.jpg
(原文件名:未命名.jpg)
就是程序不懂该怎么处理才能避免跳动!

wajlh 发表于 2009-12-4 20:40:06

我写的程序没有滤波程序,照样稳定。建议楼主先不要计算。把两个计数值直接显示出来,看看是否稳定。
如果两个计数值都稳定,则是计算频率的程序有问题。否则查找计数部分的问题。

wzpanda 发表于 2009-12-4 22:09:01

还是没查找出问题,用了滤波程序,不过还是没彻底的解决问题

marty_f 发表于 2009-12-4 22:23:16

对于这样的跳动 一般都是有外部干扰造成 最好是多次采样后 计算平均值 再显示

我是从 51转过来 的 AVR新手

可不可以 告诉我 你们是用什么 来编写 AVR C程序的?
我一直都是用汇编 想用C写数学_运算
还有 你们 是用什么来仿真的啊?

谢咯~~

wzpanda 发表于 2009-12-4 23:11:40

回楼上,现在就是仿真而已啊,没什么外部的了,有可能是定时或者执行程序时间造成的,还不知道呢!我现在是用iccavr编写的,proteus仿真!

marty_f 发表于 2009-12-5 01:36:05

其实 最好的方法 是搭建一个最小系统
借助示波器的自举方波信号 做信号源 来同步测试
用定时器1的捕获模块来捕获频率周期 经过计算
用串口发送 采集的频率信息 到pc 用串口调试软件就可以很好接收这样程序可以很简化 还很方便

我就是这样来写程序的

因为仿真器 太理想了 很多问题 无法真实地反映

你试试吧 ~~~~

zhfeng 发表于 2009-12-5 10:48:26

采样后的数据,去除最大值和最小值,再取平均值,不知道行不行

yunqian09 发表于 2009-12-5 16:05:46

多取几次频率,计算平均值,然后显示。

marty_f 发表于 2009-12-7 01:18:18

不要盲目去除最到最小值
最好先行比对一下 最大值 和 最小值 是否偏离上次的有效值很多
若不多 可以参与平均值计算
若很多 则认定为干扰信号 放弃之
^_^

MOON200330 发表于 2013-5-22 13:46:04

我正在用M16做频率计打个记号先
页: [1]
查看完整版本: 自做的频率计,如何避免数字显示的跳动!