新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 關于MCS-51單片機實現PWM的方法

        關于MCS-51單片機實現PWM的方法

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

        //程序如下:
        //==========================================
        #include
        unsignedinta,b;
        //------------------------------------------
        voidmain()
        {
        TMOD=0x01;//T0定時方式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;//在這里調整周期.
        if(a<b)P2=0xff;//在這里調整占空比.
        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.
        }
        //==========================================


        關鍵詞: MCS-51單片機PW

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 定州市| 宜兰县| 阜南县| 搜索| 化隆| 蒙阴县| 天祝| 宿松县| 东兰县| 循化| 西林县| 呼图壁县| 靖宇县| 遂昌县| 南岸区| 闻喜县| 临城县| 广灵县| 朔州市| 昌平区| 哈密市| 富宁县| 宜君县| 资源县| 唐河县| 松阳县| 辽中县| 九龙城区| 自治县| 綦江县| 上杭县| 连南| 兴山县| 文化| 吉首市| 云林县| 浙江省| 衡阳县| 玉门市| 潞城市| 茌平县|