新聞中心

        EEPW首頁 > 嵌入式系統(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 來源:網(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)用很廣,簡單的說,它可以控制燈光的亮度、可以控制直流電機(jī)的轉(zhuǎn)速,甚至還可以輸出語音信號。
        新型的單片機(jī),往往都含有硬件的PWM模塊,編寫程序就很簡單;而老式的MCS-51系列,就不具備這個(gè)條件。
        其實(shí),在沒有PWM硬件的單片機(jī)上實(shí)現(xiàn)PWM,也并不難,只需一個(gè)定時(shí)器,令其工作在中斷方式即可。下面以網(wǎng)上的一個(gè)題目為例,說明實(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等級。針對這個(gè)題目,做而論道設(shè)計(jì)了一個(gè)簡單的實(shí)驗(yàn)電路:
         在P2口的8條線輸出PWM波形;
         在/INT1、/INT0外接了兩個(gè)按鍵,用來調(diào)整占空比;
         在P0口外接了兩個(gè)BCD數(shù)碼顯示器,用來顯示當(dāng)前的占空比的等級。
         實(shí)驗(yàn)的時(shí)候,可以使用示波器來觀察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;//顯示占空比等級
        }
        //------------------------------------------
        voidX0_INT()interrupt0
        {
        b++;
        if(b>19)b=19;//占空比等級最大為19
        }
        //------------------------------------------
        voidX1_INT()interrupt2
        {
        b--;
        if(b<1)b=1;//占空比等級最小為1.
        }
        //==========================================


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

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 安图县| 财经| 松滋市| 阳西县| 霍山县| 黑河市| 瓮安县| 西城区| 襄汾县| 陆丰市| 庄浪县| 临夏市| 岫岩| 南汇区| 安达市| 盐山县| 兴安盟| 华亭县| 改则县| 惠水县| 万源市| 曲靖市| 滕州市| 英吉沙县| 丽水市| 大冶市| 松桃| 德化县| 台北县| 开化县| 龙陵县| 枣强县| 五河县| 诸城市| 光山县| 大渡口区| 禄丰县| 化隆| 积石山| 西乌珠穆沁旗| 日喀则市|