欢迎来到一句话经典语录网
我要投稿 投诉建议
当前位置:一句话经典语录 > 心得体会 > 51单片机频率计心得体会

51单片机频率计心得体会

时间:2013-12-08 17:31

用51单片机做的频率计为什么会有误差

1M,似乎不太好弄,如果要求比较精确的话;100HZ~1M,换成同期:1US~10MS,周期\\\/2=(0.5US~5MS),0.5US的脉宽....24M晶振都做不到的;检测一个脉宽起码也行四五条指令吧。

用汇编:loop: JB DATA_IN,$;高电平等待 JNB DATA_IN,$;低电平等待 INC TIMES;脉宽数加1 AJMP loop;再用定时器定时:如:10MS,记录这10MS内TIMES变化了多少次,再换算成频率;注意误差范围。

频率低的话10MS得换大些。

显示部分也可用定时器来做。

综合以上,应该还是能做的;如能选些6T 或 1T的51单片机肯定没问题,传统的12T的估计有点难

51单片机的数字频率计

该系统由定时器0中断子函数、定时器1中断子函数、延时子函数、按键消抖子函数、闸门控制子函数、主函数和数据定义这几部分组成。

闸门时间由定时器1控制,初始为2s,可以通过按键加减,范围为2s到7秒。

闸门时间就是采样时间,闸门时间越长,测量精度越准确。

由P3.4输入信号,低电平有效,触发T0外部中断。

当T0触发中断的时候执行的程序。

这里只进行了一个操作,t0++。

所以,t0的值表示触发了几次中断,也就表示接受到的脉冲几次从0到65536。

所以会有t0*65536。

另外,由于计时的机制是THO++、TL0++,所以,THOTL0就表示当前的计数值。

THOTLO- 初值就可以确定没有触发中断定时多少。

TH0*256==TH0*2^8,实质就是左移8位,就是拼接TH0跟TL0的处理。

所以频率的核心算法为 daimao=(t0*65536+TH0*256+TL0)\\\/n程序框图总源程序#include reg52.h#define uchar unsigned chartypedef unsigned int uint;sbit w1=P2^0;sbit w2=P2^1;sbit w3=P2^2;sbit w4=P2^3;sbit w5=P2^4;sbit w6=P2^5;sbit jia=P1^6;sbit jian=P1^7;sbit s=P3^7;\\\/\\\/启动bit flag;\\\/\\\/标签uchar s1,s2,s3,s4,s5,s6, shu=1;\\\/\\\/控制数组取值uchar t0,t1,t2,a;unsigned long m=5,n;\\\/\\\/m为闸门时间int y;unsigned long daimao;\\\/\\\/频率unsigned char code table1[]={0xc0,0xf9,0xa4,0xb0, \\\/\\\/闸门时间数组0-f0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};unsigned char code table2[]={0xc0,0xf9,0xa4,0xb0, \\\/\\\/频率数组0-f0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,

51单片机的简易频率计设计

单片机直接用USB连电脑只能取电不能通讯,通讯的话 需要接口电路,例如USB转TTL的芯片,CH340,PL2303,这样的芯片才可以,如果直接测TTL电平的话 确实不需要其他外围电路了,因为51的信号就是TLL电平的。

做用51单片机做一个频率计,测量范围为0.1Hz~10kHz

在不改变定时时间的前提下,也就是0.5秒定时,是不能实现0.1~2Hz频率的测量的。

你所谓2Hz~10KHz易实现也是基于这个道理。

但这个也是理论情况。

当你0.5s内刚好检测到一个脉冲,你认为这个时候是2Hz而不是2.5hz或者3.9hz

这中间存在一个测量精度的问题。

实际上你所测到的信号是在2hz到4hz之间。

实际上我们在测量信号的时候,低频一般会采用测周期,高频用测频才能提高测量的准确性。

至于高低频的临界点,跟你的计数频率有关,感兴趣的话可以去看《电子测量原理》。

下面我来讲下测周实现的方法,可以使用边沿触发的D触发器输出作为单片机的外部定时控制,测量信号作为触发时钟,计数值作为该信号的周期。

请教51单片机做频率计的问题

采用外部中断的方式。

在单位时间里进行计数然后计算出频率值如果外部频率太快了,可以先分频,在接入单片机

给位单片机好友帮个忙,我现在用51做一个频率计,最高为100K 这应该可以办到,但是数码管显示部分,怎

几种方案:1.简单的话用软件分频,即:设置一个变量divider ,每次中断时自加一,判断是否大于某值,若大于则执行程序2.把程序嵌入到数码管现实部分中3.最复杂的要挂RTOS(实时操作系统),专业搞单片机的话这个总是要学的。

51单片机的话可以用Keil自带的RTX51 Tiny ,说明可见Keil帮助文档。

PS:51单片机过于落后,只适合入门,建议尽早转型 AVR ARM DSP 等

声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。联系xxxxxxxx.com

Copyright©2020 一句话经典语录 www.yiyyy.com 版权所有

友情链接

心理测试 图片大全 壁纸图片