|
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint t,t1,biao=0,biao1=0;
uint zuo,you,zhong;
sbit A1=P2^0;//电机一 正极
sbit A2=P2^1;//电机一 负极
sbit B1=P2^2; //电机二 正极
sbit B2=P2^3;//电机二 负极
sbit AX=P2^4; //电机一 使能
sbit BX=P2^5;//电机二 使能
sbit jc1=P0^0;
sbit jc2=P0^1;
sbit jc3=P0^2;
sbit bz=P3^2;
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void init()
{
EA=1;
ET1=1;
TMOD=0x10;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
AX=0;BX=0;
A1=0;A2=0;
B1=0;B2=0;
zuo=0,you=0;zhong=0;
}
/***************循迹************/
void zz()//左旋转
{
AX=0;BX=1;
A1=0;A2=0;
B1=1;B2=0;
}
void yz()//右旋转
{
AX=1;BX=0;
A1=1;A2=0;
B1=0;B2=0;
}
void qj()//前进
{
AX=1;BX=1;
A1=1;A2=0;
B1=1;B2=0;
}
void ht()//后退
{
AX=1;BX=1;
A1=0;A2=1;
B1=0;B2=1;
}
void ydz()//原地转
{
AX=1;BX=1;
A1=0;A2=1;
B1=1;B2=0;
}
/*void tz()//停止
{
AX=0;BX=0;
A1=0;A2=0;
B1=0;B2=0;
} */
/**********运行*****************/
void xj()
{
if(jc2==0) //没有偏离轨道
{
qj();
biao=0;
zhong=1;zuo=0;you=0;
}
else if(jc1==0) //向左偏离轨道
{
yz();
}
else if(jc3==0) //向右偏离轨道
{
zz();
biao=0;
zhong=0;zuo=1;you=0;
}
else
{
if(jc1==1)
{
if(jc2==1)
{
if(jc3==1)
{
ht();
}
}
}
}
}
/***********主循迹*********/
void zxj()
{
if(biao==0)
{
xj();
}
else
{
xj();
if(biao==1)
{
ydz();
delay(1400);
biao=0;
}
else
biao=0;
}
}
/***************臂障**************/
void bz1()
{
if(bz==0)
{
delay(500);
if(bz==0)
{
biao1=1;
TR1=1;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
t=0;
t1=0;
}
}
else
biao1=0;
}
/***********主函数***************/
void main()
{
init();
biao=0;biao1=0;
while(1)
{
if(biao1==0)
{
zxj();
bz1();
}
else
{ if(t1==0)
zz();
}
}
}
void as() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
t++;
if(t==10)
{
t=0;
t1++;
}
}
|
|