單片機(jī)當(dāng)中的占空比一般是指PWM波形的占空比。這里提到的占空比就是指在一個周期之內(nèi),處在高電平的時間占整個周期的半分比。簡單的舉例來講,如果設(shè)定一個周期為1S,而高電平的持續(xù)時間達(dá)到了0.5S的話,我們就可以說在這個周期內(nèi)的占空比已經(jīng)達(dá)到了50%。本篇文章就根據(jù)占空比在單片機(jī)當(dāng)中的應(yīng)用,針對其測量和相位差的計算進(jìn)行了演示。
1、 頻率及占空比的測量
如上圖所示,當(dāng)脈沖的上升沿來臨時,將定時器打開;緊接著的下降沿來臨時,讀取定時器的值,假設(shè)定時時間為t1;下一個上升沿來臨時關(guān)閉定時器,讀取定時器的值,假設(shè)定時時間為t2。t1即為1個周期內(nèi)高電平的時間,t2即為脈沖的周期。t1/t2即為占空比,1/t2即為頻率。
C語言程序如下:
TH0=0; //定時器高位,初值設(shè)為0
TL0=0; //定時器低位,初值設(shè)為0
T0_num=0; //定時器溢出次數(shù),初值設(shè)為0
while(pulse); //pulse為脈沖的輸入引腳
while(!pulse); //等待上升沿來臨
TR0=1; //打開定時器
while(pusl1); //等待下降沿來臨
th1=TH0;tl1=TL0;num1=T0_num; //保存定時器值
while(!pusl1); //等待上升沿來臨
TR0=0; //關(guān)閉定時器
th2=TH0;tl2=TL0;num2=T0_num; //保存定時器值