77百科网
当前位置: 首页 生活百科

红外解码作用(硬见小百科红外遥控解码)

时间:2023-06-03 作者: 小编 阅读量: 1 栏目名: 生活百科

红外遥控是我们现实生活中必不可少的一员。遥控,顾名思义即在遥远的地方进行控制,其实也就是说远程通信。红外遥控就是以红外线为传输介质的遥控。现在有的手机就带有红外遥控功能,其实也是用单片机的功能实现的。NEC格式的编码如下:NEC格式的红外编码是连续的32位二进制码组。首先,红外接收头没有接到信号时是高电平,等待其变低。接收数据,就是进行判断“0”和“1”。

红外遥控是我们现实生活中必不可少的一员。遥控,顾名思义即在遥远的地方进行控制,其实也就是说远程通信。红外遥控就是以红外线为传输介质的遥控。

红外遥控器是怎么工作的?其实它内部就是有一个单片机,单片机的I/O口控制一个红外LED灯(当然一般会加外部放大电路以增大传输距离),在内部编码后发送出去,然后电视或者空调之类的可以用红外遥控控制的电器在接收到红外信号后就会进行解码,并根据制定好的协议执行特定动作,比如电视可能换台、调节音量等。现在有的手机就带有红外遥控功能,其实也是用单片机的功能实现的。

红外遥控解码

有的时候,我们希望模拟一些遥控器的功能,这时候就要对这些遥控器的数据进行解码。

在进行解码前,我们先来了解一下红外编码。红外编码有很多种,最常用的编码是NEC编码。NEC格式的编码如下:

NEC格式的红外编码是连续的32位二进制码组。32位二进制码组之前的引导码,用于区分每次的传输;在起始码之后的才是32位二进制码组,其中8位用户识别码和8位反码(反码主要用于)校验,用户识别码的作用主要是区分不同品牌的遥控器;接着就是8位操作码和反码,用于表示哪个按键被按下。

NEC格式的编码除引导码和起始码外,用于交互数据的信息采用脉宽调制的串行码,在38kHz的载波下,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如下所示:

了解了红外编码,就可以进行红外解码了。

实现方法

一般,进行红外解码我们需要先将接受到的有效信号与外界环境的干扰信号分离开,这就是载波的作用。现在市面上有很多一体化红外接收头,内部是红外接收二极管放大电路解调器。当接收到红外信号后,先将其放大,然后把38kHz的信号保留下来。需要注意的是一般一体化红外接收头接收到信号时输出是低电平,没有接收信号时是高电平。

上面是常用红外接收头的引脚,“OUT”脚接单片机的I/O口,“-”脚接电源负极,“ ”脚接电源正极。

接好电路,就要进行解码工作了.其实解码工作主要是识别引导码,还有数据“0”“1”。我们看波形图,只要识别红外接收头“OUT”引脚高低电平持续的时间就可以了。这个可以用定时器中断完成,也可以用延时来判断。由于只完成解码工作,我们就用延时的方法更方便。

首先,红外接收头没有接到信号时是高电平,等待其变低。之后,每隔900us测量一次,若在10次内电平变高,说明这不是引导码,退出重新开始;若10次内并没有变高,说明这就是引导码,继续下一步。接着可以不判断起始码,就是直接等待引脚电平变高再变低,就可以接收数据了。

接收数据,就是进行判断“0”和“1”。从位的定义我们可以发现“0”、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,所以必须根据高电平的宽度区别“0”和“1”。

每一位“0”或者“1”在接收头接收信号即低电平的时间都是一样的,直接等待低电平过去,在高电平时延时600us,如果600us时还是高电平,说明是“1”;如果是低电平即高电平过去了,说明是“0”。将这些数据结合到一起,就是接收到的编码了。

将单片机的串口与电脑接好,就可以在串口显示我们读到的红外遥控数据了。

实现代码:

#include <reg52.h>

// --- 红外接收一体化输出口 ----------------------------------

sbit IR_Out = P3^2;

bit START_Flag = 0;

bit BOOT_REPEATING_CODE_Flag = 0;

unsigned char DATA[4] = {0};

bdata unsigned char TEMP_BIT;

sbit B0 = TEMP_BIT^0;

sbit B1 = TEMP_BIT^1;

sbit B2 = TEMP_BIT^2;

sbit B3 = TEMP_BIT^3;

sbit B4 = TEMP_BIT^4;

sbit B5 = TEMP_BIT^5;

sbit B6 = TEMP_BIT^6;

sbit B7 = TEMP_BIT^7;

// --- 有无遥控信号判断函数 ----------------------------------

bit START_Judge();

// --- 连发码判断函数 ----------------------------------------

bit BOOT_REPEATING_CODE_Judge();

// --- "0"和"1"识别 ------------------------------------------

bit H_L_LEVEL_Judge();

bit START_Judge()

{

bit TEMP_Flag = 1;

unsigned char i = 0;

//在正常无遥控信号时,一体化红外接收头输出是高电平,程序一直在循环。

while ( IR_Out == 1);

//重复10次,目的是检测在6876~8352微秒内如果出现高电平就退出解码程序

for(i =0;i <9; i)

{

DELAY_Us(800); // 测试实际延时约为764~928us

if ( IR_Out == 1 )

{

TEMP_Flag = 0;

break;

}

}

return TEMP_Flag;

}

bit BOOT_REPEATING_CODE_Judge()

{

bit TEMP_Flag = 1;

while( IR_Out == 0 ) ; // 等待高电平避开9毫秒低电平引导脉冲

DELAY_Ms(1); // 测试实际延时约为1.007ms

DELAY_Ms(1); // 测试实际延时约为1.007ms

DELAY_Us(200); // 0.086ms

DELAY_Us(200); // 0.086ms

DELAY_Us(200); // 0.086ms

// 共计2.272ms

if( IR_Out == 0 )

{

TEMP_Flag = 1; // 是连发码

}

else

{

TEMP_Flag = 0; // 不是连发码,而是引导码

}

return TEMP_Flag;

}

bit H_L_LEVEL_Judge()

{

while( IR_Out == 0 ); // 等待地址码第一位的高电平信号

DELAY_Us(800); // 测试实际延时约为764~928us

if ( IR_Out == 1)

{

DELAY_Ms(1); // 测试实际延时约为1.007ms

return 1;

}

else

{

return 0;

}

// --- 串口初始化 --------------------------------------------

void UART_Initial();

void DELAY_Us(unsigned int Us)

{

unsigned int x;

for(x = 0; x <= (Us/200-1); x);

}

void DELAY_Ms(unsigned int Ms)

{

unsigned int x,y;

for(x = 0; x <= (Ms-1); x)

{

for(y = 0; y <= 120; y);

}

}

void main()

{

unsigned char i;

UART_Initial();

IR_Out = 1;

while(1)

{

START_Flag = START_Judge();

BOOT_REPEATING_CODE_Flag = BOOT_REPEATING_CODE_Judge();

if ( START_Flag && !BOOT_REPEATING_CODE_Flag )

{

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

{

B0 = H_L_LEVEL_Judge();

B1 = H_L_LEVEL_Judge();

B2 = H_L_LEVEL_Judge();

B3 = H_L_LEVEL_Judge();

B4 = H_L_LEVEL_Judge();

B5 = H_L_LEVEL_Judge();

B6 = H_L_LEVEL_Judge();

B7 = H_L_LEVEL_Judge();

DATA[i] = TEMP_BIT;

}

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

{

SBUF = DATA[i];

while( TI == 0 );

TI = 0;

}

}

}

}

void UART_Initial()

{

SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收

TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit reload

TH1 = 0xFD; // TH1: reload value for 9600 baud @

// 11.0592MHz

TR1 = 1; // TR1: timer 1 run

EA = 0; // 关闭总中断

ES = 0; // 关闭串口中断

}

}

1、红外遥控的编码不只NEC,还有很多也有广泛应用如RC-5,RC-6等。

2、上面的代码所用指令是STC 89C52单片机,如需用其它芯片请另行更改。

以上所有信息仅作为学习交流使用,不作为任何学习和商业标准。若您对文中任何信息有异议,欢迎随时提出,谢谢!

    推荐阅读
  • 催雨弹是什么原理(催雨弹原理是什么)

    催雨弹是什么原理催雨弹原理是把降雨原有的过程缩短:当观测到云层有适合的厚度和程度时,就将装有碘化银粉末的炮弹打到云层中,催化弹在云层中爆炸,碘化银粉末成为冰核,吸纳了云层中的水气,经过不断互相碰撞等一系列反应后,形成足够下降重量的雨滴降落。水汽在高空遇到冷空气便凝聚成小水滴。它们又小又轻,被空气中的上升气流托在空中。这些小水滴要变成雨滴降到地面,它的体积大约要增大100多万倍。

  • 蝙蝠侠所有电影版本(蝙蝠侠将成为史上最长的蝙蝠侠影片)

    今年3月,观众们将会享受到比以往更长一点的高谭市。据消息透露,马特·里夫斯饰演的《蝙蝠侠》将会是167分钟。这是迄今为止最长的蝙蝠侠电影,之前的纪录保持者是克里斯托弗·诺兰的《蝙蝠侠:黑暗骑士崛起》,时长为165分钟。这份荣誉属于扎克·斯奈德的《正义联盟》,这部剧是2017年第一部重拍的加长版。目前《蝙蝠侠》将于2022年3月4日在各大影院首映。变形金刚女演员尼古拉·佩尔茨将嫁入贝克汉姆家族

  • 五行带火字的名字有哪些(带火字的名字介绍)

    “五行属火”寓意最好的字“旭”意为:新生力,朝气蓬勃,光明等意思,引申成语,我来为大家科普一下关于五行带火字的名字有哪些?以下内容希望对你有帮助!“五行属火”寓意最好的字“炅”意为:光明磊落,精神饱满,目光长远等意思,引申成语。

  • 奶粉受潮了还能喝吗 大人奶粉受潮了还能喝吗

    如果发现配方奶粉有任何异味如酒味、鱼腥味等,说明已经变质,请不要食用。奶粉受潮喝了会怎样奶粉有结块现象,有些宝宝吃后会出现腹泻高烧等症状。没开封的奶粉会受潮吗未开封的奶粉是密封状态,一般情况下不易受潮,但若长期处在潮湿环境下还是不利于奶粉的保存,罐装奶粉的铁罐在潮湿中也容易锈蚀。且奶粉里部分营养成分的热稳定性差,如维生素,长期高温下储存会影响奶粉的质量,所以妈妈们要特别注意把奶粉置于阴凉处存放。

  • 博山戴孝戴哪边(那时没有母亲节)

    孝里镇民风淳朴敦睦,因本地家家户户以孝为先而享有盛名。而郭巨的孝名也由此传遍天下。敌人闻听孝子郭巨之名,认为敢与上天垂爱的郭巨为敌,必遭天谴,于是不战而退。家贫,子尚幼,母减食与之。进而郭巨活埋儿子而孝敬母亲成为二十四孝故事中最让人揪心、在民间也最为亮眼的故事。郭巨因埋儿而得金,表现了我国古代老百姓朴素的人文情怀,既成就了郭巨无与伦比的孝道,又保全了家庭的美满团圆。

  • 安徽合肥有名的寺庙(安徽省合肥十大著名寺庙也是最灵验的十大寺庙)

    1983年,该寺被定为汉族地区佛教全国重点寺院,安徽省重点文物保护单位。现为省级重点寺观、县级重点文物保护单位。扩建已成当务之急,承蒙佛力加被,寺中僧众齐心,佛协及当地政府大力支持,十方善信乐助,龙云寺宏伟蓝图已然拟成。这间寺庙虽然不大,但甘露寺香火历来旺盛。

  • 关于新的一个月到来的说说(期待新的一个月的说说)

    新的一月,新的一天,只需要扬起你的嘴角,带着好心情,大步向前走永远记住,无论我们做什么,人生从来都没有失败,唯一的失败就是自己放弃早安,接下来我们就来聊聊关于关于新的一个月到来的说说?善良、乐观、勤劳、惜福、感恩,对生命有宗旨、对生活有方向。为了更好的自己,为了美好的生活!不管脚步有多慢都不要紧,只要你在走,总会看到进步,新的一月,早安。新的一月的第一天,早安!

  • 唯美古诗词句句掉泪(美到心碎的爱情古诗词)

    唯美古诗词句句掉泪?唯美古诗词句句掉泪一座山,隔不了两两相思,一天涯,断不了两两无言,我用三生把你思念,独饮那一碗梦婆汤,把自己葬于山骨间,静听那涓涓流水,那清风伴着落花飞舞!一梦醒来,恍如隔世,两眉间,相思尽染。只身天涯,独醉贪欢。揪心的思绪无边无沿。可惜几度徘徊,走不出的,仍是那梦里花间的蜜语甜言。在水一方,愿着一身荷香,乘一叶兰舟,划过秦时明月,穿过唐风宋韵,寻你在烟波浩渺的西子湖畔!

  • 大货车高速撞护栏事故图(黔东南一小货车被撞飞)

    行车注意保持安全距离切勿在视野不清时盲目操作来源:黔东南消防通讯员:陈凌王兵编辑:卓倩审核:崖恒菲

  • 毕业语录(句句戳中泪点)

    拍毕业照三秒的时间,却定格着三年的匆匆岁月。这个夏天,我们将用结束友谊换来一个没有作业的假期。我们即将分别,独自浪在中国外国不同地点,瞥见白色的校服,还会以为是我认识的谁。冬天我怕冷,夏天我怕热,六月我怕散。三场试卷散了一场友谊,一场青春。毕业换来了一个无忧无虑的暑假,和一个永远不再相见的可能。六月的风吹散了多年的友,九月的阳光却暖不了新人的心。