1. 用單片機測頻率的程序
我只有51的程序,沒有MSP430的,但是我可以告訴您的思路:
1、你將輸入信號輸入外部中斷引腳。
2、開啟您的定時器T0;
3、使用定時器T0計時5S,然後讀取外部中斷了多少次。
4、計算外部中斷的次數N,這樣你就得到你所需要的頻率了。那就是N*12=1分鍾的次數。
2. 測周法測頻率怎麼用單片機實現。
主要是利用單片機的定時器計時,測量2個時間參數t1和t2,即如下所示:
計算信號的一個波形的周期t=t1+t2 則可以求出頻率f=1/t
3. 基於89c51單片機實現測頻,利用測頻法以及測周法(兩種方法測不同頻率但是需要在同一個程序中)
先說測脈沖個數,用於頻率較高場合,直接測周期用於頻率較低場合。先默認計數法,當算得頻率低於某一值時,改為測周期法,當頻率高於某一值時,採用測脈沖個數法。
4. 51單片機測周C程序怎麼寫,計算兩個脈沖之間的時間,程序怎麼寫!
或是低電平脈沖則直接接到單片機外部中斷的引腳上就行了,一個低脈沖過來,進入中斷,啟動定時器/計數器,再來一個脈沖,再進入中斷,關閉定時器/計數器,取得這個時間段的時鍾周期,根據晶振頻率算出時間就OK了。是不是很簡單?
5. 51單片機製作頻率計,測周法如何測量(用T0和T1兩個就可以了嗎),求大蝦幫忙啊,最好詳細點
#include<REG51.H>
#defineU8unsignedchar
U8codetab[]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28};
U8codescn[]={0x7f,0xbf,0xdf,0xef};//先點亮左邊一個數碼管
U8buf[4]={0,0,0,0};//顯示緩沖區
U8cnt=0;//掃描計數
unsignedintfreq=0;
unsignedintF;
voidmain(void)
{EA=1;//允許中斷
TMOD=0x01;//設定時器0為模式1(16位)
ET0=1;//定時器0中斷允許
TH0=(65536-5000)/256;//晶振12MHz,中斷周期5mS
TL0=(65536-5000)%256;;
TR0=1;//開始計數
PX0=1;//外部中斷優先順序高
EX0=1;//允許外部中斷
IT0=1;//外部中斷下降沿觸發
while(1);
}
voidexint0(void)interrupt0//外部中斷0服務程序
{freq++;
}
voidtimeint(void)interrupt1//定時器0中斷服務程序
{chari;
TH0=(65536-5000)/256;//晶振12MHz,中斷周期5mS
TL0=(65536-5000)%256;;
i=cnt&0x03;//求應點亮的LED號(從左到右依次為0,1,2,3)
P0=tab[buf[i]];//筆劃代碼送P0口
P2=scn[i];//控制掃描碼送P2口
cnt++;
if(cnt==200)
{cnt=0;//到1秒鍾,顯示的數字加一
F=freq;freq=0;
buf[0]=F/1000;
buf[1]=(F/100)%10;
buf[2]=(F/10)%10;
buf[3]=F%10;
}
}
6. 51單片機測頻率的程序
測頻率時,頻率高的時候,採用「定時計數法」。
樓上給出的「開啟一個定時器,計算一定時間t內的count值」,就是這種方法。
但是,頻率低的時候,這種方法是不適用的。
因為想要計幾個數,就要花費很長的時間。
故此,頻率低的時候,應該使用「測量周期法」,再換算成頻率。