程序就不给你了给你点思路,吔许这样对你帮助更大先看波形图。
如图所示PWM的周期为20MS,要改变舵机角度就要改变此PWM的占空比
有个方法,假如我们吧这个20MS分成200份那1份的时间就是100US
我们可以用定时器定时100US中断一次,中断200次就是一个周期分了段就简单了,
我们知道普通模拟舵机的控制信号为50HZ高电平寬度为500us对应-90度—2500us对应+90度
如果我们想让舵机移到-90度,我们只需要对中断计数
在第1次进入中断的时候,我们把XI/O口拉高在第6次进中断的时候拉低,我们就得到了500us的高电平
舵机移到-90度位置
在下一个周期来的第一次中断的时候,我们把XI/O口拉高在第7次进中断的时候拉低,这次我們就得到了600us的高电平
当到了2500us的时候我们再来减
周期开始第一次拉高,25次的是时候拉低舵机移到+90度-100/度,
在下一个周期来的第一次中断的時候拉高24次的是时候拉低,舵机移到+90度-100us/度-100us度
以此类推,一直到500us又开加,到2500有减如次往复一个定时器搞定,是不是很简单
至于振膜计数和清零,舵机每次转动多少度以及多少时间动作一次这个就要你自己去悟想办法写了。
其实也并不复杂就是两三个变量,几个IF囷分辨率THXTLX配置的问题,等你看明白了写出来了,普通51软件模拟PWM
|