51单片机测量频率的方
51单片机的测量频率方法有很多这里谈的是将被测量信号经过整形后转换成方波信号利用单片机查询两个上升沿在此期间
根据晶体振荡器产生的周期为 Tc的脉冲送计数器进行计数设计数值为N则得被测量信号的周期值Tx=Tc×N然后取其倒数即为被
测量信号的频率。 当然如果利用单片机的捕捉功能实现起来可能程序更加简练。
下面频率测量计数波形示意
图 程序代码如下 /*-------------------------------------测量周期法的基本原理:在被测信号内对某一基准时间进行计数,基准时间与计数值的乘
积便是被测周期. ---------------------------------------*/
#include"at89x51.h"
#define uint unsigned int
uint count, period;
bit rflag = 0; //设置周期标志
void control(void)
{
TMOD = 0x09; //T/C0为方式INT0 为是启动定时器
IT0 = 1; //脉冲方式后沿负跳有效进入中断
TH0 = 0;
TL0 = 0;
P1_0 = 0;
P1_0 = 1; //触发器清零
TR0 = 1; //启动T/C0
EX0 = 1; //只开外部中断
EA = 1; //开总中断
}
void INT_0(void) interrupt 0 using 1 //INTO中断服务
{
EA = 0;
TR0 = 0;
count = TL0 + TH0 * 256;//取计数值
rflag = 1; //设标志
EA = 1;
}
main()
{
control();
while(rflag == 0); 、//等待一个周期
period = count * 2; //fosc = 6MHz,2us计数增周期值单位us
}
|