气动阀厂家
免费服务热线

Free service

hotline

010-00000000
气动阀厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

软件实现多路PWM的输出

发布时间:2020-06-30 22:53:31 阅读: 来源:气动阀厂家

单片机应用于舞台灯光、民用照明的调光、电机转速、温度控制等众多领域时需要用到PWM占空比进行调节。市场上,集成了硬件PWM模块的单片机型号如PIC16F628A、STC12C2052等。使用硬件PWM时仅需进行一些特殊功能寄存器的设置,使用方便。但硬件PWM输出路数往往较少,如果要增PWM的输出路数则会使产品成本上升,较难适应于价格敏感的产品上。如:PIC16F628A、STC12C2052仅具有两路PWM输出。舞台光通常要到用三路PWM信号调光(三路分别控制红、绿、蓝三基色进行组合搭配出不同色彩)。因此软件实现PWM是较为合理的选择。在舞台灯光厂做了这么久,虽然明白软件PWM的原理,但就是弄不清它们的关系,一直写不出比较好的软件PWM程序。近日,一偶然的机会得到启发,写下这个程序和单片机爱好者分享。

程序如下:

AUXR EQU 8EHPWM1DATA EQU 60HPWM2DATA EQU 61HPWM3DATA EQU 62HPWM1DATA1 EQU 63HPWM2DATA1 EQU 64HPWM3DATA1 EQU 65HPWM1 EQU P0.5PWM2 EQU P0.6PWM3 EQU P0.7ORG 0000HAJMP MAINORG 000BHAJMP TIMER0ORG 0030HMAIN:CLR PWM1 MOV P0,#11HMOV SP,#30H MOV AUXR,#01HCLR RS1CLR RS0MOV TMOD,#02HMOV TH0,#00H

MOV TL0,#00HMOV R2,#0FFH;R2用作PWM周期寄存器MOV PWM1DATA,#0MOV PWM2DATA,#85MOV PWM3DATA,#170MOV PWM1DATA1,PWM1DATAMOV PWM2DATA1,PWM2DATAMOV PWM3DATA1,PWM3DATASETB EA ;开中断总控制SETB ET0;开TO中断控制SETB TR0 ;开始 计数

MAIN1:ACALL DELINC PWM1DATAINC PWM2DATAINC PWM3DATAAJMP MAIN1DEL:MOV R4,#05HD1:MOV R5,#0FFHD2:MOV R6,#0FFHDJNZ R6,$DJNZ R5,D2DJNZ R4,D1RET

TIMER0: ;定时器中断PUSH ACCTIMER001:MOV A,PWM1DATA1JZ TIMER0011SETB PWM1DEC PWM1DATA1AJMP TIMER002TIMER0011:CLR PWM1TIMER002:MOV A,PWM2DATA1JZ TIMER0021SETB PWM2DEC PWM2DATA1AJMP TIMER003TIMER0021:CLR PWM2TIMER003:MOV A,PWM3DATA1JZ TIMER0031SETB PWM3DEC PWM3DATA1AJMP TIMER004TIMER0031:CLR PWM3TIMER004:DJNZ R2,TIMER005MOV R2,#0FFHMOV PWM1DATA1,PWM1DATAMOV PWM2DATA1,PWM2DATAMOV PWM3DATA1,PWM3DATATIMER005:POP ACCRETIEND

这个程序是基于STC89C52实现的。因为PWM的频率较低,所以当PWM控制的是LED时会有较大的闪动。如果要解决这个问题,则可以提高时钟频率。或使用工作速度更快的单片机,如STC12C2052可以设置为1时钟1机器周期,工作频率最高可达420MHZ。尽量不要改变定时器T0的初值(初值越小越好,最好为00H),因为如果单片机此时还要执行其它的任务(如串行通讯)时,T0的中断频率过高对软件PWM是致命的。

pwm相关文章:pwm原理

吉林订制工服

北京职业装制做

济宁定做防静电工作服