找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2573|回复: 11
收起左侧

关于52单片机 PWM波 求大侠解救

[复制链接]
ID:146381 发表于 2016-11-20 17:06 | 显示全部楼层 |阅读模式
52单片机如何同时模拟占空比不同的PWM波 ?

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

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


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

求大神解救!


回复

使用道具 举报

ID:138194 发表于 2016-11-21 10:40 | 显示全部楼层
大神救救我
回复

使用道具 举报

ID:149162 发表于 2016-11-21 11:05 | 显示全部楼层
用两个定时器
回复

使用道具 举报

ID:111634 发表于 2016-11-21 11:13 | 显示全部楼层
用两个定时器,或一个定时器对同一基准不同计数。
回复

使用道具 举报

ID:149144 发表于 2016-11-21 11:30 | 显示全部楼层
直接用两个定时器,分两个输出试试。最近在做带反馈的,不过失败了
回复

使用道具 举报

ID:70330 发表于 2016-11-21 12:11 | 显示全部楼层
一个定时器就可控制8路pwm,网上有很多例子
回复

使用道具 举报

ID:123289 发表于 2016-11-22 09:38 | 显示全部楼层
做N路PWM的方式:
1、用一个定时器用于时基,如:用T0中断做一个1ms的定时器。
2、做2N个计时器(寄存器)和N个开关,N个用于计高电平时间,另N个用于计低电平时间,N个开关用于控制计时器是否工作。
回复

使用道具 举报

ID:123289 发表于 2016-11-22 09:38 | 显示全部楼层
以第三个为例:N3H个用于计高电平时间,N3L个用于计低电平时间,K3用于控制计时器是否工作。
回复

使用道具 举报

ID:123289 发表于 2016-11-22 09:45 | 显示全部楼层
T0中断程序中:
检测K3和第三路的输出。
K3=0,不处理。
K3=1,输出为1时,N3H+1计数,计满后复位N3H准备下次用,再将输出清0;
K3=1,输出为0时,N3L+1计数,计满后复位N3L准备下次用,再将输出置1;
回复

使用道具 举报

ID:123289 发表于 2016-11-22 09:52 | 显示全部楼层
主程序中:
初始化时复位所有的计时器及开关。
调节第三路占空比时,改动N3H,N3L的复位值即可(复位值也需要占用两个寄存器,宽度大时自行增加寄存器)。
起动第三路时,将K3置1。
停止第三路时,将K3清0,并处理第三路的输入,将输入做成需要的0或1。
回复

使用道具 举报

ID:123289 发表于 2016-11-22 09:58 | 显示全部楼层
以8路输出为例需要占用的寄存器为33个字节:
8个字节用于输出1计时;
8个字节存放复位1的值;
8个字节用于输出0计时;
8个字节存放复位0的值;
1个字节用于8个开关,一位控制一路。
回复

使用道具 举报

ID:123289 发表于 2016-11-22 10:07 | 显示全部楼层
如果输出周期定长,可以节省一些寄存器;
另:通过增加寄存器可扩展输出0,1的时长。同样调整T0的中断时间值也能达到上述目的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表