Red de conocimiento informático - Material del sitio web - Coche inteligente basado en control por microcontrolador pic

Coche inteligente basado en control por microcontrolador pic

#include

#define uchar unsigned char

#define uint unsigned int

unsigned char zkb1=0 ;

//**El ciclo de trabajo del motor izquierdo**//

unsigned char zkb2=0

//**El ciclo de trabajo del motor derecho Relación nula**//

unsigned chart t=0

//**Contador de interrupciones del temporizador**//

sbit LSEN1; =P2^ 0;

bit LSEN2=P2^1;

bit MSEN1=P2^2;

bit RSEN1=P2^3;

bit RSEN2=P2^4;

//**sensor***/

bit IN1=P1^0;

bit IN2; =P1^ 1;

bit IN3=P1^2;

bit IN4=P1^3

bit ENA=P1^4; >

sbit ENB=P1^5;

//************¿Temporizador de inicialización?

void init()

{

TMOD=0x01

TH0=(65536-100)/256; >

TL0=(65536-100)%256;

EA=1;

ET0=1;

TR0=1; >

}

//************función de interrupción + modulación de ancho de pulso******************//

void timer0() interrupción 1

{

if(t

ENA=1

más

ENA =0

if(t

ENB=1

más

;

ENB=0;

t++;

si(t>=50)

{t=0;}

//******** **********Sigue recto******************//

void qianjin()

{

zkb1=30

zkb2=30;

}

/ /************ ****Pequeña función de giro a la izquierda******************//

void turn_left1 ()

{ zkb1=10;

p>

zkb2=25

}

//******; ***********Función de giro grande a la izquierda***** **********//

void turn_left2()

{ zkb1=5;

zkb2=25;

}

//Función de giro a la izquierda en *********** ******************//

ya

d turn_left3()

{ zkb1=10

zkb2=20

}

//******; *********Función de giro pequeño a la derecha******************//

void turn_right1()

{ zkb1 =25;

zkb2=10;

}

//**************** **Gran función de giro a la derecha ***************//

void turn_right2()

{ zkb1=25;

zkb2=5 ;

}

//Función de giro a la derecha en ********************** ******** **//

void turn_right3()

{ zkb1=20

zkb2=10;

}

//******************Función de seguimiento******************//

void xunji()

{

bandera uchar

if((RSEN1==1)&&(RSEN2==1) &&(MSEN1==0) &&(LSEN1==1)&&(LSEN2==1))

{ flag=0 }

//****** Siga recto***** **//

else

if((RSEN2==0)&&(RSEN1==1)&&(LSEN1==1)&&( LSEN2==1)&&( MSEN1==1))

{ flag=1;} //***Izquierda 1, pequeño giro a la derecha***//

else

si((RSEN1==1)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==0)&&(MSEN1==1))

{ flag=2 } //*** Desviación derecha 1, pequeño giro a la izquierda *** //

else

if((RSEN1==1)&&(RSEN2 ==1)&&( LSEN1==0)&&(LSEN2==1)&&(MSEN1==1))

{ flag=3 } //*** Desviación derecha 2, izquierda grande; girar***//

else

if((RSEN2==1)&&(RSEN1==0)&&(LSEN1==1)&&(LSEN2==1) &&(MSEN1==1 ))

{ flag=4;} //***Izquierda 2, gran giro a la derecha***//

else

if(( RSEN1==1)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==0)&&(MSEN1==1))

{ bandera=5 ; } //* **Salga a la derecha 3, gire a la izquierda en el centro***//

else

i

f((RSEN1==0)&&(RSEN2==0)&&(LSEN1==1)&&(LSEN2==1)&&(MSEN1==1))

{ bandera=6 } //***Izquierda 3, gira a la derecha***//

cambiar (bandera)

{ case 0:

qianjin(); p>

ruptura;

caso 1:

turn_right1();

ruptura

caso 2:

turn_left1();

ruptura;

caso 3:

turn_left2();

ruptura;

caso 4:

turn_right2();

descanso;

caso 5:

turn_left3(); p>

romper;

caso 6:

turn_right3();

romper;

predeterminado: romper }

}

//******************Programa principal*************** ** **//

void main()

{ init()

zkb1=30

zkb2=30; ;

while(1)

{ IN1=1; //******Encienda el motor y arranque******//

IN2=0;

IN3=1;

IN4=0;

ENA=1; ;

p>

while(1)

{

xunji() //**********Traza****; ******** *//

}

}

}