打印
[51单片机]

打算用51的定时器和外部中断做个频率计,为什么总是实现不了呢,求大神给看一下

[复制链接]
楼主: 灯火阑珊处
手机看帖
扫描二维码
随时随地手机跟帖
21
xg3469| | 2014-8-4 17:27 | 只看该作者 回帖奖励 |倒序浏览
也可以用两个定时器,一个定时中断,一个在16位计数方式,比如50毫秒计数500个,频率则是500*20=10kHz.

使用特权

评论回复
22
灯火阑珊处|  楼主 | 2014-8-4 17:55 | 只看该作者
xg3469 发表于 2014-8-4 17:23
不知道你的频率计测频范围准备做多高?

如果太大应该会不准确吧,现在测10 000hz的信号,测出来8320左右,误差已经不小了,不知道怎么测的精确点,,,

使用特权

评论回复
23
灯火阑珊处|  楼主 | 2014-8-4 17:57 | 只看该作者
xg3469 发表于 2014-8-4 17:27
也可以用两个定时器,一个定时中断,一个在16位计数方式,比如50毫秒计数500个,频率则是500*20=10kHz. ...

我有个同学就是计数器做的,可结果跟我的差不多啊,这算法有没有特别需要注意的地方呀

使用特权

评论回复
24
xg3469| | 2014-8-4 18:00 | 只看该作者
什么MCU,最好能产生100mS定时器中断,中断函数里读计数器。

使用特权

评论回复
25
灯火阑珊处|  楼主 | 2014-8-4 18:04 | 只看该作者
xg3469 发表于 2014-8-4 18:00
什么MCU,最好能产生100mS定时器中断,中断函数里读计数器。

额,STC89C52啊,最多定时65ms,怎么精确一点呢

使用特权

评论回复
26
灯火阑珊处|  楼主 | 2014-8-4 18:06 | 只看该作者
xg3469 发表于 2014-8-4 18:00
什么MCU,最好能产生100mS定时器中断,中断函数里读计数器。

您说的是50ms*2么?

使用特权

评论回复
27
孤鸿远走| | 2014-8-4 18:08 | 只看该作者
频率小的时候很准,当频率超过一千误差就大了

使用特权

评论回复
28
孤鸿远走| | 2014-8-4 18:08 | 只看该作者
挺好的环境光镜面反光

使用特权

评论回复
29
xg3469| | 2014-8-4 18:08 | 只看该作者
6Mhz就能131ms了

使用特权

评论回复
30
灯火阑珊处|  楼主 | 2014-8-4 18:16 | 只看该作者
xg3469 发表于 2014-8-4 18:08
6Mhz就能131ms了

好吧,一般都是12M的啊

使用特权

评论回复
31
xg3469| | 2014-8-4 18:21 | 只看该作者
也可以找个周期0.1秒、0.2秒的震荡器,让计数器工作在门控方式。

使用特权

评论回复
32
灯火阑珊处|  楼主 | 2014-8-4 19:26 | 只看该作者
xg3469 发表于 2014-8-4 18:21
也可以找个周期0.1秒、0.2秒的震荡器,让计数器工作在门控方式。

哦,对,还可以用外部震荡提供计时,么想到啊

使用特权

评论回复
33
友进芯城| | 2014-8-4 21:13 | 只看该作者
这个不是很清楚  又好像知道那么一点  待查看一下

使用特权

评论回复
34
fyzhuhui| | 2014-8-4 21:40 | 只看该作者
中断,不受你控制。

使用特权

评论回复
35
xg3469| | 2014-8-4 21:55 | 只看该作者
看不懂34楼表达的意思。门控信号产生中断后,TR*=0;停止计数,转存计数器内容;然后TR*=1;自己练练。

使用特权

评论回复
36
灯火阑珊处|  楼主 | 2014-8-5 09:14 | 只看该作者
有没有拿51做过频率计的,测量范围,误差大概多少呢?

使用特权

评论回复
37
cool_coder| | 2014-8-5 09:34 | 只看该作者
灯火阑珊处 发表于 2014-8-5 09:14
有没有拿51做过频率计的,测量范围,误差大概多少呢?

要想准,计时部分不能由软件控制,最好是全硬件的。对于你要求的10kHz测频,可以考虑先对输入信号做1024~8192分频,然后用定时器的捕获模式来测周期,精度可以做得相当高。
用这种方法,测频范围取决于你的分频系数;测量分辨率取决于你的系统时钟频率和信号分频系数;精度取决于你的系统时钟或软件校准。

使用特权

评论回复
38
灯火阑珊处|  楼主 | 2014-8-5 09:53 | 只看该作者
cool_coder 发表于 2014-8-5 09:34
要想准,计时部分不能由软件控制,最好是全硬件的。对于你要求的10kHz测频,可以考虑先对输入信号做1024~ ...

好吧,多谢赐教,不过分频是什么意思啊,木有这个概念啊

使用特权

评论回复
39
cool_coder| | 2014-8-5 10:48 | 只看该作者
灯火阑珊处 发表于 2014-8-5 09:53
好吧,多谢赐教,不过分频是什么意思啊,木有这个概念啊

分频简单说就是以一定的倍率降低频率。比如1024分频就是将输入频率降低到原来的1/1024,可以通过十位二进制计数器实现。

使用特权

评论回复
40
灯火阑珊处|  楼主 | 2014-8-5 11:28 | 只看该作者
cool_coder 发表于 2014-8-5 10:48
分频简单说就是以一定的倍率降低频率。比如1024分频就是将输入频率降低到原来的1/1024,可以通过十位二进 ...

对于高频信号,每1024个周期计为1个周期,最后再换算过来,是这个意思么?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则