搜索
bottom↓
回复: 22

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

[复制链接]

出0入0汤圆

发表于 2009-12-4 09:49:25 | 显示全部楼层 |阅读模式
最近自做了一频率计,但是显示一直跳动,问下DX应该如何避免数字显示的跳动呢?谢

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2009-12-4 10:09:11 | 显示全部楼层
先用成品频率计比对一下信号源

出0入0汤圆

 楼主| 发表于 2009-12-4 10:26:21 | 显示全部楼层
信号源无问题的,个人觉得应该在程序里改进下,但是不知道怎么改呢,现在的程序就是把计算出的频率直接送液晶显示!

出0入0汤圆

发表于 2009-12-4 10:43:21 | 显示全部楼层
你测个有源晶振的频率看看,50MHZ以下最多只能跳一个字

出0入0汤圆

发表于 2009-12-4 11:13:06 | 显示全部楼层
软件滤波
去掉极端值、只使用连续相等的值、取平均值,等等……

出0入4汤圆

发表于 2009-12-4 12:27:40 | 显示全部楼层
关键还是测的频率不准,另外液晶的刷新频率不能太高。

出0入0汤圆

 楼主| 发表于 2009-12-4 12:28:06 | 显示全部楼层
软件滤波?时间是不是长了些啊?

出0入0汤圆

 楼主| 发表于 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();
                         }
                 }

出0入4汤圆

发表于 2009-12-4 12:35:57 | 显示全部楼层
根本就用不着软件滤波,08年参加电赛时用51单片机做过一个频率计,测量范围为0.01hz—30Mhz,全量程小数点后三位非常稳定。

出0入0汤圆

发表于 2009-12-4 14:14:11 | 显示全部楼层
选用好的基准,改用等精度计数!

出0入0汤圆

 楼主| 发表于 2009-12-4 15:51:12 | 显示全部楼层
wajlh 你好,可以说下怎么实现的吗?或者加q吧。。376357378

出0入4汤圆

发表于 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

出0入0汤圆

发表于 2009-12-4 19:24:18 | 显示全部楼层
学习

出0入0汤圆

 楼主| 发表于 2009-12-4 20:25:45 | 显示全部楼层
我做的就是等精度了,仿真图如下
(原文件名:未命名.jpg)
就是程序不懂该怎么处理才能避免跳动!

出0入4汤圆

发表于 2009-12-4 20:40:06 | 显示全部楼层
我写的程序没有滤波程序,照样稳定。建议楼主先不要计算。把两个计数值直接显示出来,看看是否稳定。
如果两个计数值都稳定,则是计算频率的程序有问题。否则查找计数部分的问题。

出0入0汤圆

 楼主| 发表于 2009-12-4 22:09:01 | 显示全部楼层
还是没查找出问题,用了滤波程序,不过还是没彻底的解决问题

出0入0汤圆

发表于 2009-12-4 22:23:16 | 显示全部楼层
对于这样的跳动 一般都是有外部干扰造成 最好是多次采样后 计算平均值 再显示

我是从 51转过来 的 AVR新手

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

谢咯~~

出0入0汤圆

 楼主| 发表于 2009-12-4 23:11:40 | 显示全部楼层
回楼上,现在就是仿真而已啊,没什么外部的了,有可能是定时或者执行程序时间造成的,还不知道呢!我现在是用iccavr编写的,proteus仿真!

出0入0汤圆

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

我就是这样来写程序的

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

你试试吧 ~~~~

出0入0汤圆

发表于 2009-12-5 10:48:26 | 显示全部楼层
采样后的数据,去除最大值和最小值,再取平均值,不知道行不行

出0入0汤圆

发表于 2009-12-5 16:05:46 | 显示全部楼层
多取几次频率,计算平均值,然后显示。

出0入0汤圆

发表于 2009-12-7 01:18:18 | 显示全部楼层
不要盲目去除最到最小值
最好先行比对一下 最大值 和 最小值 是否偏离上次的有效值很多
若不多 可以参与平均值计算
若很多 则认定为干扰信号 放弃之
^_^

出0入0汤圆

发表于 2013-5-22 13:46:04 | 显示全部楼层
我正在用M16做频率计打个记号先
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 01:33

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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