利用51单片机设置简易频率计显示很慢的原因
再用定时器定时:如:10MS,记录这10MS内TIMES变化了多少次,再换算成频率;注意误差范围。。频率低的话10MS得换大些。显示部分也可用定时器来做。
别忘了,51单片机的主频12MHz,为了抗干扰,还要12分频。也就是说,你只有1MHz的运算频率。然后你得到你的w,还要做那么复杂的运算,本身while(p3_5==0)的判断也要时间。还有,你的n1,n2是什么类型的呀。
该课程设计偏离了实际应用。一般来说,单片机通过计数器实现频率测量。测量方波***电路简单,测量正弦波需要外部调理电路,但是,既然能够做到测量正弦波了,方波更没问题了。
基于51单片机的数字频率计(0—10MHZ)
1、频率***=***65536***x***中断次数***+***TH1***HL1***。前提是***选择高速单片机,即只要***T1***引脚***能够响应***10M***的频率就没有问题***因为***要***计数***65536***次才***T1才会中断一次。
2、很明显啊,在测量小于1Hz频率时,测量时间必须大于1s,比如10s,20s或者更长时间,这样才能保证测量准确。既然你一次定时0.5s不能变,那就有程序控制累加多个0.5s的测量结果再计算频率值。
3、所以会有t0*65536。***另外,由于计时的机制是THO++、TL0++,所以,THOTL0就表示当前的计数值。THOTLO-***初值就可以确定没有触发中断定时多少。TH0*256==TH0*2^8,实质就是左移8位,就是拼接TH0跟TL0的处理。
51单片机制作简易数字频率计程序
1、频率***=***65536***x***中断次数***+***TH1***HL1***。前提是***选择高速单片机,即只要***T1***引脚***能够响应***10M***的频率就没有问题***因为***要***计数***65536***次才***T1才会中断一次。
2、利用51单片机的T0、T1的定时计数器功能,来完成对输入的信号进行频率计数,计数的频率结果通过8位动态数码管显示出来。要求能够对0-250KHZ的信号频率进行准确计数,计数误差不超过±1HZ。
3、刚刚下了一楼传的附件,测试后发现精度和测量范围都比较差。如果单从测频的角度来说,51的频率计是很简单的。恰好几年前我写过类似的程序,是用来测频率和占空比的。
4、那就有程序控制累加多个0.5s的测量结果再计算频率值。所以程序中使用自适应方法,首先测量一个0.5s,看得到的频率值是否大于1,如果大于1即直接测量,如果频率值为0,表示被测频率小于1Hz,就转入长时间测量的模式。
5、你的程序停在while(1);这里了,也就是说只做了一次的采样和显示,这种情况很容易产生数据不同步等等一些问题,也就是在输入端口里并没有数据,所以你的全是0的情况是正常的。
单片机频率计
在设计单片机的精度频率要使用到的材料是PCB实验板,能更准确的控制频率的发生,因此是PCB实验板。
传统的频率计通常是用很多的逻辑电路和时序电路来实现的,这种电路一般运行较慢,而且测量频率的范围较小。
.实验任务***利用51单片机的T0、T1的定时计数器功能,来完成对输入的信号进行频率计数,计数的频率结果通过8位动态数码管显示出来。要求能够对0-250KHZ的信号频率进行准确计数,计数误差不超过±1HZ。
那就有程序控制累加多个0.5s的测量结果再计算频率值。所以程序中使用自适应方法,首先测量一个0.5s,看得到的频率值是否大于1,如果大于1即直接测量,如果频率值为0,表示被测频率小于1Hz,就转入长时间测量的模式。
待测频率f=1/T,T=(TH0*256+TL0)*(1/F),其中F为CPU的主频。那么有***f=1/T=F/(TH0*256+TL0).该式子和500000/(TH0*256+TL0)比较发现,它的500000和你的10000000就是CPU主频F。
51单片机频率计的中断程序怎么设计
1、首先,我们定义了一个计数器变量`count`,用于记录定时器中断的次数。然后,我们设置定时器0为模式1,16位定时器,并设置定时器初值。在中断服务程序中,我们清除中断标志,并将计数器加1。
2、每一个下降沿到达时conut自加1。开启一个定时器,计算一定时间t内的count值,主程序就好写了,再写一个H=count/t语句,H就是频率了。总体思路就是这样,细节你就自己来写吧。
3、只有当EA=1(允许)时,才能由各分控制位设置各自的中断允许与禁止。MCS-51单片机复位后,IE=00H,因此中断处于禁止状态。
本文转载自互联网,如有侵权,联系删除