红外接收解码
红外遥控解码实验报告(3篇)

第1篇一、实验目的本次实验旨在通过搭建红外遥控系统,了解红外遥控的基本原理,掌握红外遥控信号的编码和解码方法,并利用单片机实现对红外遥控信号的解码,实现对红外遥控器的控制。
二、实验原理红外遥控技术是一种无线通信技术,通过发射端发送特定编码的红外信号,接收端接收该信号并进行解码,从而实现对电器的控制。
红外遥控系统主要由发射端和接收端两部分组成。
1. 发射端:由按键矩阵、编码调制电路和红外发射器组成。
按键矩阵根据按键的不同产生不同的编码信号,编码调制电路将这些信号调制在38kHz的载波上,红外发射器将调制后的信号发射出去。
2. 接收端:由红外接收器、前置放大电路、解调电路和指令信号检出电路组成。
红外接收器接收发射端发射的红外信号,前置放大电路对信号进行放大,解调电路将38kHz的载波信号去除,指令信号检出电路从解调后的信号中提取出指令信号。
三、实验设备1. 红外遥控发射器2. 红外接收模块3. 单片机开发板4. 连接线5. 电源6. 红外遥控解码程序四、实验步骤1. 搭建红外遥控系统:将红外接收模块连接到单片机开发板的相应引脚上,确保连接正确无误。
2. 编写红外遥控解码程序:根据红外遥控协议,编写解码程序,实现对红外信号的解码。
3. 程序烧录与调试:将解码程序烧录到单片机中,连接电源,进行程序调试。
4. 测试与验证:使用红外遥控器对单片机进行控制,观察单片机是否能够正确解码红外信号,并实现相应的控制功能。
五、实验结果与分析1. 红外遥控系统搭建成功:通过连接红外接收模块和单片机开发板,成功搭建了红外遥控系统。
2. 解码程序编写与调试:根据红外遥控协议,编写解码程序,实现对红外信号的解码。
在调试过程中,通过观察单片机的输出,验证了程序的正确性。
3. 测试与验证:使用红外遥控器对单片机进行控制,观察单片机是否能够正确解码红外信号,并实现相应的控制功能。
实验结果表明,单片机能够成功解码红外信号,并实现红外遥控器的控制功能。
红外解码方法简述

红外解码方法简述1 引言低速的红外无线传输是一种廉价的无线通讯/控制方案,在家电领域已经广泛使用。
在嵌入式领域,只要工作环境比较优良,数据量小,传输距离较近(5米以内),同样可以采用红外无线传输。
本站的A Tmega16学习板上设计了红外发射管与接收管,配合站长家中闲置的“HITACHI VM101”型电视遥控器,详细分析一下此遥控器的红外编解码原理与单片机解码方法。
2 红外数据序列采集“HITACHI VM101”型电视遥控器结构非常简单,主芯片是M50560-123FP ,外围配有455kHZ 晶体做为主时钟源,一个红外发射管,一个发射管的驱动三极管以及若干阻容器件。
考虑到此芯片为专用芯片,就算找到芯片资料去啃E 文也对以后没有多大帮助,所以站长采用了最直接的方法——软件采集输出电平变化时间间隔。
按照学习板的红外接收管连接方法,当接收到红外数据时,在A Tmega16的INT0脚上电平为高,电平的上升沿变化可以做为数据接收的开始。
普通使用的红外管载波频率为38kHz-40kHz 之间,这样可以先设计一个n 倍于载波频率的定时器计时,在中断触发以后对INT0脚上的高低电平计时,就可以得到一个完整的红外数据序列。
站长首先采用了110kHz 的定时器来采集数据,计时用了一个16位的变量,得到的一个数据序列如下:922 1384 1440 1498 1555 1613 1669 1727 1784 1842 1899 2072 2129 2187 2243 2416 2473 2531 2588 2761 2818 2991 3047 3221 3277 3451 3507 3565 3622 3795 3852 3910 3966 4140 4196 4369 4426 4484 4541 4714 4771 4944 5000 5058 5115 5173 5230 5288 5344 5402 5459 5517 5573 5747 5803 5861 5918 5976 6033 6206 6262 6436 6492 6666 6722 6895 6952 序列一 110kHz 定时采集序列其中相邻两个数的差值即为电平维持时间。
红外遥控器软件解码及其应用

红外遥控器软件解码及其应用随着现代科技的不断发展,红外遥控器已经成为人们日常生活中的必备工具之一。
不过,很多人并不了解红外遥控器的工作原理以及它是如何通过软件解码来实现遥控效果的。
本文将详细介绍红外遥控器软件解码的相关知识,以及其在实际应用中的作用。
一、红外遥控器的工作原理首先,我们需要了解红外遥控器的工作原理。
简单来说,红外遥控器是一种利用红外线光谱来传输指令的设备,通过在发射端发送编码的红外信号,再在接收端解码后执行相应的指令。
通常,红外遥控器由发射部分与接收部分两个部分组成。
发射部分由红外LED发射器构成,它会通过红外发射现象来发送编码的红外信号。
在接收端,红外接收器则会接收到这些信号,并将其转换成电信号进行解码。
之后,解码器会解析出信号的编码含义,然后执行相应的指令。
这就是红外遥控器的基本工作原理。
二、红外遥控器软件解码的实现在红外遥控器的工作中,软件解码起到了重要的作用。
所谓软件解码,就是在终端设备中运行的一种程序,能够将遥控器发射的红外编码转换成可读的指令。
而这些指令就可以用于控制各种家电、设备等。
软件解码的实现主要有两种方式。
第一种是使用硬件解码器,这需要在终端设备上安装一个专门的硬件解码器,用于解析红外信号,并输出相应的指令。
第二种方法则是使用软件解码器,这需要在终端设备上安装一个软件程序,用于解析红外信号并输出指令。
在软件解码的实现中,最常见的是使用赛贝尔红外编解码库。
这个库已经成为了广泛使用的一种红外编解码方案。
它可以用于各种嵌入式设备、物联网设备、手机、电视机顶盒等多种应用场景中。
三、红外遥控器软件解码的应用目前,红外遥控器软件解码已广泛应用于各种智能家居、物联网设备、工控设备等领域。
下面列举一些具体的应用案例:1、智能家居:通过使用红外遥控器软件解码,可以实现对家中的各种电器、设备的遥控控制。
如电视、空调、照明设备等。
2、物联网设备:红外遥控器软件解码还可以用于物联网设备中,如智能家居中的智能门锁、智能家电等。
红外遥控解码程序

红外遥控解码程序红外接收头的型号有很多HS0038 VS838等功能⼤致相同,只是引脚封装不同。
红外接收有⼏种统⼀的编码⽅式,采样哪种编码⽅式取决于遥控器使⽤的芯⽚,接收头收到的都是⼀样的。
电视遥控器使⽤的是专⽤集成发射芯⽚来实现遥控码的发射,如东芝TC9012,飞利浦AA3010T等,通常彩电遥控信号的发射,就是将某个按键所对应的控制指令和系统码(由0和1组成的序列),调制在38KHz的载波上,然后经放⼤、驱动红外发射管将信号发射出去。
不同公司的遥控芯⽚,采样的遥控码格式也不⼀样,较普遍的有两种,⼀种NEC标准,⼀种是PHILIPS标准。
NEC标准:遥控载波的频率为38KHz(占空⽐1:3)当某个键按下时,系统⾸先发射⼀个完整的全码,如果按键超过108ms仍未松开,接下来发射的代码(连发代码)将由起始码(9ms)和结束码(2.5ms)组成。
⼀个完整的全码 = 引导码 +⽤户码 +⽤户码 + 数据码 + 数据码 + 数据反码。
其中,引导码⾼电平9ms,低电平4.5ms;系统码8位,数据码8位,共32位;其中前16位为⽤户识别码,能区别不同的红外遥控设备,以防⽌不同的机种遥控码互相⼲扰。
后16位为8位的操作码和8位的操作反码,⽤于核对数据是否接收准确。
收端根据数据码做出应该执⾏上⾯动作的判断。
连发代码是在持续按键时发送的码。
它告知接收端。
某键是在被连续的按着。
NEC标准下的发射码表⽰发射数据0时⽤”0.56ms⾼电平 + 0.565ms低电平 = 1.125ms”表⽰;数据1⽤”⾼电平0.56ms + 1.69ms = 2.25ms”表⽰。
遥控器发射信号:需要注意的是:当⼀体化接收头收到38kHz红外信号时,输出端输出低电平,否则为⾼电平。
所以⼀体化接收头输出的波形和发射波形是反向的PHILIPS标准:载波频率38KHz:没有筒,点按键时,控制码1和0之间切换,若持续按键,则控制码不变。
⼀个全码 = 起始码’11’ +控制码 + ⽤户码 + ⽤户码数据0⽤“低电平1.778ms + ⾼电平1.778ms”表⽰;数据1⽤“⾼电平1.778ms + 低电平1.778ms”表⽰。
红外解码说明文档

红外解码说明文档作者:ruihuan_vb@时间:2013-12-71、红外遥控的基本原理红外遥控器发出的红外光信号,所以只能产生1 0 信号。
但是,为防止自然光的干扰,同时为了增大红外管的发射功率,正真发出的“1”信号是:38K的载波信号。
(而0 1 信号的区分就在于对发射管的关闭时间)。
红外一体化接收头接收到信号后会对信号进行滤波,所以一体化接收头输出的信号是经过滤波放大后的电平信号,并且对对电平信号进行了反相输出。
2、一般电平编码的结构红外遥控的数据编码是多种多样的,但是一般都会一这这种情况出现:引导码加数据。
引导码由9ms(可能有时候要设置到9.1ms)的低电平和4.5ms的高电平构成。
“0”信号由0.6ms的低电平和0.6ms的高电平组成;“1”信号由0.6的低低电平和1.2ms的高电平组成。
(注:这里说的电平是说的是红外一体化接收头的输出电平)。
红外一体化接收头的输出波形,示波器保存的图片3、红外遥控的电路设计1)发射电路红外遥控的发射电路比较简单,但是要想做的比较好还是有要注意的地方的。
NPN 三极管直接拉红外发射头就可以构成一个红外发射电路了。
但是,要注意的是:驱动红外发射管要加隔离电阻,并且这个隔离电阻不能太大,因这个隔离电阻决定了红外发射的功率。
发射电路的关键就在这里了,这个发射管的隔离电阻的阻值不要超过10欧姆,否则发射距离会非常近的,并且还有注意发射信号的载波的占空比不要设为1/2 最好是1/3 (这个好像是跟一体化接收头的原理有关的,而且将占空白降低方便增大发射功率)。
2)红外接收电路红外接收电路比较简单,一般用一个一体化接收头接到单片机的引脚就可以了。
我们这用过的型号是:HS0038B。
4、如何利用单片机的外设来实现对应的功能红外解码功能:因为红外解码的第一步骤是对电平长度的检测,因而最好是利用单片机的捕获功能来检测电平的长度,然后再根据电平长度来判断其意义(建议:不要检测双边沿,最好是检测一个周期的电平,例如下降沿的时间间隔)。
红外解码芯片

红外解码芯片红外解码芯片是一种能够接收和解码红外信号的集成电路,常用于红外遥控器和红外通信领域。
它可以将接收到的红外信号转化为数字信号,以便被其他电子设备识别和处理。
红外解码芯片的主要功能是将接收到的红外信号解码为二进制数据,然后再进行相应的处理。
它通常由红外接收器、解码模块和输出接口组成。
红外接收器负责接收红外信号,并将其转化为电信号;解码模块对接收到的电信号进行分析和解码,将其转化为二进制数据;输出接口将解码后的数据输出给其他电子设备。
红外解码芯片的工作原理是基于红外线的物理特性。
当红外遥控器发送信号时,它会产生红外光脉冲,其中包含有关按键的信息。
红外接收器接收到这些红外光脉冲后,将其转化为对应的电信号。
解码模块根据一定的解码算法,将电信号解码为二进制数据。
然后,这些数据可以被其他电子设备识别和处理。
红外解码芯片具有高速解码、高精度解码和抗干扰能力强等优点。
它可以快速地解码红外信号,并输出准确的二进制数据。
同时,它也具有抵抗电磁干扰和抵抗温度变化的能力,能够在各种环境下稳定地工作。
红外解码芯片在遥控器领域有广泛的应用。
它可以接收和解码各种类型的红外信号,包括多种红外遥控器协议。
它可以用于控制电视、空调、音响、摄像机等各种电子设备。
通过红外解码芯片,遥控器可以将按键操作转化为红外信号,从而实现对电子设备的控制。
此外,红外解码芯片还可以用于红外通信领域。
它可以接收和解码来自其他红外设备的信号,并将其转化为二进制数据。
通过红外通信,可以实现无线数据传输和远程控制等功能。
总之,红外解码芯片是一种重要的集成电路,它能够将接收到的红外信号解码为二进制数据,并输出给其他电子设备。
它在红外遥控和红外通信领域有着广泛的应用前景。
随着科技的不断发展,红外解码芯片将会更加高效、精确和智能化,为人们的生活带来更多便利。
红外遥控解码原理

第五讲红外遥控一、红外接收头外形及与单片机连接电路(a) (b)图1图1(a)为红外接收头HX1838的外形图,它有三个引脚,其中1为接收端2为地端3为电源端。
其与单片机连接电路图见(b)所示,红外接收头的接收引脚与单片机的P3.2相连。
二、红外遥控简介红外遥控是一种比较廉价的近距离遥控方式。
它由发射模块和接收模块两部分组成,编码格式有脉冲宽度调制和脉冲相位调制两大类。
本节我们不考虑发射模块而只研究接收端的解码。
本例我们以比较容易的脉冲宽度调制来介绍解码原理。
三、发射端数据的编码当我们按下遥控器后,遥控器发出一帧数据。
这一帧数据由前导码、用户码高8位、用户码低8位、数据码、数据反码组成。
其中前导码为9ms高电平接着4.5ms低电平,标志数据帧的开始;用户码(共16位)为红外接收器识别遥控器的身份的标志,不同的遥控器一般用户码不同,以防止不同电器设备之间遥控码的干扰;数据码为红外接收器识别遥控器上不同的按键的标志,对同一遥控器来说,按不同的键所发出的二进制编码具有相同的用户码,不同的数据码,如图1所示.数据反码用于信息正确接收校验。
图1红外遥控解码精简设计。
孙卫锋,,郑秀娥。
山东理工大学学报(自然科学版) 第20卷第6期2006年26~291、16位用户码,8位数据码和8位数据反码中的数据位定义以脉宽0.56ms间隔0.565ms周期1.125ms表示二进制“0”,以脉宽0.56ms间隔1.69ms 周期2.25ms表示二进制“1”,其波形分别如图2(a)和(b)所示。
(a) (b)图22、重复码以9ms高电平,2.25ms低电平,再0.56ms高电平定义为重复码,持续按键时,该键编码连续发送,首帧为数据帧,其后为重复码,周期为108us,如图3所示。
图3四、接收端的解码原理解码就是将HX1838输出的脉冲还原为二进制的“0”和“1”,得到二进制“0”,“1”序列,进而分析所含的用户码和数据码。
当HX1838在遥控有效距离内,接收到红外遥控脉冲信号后,由内部转换成电压信号并经放大、长时控制、干扰抑制、带通滤波并整形后输出遥控代码脉冲.脉冲的形式为遥控器发射脉冲的倒像.图4表明了遥控发射码与HX1838解码输出码之间的波形关系.一定要注意,单片机接收端与发射端的信号是倒像关系,发射端引导码是9ms高电平,2.25ms低电平,在单片机接收端就变成了9ms低电平和2.25ms高电平,发射端发射位0,则单片机接收端为高电平。
红外解码教程

return TH1*256+TL1;
}
//=============================================================
unsigned int Ir_Get_High()
{
TL1=0;
TH1=0;
Led_Buf[2]=0;
Led_Buf[3]=0; //显示区设成0
do
{
restart:
while(Ir_Pin);
temp=Ir_Get_Low();
if(temp<c(8500) || temp>c(9500)) continue;//引导脉冲低电平9000
unsigned char Ir_Buf[4]; //用于保存解码结果
//==============================================================
timer0() interrupt 1 using 1 //数码管扫描
{
TL0=65536-1000;
char i,j;
Led_Index=1;
TMOD=0x11;
TL0=65536-1000;
TH0=(65536-1000)/256; //定时器0设定约1000us中断一次,用于数码管扫描
EA=1;
ET0=1;
TR0=1;
Led_Buf[0]=0;
Led_Buf[1]=0;
0xf8,0; //共阳极数码显示码0-F.
unsigned char code Led_Sel[]={0xe,0xd,0xb,0x7};
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
bit DeCode(void) { unsigned char i,j; unsigned char temp; // 储存解码出的数据 for(i=0;i<4;i++) //连续读取4个用户码和键数据码 { for(j=0;j<8;j++) //每个码有8位数字 { temp=temp>>1; //temp 中的各数据位右移一位,因为先读出的是高位数据 TH0=0; // 定时器清0 TL0=0; // 定时器清0 TR0=1; // 开启定时器T0 while(IR==0) // 如果是低电平就等待 ; //低电平计时 TR0=0; // 关闭定时器T0 *256+TL0; //保存低电平宽度 LowTime=TH0 LowTime=TH0* TH0=0; // 定时器清0 TL0=0; // 定时器清0 TR0=1; // 开启定时器T0 while(IR==1) //如果是高电平就等待 ; TR0=0; // 关闭定时器T0 *256+TL0; //保存高电平宽度 HighTime=TH0 HighTime=TH0* if((LowTime<370)||(LowTime>640)) return 0; // 如果低电平长度不在合理范围,则认为出错,停止解码 if((HighTime>420)&&(HighTime<620)) //如果高电平时间在 560微秒左右,即计数 560/1.085=516次 temp=temp&0x7f; //(520-100=420, 520+100=620),则该位是 0 if((HighTime>1300)&&(HighTime<1800)) //如果高电平时间在 1680微秒左右,即计数 1680/1.085=1548次 temp=temp|0x80; //(1550-250=1300,1550+250=1800),则该位是1 } a[i]=temp; //将解码出的字节值储存在 a[i] } if(a[2]=~a[3]) //验证键数据码和其反码是否相等 ,一般情况下不必验证用户码 return 1; // 解码正确,返回 1 }
接收器及解码
一体化红外线接收器是一种集红外线接收和放大 于一体,不需要任何外接元件,就能完成从红外 线接收到输出与TTL电平信号兼容的所有工作, 而体积和普通的塑封三极管大小一样,它适合于 各种红外线遥控和红外线数据传输。
图中3个引脚从左到右 依次是 1 信号输出 2 地线(GND) 3 电源 (+5V)
上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次 调制以提高发射效率,达到降低电源功耗的目的。 然后再通过红外发射二码是连续的32位二进制码组,其中前16位为用户识别码,能 区别不同的电器设备,防止不同机种遥控码互相干扰。芯片厂商把用户识别码固定为十六 进制的一组数;后16位为8位操作码(功能码)及其反码。UPD6121G最多额128种不 同组合的编码。遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为 108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在 45~63ms之间,图4为发射波形图。当一个键按下超过36ms,振荡器使芯片激活,将 发射一组108ms的编码脉冲, 这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码 (9ms~18ms),高8位地址码(9ms~18ms),8位数据码(9ms~18ms)和这8位数 据的反码(9ms~18ms)组成。如果键按下超过108ms仍未松开,接下来发射的代码 (连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。
锐志开发板上红外接收头连接图
�
红外接收头将38K载波信号过虑,得到与发射代码反向接收代码
发射端的“0”和“1”
红外解码的关键就是识别 0和1
1. 解码的关键是如何识别“0”和“1”, 从位的定义我们可以发现“0”、“1”均以0.56ms的低电平开始, 不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,所以必须根据高电平的宽度 区别“0”和“1”。如果从0.56ms低电平过后,开始延时,0.56ms以后,若读到的电平为低, 说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比0.56ms长些, 但又不能超过1.12ms,否则如果该位为“0”,读到的已是下一位的高电平, 因此取(1.12ms+0.56ms )/2=0.84ms最为可靠,一般取0.84ms左右均可。 2. 根据码的格式,应该等待9ms的起始码和4.5ms的结果码完成后才能读码。
�
�
1 红外遥控系统
通用红外遥控系统由发射和接收两大部分组成,应用编 /解码专用集 成电路芯片来进行控制操作,如图 1所示。发射部分包括键盘矩阵、 编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、 解码电路。
� �
�
遥控发射器及其编码 遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广 泛,解码比较容易的一类来加以说明,现以兼容NEC的uPD6121G芯片发射码格式 的芯片组成发射电路为例说明编码原理。当发射器按键按下后,即有遥控码发出,所 按的键不同遥控编码也不同。这种遥控码具有以下特征: 采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组 合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表 示二进制的“1”,其波形如图2所示。
红外线遥控
红外线遥控
�
红外线遥控是目前使用最广泛的一种通信 和遥控手段。由于红外线遥控装置具有体 积小、功耗低、功能强、成本低等特点, 因而,继彩电、录像机之后,在录音机、 音响设备、空凋机以及玩具等其它小型电 器装置上也纷纷采用红外线遥控。工业设 备中,在高压、辐射、有毒气体、粉尘等 环境下,采用红外线遥控不仅完全可靠而 且能有效地隔离电气干扰。
检测9MS的引导码
IT0=1; //外中断的下降沿触发 void Int0(void) interrupt 0 { EX0=0; //关闭外中断 0,不再接收二次红外信号的中断,只解码当前红外信号 TH0=0; // 定时器T0的高8位清0 TL0=0; // 定时器T0的低8位清0 TR0=1; //开启定时器T0 while(IR==0); // 如果是低电平就等待,给引导码低电平计时 TR0=0; // 关闭定时器T0 LowTime=TH0 LowTime=TH0* *256+TL0; //保存低电平时间 TH0=0; // 定时器T0的高8位清0 TL0=0; // 定时器T0的低8位清0 TR0=1; //开启定时器T0 while(IR==1); //如果是高电平就等待,给引导码高电平计时 TR0=0; // 关闭定时器T0 HighTime=TH0 HighTime=TH0* *256+TL0; //保存引导码的高电平长度 if((LowTime>7800)&&(LowTime<8800)&&(HighTime>3600)&&(HighTime<4700)) { //如果是引导码 ,就开始解码 ,否则放弃,引导码的低电平计时 //次数=9000us/1.085=8294, 判断区间:8300-500=7800,8300+500=8800. //如果是引导码 ,就开始解码 ,否则放弃,引导码的低电平计时 //次数=9000us/1.085=8294, 判断区间:8300-500=7800,8300+500=8800. if(DeCode()==1) // 执行遥控解码功能