色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 軟件實(shí)現(xiàn)多路PWM的輸出

          軟件實(shí)現(xiàn)多路PWM的輸出

          作者: 時(shí)間:2012-10-27 來(lái)源:網(wǎng)絡(luò) 收藏
          單片機(jī)應(yīng)用于舞臺(tái)燈光、民用照明的調(diào)光、電機(jī)轉(zhuǎn)速、溫度控制等眾多領(lǐng)域時(shí)需要用到PWM占空比進(jìn)行調(diào)節(jié)。市場(chǎng)上,集成了硬件PWM模塊的單片機(jī)型號(hào)如PIC16F628A、STC12C2052等。使用硬件PWM時(shí)僅需進(jìn)行一些特殊功能寄存器的設(shè)置,使用方便。但硬件PWM輸出路數(shù)往往較少,如果要增PWM的輸出路數(shù)則會(huì)使產(chǎn)品成本上升,較難適應(yīng)于價(jià)格敏感的產(chǎn)品上。如:PIC16F628A、STC12C2052僅具有兩路PWM輸出。舞臺(tái)光通常要到用三路PWM信號(hào)調(diào)光(三路分別控制紅、綠、藍(lán)三基色進(jìn)行組合搭配出不同色彩)。因此軟件實(shí)現(xiàn)PWM是較為合理的選擇。

          在舞臺(tái)燈光廠做了這么久,雖然明白軟件PWM的原理,但就是弄不清它們的關(guān)系,一直寫不出比較好的軟件PWM程序。近日,一偶然的機(jī)會(huì)得到啟發(fā),寫下這個(gè)程序和單片機(jī)愛(ài)好者分享。

          程序如下:

          AUXR EQU 8EH
          PWM1DATA EQU 60H
          PWM2DATA EQU 61H
          PWM3DATA EQU 62H
          PWM1DATA1 EQU 63H
          PWM2DATA1 EQU 64H
          PWM3DATA1 EQU 65H
          PWM1 EQU P0.5
          PWM2 EQU P0.6
          PWM3 EQU P0.7
          ORG 0000H
          AJMP MAIN
          ORG 000BH
          AJMP TIMER0
          ORG 0030H
          MAIN:
          CLR PWM1
          MOV P0,#11H
          MOV SP,#30H
          MOV AUXR,#01H
          CLR RS1
          CLR RS0
          MOV TMOD,#02H
          MOV TH0,#00H

          MOV TL0,#00H
          MOV R2,#0FFH;R2用作PWM周期寄存器
          MOV PWM1DATA,#0
          MOV PWM2DATA,#85
          MOV PWM3DATA,#170
          MOV PWM1DATA1,PWM1DATA
          MOV PWM2DATA1,PWM2DATA
          MOV PWM3DATA1,PWM3DATA
          SETB EA ;開(kāi)中斷總控制
          SETB ET0;開(kāi)TO中斷控制
          SETB TR0 ;開(kāi)始 計(jì)數(shù)

          MAIN1:
          ACALL DEL
          INC PWM1DATA
          INC PWM2DATA
          INC PWM3DATA
          AJMP MAIN1
          DEL:
          MOV R4,#05H
          D1:
          MOV R5,#0FFH
          D2:
          MOV R6,#0FFH
          DJNZ R6,$
          DJNZ R5,D2
          DJNZ R4,D1
          RET

          TIMER0: ;定時(shí)器中斷
          PUSH ACC
          TIMER001:
          MOV A,PWM1DATA1
          JZ TIMER0011
          SETB PWM1
          DEC PWM1DATA1
          AJMP TIMER002
          TIMER0011:
          CLR PWM1
          TIMER002:
          MOV A,PWM2DATA1
          JZ TIMER0021
          SETB PWM2
          DEC PWM2DATA1
          AJMP TIMER003
          TIMER0021:
          CLR PWM2
          TIMER003:
          MOV A,PWM3DATA1
          JZ TIMER0031
          SETB PWM3
          DEC PWM3DATA1
          AJMP TIMER004
          TIMER0031:
          CLR PWM3
          TIMER004:
          DJNZ R2,TIMER005
          MOV R2,#0FFH
          MOV PWM1DATA1,PWM1DATA
          MOV PWM2DATA1,PWM2DATA
          MOV PWM3DATA1,PWM3DATA
          TIMER005:
          POP ACC
          RETI
          END

          這個(gè)程序是基于實(shí)現(xiàn)的。因?yàn)镻WM的頻率較低,所以當(dāng)的是LED時(shí)會(huì)有較大的閃動(dòng)。如果要解決這個(gè)問(wèn)題,則可以提高時(shí)鐘頻率?;蚴褂霉ぷ魉俣雀斓膯纹瑱C(jī),如STC12C2052可以設(shè)置為1時(shí)鐘1,工作頻率最高可達(dá)420MHZ。盡量不要改變定時(shí)器T0的初值(初值越小越好,最好為00H),因?yàn)槿绻麊纹瑱C(jī)此時(shí)還要執(zhí)行其它的任務(wù)(如串行通訊)時(shí),T0的中斷頻率過(guò)高對(duì)軟件PWM是致命的。

          pwm相關(guān)文章:pwm原理




          關(guān)鍵詞: PWM控制 STC89C52 機(jī)器周期

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉