搜档网
当前位置:搜档网 › 智能小车控制程序

智能小车控制程序

#include
#include //???????? _nop_();
#define uchar unsigned char
#define uint unsigned int

#define full_speed_left 40 //???????????? ,?????:(30,35,6,25,30,68000,27000,500);
#define full_speed_right 45 // (40,45,6,25,30,68000,27000,500);
#define correct_speed 6 //???????????
#define turn_speed_left 25
#define turn_speed_right 30

unsigned char duty1=0;
unsigned char duty2=0;

uchar t1=0,t2=0;

uchar num1=0,num2=0,num3=0;

sbit HW1=P0^0; //???????
sbit HW2=P0^1;
sbit HW3=P0^2;
sbit HW4=P0^3;
sbit HW5=P0^4;


sbit ENA=P3^2; //PWM??
sbit ENB=P3^3;

sbit IN5=P2^4; //??
sbit IN6=P2^5;
sbit IN7=P2^6;
sbit IN8=P2^7;

//--------------------------------------
void delay(uint x) //??1ms
{
uint i,j;
for(i=0;ifor(j=0;j<120;j++);
}

void straight() //????
{
P2=0XA0;
duty1=full_speed_left;
duty2=full_speed_right;
}

void turn_left2() //????????
{
/*IN5=0;
IN6=1;
IN7=0;
IN8=1;*/
P2=0XA0;

duty1=correct_speed;
duty2=full_speed_right;
}

void turn_right2() //????????
{
/*IN5=0;
IN6=1;
IN7=0;
IN8=1;*/
P2=0XA0;


duty1=full_speed_left;
duty2=correct_speed;
}

void right() //??
{

/*IN5=0;
IN6=1;
IN7=0;
IN8=1;*/
P2=0XA0;
duty1=turn_speed_left;
duty2=turn_speed_right;
}

void left() //??
{

/*IN5=0;
IN6=1;
IN7=0;
IN8=1;*/
P2=0XA0;
duty1=turn_speed_left;
duty2=turn_speed_right;
}

void stop() //????
{
duty1=0;
duty2=0;
}
//-------------------------------------------------------------
void init() //??????
{
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
EA=1;
ET0=1;
TR0=1;
}
//--------------------------------------------------------------
void timer0() interrupt 1 using 1 //???0??
{
TH0=(65536-500)/256;
TL0=(65536-500)%256;
t1++;
t2++;
if(t1else ENA=0;
if(t1>100)
{ ENA=1,t1=0;}
if(t2else ENB=0;
if(t2>=100)
{ ENA=1,t1=0;}
}
//-------------------------------------------------------------
void detect_infrared() //??,????

{
if(HW1==1&&HW2==1&&HW3==1&&HW4==0&&HW5==0);
{
straight();
}
if(HW1==1&&HW2==1&&HW3==1&&HW4==0&&HW5==1);
{
turn_left2();
delay(50);
turn_right2();
delay(50);
}

if(HW1==1&&HW2==1&&HW3==1&&HW4==1&&HW5==0);
{

turn_right2();

delay(50);
turn_left2();
delay(50);
}


if(HW1==0&&HW2==1&&HW3==1&&HW4==0&&HW5==0);
{

turn_right2();

delay(50);
turn_left2();
delay(50);
}

if(HW1==0&&HW2==0&&HW3==1&&HW4==0&&HW5==0);
{

turn_right2();

delay(50);

turn_left2();
delay(50);
}
if(HW1==1&&HW2==1&&HW3==0&&HW4==0&&HW5==0);
{
turn_left2();
delay(50);
turn_right2();

delay(50);
}
if(HW1==1&&HW2==0&&HW3==0&&HW4==0&&HW5==0);
{
turn_left2();
delay(50);
turn_right2();

delay(50);
}

if(HW1==1&&HW2==1&&HW3==1);
{
left();
delay(50);
}


}


//------------------------------------------------------
void main() //?????
{
init();

while(1) //???????????????
{detect_infrared();}
}

相关主题