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 p>
{ch=0; i=0; }
if(i ==32) P1=ch
mientras(!Rec
);TL0=0; //reprogramación
<p>TH0=0;
}
----------------------------- --- ------------------