新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51系列單片機輸出PWM的兩種方法

        51系列單片機輸出PWM的兩種方法

        作者: 時間:2008-10-15 來源:網絡 收藏

        MCS-51系列無PWM輸出功能,可以采用定時器配合軟件的方法實現,對精度要求不高的場合是非常實用的。電路圖見圖1,采用高速光隔6N137輸出,并將PWM的信號倒相。
          一、 工作原理(原理圖如圖1所示)
          二、PWM輸出
          1. 固定脈寬PWM輸出
        用T0定時器完成PWM輸出,脈寬固定為65536us。T0定時器設置成16位定時器,PWM波形如圖2所示。
          程序清單:(12MHz)
          PwmData0;T0定時t1的初值(字)
          PwmData1;T0定時t2的初值(字)
          PwmF ;PWM輸出標志
        ;***************************
          setb tr0;啟動T0 ……
           ;T0中斷服務程序
        T0Int:JB,PwmF,PWMOUT ;PWM輸出未完成返回
        MOV TH0,HIGH(PwmData0)
        MOV TL0,LOW (PwmData1)
        SETB TRO  

        SETB PwmF

        CLR P1.0 ;PWM輸出腳
          RETI

        PWMOUT:SETB P1.0 CLR TR0

        MOV TH0,HIGH(PWMDATA1)
        MOV TL0,LOW(PWMDATA1)
        SETB TR0
        CLR PWMF

        RETI

        說明:在主程序中計算PWMDATA0、PWMDATA1的值。
          2. 可變脈寬PWM輸出
          用T0定時器控制PWM的占空比,T1定時器控制脈寬(最大65536us。)
          T0、T1定時器設置成16位定時器。PWM輸出波形如圖3所示。
          程序清單:(12MHz)
            PwmData0;T0定時t1的初值(字)
           PwmData1;T0定時t2的初值(字)
        ;***************************
        SETB TR0;啟動T0
           SETB TR1   ......

        T0INT:CLR TR0;T0中斷服務程序
          SETB P1.0 ;PWM輸出腳
             RETI

        T1INT:CLR P1.0 ;T1中斷服務程序
            CLR TR0      
        CLR TR1
             MOV TH0,HIGH(PWMDATA0)
             MOV TL0,LOW(PWMDATA0)
             MOV TH1,HIGH(PWMDATA1)
             MOV TL1,LOW(PWMDATA1)
             SETB TR1     
        SETB TR0

        RETI
          說明:在主程序中計算PWMDATA0、PWMDATA1的值。

        pwm相關文章:pwm原理




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 隆尧县| 咸丰县| 清涧县| 丰顺县| 昂仁县| 北宁市| 抚州市| 辽中县| 鹿泉市| 阳谷县| 岫岩| 钦州市| 泾源县| 孙吴县| 临桂县| 芦山县| 奈曼旗| 交城县| 丹江口市| 天等县| 龙南县| 漳浦县| 松原市| 绥中县| 柯坪县| 玛多县| 炉霍县| 比如县| 新化县| 建阳市| 松桃| 辰溪县| 长岛县| 探索| 雅安市| 沧州市| 夏津县| 和政县| 宝应县| 峨眉山市| 华亭县|