用带PWM输出的单片机做吧!51单片机只能通过定时器来实现。
想12C2052AD这些单片机就带PWM输出的。他的PWM输出程序:
#include<reg52h>
sfr CCON =0xD8;
sfr CMOD=0xD9;
sfr CL=0xE9;
sfr CH =0xF9;
sfr CCAP0L=0xEA;
sfr CCAP0H=0xFA;
sfr CCAPM0=0xDA;
sfr CCAPM1=0xDB;
sbit CR =0xDE
void main(void)
{
CMOD = 0X02;//
CL =0X00;//
CH =0X00;//
CCAP0L = 0xc0;//设置初值
CCAP0H= 0xc0;//输出占空比为25%的波形
CCAPM0 = 0x42;//PWM的输出模式
CR =1 ;启动PCA定时器
while(1){};
}
上面是输出PWM的程序,你把PWM输出端接到你的舵机控制端,再启动PCA就OK了,改变CCAP0的值就可以改变占空比
这个可以用三个I/o口,用定时器0分时启动三路PWM波,代码的话,每次中断给计数器赋下次中断的时间,void T0_time() interrupt 1 //通过定时器0产生多路PWM,每次中断赋值下一次中断的时间,
{ //两个t[]一组,在20ms周期内分时启动各路PWM高电平,
TH0=(65536-9216t[i])/256; //各路的高电平只需1-2ms
TL0=(65536-9216t[i])/256;
i++;
switch(i)
{
case 1:
k1=1;
break;
case 2:
k1=0;
break;
case 3:
k2=1;
break;
case 4:
k2=0;
break;
case 5:
k3=1;
break;
case 6:
k3=0;
break;
}
以上就是关于求高人写一个用c语言写一个51单片机输出PWM控制舵机的程序,舵机参数可以自己定。最好加注释。高分谢谢啦全部的内容,包括:求高人写一个用c语言写一个51单片机输出PWM控制舵机的程序,舵机参数可以自己定。最好加注释。高分谢谢啦、用51单片机控制3路舵机、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)