用51单片机同时实现四路PWM波,(C语言)

周期为20ms、每路波形都要实现高电平时间0.5ms,1.3ms,1.9ms,2.3ms,2.5ms四种波形。各位,帮帮忙啊。这么晚了都没有实现... 周期为20ms、每路波形都要实现高电平时间0.5ms,1.3ms,1.9ms,2.3ms,2.5ms四种波形。各位,帮帮忙啊。这么晚了都没有实现 展开
 我来答
飞速领悟
2012-11-19 · TA获得超过332个赞
知道小有建树答主
回答量:134
采纳率:0%
帮助的人:52.2万
展开全部
定个时间20ms周期的定时器,然后在定时器到达那些点的时候,让自己设的那些变量依次变化。 再根据自己的变量,付给输出端口就可以了。 看着像舵机的

看了你追问的,原来是四路每一路都产生变化的波形。那个也好办。可以通过计算,把这几个波形统一起来成一个周期,比如开始0.5ms到了,让定的值取反,再加19.5再取反,再加1.3Ms再取反,再加18.7ms再取反...然后一直这样把几个都写完。
还有种方法,来改变第一个pwm的设定值。比如放数组里一共5个设定值,分别代表你设定的高电平时间,依次替换第一个定时器里面的中端时间即可。
当然,前两种都差不多,还有一种方法供你扩展:就是用两个定时器,然后按照时间去匹配修改。当然,51单片机那精度就不说了,不太确信可以达标,一个定时器进中断了,另一个就要停一下。。
BTW,个人感觉51的单片机没有很好的pwm模块,这样写了Pwm程序,别的就干不了了。建议用用带epwm模块的mcu,直接调用epwm和epwm中断,节省cpu资源,可以多写很多程序。
追问
谢谢!我也想过第二个办法,可能是C编程学的不到位,没有写出来。我试着再写一写。这个是学长给的任务。不能用51自带的PWM波.....就是锻炼我们的编程能力和对51的应用吧
鉴鹰电子小z
推荐于2016-01-04 · TA获得超过5570个赞
知道小有建树答主
回答量:1219
采纳率:25%
帮助的人:861万
展开全部
这个可以实现的,具体的程序可以根据思路来
1:通过计算,把这几个波形统一起来成一个周期,比如开始0.5ms到了,让定的值取反,再加19.5再取反,再加1.3Ms再取反,再加18.7ms再取反...然后一直这样把几个都写完。
2:改变第一个pwm的设定值。比如放数组里一共5个设定值,分别代表你设定的高电平时间,依次替换第一个定时器里面的中端时间即可。
3::是用两个定时器,然后按照时间去匹配修改。。。
建议用用带epwm模块的mcu,直接调用epwm和epwm中断,节省cpu资源,可以多写很多程序。
参考《吴鉴鹰单片机项目实战精讲》,吴鉴鹰单片机开发板教程
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aidby2004
2012-11-22 · TA获得超过872个赞
知道小有建树答主
回答量:284
采纳率:0%
帮助的人:124万
展开全部
你用82C54扩展吧!精度和频率范围都适合你这个要求,有些三轴控制系统里面都有人用这个+51单片机实现的!程序在我回答的问题里面有,这个程序是已经实际通过调试的,你可以直接用的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huzi2099
2012-11-19 · TA获得超过1172个赞
知道小有建树答主
回答量:1887
采纳率:82%
帮助的人:638万
展开全部
很多51都带pwm,你的只要精确到0.1ms,肯定能实现.
标准51用定时器也可以软件实现,你的指标不高没问题.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式