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