#include<reg52.h>
#define uchar unsigned char
sbit ena=P2^1; // 前轮使能端
sbit enb=P2^4; // 后轮使能端
sbit zuozhuan=P2^0; //电机左转使能
sbit youzhuan=P2^2; //电机右转使能
sbit azheng=P2^3; //后轮正转使能
sbit afan=P2^5; //后轮反转使能
sbit zuo=P1^0; //左里侧对管
sbit you=P1^1; //右里侧对管
sbit zuo1=P1^2; //左外侧对管
sbit you1=P1^3; //右外侧对管
sbit zhang=P1^4; //光电管检测前方是否有障碍
void delay2() //延时子函数
{
uchar b;
for(b=10;b>0;b--);
}
void main()
{
while(1)
{
if(zhang==1)//前方没有障碍
{
while(zhang)
{
//以下循迹程序,4个红外对管分别检测下方是否是黑线,如果是,传送低电平,相应的左转或者右转
ena=1;
enb=1;
azheng=1;
afan=0;
zuozhuan=0;
youzhuan=0;
while(!zuo)
{
youzhuan=1;
delay2();
}
youzhuan=0;
while(!you)
{
zuozhuan=1;
delay2();
}
zuozhuan=0;
while(!zuo1)
{
youzhuan=1;
delay2();
while(zuo);
}
youzhuan=0;
while(!you1)
{
zuozhuan=1;
delay2();
while(you);
}
zuozhuan=0;
}
}
if(zhang==0)
{
while(!zhang)
{
ena=1;
enb=1;
azheng=0;
afan=0;
zuozhuan=0;
youzhuan=0;
}
}
}
}
至于电路图的连接,太麻烦了,但是原理很简单,我想这不会影响到朋友们对这个程序的理解。
目的就是循迹,如果遇到障碍就停止。
但是目前,循迹功能正常,但是,当上电开始的时候光电管前方没有障碍物的时候,小车正常行走并正常循迹,但是当有障碍物的时候,小车没有任何停止的反应;如果刚上电的时候就在光电管前方设置障碍物,小车不会启动,当把障碍物移走,小车正常启动,正常循迹,再加障碍,小车没有动静。。。
求正解! |