舵机转向自动控制程序单片机

    单片机为普中51单核A2,不同单片机接口可能不同,所以接口要根据单片机原理图进行细微修改。电机使用的电机控制板。
#include
sbit PWM=P2^1;	  //舵机控制脉冲信号输出口
sbit led = P2^3	;	//信号灯输出口
sbit wen=P3^1;		//传感器或按键输入口
sbit dianji = P0^1;		//电机控制信号输出口
unsigned char angle;
unsigned char count;


void delay(unsigned int z)
{
unsigned int x,y;	
for(x=z;x>0;x--)
for(y=114;y>0;y--);
}							//创建延时函数
void Time0_Init()
{
TMOD=0x01;
IE=0x82;
TH0=0xfe;
TL0=0x33;
TR0=1;
}							//确定时钟工作方式和初始值
void keyscan1()
{
if(wen==0)
{
delay(10);
angle=4;
}					   //定义转135度函数(改变数值可以改变角度,1为0度)
}
void keyscan2()
{
if(wen==1)
{

delay(10);
angle=5;
}
}						//定义转180度函数
void main()
{							   //主函数
wen=1;
count=0;
dianji = 1;
Time0_Init();
while(wen == 1)
{
dianji = 0;			//电机控制
if(wen==1)
{

led = 1;
keyscan2();
delay(1000);
}
wen=~wen;
delay(1000);
if(wen==0)
{

led = 0;
keyscan1();
delay(1000);
}
wen=~wen;
delay(500);
}
	
}					

void Time0_Int() interrupt 1		//中断函数,周期为20ms
{
TH0=0xfe;
TL0=0x33;
if(count<angle)
PWM=1;
else
PWM=0;
count=(count+1);
count=count%40;   //循环40次,可以改为if (count = 40)
					//                  count = 0;
}

你可能感兴趣的:(舵机转向自动控制程序单片机)