|
10黑幣
51單片機測量頻率的方
51單片機的測量頻率方法有很多這里談的是將被測量信號經(jīng)過整形后轉(zhuǎn)換成方波信號利用單片機查詢兩個上升沿在此期間
根據(jù)晶體振蕩器產(chǎn)生的周期為 Tc的脈沖送計數(shù)器進行計數(shù)設(shè)計數(shù)值為N則得被測量信號的周期值Tx=Tc×N然后取其倒數(shù)即為被
測量信號的頻率。 當(dāng)然如果利用單片機的捕捉功能實現(xiàn)起來可能程序更加簡練。
下面頻率測量計數(shù)波形示意
圖 程序代碼如下 /*-------------------------------------測量周期法的基本原理:在被測信號內(nèi)對某一基準時間進行計數(shù),基準時間與計數(shù)值的乘
積便是被測周期. ---------------------------------------*/
#include"at89x51.h"
#define uint unsigned int
uint count, period;
bit rflag = 0; //設(shè)置周期標志
void control(void)
{
TMOD = 0x09; //T/C0為方式INT0 為是啟動定時器
IT0 = 1; //脈沖方式后沿負跳有效進入中斷
TH0 = 0;
TL0 = 0;
P1_0 = 0;
P1_0 = 1; //觸發(fā)器清零
TR0 = 1; //啟動T/C0
EX0 = 1; //只開外部中斷
EA = 1; //開總中斷
}
void INT_0(void) interrupt 0 using 1 //INTO中斷服務(wù)
{
EA = 0;
TR0 = 0;
count = TL0 + TH0 * 256;//取計數(shù)值
rflag = 1; //設(shè)標志
EA = 1;
}
main()
{
control();
while(rflag == 0); 、//等待一個周期
period = count * 2; //fosc = 6MHz,2us計數(shù)增周期值單位us
}
|
|