标题: 关于52单片机 PWM波 求大侠解救 [打印本页]

作者: 这个小孩很会玩    时间: 2016-11-20 17:06
标题: 关于52单片机 PWM波 求大侠解救
52单片机如何同时模拟占空比不同的PWM波 ?

52单片机如何同时模拟占空比不同的PWM波 ?

52单片机如何同时模拟占空比不同的PWM波 ?


急!!!  
急!!!  
急!!!
小弟只能模拟一路,不能同时模拟两路!

求大神解救!



作者: 龚红    时间: 2016-11-21 10:40
大神救救我
作者: hello1905    时间: 2016-11-21 11:05
用两个定时器
作者: zl2168    时间: 2016-11-21 11:13
用两个定时器,或一个定时器对同一基准不同计数。
作者: cuihaodianzi    时间: 2016-11-21 11:30
直接用两个定时器,分两个输出试试。最近在做带反馈的,不过失败了
作者: xsynet    时间: 2016-11-21 12:11
一个定时器就可控制8路pwm,网上有很多例子
作者: yzwzfyz    时间: 2016-11-22 09:38
做N路PWM的方式:
1、用一个定时器用于时基,如:用T0中断做一个1ms的定时器。
2、做2N个计时器(寄存器)和N个开关,N个用于计高电平时间,另N个用于计低电平时间,N个开关用于控制计时器是否工作。
作者: yzwzfyz    时间: 2016-11-22 09:38
以第三个为例:N3H个用于计高电平时间,N3L个用于计低电平时间,K3用于控制计时器是否工作。
作者: yzwzfyz    时间: 2016-11-22 09:45
T0中断程序中:
检测K3和第三路的输出。
K3=0,不处理。
K3=1,输出为1时,N3H+1计数,计满后复位N3H准备下次用,再将输出清0;
K3=1,输出为0时,N3L+1计数,计满后复位N3L准备下次用,再将输出置1;

作者: yzwzfyz    时间: 2016-11-22 09:52
主程序中:
初始化时复位所有的计时器及开关。
调节第三路占空比时,改动N3H,N3L的复位值即可(复位值也需要占用两个寄存器,宽度大时自行增加寄存器)。
起动第三路时,将K3置1。
停止第三路时,将K3清0,并处理第三路的输入,将输入做成需要的0或1。
作者: yzwzfyz    时间: 2016-11-22 09:58
以8路输出为例需要占用的寄存器为33个字节:
8个字节用于输出1计时;
8个字节存放复位1的值;
8个字节用于输出0计时;
8个字节存放复位0的值;
1个字节用于8个开关,一位控制一路。
作者: yzwzfyz    时间: 2016-11-22 10:07
如果输出周期定长,可以节省一些寄存器;
另:通过增加寄存器可扩展输出0,1的时长。同样调整T0的中断时间值也能达到上述目的。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1