前几天买了个mg995舵机来玩玩,用51开发板来,写了下面这段程序: #include<reg52.h> #define uchar unsigned char #define uint unsigned int
sbit MOTOR=P0^2; uint time[4]={1500,0,1500,2000}; //高电平时间 1.5ms 0ms 1.5ms 2ms uchar level=0; uchar count=0; uchar delayflag=1;
void main() { MOTOR=0; TMOD=1; TH0=65536; TL0=65536; EA=1; ET0=1; TR0=1;
while(1) { } }
void int0() interrupt 1 { if (level==0) { MOTOR=1; TH0=(65536-time[count])/256; //高电平保持时间 TL0=(65536-time[count])%256; level=1; } else { MOTOR=0; TH0=(65536-(18000-time[count]))/256; //低电平保持时间 TL0=(65536-(18000-time[count]))%256; delayflag++; if (delayflag==50) //使波形保持50次 { delayflag=1; count++; if (count==4) count=0; //转到下一个波形 } level=0; } }
按照PWM来看的话转动角度应该是与舵机成90度,0度,90度,45度。但是舵机却是90度-0度之间往复运动。第一次用舵机,还不太会,请大牛们帮看看到底是什么问题。再就是请大牛们发几段51控制舵机的程序吧,介绍一点用mg995舵机的经验也行,谢谢了~~~~ |