Red de conocimiento informático - Conocimiento sistemático - Buscando un programa de programación de microcontroladores de automóviles con control remoto por infrarrojos

Buscando un programa de programación de microcontroladores de automóviles con control remoto por infrarrojos

Se requiere decodificación de infrarrojos para la recepción de infrarrojos, lo que se puede lograr con un microcontrolador

Programa 1

#include lt;reg51.hgt;

sbit LED=P3^0;

sbit Key=P3^7;

//Los datos del marco se colocan en la matriz Data

unsigned char Data[4]= {0x00, 0xff, 0x1f, 0xe0};

void Transmit(int c1, int c2); //Transmitir subrutina

//**** **** *******************************

principal()

{unsigned char i, j;

while(1)

{ while(Key); //No se presiona ninguna tecla, espera

Transmitir(340) , 565) ; //Transmitir código piloto

for(i=0;ilt;4;i)

for(j=0;jlt;8;j) //Transmitir datos del marco

{if((Data[i]gt; gt; j)amp; 1)

Transmitir(19, 205); //código '1'

else Transmitir(19, 70); //código '0'

}

Transmitir(19, 17);

mientras(! Key); //Esperando que se suelte el botón

}

}

//************** ********* **********************

void Transmit(int c1, int c2) //c1 es el ancho de nivel alto

{unsigned char i; //c2 es ancho de nivel bajo

do{LED=1; //Generar onda portadora de 38 kHz

for( i=8; igt; 0; i --); //Retraso 18us

LED=0;

}mientras(--c1);

LED=1;

mientras(--c2);

}

Programa 2

#includelt;reg51.hgt;

sbit Rec =P3^1;

unsigned char i, ch;

unsigned int t;

main()

{TMOD=0x01 ;

TR0=1;

mientras(1)

{mientras(Rec); //Esperando recibir señal

t= (TH0lt;lt;8) TL0; //Obtener el ancho del pulso

if(tgt;200amp;amp;tlt;800); //Es un ' Código 0'

else if (tgt; 1100amp; amp; tlt; 1800) //código '1'

{if (igt; 24) // Elimina el último byte

ch|=1lt; (i-25);

}

else //Non-0, 1 código, redecodificar

{ch=0; i=0; }

if(i ==32) P1=ch

mientras(!Rec

);

TL0=0; //reprogramación

<

p>TH0=0;

}

----------------------------- --- ------------------