单片机如何模拟16路PWM

2019-07-15 10:10发布

RT。。最近整了个灯的样品在玩,通过逻辑分析仪抓到的16路PWM波形,16路周期都为5ms,其中有6路PWM是持续输出,剩下的10路间断输出,每一路的占空比都在3个周期后改变。观察到的占空比无任何规律,求解应如何做才比较好。。
QQ截图20170720215221.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
17条回答
小S咯
2019-07-17 13:08
本帖最后由 小S咯 于 2017-7-27 09:14 编辑

我用的是新塘的51单片机,给你参考假设输出为p00~p07,p10~p1716个引脚;
u8 pwm1,pwm2 ......pwm16;
void Timer0_Init(void)
{
        TMOD &= ~0XF;
        TMOD |= 0X1;
        
        TIMER0_MODE1_ENABLE;                       

        set_T0M;                         //时钟源为系统时钟
        
        TH0 = TH0_INIT;              //设置频率
        TL0 = TL0_INIT;

        set_ET0;                                 
        set_EA;                                 
        
        set_TR0;               

}

void Timer0_ISR (void) interrupt 1        
{
        static u8 count=0;              //这是计数器,用一个变量与他比较就是PWM
        
        clr_TR0;                  
        TH0 = TH0_INIT;
        TL0 = TL0_INIT;   
        set_TR0;              //重新装值


        count++;
        if(count>=120)
              count=0;


        if(pwm1>count)
            p00=1;
         else
            p00=0;
          if(pwm2>count)
            p01=1;
         else
            p01=0;
          .
          .
          .
          if(pwm16>count)
            p17=1;
         else
            p17=0;
}
在mian函数中改变pwm的值就可以改变占空比了!0~120之间。

评分

参与人数 1积分 +2 收起 理由 elecfansor + 2 您的付出是论坛的动力,感谢您一直支持!.

查看全部评分

一周热门 更多>