单片机学习小组
直播中

陈鹏

7年用户 211经验值
私信 关注

请问51单片机怎样用两个定时器产生三路PWM信号?

51单片机怎样用两个定时器产生三路PWM信号,软件实现,不用延时函数,并且占空比可调,我是想做RGB调光的

回帖(4)

h1654155275.5954

2019-7-5 08:03:47
一个定时器就可以,只说说我的思路:首先要有一个公共的时基,比如你的三路PWM范围是0~1000Hz,而你的占空比是以1%步进,那么就让定时器以10ms中断一次。
建立全局变量   【计数数组[3]】 和 【三份正占空比变量ABC】,这个正占空比变量是char类型,是在主while(1)中根据你的占空比得出来的,表示每中断多少次就翻转一次,在中断里只是为整个计数数组每个变量加一,在主while(1)中计数数组每到正占空比变量的值就翻转相应引脚,同时翻转标志变为【100-正占空比变量】。
表达能力有限,有很多地方说不清楚,就不多说了。
或许你可以看看讲并发机制的书。
举报

阮浙临

2019-7-5 08:13:28
谢谢,没听太懂,能简单的用程序表达一下吗?
举报

刘鑫

2019-7-5 08:30:03
一个定时器内跑最小的时基,然后定义变量自++到你需要的时间
void WMout(PWMH)   //PWM输出

 
     
     if(time0<WMH)
 {
    WM=1;
}
else
{
  WM=0;
}>
同时注意要在定时器内加time0的范围限制函数
 if(time0>100)
            {
      time0=0;
    }
   
举报

阿信509

2019-7-5 10:04:43
简单点说就像乐队的指挥,一个人指挥所有人
举报

更多回帖

发帖
×
20
完善资料,
赚取积分