51单片机PWM占空比可调 定时器实现,,,只求方法,,望大侠赐教【恢复】

2020-01-23 14:40发布

51单片机PWM占空比可调  定时器实现,,,只求方法,,望大侠赐教

占空比从10%————50%

频率为500HZ
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
minghua
2020-01-25 06:34
用一个定时器就可以了。
我这个是我现在用的,5%-95%可调。不过频率不是500HZ的。如果要用到500HZ,可以用模式1,这样频率就可以低一些。然后每次进入定时器更新TH和TL就可以了。模式1进入中断可能要停定时器。如果是调压,模式2就可以了。重载很方便的。
void timer1svr (void) interrupt 3 using 0
{
  if(duty)           //如果此时是正脉宽,自动置数负脉宽置数,下面要更新为正脉宽置数以便下次中断使用
  {
     TH1=dutyH;
          AV=0;

  }
  else                  //否则自动置数正脉宽,下面要更新为负脉宽置数以便下次中断使用
  {
    TH1=dutyL;
    AV=1;

  }
  duty=~duty;  //脉宽状态取反
}
duty是脉宽的状态,AV是某个IO,dutyH,dutyL是前面设定好的置数。更改置数就可以调节脉宽占空比。

一周热门 更多>