Red de conocimiento del abogados - Ley de patentes - Buscando el programa fuente C para el microcontrolador 51 para controlar el motor de CC a través de L298N

Buscando el programa fuente C para el microcontrolador 51 para controlar el motor de CC a través de L298N

#include

#define uchar unsigned char

#define uint unsigned int

uint t;

p>

uint flag1,flag1s;/*Cuando flag1=1, el chasis gira a la izquierda, cuando flag1&flag2=1, el chasis gira a la derecha*/

uint flag2;/* Stop flag*/

uint flag3,flag3s;/*Cuando flag3=1, se levanta el brazo derecho, cuando flag3&flag2=1, se baja el brazo derecho*/

uint flag4 ,flag4s;/* Cuando flag4=1, el brazo izquierdo está levantado, cuando flag4&flag2=1, el brazo izquierdo está bajado*/

uint flag5;/*Cuando flag5=1, demostración automática*/

//Control de semáforo

sbit hong=P3^0;

sbit huang=P3^1;

sbit lv=P3 ^2;

//Control del brazo izquierdo (sube cuando zb1 es 0, sube cuando zb2 es 1, en caso contrario bájalo)

sbit zb1=P2^0; //P2= 0x02 levanta el brazo izquierdo

sbit zb2=P2^1; //P2=0x01 Baja el brazo izquierdo

//Control del brazo derecho (levántalo cuando yb1 sea 0 y yb2 es 1, de lo contrario déjalo)

sbit yb1=P2^2; //P2=0x08 Levanta el brazo derecho

sbit yb2=P2^3; //P2=0x04; Levante el brazo derecho

/ /Control del chasis del robot (gire a la izquierda cuando dp1 sea 0, gire a la izquierda cuando dp2 sea 1, de lo contrario gire a la derecha)

sbit dp1=P2^4; /P2=0x20 el chasis gira a la izquierda

sbit dp2=P2^5; //P2=0x10 el chasis gira a la derecha

//Control del chasis solar (gira a la izquierda cuando tdp1 es 0, tdp2 es 1, de lo contrario gire a la derecha)

sbit tdp1=P2^6; //P2=0x80 El chasis solar gira a la izquierda

sbit tdp2=P2^7; //P2=0x40 Solar chasis gira a la derecha

//Control remoto

sbit yk1=P1^0;//control remoto 1

sbit yk2=P1^1;//remoto control 2

sbit yk3=P1^2;/ /control remoto 3

sbit yk4=P1^3;//control remoto 4

sbit yk5= P1^4;//control remoto 5

void init() ;

void delay(uint);

void zidong();

void teclascan();

/**** ************************* Función principal*** ********************* ****/

void main()

{

init();

while(1)

{

zidong();

keyscan();

if(flag5==1)

zidong() ;

if(flag1==1)

P2=0x20;//Chasis gira a la izquierda

más

>

P2=0x00;

if(flag1s==1)

P2=0x10;//Chasis gira a la derecha

else

P2=0x00;

if(flag3==1)

P2=0x08;//Levanta el brazo derecho

else

P2=0x00;

if(flag3s==1)

P2=0x04;//Pon tu brazo derecho

else

P2=0x00;

if(flag4==1)

P2=0x02;//Levanta el brazo izquierdo

else

P2=0x00;

if(flag4s==1)

P2=0x01;//Pon el brazo izquierdo

else

P2 =0x00;

}

}

/********************* ********** ****Función de inicialización******************************/

void init()

{

bandera1=0;

bandera1s=0;

bandera2=0;

bandera3=0;

bandera3s=0;

bandera4=0;

bandera4s=0;

flag5=0;

TMOD=0x11;//Establecer el temporizador 0 como modo de trabajo

TH0=(65536-10000)/256;

TL0= (65536-10000)%256;

TH1=(65536-20000)/256;

TL1=(65536-20000)%256;

EA =1;//Habilitar interrupción total

ET0=1;//Habilitar interrupción del temporizador 0

ET1=1;

TR0=1;//Iniciar temporizador 0

TR1=1

}

/*********************; *********Utilice el temporizador 1, controle la rotación del chasis solar***************************/

void time0() interrupción 1//Sincronización de la base solar, transferencia una vez cada 5 minutos

{

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

t++;

if(t==6000)

{ t=0;

P2=0x80;//Chasis solar gira a la derecha

delay(1);

P2=0x00;

}

}

/**** *********************** Función de escaneo de teclado******* ***************** *****/

anular teclascan()

{

si (yk1==1&yk2==0)

{

retraso1(1);

si(yk1==1&yk2==0)

>

bandera1=1;

}

else bandera1=0;

if(yk2==1&yk1==0&yk3==0&yk4==0 )

{

retraso1(1);

si(yk2==1&yk1==0&yk3==0&yk4==0)

bandera2=1;

bandera1=0;

bandera3=0;

bandera4=0;

bandera5=0; /Borrar todo a 0

flag1s=0;

flag3s=0;

flag4s=0;

}

if(yk3==1&yk2==0)

{

retraso1(1);

if(yk3==1&yk2==0)

{

bandera3=1

}

más bandera3=0;

}

if(yk4==1&yk2==0)

{

retraso1(1);

if(yk4==1&yk2==0 )

{

bandera4=1

}

más bandera4=0;

}

if(yk5==1)

{

retraso1(1);

if(yk5==1)

{

bandera5=1

}

más bandera5=0;

}

if (yk1==1&yk2==1)

{

retraso1(1);

if(yk1==1&yk2==1)

{

bandera1s=1

}

más bandera1s=0; > if(yk3==1&yk2==1)

{

retraso1(1);

if(yk3==1&yk2==1)

{

flag3s=1;

}

else flag3s=0;

}

if(yk4==1&yk2==1)

{

retraso1(1);

if(yk4==1&yk2==1)< / p>

{

bandera4s=1

}

<

p> else flag4s=0;

}

}

/********************* ***** ******** Función de demostración automática******************************/

void zidong ()

{

while(1)

{

P3=0xfd;//El amarillo la luz está encendida

P2=0x08;//Levanta el brazo derecho

delay(66);

P2=0x00;//Hacia el norte

P2=0x00; p>

delay(200);

P2=0x04;//Pon tu brazo derecho

delay(54);

P2=0x00;

P3=0xfe;/ /Luz roja encendida

P2=0x02;//Levantar brazo izquierdo

delay(52);

P2=0x00;

delay(200);

P2=0x01;//Pon tu brazo izquierdo

delay(50);

P2=0x00;

P2=0x20;//Chasis gira a la izquierda

retardo(260);

P2=0x00;

delay(800);

P2=0x08; //Levanta el brazo derecho

delay(66);

P2=0x00; // Hacia el norte

delay(200);

P2=0x04;//Pon tu brazo derecho

delay(54);

P2=0x00;

P3=0xfb; //La luz verde está encendida

P2=0x02;//Levanta el brazo izquierdo

delay(52 );

P2=0x00;

delay(200);

P2=0x01;//Pon tu brazo izquierdo

delay (50);

P2=0x00;

delay(500);

P2=0x20;//Chasis gira a la izquierda

delay(260);

P2=0x00;

delay(500);

P3=0xfb;//La luz amarilla está encendida

P2=0x08;//Levanta el brazo derecho

delay(66);

P2=0x00; //Hacia el norte

delay( 200);

P2=0x04;//Mete el brazo derecho

delay(54);

P2=0x00;

P3=0xfe;//Luz roja encendida

P2=0x02;//Levantar brazo izquierdo

delay(52);

P2=0x00;

delay(200);

P2=0x01;//Pon brazo izquierdo

delay(50);

P2=0x00;

delay(500);

P2=0x10;//Chasis gira a la derecha

delay(250);

P2=0x00;

delay(500);

P2=0x08;//mover brazo derecho

delay(66);

P2=0x00 ; //Hacia el norte

retraso(200);

P2=0x04;//Pon tu brazo derecho

delay(54);

P2=0x00;

P3=0xfb;//La luz verde está on//Hacia el Oeste

P2=0x02;//Levantar el brazo izquierdo

delay(52);

P2=0x00;

demora(200 );

P2=0x01;//Pon tu brazo izquierdo

demora(50);

P2=0x00;

retardo( 500);

P2=0x10;//Chasis gira a la derecha

retardo(250);

P2=0x00;

retraso (500);

P3=0xfd;//La luz amarilla está encendida

P2=0x08;//Levanta el brazo derecho

delay(66);

P2=0x00; //Al norte

delay(200);

P2=0x04;//Pon a tu derecha armado

retardo(54 );

P2=0x00;

P3=0xfe;//Luz roja encendida

P2=0x02 ;//Levantar brazo izquierdo

delay(52);

P2=0x00;

delay(200);

P2= 0x01;//Pon brazo izquierdo

delay(50);

P2=0x00;

P2=0x00;

P2= 0x10;//girar el chasis a la derecha

retardo(250);

P2=0x00;

retardo(800);

P2=0x08;//Levantar el brazo derecho

delay(66);

P2=0x00; //Hacia el norte

delay(200);

P2=0x04;//Poner brazo derecho

delay(54);

P2=0x00;

P3=0xfb;//verde luz encendida

P2=0x02 ;//Levantar brazo izquierdo

delay(52);

P2=0x00;

delay( 200);

P2= 0x01;//Pon brazo izquierdo

delay(50);

P2=0x00;

delay (500);

P2 =0x10;//Chasis gira a la derecha

delay(250);

P2=0x00;

P3=0xfb;//Luz amarilla encendida

P2=0x08; //Levantar el brazo derecho

delay(66);

P2=0x00; Hacia el norte

delay(200) ;

P2=0x04;//Mete el brazo derecho

delay(54);

P2=0x00;

P3=0xfe ;//Luz roja encendida

P2=0x02;//Levantar brazo izquierdo

delay(52);

P2=0x00;

delay(200);

P2=0x01;//Pon tu brazo izquierdo

delay(50);

P2=0x00;

delay(500);

P2=0x20;//Chasis gira a la izquierda

delay(260);

P2=0x00;

P2=0x08;//Levanta el brazo derecho

delay(66);

P2=0x00; //Al norte

demora(200);

P2=0x04;//Pon tu brazo derecho

demora(54 );

P2=0x00;

P3=0xfb;//La luz verde está encendida

P2=0x02;//Levanta el brazo izquierdo

delay( 52);

P2=0x00;

delay(200);

P2=0x01;//Pon el brazo izquierdo

retardo (50);

P2=0x00;

retardo(500);

P2=0x20;//Giros del chasis izquierda

retraso(260);

P2=0x00;

retraso(5);

}

}

/****************************** Función de retardo de 1 s******* *************** *************/

retraso nulo (uint z)

{

uint x,y;

for(x=z*62;x>0;x--) //Cuando z es 100, retrasa 1 segundo

for(y=20;y>0;y-- );

}