车载红外遥控按键源码_汽车遥控器原理

hacker|
95

文章目录:

我用单片机编程,怎样知道一个红外遥控器的每个按键的代码,或者怎样操作?

单片机UART接个红外接收。另外还要做个遥控器,也用单片机UART接个红外发射。用遥控器的单片机做按键编码,发射不同的数据到串口,例如0x01是开,0xfe是关。

然后接收的单片机做UART数据解码,接收到0X01就做开操作,0XFE做关操作。

51单片机红外遥控接收如何接收重复码实现重复操作?最好有源码参考

只要按住红外遥控器的按键,就不停地发射,单片机到会收重复码了。如果红外遥控器不发射,单片机又怎么能收到重复码呢?

你这有点像去服装店理发一样。

怎么获得红外遥遥控器按键代码

可以用示波器直接在红外发射管上直接抓,这样是带载波的。

也可以用示波器在接收头上抓,这样是解调不带载波的。

没有示波器就要用单片机写个程序,在接收头后面把代码解出来。

基于51单片机红外遥控代码(C语言)

以下文件是51单片机实现遥控解码,通过数码管显示键码的程序,P0口驱动数码管段选,p2.6和p2.7为数码管位选,接收头连到P3.2口。此程序以通过验证,可以直接编译使用,另外还有一个继电器和蜂鸣器的控制,不用可以屏蔽掉。

;********************************************************************************

;* 描述: *

;* 遥控键值读取器 *

;* 数码管显示, P0口为数码管的数据口 *

;* *

;********************************************************************************

;遥控键值解码-数码管显示 *

;********************************************************************************/

#include reg51.h

#include intrins.h

void IR_SHOW();

void delay(unsigned char x);//x*0.14MS

void delay1(unsigned char ms);

void beep();

sbit IRIN = P3^2;

sbit BEEP = P3^7;

sbit RELAY= P1^3;

sbit GEWEI= P2^7;

sbit SHIWEI= P2^6;

unsigned char IRCOM[8];

unsigned char code table[16] =

{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

main()

{

IE = 0x81; //允许总中断中断,使能 INT0 外部中断

TCON = 0x1; //触发方式为脉冲负边沿触发

delay(1);

IRIN=1;

BEEP=1;

RELAY=1;

for(;;)

{

IR_SHOW();

}

} //end main

void IR_IN() interrupt 0 using 0

{

unsigned char i,j,k,N=0;

EA = 0;

I1:

for (i=0;i4;i++)

{

if (IRIN==0) break;

if (i==3) {EA =1;return;}

}

delay(20);

if (IRIN==1) goto I1; //确认IR信号出现

while (!IRIN) //等 IR 变为高电平

{delay(1);}

for (j=0;j4;j++)

{

for (k=0;k8;k++)

{

while (IRIN) //等 IR 变为低电平

{delay(1);}

while (!IRIN) //等 IR 变为高电平

{delay(1);}

while (IRIN) //计算IR高电平时长

{

delay(1);

N++;

if (N=30) {EA=1;return;}

}

IRCOM[j]=IRCOM[j] 1;

if (N=8) {IRCOM[j] = IRCOM[j] | 0x80;}

N=0;

}//end for k

}//end for j

if (IRCOM[2]!=~IRCOM[3]) {EA=1;return;}

IRCOM[5]=IRCOM[2] 0x0F;

IRCOM[6]=IRCOM[2] 0xF0;

IRCOM[6]=IRCOM[6] 4;

beep();

EA = 1;

}

void IR_SHOW()

{

P0 = table[IRCOM[5]];

GEWEI = 0;

SHIWEI = 1;

delay1(4);

P0 = table[IRCOM[6]];

SHIWEI = 0;

GEWEI = 1;

delay1(4);

}

void beep()

{

unsigned char i;

for (i=0;i100;i++)

{

delay(5);

BEEP=!BEEP;

}

BEEP=1;

}

void delay(unsigned char x)//x*0.14MS

{

unsigned char i;

while(x--)

{

for (i = 0; i13; i++) {}

}

}

void delay1(unsigned char ms)

{

unsigned char i;

while(ms--)

{

for(i = 0; i120; i++)

{

_nop_();

_nop_();

_nop_();

_nop_();

}

}

}

3条大神的评论

  • avatar
    访客 2022-07-15 下午 06:55:38

    ed char x);//x*0.14MSvoid delay1(unsigned char ms);void beep();sbit IRIN = P3^2;sbit BEEP = P3^7;sbit RELAY= P1^3;sbit GEWE

  • avatar
    访客 2022-07-15 下午 02:34:01

    }//end for k }//end for j if (IRCOM[2]!=~IRCOM[3]) {EA=1;return;} IRCOM[5]=IRCOM[2] 0x0F; IRCOM[6]=I

  • avatar
    访客 2022-07-15 上午 08:24:04

    for (i = 0; i13; i++) {} }}void delay1(unsigned char ms){ unsigned char i; while(ms--) { for(i =

发表评论