如何利用51单片机,实现舵机控制,具体要求是起始时,舵机正转45°,延时9秒,舵机反转45°,延时49秒,依此规律循环。PWM控制无法实现这种循环。我自己写的程序如下:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit PWM = P2^7;
uchar count,jd,i,j,ms;
void delay_1ms(uint x) //延时1ms
{
TMOD=0x01; //开定时器0,工作方式为1
TR0=1; //启动定时器0;
while(x--)
{
TH0=0xfc; //定时1ms初值的高八位装入TH0
TL0=0x18; //定时1ms初值的低八位装入TL0
while(!TF0); //等待,知道TF0为1
TF0=0; //重置溢出标志位
}
TR0=0; //停止定时器0;
}
void main()
{
while(1)
{
//舵机运动时间
// PWM=1;
// delay_1ms(1);
// PWM=0;
// delay_1ms(19);
PWM=1;
delay_1ms(1);
PWM=0;
delay_1ms(19);
delay_1ms(5000);//设置9秒延时
delay_1ms(3999);
PWM=1;
delay_1ms(1);
PWM=0;
// delay_1ms(19);
PWM=1;
delay_1ms(1);
PWM=0;
delay_1ms(19);
delay_1ms(5000); //设置长时间的48秒延时
delay_1ms(5000);
delay_1ms(5000);
delay_1ms(5000);
delay_1ms(5000);
delay_1ms(5000);
delay_1ms(5000);
delay_1ms(3000);
delay_1ms(5000);//设置长时间的48秒延时
delay_1ms(5000);
}
}