新手:求教,我写了一个控制舵机的程序,谁能看看有错吗,为什么插上后舵机不能正常运行,

2019-07-15 14:37发布

本帖最后由 烈焰123 于 2016-3-28 19:43 编辑

新手:求教,我写了一个控制舵机的程序,谁能看看有错吗,为什么插上后舵机不能正常运行,
舵机程序如下:
#include<reg51.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int

uint a,c;
sbit p10=P1^0;
sbit p11=P1^1;

void timer0(void) interrupt 1
{p10=!p10;
p11=!p11;
c=20000-c;
TH0=-(c/256); TL0=-(c%256);
if(c>=500&&c<=2500)c=a;
else c=20000-a;
}
void delay(long j)      
{
for(j;j>0;j--);
}

void main(void)
{
TMOD=0x01; //16位定时器 工作方式1
p10=1;
p11=1;
a=1500;//180//
c=a;
TH0=-(a/256); TL0=-(a%256);
EA=1;
ET0=1;
TR0=1;
for(a=1500;a>=500;a--)
{
a=a-10;
c=a;   
delay(20000);
}
}

如果可以的话,谁能给个正确的舵机控制程序。谢谢了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
17707020887
2019-07-15 18:58
你看下定时器定时周期是多少,还有高电平持续时间是多长,我用的是stm32驱动的舵机,同定时器1的pwm模式输出周期为25ms  ,高电平持续时间分别为0.5ms ,1ms ,1.5ms, 2ms, 2.5ms分别转-90度,-45度,0度,45度,90度,你连转都不转可能是周期错了,或者高电平持续时间不对,你按我说的,用单片机小精灵自动生成下周期为0.5ms的定时,算法在调调看,我用的是stm32,是可以直接控制输出多大的pwm信号了,51可能要动下脑筋了,手动仿真,呵呵

一周热门 更多>