新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 關(guān)于MCS-51單片機(jī)實(shí)現(xiàn)PWM的方法

關(guān)于MCS-51單片機(jī)實(shí)現(xiàn)PWM的方法

作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò) 收藏
關(guān)于MCS-51單片機(jī)實(shí)現(xiàn)PWM的方法
PWM是“脈沖寬度調(diào)制”的意思。
PWM實(shí)際上是在單片機(jī)的某個(gè)引腳輸出一系列的矩形波,其周期一般是固定的;而其高電平、低電平所占用的時(shí)間,是可以受控調(diào)整的。高電平、低電平所占用的時(shí)間之比,稱為占空比,其值為0~1之間。PWM的應(yīng)用很廣,簡(jiǎn)單的說(shuō),它可以控制燈光的亮度、可以控制直流電機(jī)的轉(zhuǎn)速,甚至還可以輸出語(yǔ)音信號(hào)。
新型的單片機(jī),往往都含有硬件的PWM模塊,編寫程序就很簡(jiǎn)單;而老式的MCS-51系列,就不具備這個(gè)條件。
其實(shí),在沒(méi)有PWM硬件的單片機(jī)上實(shí)現(xiàn)PWM,也并不難,只需一個(gè)定時(shí)器,令其工作在中斷方式即可。下面以網(wǎng)上的一個(gè)題目為例,說(shuō)明實(shí)現(xiàn)PWM方法。
題目鏈接:http://zhidao.baidu.com/question/170790790.html?push=core
題目:AT89C52單片機(jī)輸出可調(diào)PWM波。
要求:
1。單片機(jī)的晶振是12MHz,輸出周期為1s。
2。用兩個(gè)開關(guān)控制占空比的增加和減少,分20等級(jí)。針對(duì)這個(gè)題目,做而論道設(shè)計(jì)了一個(gè)簡(jiǎn)單的實(shí)驗(yàn)電路:
 在P2口的8條線輸出PWM波形;
 在/INT1、/INT0外接了兩個(gè)按鍵,用來(lái)調(diào)整占空比;
 在P0口外接了兩個(gè)BCD數(shù)碼顯示器,用來(lái)顯示當(dāng)前的占空比的等級(jí)。
 實(shí)驗(yàn)的時(shí)候,可以使用示波器來(lái)觀察P2口輸出的波形。
 如果把PWM波形的頻率提高,也可以用LED觀察到漸亮漸暗的效果,目前看,只是閃爍的時(shí)間發(fā)生變化。

//程序如下:
//==========================================
#include
unsignedinta,b;
//------------------------------------------
voidmain()
{
TMOD=0x01;//T0定時(shí)方式1
TH0=(65536-50000)/256;//50ms@12MHz
TL0=(65536-50000)%256;
TR0=1;ET0=1;
EX0=1;EX1=1;
IT0=1;IT1=1;
EA=1;a=0;
b=10;
while(1);
}
//------------------------------------------
voidtime0()interrupt1
{
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;//50ms@12MHz
a++;
if(a==20)a=0;//在這里調(diào)整周期.
if(a<b)P2=0xff;//在這里調(diào)整占空比.
elseP2=0x00;
P0=((b/10)<<4)+b%10;//顯示占空比等級(jí)
}
//------------------------------------------
voidX0_INT()interrupt0
{
b++;
if(b>19)b=19;//占空比等級(jí)最大為19
}
//------------------------------------------
voidX1_INT()interrupt2
{
b--;
if(b<1)b=1;//占空比等級(jí)最小為1.
}
//==========================================


關(guān)鍵詞: MCS-51單片機(jī)PW

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉