标题:
红外循迹小车程序
[打印本页]
作者:
562944207
时间:
2016-7-21 20:10
标题:
红外循迹小车程序
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit IN1=P1^1; //电机1
sbit IN2=P1^2;
sbit IN3=P0^1; //电机2
sbit IN4=P0^2;
sbit IN5=P1^3; //电机3
sbit IN6=P1^4;
sbit IN7=P0^3; //电机4
sbit IN8=P0^4;
sbit found1=P1^6; //红外对管
sbit found2=P1^7;
sbit found3=P3^4;
/****************电机控制函数****************/
void forward1() //电机1前进
{
IN1=1;
IN2=0;
}
void forward2() //电机2前进
{
IN3=0;
IN4=1;
}
void forward3() //电机3前进
{
IN5=0;
IN6=1;
}
void forward4() //电机4前进
{
IN7=0;
IN8=1;
}
void back1() //电机1后退
{
IN1=0;
IN2=1;
}
void back2() //电机2后退
{
IN3=1;
IN4=0;
}
void back3() //电机3后退
{
IN5=1;
IN6=0;
}
void back4() //电机4后退
{
IN7=1;
IN8=0;
}
/****************电机开关函数****************/
void stop1() //电机1关闭
{
IN1=0;
IN2=0;
}
void stop2() //电机2关闭
{
IN3=0;
IN4=0;
}
void stop3() //电机3关闭
{
IN5=0;
IN6=0;
}
void stop4() //电机4关闭
{
IN7=0;
IN8=0;
}
/**********************主函数**********************/
void main()
{
while(1)
{
if(found1==0&&found2==0&&found3==0) //000 三个LED均未检测到黑线 小车后退
{back3();back4();stop1();stop2();}
if(found1==0&&found2==1&&found3==0) //010 第二个LED检测到黑线 小车前进
{forward1();forward2();stop3();stop4();}
/******************小车左转******************/
if(found1==1&&found2==1&&found3==0) //110 一、二LED检测到黑线 小车左大转
{back1();forward2();stop3();stop4();}
if(found1==1&&found2==0&&found3==0) //100 第一个LED检测到黑线 小车左转
{back1();forward2();stop3();stop4();}
/******************小车右转******************/
if(found1==0&&found2==1&&found3==1) //011 二、三LED检测到黑线 小车右大转
{back2();forward1();;stop3();stop4();}
if(found1==0&&found2==0&&found3==1) //001 第三个LED检测到黑线 小车右转
{back2();forward1();stop3();stop4();}
/**************LED检测到全黑情况的处理**************/
if(found1==1&&found2==1&&found3==1) //111 三个LED均检测到黑线 小车前进
{forward1();forward2();stop3();stop4();}
}
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1