舵机转动度数问题?求大神。
时间:10-02
整理:3721RD
点击:
#include <reg51.h>
sbit P1_2=P1^2; //用来输出PWM信号
unsigned char m=9,n=0;
int time_ok=0;
void main(void)
{
P1_2=1;
TMOD = 0x11;
TH0 = 0xB8; //定时20ms
TL0 = 0x00;
TH1 = 0xFF; //定时0.01ms
TL1 = 0xF6;
EA = 1;
ET0 = 1;
TR0 = 1;
ET1 = 1;
TR1 = 1;
while(1);
}
void Timer0Interrupt(void) interrupt 1
{
TH0 = 0xB8; //定时器1产生20ms的周期
TL0 = 0x00;
n++;
if(n==100) //n可以控制转动的间隔时间
{ m++;
n=0;
}
}
void Time1Interrupt(void) interrupt 3
{ TH1 = 0xFF;
TL1 = 0xF6;
++time_ok;
if(time_ok>=2000) //产生脉冲,m每加1,高电平会增加一个第二个定时器的时间0.01ms
{
P1_2=1;
time_ok=0;
}
if(time_ok>m)
{
P1_2=0;
}
}
这是舵机共转180°,转一下停一下的程序,我想让舵机每次转的度数小于1°。问题是舵机每次转动的度数为5°多,无法达到1°以下。舵机是MG996R。用的是51单片机,晶振频率为11.0592MHz。求帮助啊!
sbit P1_2=P1^2; //用来输出PWM信号
unsigned char m=9,n=0;
int time_ok=0;
void main(void)
{
P1_2=1;
TMOD = 0x11;
TH0 = 0xB8; //定时20ms
TL0 = 0x00;
TH1 = 0xFF; //定时0.01ms
TL1 = 0xF6;
EA = 1;
ET0 = 1;
TR0 = 1;
ET1 = 1;
TR1 = 1;
while(1);
}
void Timer0Interrupt(void) interrupt 1
{
TH0 = 0xB8; //定时器1产生20ms的周期
TL0 = 0x00;
n++;
if(n==100) //n可以控制转动的间隔时间
{ m++;
n=0;
}
}
void Time1Interrupt(void) interrupt 3
{ TH1 = 0xFF;
TL1 = 0xF6;
++time_ok;
if(time_ok>=2000) //产生脉冲,m每加1,高电平会增加一个第二个定时器的时间0.01ms
{
P1_2=1;
time_ok=0;
}
if(time_ok>m)
{
P1_2=0;
}
}
这是舵机共转180°,转一下停一下的程序,我想让舵机每次转的度数小于1°。问题是舵机每次转动的度数为5°多,无法达到1°以下。舵机是MG996R。用的是51单片机,晶振频率为11.0592MHz。求帮助啊!