自动循迹小车程序(包括LCD显示模块)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char NUM=0 ;
sbit LSEN1=P2^0;
sbit LSEN2=P2^1;
sbit MSEN1=P2^2;
sbit RSEN1=P2^3;
sbit RSEN2=P2^4;
//**传感器***/
sbit IN1=P1^0;
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;
sbit ENA=P1^4;
sbit ENB=P1^5;
void qianjin();
void turn_left();
void turn_right();
//******************直行******************// void qianjin()
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
ENA=1;
ENB=1;
}
//***************左转函数***************// void turn_left()
{
IN1=0;
IN2=0;
IN3=1;
IN4=0;
ENA=1;
ENB=1;
}
//***************右转函数***************// void turn_right()
{
IN1=1;
IN2=0;
IN3=0;
IN4=0;
ENA=1;
ENB=1;
}
//***************循迹函数*****************//
void xunji()
{
uchar flag;
if((RSEN1==1)&&(RSEN2==1)&&(MSEN1==0)&&(LSEN1==1)&&(LSEN2==1)) { flag=0; }
//*******直行*******//
else
if((RSEN2==0)&&(RSEN1==1)&&(LSEN1==1)&&(LSEN2==1)&&(MSEN1==1)) { flag=1;} //***左偏1,小右转***//
else
if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==0)&&(MSEN1==1)) { flag=2; } //***右偏1,小左转***//
else
if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==1)&&(MSEN1==1)) { flag=3; } //***右偏2,大左转***//
else
if((RSEN2==1)&&(RSEN1==0)&&(LSEN1==1)&&(LSEN2==1)&&(MSEN1==1)) { flag=4;} //***左偏2,大右转***//
else
if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==0)&&(MSEN1==1)) { flag=5; } //***右偏3,中左转***//
else
if((RSEN1==0)&&(RSEN2==0)&&(LSEN1==1)&&(LSEN2==1)&&(MSEN1==1)) { flag=6; } //***左偏3,中右转***//
else
if((RSEN1==0)&&(RSEN2==0)&&(LSEN1==1)&&(LSEN2==1)&&(MSEN1==0)) { flag=7; }
else
if((RSEN1==0)&&(RSEN2==0)&&(LSEN1==1)&&(LSEN2==0)&&(MSEN1==0)) { flag=8; }
else
if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==0)&&(MSEN1==0)) { flag=9;}
else
if((RSEN1==1)&&(RSEN2==0)&&(LSEN1==0)&&(LSEN2==0)&&(MSEN1==0))
{ flag=10;}
else
if((RSEN1==0)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==1)&&(MSEN1==0)) { flag=11;}
else
if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==1)&&(MSEN1==0)) { flag=12;}
switch (flag)
{ case 0:
qianjin();
break;
case 1:
turn_right();
break;
case 2:
turn_left();
break;
case 3:
turn_left();
break;
case 4:
turn_right();
break;
case 5:
turn_left();
break;
case 6:
turn_right();
break;
case 7:
turn_right();
break;
case 8:
turn_right();
break;
case 9:
turn_left();
break;
case 10:
turn_left();
break;
case 11:
qianjin();
break;
case 12:
qianjin();
break;
default: break; }
}
//****************主程序****************// void main()
{
qianjin();
while(1)
{
xunji(); //*********寻迹**********// }
}。

相关文档
最新文档