#include <reg52.h>
/***********循迹声明*************/
sbit led_1 = P0^6;
sbit led_2 = P0^5;
sbit led_3 = P0^4;
sbit led_4 = P0^3;
sbit led_5 = P0^2;
sbit led_6 = P0^1;
sbit led_7 = P0^0;
/**************电机声明************/
sbit left_frontmotor_in1 = P1^0;
sbit left_frontmotor_in2 = P1^1;
sbit left_backmotor_in1 = P1^2;
sbit left_backmotor_in2 = P1^3;
sbit right_frontmotor_in1 = P1^6;
sbit right_frontmotor_in2 = P1^7;
sbit right_backmotor_in1 = P1^4;
sbit right_backmotor_in2 = P1^5;
float val;
void Turn_Left(int x); //左轮直走
void Turn_Right(int x); //右轮直走
void Straight(int x);
void Xunji(void);
void delay_ms(int n)
{
unsigned int i,y;
for(i=n;i>0;i--)
for(y=114;y>0;y--);
}
int main(void)
{
while(1)
{
Xunji();
if(val==0) Straight(10);
else if(val>0){Turn_Right(30);Turn_Left(30-val*10);}
else if(val<0){Turn_Right(30+val*10);Turn_Left(30);}
}
}
void Turn_Left(int x)
{
left_frontmotor_in1 = 1;
left_backmotor_in1 = 1;
delay_ms(x);
left_frontmotor_in1 = 0;
left_backmotor_in1 = 0;
left_frontmotor_in2 = 0;
left_backmotor_in2 = 0;
right_frontmotor_in1 = 0;
right_frontmotor_in2 = 0;
right_backmotor_in1 = 0;
right_backmotor_in2 = 0;
delay_ms(30-x);
}
void Turn_Right(int x)
{
right_frontmotor_in1 = 1;
right_backmotor_in1 = 1;
delay_ms(x);
right_frontmotor_in1 = 0;
right_backmotor_in1 = 0;
left_frontmotor_in1 = 0;
left_frontmotor_in2 = 0;
left_backmotor_in1 = 0;
left_backmotor_in2 = 0;
right_frontmotor_in2 = 0;
right_backmotor_in2 = 0;
delay_ms(30-x);
}
void Straight(int x)
{
left_frontmotor_in1 = 1;
left_backmotor_in1 = 1;
right_frontmotor_in1 = 1;
right_backmotor_in1 = 1;
delay_ms(x);
left_frontmotor_in1 = 0;
left_frontmotor_in2 = 0;
left_backmotor_in1 = 0;
left_backmotor_in2 = 0;
right_frontmotor_in1 = 0;
right_frontmotor_in2 = 0;
right_backmotor_in1 = 0;
right_backmotor_in2 = 0;
delay_ms(30-x);
}
void Xunji(void)
{
int p;
p=P0&0x7f;
switch(p)
{
case 0X7f:val=0;break; //111 1111
case 0X77:val=0;break; //111 0111
case 0X6F:val=2.3;break; //110 1111
case 0X7B:val=-2.3;break; //111 1011
case 0X5F:val=2.5;break; //101 1111
case 0X7D:val=-2.7;break; //111 1101
case 0X3F:val=3;break; //011 1111
case 0X7E:val=-3;break; //111 1110
}
// if(led_1==1&&led_2==1&&led_3==1&&led_4==0&&led_5==1&&led_6==1&&led_7==1) val=0;
// if(led_1==1&&led_2==1&&led_3==0&&led_4==1&&led_5==1&&led_6==1&&led_7==1) val=1;
// if(led_1==1&&led_2==1&&led_3==1&&led_4==1&&led_5==0&&led_6==1&&led_7==1) val=-1;
// if(led_1==1&&led_2==0&&led_3==1&&led_4==1&&led_5==1&&led_6==1&&led_7==1) val=2;
// if(led_1==1&&led_2==1&&led_3==1&&led_4==1&&led_5==1&&led_6==0&&led_7==1) val=-2;
// if(led_1==0&&led_2==1&&led_3==1&&led_4==1&&led_5==1&&led_6==1&&led_7==1) val=3;
// if(led_1==1&&led_2==1&&led_3==1&&led_4==1&&led_5==1&&led_6==1&&led_7==0) val=-3;
}
|