文档视界 最新最全的文档下载
当前位置:文档视界 › 红外遥控编解码全攻略

红外遥控编解码全攻略

红外遥控编解码全攻略
红外遥控编解码全攻略

-DYDIY-

红外遥控编解码全攻略

作者:杜洋

2005-9-26

红外遥控器的解码并对电器进行遥控一直是广大单片机爱好者的一个心愿。自己动手实现红外遥控电器也是大家单片机学习提高的一个重要的实验。现在网上关于红外线遥控器的解码的资料和文章很多,可是我在半年前学习红外遥控的解码时可是费了不少的力气。因为网上大部分资料和源程序都是针对某一种的红外遥控进行说明,只有买了和文章中一样的遥控器才可以继续实验。而且网上很少有遥控器的编码资料(用单片机模拟红外遥控器),经过了半年的学习与实践现在终于对红外遥控信号的编解码有了一个微薄的认识,在止写成文章希望对初学红外遥控的朋友有一定的帮助,更渴望有深入了解这方面的高手批评指正,谈谈自己的理解与看法,我就算是抛砖引玉了。呵呵!

红外遥控器的解码:

大部分的红外遥控的解码资料都是采用串口或是利用一个专用的单片机解码电路取码,前者的制作麻烦而且还要有专用的软件支持。后者则必须单独做一块解码板,而且一般只对某一种或一类的红外遥控器有效。而我有一种方法,只用一条不需要电路板的接线,用声卡测出红外遥控的波型。经过了长时间的使用效果很好,而且不仅对各种红外遥控的解码,还可以对无线通信或各种低波特率的编码进行分析,相当一个高级的试波器。

红外遥控器声卡波形解码一法:

采用我的解码方法需要以下的条件:

1,一台有MIC输入的声卡的电脑。

2,一条制作好的红外转换线(自己制作,以下有介绍)

3,安装高级音频编辑软件COOL EDIT PRO 2.0(各大下载网均有破解版下载)

红外遥控协议说明:

一般的,红外遥控的编码由前导码、地址码和数据码组成。而且有比较精准的时序要求。遥控码的发射由38KHZ或40KHZ的载波信号,由信号的时间长度来表示二进制数据。遥控的协议表示方法很多,下面是几种典型的例子:1,

1

E-mail:dydiy@https://www.docsj.com/doc/461702473.html,

E-mail :dydiy@https://www.docsj.com/doc/461702473.html,

2

这是某型号长虹电视机遥控器的波形,从图中可以看得出它是用一个4.5毫秒的高电平和4.5毫秒的低电平作为前导码。之后以0.56毫秒高电平和0.56毫秒低电平表示数据“0”,以0.56毫秒高电平和1.65毫秒低电平表示数据“1”。

一般前导码都是明显比数据码长的信号,我们用COOL EDIT 得到波型图之后可以一眼就看出来。通过前导码之后有32个数据码(“0”,“1”代码),被分成4个字节,每个字节8位(8个数据)。数据是由高位到低位排列的,我们可以通过看数据码低电平的长度来看出数据值(长为1)。写下数据再每8位组成一个字节,我们就可以得出70H ,70H ,1AH ,E5H 这4个字节的数据,前2个字节为地址码,用来区别各个产家或各种型号的遥控器(前导码和数据帧的不同也可以区分不同的遥控器)。一般第一个字节与第二个字节是校验关系,第二个字节是第一个字节的反码(反码:相反的数据,如果数据为“0”反码则是“1”)或是两个字节相同,上图的字节相同。后两个字节是数据码,用来区别遥控器的按键值,一般第三个字节与第四个字节也是同码或反码的关系,上图为反码关系。

2,

此为SAA3010遥控器的波形,说实话我对这个遥控的协议不了解,不过还是知道一点点,在这里小说一下,让高手见笑大方了。

这种遥控的数据是由T (一定长度,集体没量)表示数据“0”,用数据2T 表示数据“1”。这种协议是不分高低电平的,不论高还是低只要长度相当就表示数据,这种遥控协议的精度不高容易产生错误。用T 的高电平表示前导码,后有24个数据码,T 长度为0,2T 长度为1,每8位组成一个字节,共有3个字

节。集体的地址字节和数据字节怎么分我就不了解了。

3,

这是SONY-D7C8遥控器的波形,和长虹的遥控相似,它用4T长度高电平表示前导码,用T长度低电平和T长度高电平表示“0”,用T长度低电平和2T 长度高电平表示“1”。共有12个代码,后4个码都为“0”,可能是地址码,可以不理采。前8位可以组成一个字节的数据,仅用这一个字节表示数据信息。

以上可以看出遥控的编码各有不同,地址码,数据码也不同,所以我们只要了解了代码的形式(即前导码及数据“0”,“1”的表示方式),就可以完全的玩转红外遥控。

解码思路与方法:

我利用电脑的声卡和COOLEDIT软件读出遥控码,首先我们得作一条转接线。我们可以用红外一体化接收头将38K或40KHZ的调制信号解调、放大、输出TTL数据信号电平。这里我使用的是红外一体接收集成电路TSOP1738,它有3个引脚,分别为电源VDD,地VSS,信号输出OUT。

TSOP1738

5V的电源我们可以用稳压电源或是从USB口取电,将输出和地接一条音频线接声卡。就这么简单,快作吧。

电路图:

3

E-mail:dydiy@https://www.docsj.com/doc/461702473.html,

E-mail :dydiy@https://www.docsj.com/doc/461702473.html,

4

下面安装COOL ,这个工作我就不多说了,不然大家说我八卦了。打开COOL ,在多音轨窗口选择一个音轨,点中R 并单击录音键。

用左上角的音轨窗口转换按钮变到单轨方式。

用放大波形和减少幅度工具调整图像。

就这样,波形出来了。从图中我们可以看出前导码和代码协议方式。用下面的标尺还可以算出帧长度,也可以读出代码和字节,一举三得。知道了波形了,下面我们就开始解码遥控了。(你可以事先把你手中的遥控器每一个键的波形全

5

E-mail:dydiy@https://www.docsj.com/doc/461702473.html,

用COOL录下来,以方便工作)

遥控码的解码方法:

好了,我们了解了遥控码的协议方式了,可是我们怎么用单片机读这个码,并对电器进行遥控呢?下面就说说单片机解码的原理。

我们的单片机解码电路采用SOTP1738作为红外信号的前期检波、放大、输出TTL电平。将1738的OUT(输出引脚)直接接到单片机的一个I/O口,再接一个单片机的最小系统(由振荡电路、复位电路、稳压电源电路组成),我们的解码硬件电路就准备好了。

为了读取数据的方便,可以在P1口接8个LED用于显示二进制数据,在一般的51单片机学习板都有这个硬件结构。好像已经成了一个学习板的标准了。晶振采用12MHZ和11.0592MHZ都可以,只是在延时读数上我一定的区别。

SOTP1738的输出脚(OUT)在没有信号输入时为高电平(=Vdd),当有38KHZ 的调制信号时则呈低电平(=Vss),我们用单片机的I/O口查寻电平的高低,并查寻某一电平的时间长度,就可以读出数据了。

我们以长虹遥控器为例,说说遥控码的读取:

遥控码发射是由9毫秒的高电平和4.5毫秒低电平表示前导码。用560微秒高电平和1120微秒低电平表示数据“1”,用560微秒高电平和560微秒低电平表示数据“0”。前导码后共4个字节。判断数据中低电平的长度是读出数据的要点,这里我们用882US(560~1120US之间)作为标尺,如果882uS之后P3.2还是低电平则表示数据1,将1写入寄存器就可以了(数据为一时还需要再延时一小段时间使电平变为高,以用来检测下一个低电平的起始)。882US后的电平为高则将0写入寄存器。之后程序等待下一个低电平的到来。

(发射电路发射的高电平信号被1738接收并输入单片机的是低电平,编程

6

E-mail:dydiy@https://www.docsj.com/doc/461702473.html,

时一定要注意。在COOL的读码时上沉是低电平,下沉是高电平。)

仅对长虹遥控器用查寻方式解码的流程图如下:

这是比较常用的解码原程序,其中还加上了正码反码校验(流程图上没有)。

7

E-mail:dydiy@https://www.docsj.com/doc/461702473.html,

系统晶振为12MHZ,如果用11.0592MHZ则需要改动延时子程序。

如果用中断法的程序相似,请大家自己写吧。

JB P3.2,$ ;查寻等待低电平

MOV R6,#10

SB: ACALL YS1 ;调用882微秒延时子程序

JB P3.2,EXIT ;延时882微秒后判断P3.2脚是否出现高电平如果有就退出解码程序

DJNZ R6, SB ;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序

;以上完成对遥控信号的9000微秒的初始低电平信号的识别。

JNB P3.2, $ ;等待高电平避开9毫秒低电平引导脉冲ACALL YS2 ;延时4.74毫秒避开4.5毫秒的结果码MOV R7,#16 ;忽略前26位系统识别码

JJJJA:JNB P3.2,$ ;等待地址码第一位的高电平信号LCALL YS1 ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态

MOV C,P3.2 ;将P3.2引脚此时的电平状态0或1存入C中

JNC UUUA ;如果为0就跳转到UUUA

LCALL YS3 ;检测到高电平1的话延时1毫秒等待脉冲高电平结束

UUUA: DJNZ R7,JJJJA

MOV R1,#1AH ;设定1AH为起始RAM区

MOV R2,#4 ;接收从1AH到1DH的4个内存,用于存放操作码和操作反码

PP: MOV R3,#8 ;每组数据为8位

JJJJ: JNB P3.2,$ ;等待地址码第一位的高电平信号LCALL YS1 ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态

MOV C,P3.2 ;将P3.2引脚此时的电平状态0或1存入C中

JNC UUU; ; ;如果为0就跳转到UUU

LCALL YS3 ; ;检测到高电平1的话延时1毫秒等

8

E-mail:dydiy@https://www.docsj.com/doc/461702473.html,

待脉冲高电平结束

UUU: MOV A,@R1 ;将R1中地址的给A

RRC A ;将C中的值0或1移入A中的最低位MOV @R1,A ;将A中的数暂时存放在R1数值的内存中

DJNZ R3,JJJJ ;接收满8位换一个内存

INC R1 ;对R1中的值加1,换下一个RAM DJNZ R2,PP ;接收完8位数据码和8位数据反码,存放在1AH/1BH中

MOV A,1AH

CJNE A,1BH,EXIT ;如果不等表示接收数据发生错误,放弃

MOV A,1CH

CPL A ;对1AH取反后和1BH比较

CJNE A,1DH,EXIT ;如果不等表示接收数据发生错误,放弃

;1A为遥控地址码正码1B为反码MOV A,1CH

;CJNE A,#10H,EXIT; ;10H为遥控器的Power键的值SETB P0.0 (设P0.0口接一个控制电器)

即当键值为10H时执行相应功能

MOV P1,A ;显示键值

;-----------------延时子程序--------------;

YS1: MOV R4,#20 ;延时子程序1,精确延时882微秒

D1: MOV R5,#20

DJNZ R5,$

DJNZ R4,D1

RET

YS2: MOV R4,#10; ;延时子程序2,精确延时4740微秒D2: MOV R5,#235

DJNZ R5,$

DJNZ R4,D2

RET

YS3: MOV R4,#2 ;延时程序3,精确延时1000微秒

D3:MOV R5,#248

9

E-mail:dydiy@https://www.docsj.com/doc/461702473.html,

DJNZ R5,$

DJNZ R4,D3

RET

YS4: MOV R4,#2 ;延时程序3,精确延时??微秒

D4:MOV R5,#200

D5:MOV R6,#250

DJNZ R6,$

DJNZ R5,D5

DJNZ R4,D4

RET

END

(此程序仅为参考程序,并不实用,如要使用,请自行修改)

可以了,我们用单片机读出了数据值(从P1口的二进制数读出,由高位到低位),之后我们就可以比对这个值控制电器了。

如果大家练习了一段时间后就可以直接从COOL软件的波形中看出数据了,直接修延时和校验数据就OK了,这样我们就可以破解所以的红外遥控了。

爽了吧?心情愉快之余,让我们再来看看红外遥控码的发射吧!!!

红外遥控器编码调制方法:

其实了解了红外遥控的解码的方法之后,再对其编码就简单多了。我们只要生成一定时长的电平就可以了,只是有一个38KHZ载波调制是需要说明的。我们的信号发射电路如下图:

10

E-mail:dydiy@https://www.docsj.com/doc/461702473.html,

红外遥控的电路也比较简单,一个PNP驱动三极管、一个红外线发射二极管和两个限流电阻。

我们要作的工作就是要模拟红外遥控的协议来控制象电视,VCD机这样的电器。我们只要知道560US高加上560US低表示数据“0”。先将P1.7置低后延时560US,再将其置高再延时560US,我们的“0”就发射成功了(因为用了8550的PNP 三极管所以信号是低电平使能)。“1”是由560US高和1120US低表示的(仅对长虹本型号遥控器而言,其它遥控还有自己测定),方法也一样,这样我们就发射出了编码。可是还有一个关键的问题就是载波,我们以上发的这种没有载波信号的编码是不会被1738接收并处理的,必须完成38KHZ(有一些遥控是40KHZ 的)的载波才行。载波的方法所用CPU延时实现也可以用定时器中断完成,这里我用的是T0定时器完成载波。我们设定定时器为方式2(8位重装初值)设定38KHZ的定时器初值(一般12MHZ晶振的初值为0F3H,11.0592MHZ初值为0F4H),设为定时器中断,在中断程序中只写入取反P1.7(CPL P1.7),当我们要发数据“1”时,前一个560US高电平发送先开定时器中断再启动定时器,延时560US再关定时器,后一个1120US的低电平因为不发信号可以直接置高P1.7延时1120US即可。(注意:当定时器启动时会影响CPU的延时,使延时改慢,编程时应该考虑并按比例减少CPU延时时间)

下面是一个常用的发射程序:

;==============================================T0中断程序

TT0:

CPL WOUT

RETI

11

E-mail:dydiy@https://www.docsj.com/doc/461702473.html,

;------------------------------------------红外遥控信号发射

RFOUTPRO:

MOV R2,#4

RF9:

CALL WTBB ;调用发射前导码子程序

MOV R0,#LEDQ ;装入发射区RAM首地址

OUTT00: ;放入数据表

MOV A,@R0 ;放入数据

MOV R3,#8 ;字节长(必须是8)

OUTT0: ;发射数据

RRC A ;累加器带C右移一位,将第一个码放入C

JC OUTT1 ;如果C为0则继续执行

CALL WTB0 ;C为0则发”0“的代码

JMP OUTT2 ; 跳过:“1”

OUTT1:

CALL WTB1 ; 如果C为1则发“1”的代码OUTT2:

DJNZ R3,OUTT0 ; 一个字节到?不到跳回字节读取CALL RFEND

SETB WOUT

CALL DL40MS

DJNZ R2,RF9

OUTTEXIT: ;退出发射

CLR TR0

CLR ET0

SETB WOUT ;拉低发射线(停发射)

RET ;无线发射子程序退出

;------------------------------------WT代码发射

WTBB: ;初始化代码;初始代码

SETB ET0

SETB TR0

CALL DL4500US

CLR TR0

CLR ET0

12

E-mail:dydiy@https://www.docsj.com/doc/461702473.html,

RET ;

WTB0: ;"0”的代码

SETB WOUT ;560us低+560us高

CALL DL560US ;

SETB ET0

SETB TR0

;

CALL DL432US ;

CLR TR0

CLR ET0

RET ;

WTB1: ;1代码

SETB WOUT ;560us低+1120us高

CALL DL560US ;

SETB ET0

SETB TR0

;

CALL DL864US ;

CLR TR0

CLR ET0

RET ;

RFEND:

MOV R3,#4

RFEND1:

CALL WTB0

DJNZ R3,RFEND1

RET

;-------------------------------------------延时子程序

DL882US:

MOV R6,#20

D0: MOV R7,#20

DJNZ R7,$

DJNZ R6,D0

RET

DL4500US:

MOV R6,#3

DE1: MOV R7,#200

DJNZ R7,$

DJNZ R6,DE1

13

E-mail:dydiy@https://www.docsj.com/doc/461702473.html,

RET

DL560US:

MOV R6,#20

DE2: MOV R7,#12

DJNZ R7,$

DJNZ R6,DE2

RET

DL432US:

MOV R6,#8

DE3: MOV R7,#12

DJNZ R7,$

DJNZ R6,DE3

RET

DL9000US:

CALL DL4500US

CALL DL4500US

RET

DL864US:

CALL DL432US

CALL DL432US

RET

DL20MS: ;20毫秒延时,主要用于去抖动。(100,100)

MOV R6,#100

DL20MS_1:

MOV R7,#100

DJNZ R7,$

DJNZ R6,DL20MS_1

RET

DL40MS: ;40毫秒延时

CALL DL20MS

CALL DL20MS

RET

DL1S: ;1秒延时,用在了开始等待。(50)

14

E-mail:dydiy@https://www.docsj.com/doc/461702473.html,

MOV R5,#50

DL1S_1:

CALL DL20MS

DJNZ R5,DL1S_1

RET

;-------------------------------------------程序结束

END

(以上程序仅供参考)

好了,没什么问题了。我也累了,希望此文章可以帮助大家更好的学习红外遥控。谢谢!!!也希望大家多多支持,我也好有激情继续写文章。

杜洋

15

E-mail:dydiy@https://www.docsj.com/doc/461702473.html,

红外遥控信号的解码

红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。 1 红外遥控系统 通用红外遥控系统由发射和接收两大部分组成。应用编/解码专用集成电路芯片来进行控制操作,如图1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。 图1 红外线遥控系统框图 2 遥控发射器及其编码 遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理(一般家庭用的DVD、V CD、音响都使用这种编码方式)。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征: 采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图2所示。

图2 遥控码的“0”和“1” (注:所有波形为接收端的与发射相反) 上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图3所示。 图3 遥控信号编码波形图 UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01H;后16位为8位操作码(功能码)及其反码。UPD6121G最多额128种不同组合的编码。 遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45~63ms之间,图4为发射波形图。 图4 遥控连发信号波形 当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个引导码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms),高8位地址码(9ms~18ms),8位数据

38K红外遥控解码

#include #define uint08 unsigned char #define uint16 unsigned int sbit IR=P3^2; uint08 a[4],k,IR_number; uint16 x; void init_int0_time0() //外部中断0与定时器中断0初始化函数 { TMOD=0x01; //定义定时中断0在模式1 TH0 =0x00; //0000 0000 TL0 =0x00; //0000 0000 TR0 =1; ET0 =1; //打开定时中断0 IT0 =1; //边沿触发 EX0 =1; //打开外部中断0 EA =1; //打开总中断 } void int0() interrupt 0 { x=TH0*256+TL0; //读取两次中断时间差 TH0=0; TL0=0; //恢复寄存器,准备下一次读数 if(12000<=x&&x<=15000) //判断IR开始信号 k =0; else if(1000<=x&&x<=2500) //判断IR信号为0/1 { a[k/8]=a[k/8]>>1; if(2000<=x&&x<=2500) a[k/8]|=0x80; k++; } if(k==32&&a[2]==~a[3]) //判断读取的数据是否正确 { IR_number=a[2]; } } void time0(void) interrupt 1 //定时器0 { } 说明:a[0],a[1]为用户码,a[2]为红外遥控信号数据,a[3]为a[2]的反码,应用时在“IR_number=a[2];”这条语句前面加个判断用户码是否正确的语句,然后在主函数中读出IR_number就可以了,目的是提高解码的准确度,减少误差。

万能红外遥控解码模块【精选】

https://www.docsj.com/doc/461702473.html,/item.htm?id=7693624806 该模块采用5V电源供电,可以完成目前应用最广泛的多种红外遥控编码的解码,包括飞利浦(RC5)编码(典型编码芯片如SAA3010及兼容芯片如PT2210 等)和NEC编码(典型编码芯片如uPD6121,uPD6122, TC9012 )以及众多的兼容芯片型号,(如PT2221, PT2222, SC6121, SC6122,SC9012 等等),采用该模块,可以缩短开发时间,节约CPU 资源,降低总体成本。 特点 ●使用简单、可靠 ● 支持多种编码 ● 兼容SPI 及UART(波特率9600)的串行输出 ● 采用数字滤波技术,高抗干扰,无误码 ● 接收有效指示输出 ● 工业级温度范围 储存温度-65至+150℃ 工作温度-40至+85℃ 任意接口对地电压-0.3至6V 红外编码介绍 目前应用于家电等领域的红外线遥控装置,并没有统一的国际标准,目前市场上所见的红外线遥控编码芯片,超过10 种之多,分别由飞利浦公司、NEC 公司、SONY 公司、东芝公司、三菱公司、JVC 公司等生产,使用的编码方式各不相同。目前应用最广泛、兼容产品最多的,是飞利浦公司(RC5编码)的和NEC 公司的编码芯片。本模块可以完成这两种格式编码的解码工作。 RC5 编码: RC5 编码由飞利浦公司推出,其编码芯片有SAA3010,SAA3006 等,是应用很

广泛的一种编码方式。 RC5 编码采用双相位编码方式,用不同相位分别代表“0”和“1”。传送每一位的时间固定为1.778mS。 每一个指令包括1.5bits 的起始位(2 个逻辑1),1 个翻转位,5 位系统码(地址码),以及6 位命令码(键码),因此,最多可以支持64 个键。 翻转位在每次有新的按键按下去的时候翻转一次,这里指的新按键,也包括同一个键抬起后再次按下的情况。如果某个键持续按下,则编码芯片会不断地重复发送同样的数据。翻转位保持不变。而如果该键中途抬起后再次按下,则再次按下后所发送的数据中的翻转位发生翻转,其它数据保持不变。 NEC 编码: NEC 编码由NEC 公司推出,其典型编码芯片为uPD6121,uPD6122,除了NEC 公司的产品,市场上还有大量与之相兼容的产品,如PT2221, PT2222, SC6121, SC6122,SC9012 等等。是应用最广泛的一种编码方式。 该编码方式采用脉冲位置编码方式,利用脉冲间的时间间隔来区分“0”和“1”。 每个指令包括32 位数据,包括16 位的用户码、以及8 位键数据码和键数据码的反码。因为具有反码可以作为校验的依据,因此该种编码方式具有很低的误码率。理论上该编码方式可以支持256 个键,实际的编码芯片一般可支持64 个

c51、c52单片机红外线遥控接收解码c程序(可直接使用)

/ 亲,此程序以经过测试,可直接使用!!!/ #include #define uchar unsigned char #define uint unsigned int void delay(uchar x); sbit IRIN = P3^2; uchar IRCOM[4]; void main() { IE = 0x81; TCON = 0x01; IRIN=1; /* 此处可以根据按键码自由编写程序 /以下为3*7遥控按键码/ /(也可以应用与其他类型遥控,本程序只以3*7遥控为例)/ / 0x45 0x46 0x47 / / 0x44 0x40 0x43 / / 0x07 0x15 0x09 / / 0x16 0x19 0x0d / / 0x0c 0x18 0x5e / / 0x08 0x1c 0x5a / / 0x42 0x52 0x4a / 例如: while(1) {switch(IRCOM[2]) {case 0x45: P2=0x7f; break; case 0x44: P2=0xbf; break; case 0x07: P2=0xdf; break; case 0x16: P2=0xef; break; case 0x0c: P2=0xf7; break; case 0x08: P2=0xfb; break; case 0x42: P2=0xfd; break; case 0x52: P2=0xfe; break; case 0x4a: P2=0xff; break; case 0x5a: P2=0x00; break;} } */ while(1); } //end main /**********************************************************/ void IR_IN(void) interrupt 0 //外部中断服务程序 {unsigned char j,k,N=0; EX0 = 0; delay(15); if (IRIN==1) { EX0 =1;

红外遥控原理及解码程序

红外遥控系统原理及单片机 红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。 1 红外遥控系统 通用红外遥控系统由发射和接收两大部分组成。应用编/解码专用集成电路芯片来进行控制操作,如图1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。 图1 红外线遥控系统框图 2 遥控发射器及其编码 遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC 的uPD6121G组成发射电路为例说明编码原理(一般家庭用的DVD、VCD、音响都使用这种编码方式)。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周

期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图2所示。 图2 遥控码的“0”和“1” (注:所有波形为接收端的与发射相反)上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图3示。 图3 遥控信号编码波形图 UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01H;后16位为8位操作码(功能码)及其反码。UPD6121G最多额128种不同组合的编码。 遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45~63ms之间,图4为发射波形图。

红外遥控解码原理

红外线遥控器解码原理 红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。 1 红外遥控系统 通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。 2 遥控发射器及其编码 遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征: 采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图2所示。 上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图3所示。

UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01H;后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)组成。 代码格式(以接收代码为准,接收代码与发射代码反向) ①位定义 ②单发代码格式 ③连发代码格式 注:代码宽度算法: 16位地址码的最短宽度:1.12×16=18ms 16位地址码的最长宽度: 2.24ms×16=36ms 易知8位数据代码及其8位反代码的宽度和不变:(1.12ms+2.24ms)×8=27ms ∴32位代码的宽度为(18ms+27ms)~(36ms+27ms)

红外线遥控系统原理及软件解码实例

红外线遥控系统原理及软件解码实例 简介:红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功 关键字:红外 红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。 1、红外遥控系统 通用红外遥控系统由发射和接收两大部分组成。应用编解码专用集成电路芯片来进行控制操作,如图1所示。发射部分包括键盘矩阵、编码调制、LED 红外发送器;接收部分包括光、电转换放大器、解调、解码电路。 图1 红外线遥控系统框图 2 、遥控发射器及其编码 遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理(一般家庭用的DVD、VCD、音响都使用这种编码方式)。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征: 采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125 ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25 ms的组合表示二进制的“1”,其波形如图2所示。 图2 遥控码的“0”和“1” (注:所有波形为接收端的与发射相反)

上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图3所示。 图3 遥控信号编码波形图 UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01H;后16位为8位操作码(功能码)及其反码。U PD6121G最多额128种不同组合的编码。 遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108 ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45~63ms之间,图4为发射波形图。 图4 遥控连发信号波形 当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个引导码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms),高8 位地址码(9ms~18ms),8位数据码(9ms~18ms)和这8位数据的反码(9ms~18ms)组成。如果键按下超过108ms仍未松开,接下来发射的代码(连发码)将仅由起始码(9ms)和结束码(2.25ms)组成。 图5 引导码图6连发码 3 、遥控信号接收 接收电路可以使用一种集红外线接收和放大于一体的一体化红外线接收器,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,而体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输。 接收器对外只有3个引脚:Out、GND、Vcc与单片机接口非常方便,如图7所示。

红外遥控编解码全攻略

-DYDIY- 红外遥控编解码全攻略 作者:杜洋 2005-9-26 红外遥控器的解码并对电器进行遥控一直是广大单片机爱好者的一个心愿。自己动手实现红外遥控电器也是大家单片机学习提高的一个重要的实验。现在网上关于红外线遥控器的解码的资料和文章很多,可是我在半年前学习红外遥控的解码时可是费了不少的力气。因为网上大部分资料和源程序都是针对某一种的红外遥控进行说明,只有买了和文章中一样的遥控器才可以继续实验。而且网上很少有遥控器的编码资料(用单片机模拟红外遥控器),经过了半年的学习与实践现在终于对红外遥控信号的编解码有了一个微薄的认识,在止写成文章希望对初学红外遥控的朋友有一定的帮助,更渴望有深入了解这方面的高手批评指正,谈谈自己的理解与看法,我就算是抛砖引玉了。呵呵! 红外遥控器的解码: 大部分的红外遥控的解码资料都是采用串口或是利用一个专用的单片机解码电路取码,前者的制作麻烦而且还要有专用的软件支持。后者则必须单独做一块解码板,而且一般只对某一种或一类的红外遥控器有效。而我有一种方法,只用一条不需要电路板的接线,用声卡测出红外遥控的波型。经过了长时间的使用效果很好,而且不仅对各种红外遥控的解码,还可以对无线通信或各种低波特率的编码进行分析,相当一个高级的试波器。 红外遥控器声卡波形解码一法: 采用我的解码方法需要以下的条件: 1,一台有MIC输入的声卡的电脑。 2,一条制作好的红外转换线(自己制作,以下有介绍) 3,安装高级音频编辑软件COOL EDIT PRO 2.0(各大下载网均有破解版下载) 红外遥控协议说明: 一般的,红外遥控的编码由前导码、地址码和数据码组成。而且有比较精准的时序要求。遥控码的发射由38KHZ或40KHZ的载波信号,由信号的时间长度来表示二进制数据。遥控的协议表示方法很多,下面是几种典型的例子:1, 1 E-mail:dydiy@https://www.docsj.com/doc/461702473.html,

红外线遥控器解码程序

资料整理自互联网,版权归原作者! 欢迎访问 https://www.docsj.com/doc/461702473.html, 新势力单片机,嵌入式
专业技术论坛:https://www.docsj.com/doc/461702473.html,
红外线遥控器解码程序
Wang1jin 收藏. 交流论坛: https://www.docsj.com/doc/461702473.html,/ 推荐网站: https://www.docsj.com/doc/461702473.html, 个人博客: https://www.docsj.com/doc/461702473.html,
红外线遥控是目前使用最广泛的一种通信和遥控手段.由于红外线遥控装置具有体积小,功耗低,功能强,成本低等特点,因 而,继彩电,录像机之后,在录音机,音响设备,空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控.工业设备中, 在高压,辐射,有毒气体,粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰.
1 红外遥控系统
通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图 1 所示.发射部分 包括键盘矩阵,编码调制,LED 红外发送器;接收部分包括光,电转换放大器,解调,解码电路.
2 遥控发射器及其编码
遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明, 现以日本 NEC 的 uPD6121G 组成发射电路为例说明编码原理.当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码 也不同.这种遥控码具有以下特征:
采用脉宽调制的串行码,以脉宽为 0.565ms,间隔 0.56ms,周期为 1.125ms 的组合表示二进制的"0";以脉宽为 0.565ms, 间隔 1.685ms,周期为 2.25ms 的组合表示二进制的"1",其波形如图 2 所示.
个人博客:https://www.docsj.com/doc/461702473.html,
电子综合站点:https://www.docsj.com/doc/461702473.html,

红外遥控解码系统

创新设计与实践 课程设计 题目: 红外遥控解码系统设计分析 院系名称:电气工程学院 专业班级:电气F0902 指导教师: 设计时间: 2012/12/17-2012/12/23 Array红外遥控解码系统设计分析 一红外遥控解码的现状发展 红外遥控器作为一种极其普及的家用电器的附件,全球每年的需求量在 5亿只以上。有众多的厂家在专业生产红外遥控器,也有众多的遥控器方案 开发公司在专业开发各种红外遥控器集成电路。红外线遥控是目前使用最广 泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、

成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。通用红外遥控系统由发射和接收两大部分组成。应用编/解码专用集成电路芯片来进行控制操作。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。 二红外遥控解码原理与设计思路 整体设计思路为:经过上述方案的分析选择,得出系统硬件由以下几部分组成:电视红外遥控器,51单片机最小系统,接收放大于一体集成红外接收头,1602液晶显示驱动电路。根据扫描到不同的按键值转至相对应的ROM表读取数据。确认设备及菜单选择键后51单片机将从ROM读取出来的值,按照数据处理要求从输出控制脉冲与T0产生的38KHz的载波进行调制,经NPN三极管对信号放大驱动红外发光管将控制信号发送出去。红外数据接收则是采用HS0038一体化红外接收头,内部集成红外接收、数据采集、解码的功能,只要在接收端INT0检测头信号低电平的到来,就可完成对整个串行的信号进行分析得出当前控制指令的功能。然后根据所得的指令去操作相应的用电器件工作,如图1-1所示。

红外遥控编码格式

红外遥控编码 红外遥控编码常用的格式有两种:NEC和RC5 NEC格式的特征: 1:使用38 kHz载波频率 2:引导码间隔是9 ms + 4.5 ms 3:使用16位客户代码 4:使用8位数据代码和8位取反的数据代码 下面的波形是从红外接收头上得到的波形:(调制信号转变成高低电平了) 不过需要将波形反转一下才方便分析:

NEC 协议通过脉冲串之间的时间间隔来实现信号的调制(英文简写PPM)。逻辑“0”是由0.56ms的38KHZ载波和0.560ms的无载波间隔组成;逻辑“1”是由0.56ms的38KHZ载 波和1.68ms的无载波间隔组成;结束位是0.56ms的38K载波。 遥控器的识别码是Address=0xDD20;键值是Command=0x0E;

注意波形先是发低位地址再发高位地址。所以0000,0100,1011,1011反转过来就是1101,1101,0010,000十六进制的DD20; 键值波形如下:

也是要将0111,0000反转成0000,1110得到十六进制的0E;另外注意8位的键值代码是取反后再发一次的,如图0111,0000 取反后为1000,1111。 最后一位是一个逻辑“1”。 RC5编码相对简单一些: 下面的遥控器地址是1A,键值是0D的波形 同样由于取自红外接收头的波形需要反相一下波形以便于分析:

反相后的波形: 根据编码规则:

得到一组数字:110,11010,001101 根据编码定义 第一位是起始位S 通常是逻辑1 第二位是场位F通常为逻辑1,在RC5扩展模式下它将最后6位命令代码扩充到7位代码(高位MSB),这样可以从64个键值扩充到128个键值。 第三位是控制位C 它在每按下了一个键后翻转,这样就可以区分一个键到底是一直按着没松手还是松手后重复按。 如图所示是同一按键重复按两次所得波形,只有第三位是相反的逻辑,其它的位逻辑都一样。

红外解码程序详解

红外遥控解码程序设计 ——————基于uPD6121红外编码制式 红外传感系统是目前应用最为广泛的遥控系统,一个红外遥控系统可分为发射和接收两部分组成,发射端称之为红外遥控器,一般由矩阵键盘,红外编码调制芯片和红外发射管组成;接收端用一体化红外接收头即可,这个东东内置光电放大器和解调部分,信号接收之后一般很微弱须放大后才可解码,为有效发射出去得先托付在载波上所以需经历调制、解调的过程,其实对于发射部分主要工作在于编码,而对于编码方式只有几种主流方式,而目前国内大部分均为uPD6121编码方式(日本NEC公司搞出来的。。),所以我们只须弄清楚这种编码的时序,即可写出万能的红外解码程序,只要是基于这种编码方式的遥控器(家里的电视、空调、电扇遥控器)都可以用该程序来解码(这点也充分证明了C语言的高移植性啊。。) 这种编码的格式其实很简单,开头是一个引导码,人家芯片在编码时将其设计成9ms的高电平和4.5ms的低电平,也就是说你必须跳过这段引导码之后才会接收到数据,第一个问题来了:为什么要加这段引导码?因为红外传感是非常容易受到干扰的,如果直接传送数据很可能并非发送端的信号,很可能来自其他辐射,后面设计程序时会遇到这个问题。所以我们在写程序时在引导码时可以加入检测代码,如果是引导码则继续接收,否则跳出。第二个问题就是:接收数据时我们用外部中断接收,这是考虑到CPU 的执行效率,如果你在主函数里接收数据,就好比CPU一直在问:你接收到数据没? 你接收到没?..很明显不靠谱,和串口通信一样,接收数据用中断这是经验,有利于单片机的执行效率。第三个要注意的就是红外接收端和编码发送的数据是反向的!这点很重要,我看很多资料没有写明这点,让很多童鞋疑惑不解,也就是说引导码编码时确实是9ms高电平和4.5ms 的低电平,但是到了接收端是9ms的低电平和4.5ms的高电平,所以我们在解码时就得注意引导码高电平出现的顺序。对于编码格式,引导码后接了4个字节的数据,前两个字节为用户码和用户反码,简单点说就是器件地址;后两字节为操作码和操作反码,就是我们真正需要的数据。图为发送端编码格式,注意接收到的已反向!

一种红外遥控信号的解码方法

第18卷第2期苏州大学学报(自然科学) Vol .18, No .2 2002 年 4 月JOURNAL OF SUZHOU UNIVERSITY(NATURAL SCIENCE) Apr .2002 文章编号:1000-2073(2002)02-0101-06 一种红外遥控信号的解码方法 肖圣兵,仲兴荣,徐清源,曲波 (苏州大学通信与电子工程系, 江苏苏州215021) 摘要:文章介绍了红外遥控的基本原理和红外遥控发射器的组成,详细论述了以单片机 89C2051 为核心的红外遥控信号的解码方法, 提出了用单片机对红外遥控信号进行识别译码 的程序设计流程. 关键词:单片机;89C2051;红外遥控;解码 中图分类号:TP722文献标识码:A 红外遥控技术广泛应用于各种家用电器产品、金融及商业设施中,为用户提供方便的操纵手段.一些遥控功能相对简单的电器产品,红外遥控信号的接收识别往往采用与编码调制芯片配套的译码芯片.而遥控功能比较复杂的一些电器产品(如电视机),均采用专用的遥控解码芯片,实现特定的功能.为了能将性能稳定、价格低廉、功能较多的电视机遥控器应用于其他控制场合,本文利用单片机89C2051为核心,设计了一套红外遥控信号解码的软硬件系统,通过驱动电路的扩展,可实现功能较复杂的遥控控制. 1 红外遥控的基本原理 红外遥控系统一般由发射系统和接收系统组成.发射系统由专用芯片产生指令代码,经载波调制后驱动红外发射器件,发射红外控制信号.红外信号的指令代码均为二进制码,编码调制由专用芯片完成,编码的方法有多种,不同芯片的编码方法和代码长度有所不同.指令信号常用的编码调制方法有脉冲宽度调制(PWM)和脉冲位置调制(PPM)两种,本系统采用脉冲位置调制方法的遥控信号发射器,即用两个脉冲串之间的时间间隔来表示二进制信息.红外遥控信号被红外接收头接收后,经放大、检波、整形,得到TTL电平的代码信号,再送给解码电路,经译码并执行,去控制指定对象,实现遥控功能. 收稿日期:2002-01-10

手把手教你红外遥控解码实验

手把手教你红外遥控解码实验 单片机轻松入门教学 ------- 『电子驿站』原创,转载请注明出处! --------------------------------------------------------------------------- ------------------------------------ 红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。 【红外遥控系统】 通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。 图1a 图1b 【遥控发射器及其编码】 遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:

采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图2所示。 上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图3所示,连发波形如图4所示。 UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01H;后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)组成。 代码格式(以接收代码为准,接收代码与发射代码反向) ① 位定义

(完整word版)红外遥控系统的发展历史及作用

遥控器是一种用来远控机械的装置。现代的遥控器,主要是由集成电路电板和用来产生不同讯息的按钮所组成。而客车门遥控器是采用最新技术编码解码,以闪断方式控制门泵电磁阀以达到开关自动门的目的。用于客车(大巴、中巴)遥控开、关车门,避免驾驶员每次都需要上车开门的烦恼。 到底是谁发明出第一个遥控器已不可考,但最早的遥控器之一,是一个叫尼古拉·特斯拉(Nikola Tesla)(1856-1943)的发明家(他曾经为爱迪生工作,同样被誉为天才发明家)在1898年时开发出来的。 最早用来控制电视的遥控器是美国一家叫Zenith的电器公司(这家公司现在被LG收购了),在1950年代发展出来的。一开始是有线的。1955年,该公司发展出一种被称为“Flashmatic”的无线遥控装置。但这种装置没办法分辨光束是否是从遥控器而来,而且也必需对准才可以控制。1956年罗伯.爱德勒(Robert Adler)开发出称为“Zenith Space Command”的遥控器,这也是第一个现代的无线遥控装置,他是利用超声波来调频道和音量,每个按键发出的频率不一样,但这种装置也可能会被一般的超声波所干扰,而且有些人及动物(如狗)听得到遥控器发出的声音。 1980年代,发送和接收红外线的半导体装置开发出来时,就慢慢取代了超声波控制装置。即使其他的无线传输方式(如蓝牙)持续被开发出来,这种科技直到现在还持续广泛被使用。遥控器是一种无线发射装置,通过现代的数字编码技术,将按键信息进行编码,通过红外线二极管发射光波,光波经接收机的红外线接收器将收到的红外信号转变成电信号,进处理器进行解码,解 调出相应的指令来达到控制机顶盒等设备完成所需的操作要求。[1] 一:红外遥控器原理 很多电器都采用红外线遥控,那么红外线遥控的工作原理是什么呢?首先我们来看看什么是红外线。 人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。其中红光的波 长范围为0.62~0.76μm;紫光的波长范围为0.38~0.46μm。比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线。

红外遥控器的基本原理解析

红外遥控器的基本原理 红外线的特点人的眼睛能看到的可见光,若按波长排列,依次(从长到短)为红、橙、黄、绿、青、蓝、紫,红光的波长范围为0.62μm~0.7μm,比红光波长还长的光叫红外线。红外线遥控器就是利用波长0.76μm~1.5μm 之间的近红外线来传送控制信号的。 红外线的特点是不干扰其他电器设备工作,也不会影响周边环境。电路调试简单,若对发射信号进行编码,可实现多路红外遥控功能。 红外线发射和接收 人们见到的红外遥控系统分为发射和接收两部分。发射部分的发射元件为红外发光二极管,它发出的是红外线而不是可见光。 常用的红外发光二极管发出的红外线波长为 940nm 左右,外形与普通φ5mm 发光二极管相同,只是颜色不同。一般有透明、黑色和深蓝等三种。判断红外发光二极管的好坏与判断普通二极管一样的方法。单只红外发光二极管的发射功率约100mW。红外发光二极管的发光效率需用专用仪器测定,而业余条件下,只能凭经验用拉距法进行粗略判定。 接收电路的红外接收管是一种光敏二极管,使用时要给红外接收二极管加反向偏压,它才能正常工作而获得高的灵敏度。红外接收二极管一般有圆形和方形两种。由于红外发光二极管的发射功率较小,红外接收二极管收到的信号较弱,所以接收端就要增加高增益放大电路。然而现在不论是业余制作或正式的产品,大都采用成品的一体化接收头。红外线一体化接收头是集红外接收、放大、滤波和比较器输出等的模块,性能稳定、可靠。所以,有了一体化接收头,人们不再制作接收放大电路,这样红外接收电路不仅简单而且可靠性大大提高。

红外遥控器的协议 ?鉴于家用电器的品种多样化和用户的使用特点,生产厂家对红外遥控器进行了严格的规范编码,这些编码各不相同,从而形成不同的编码方式,统一称为红外遥控器编码传输协议。了解这些编码协议的原理,不仅对学习和应用红外遥控器是必备的知识,同时也对学习射频(一般大于300MHz)无线遥控器的工作原理有很大的帮助。 到目前为止,笔者从外刊收集到的红外遥控协议已多达十种,如: RC5、SIRCS、 S ON y、 RECS80、Denon、NEC、Motorola、Japanese、SAMSWNG 和 Daewoo 等。我国家用电器的红外遥控器的生产厂家,其编码方式多数是按上述的各种协议进行编码的,而用得较多的有 NEC协议。 红外遥控器的结构特征 ?红外遥控发射器由键盘矩阵、遥控专用集成电路、激励器和红外发光二极管组成。遥控专用集成电路(采用 AT89S52 单片机)是发射系统的核心部分,其内部由振荡电路、定时电路、扫描信号发生器、键输入编码器、指令译码器、用户码转换器、数码调制电路及缓冲放大器等组成。它能产生键位扫描脉冲信号,并能译出按键的键码,再经遥控指令编码器得到某键位的遥控指令(遥控编码脉冲),由 38KHZ 的载波进行脉冲幅度调制,载有遥控指令的调制信号激励红外二极管发出红外遥控信号。 在红外接收器中,光电转换器件(一般是光电二极管或光电三极管,我们这里用的是 PIN 光电二极管)将接收到的红外光指令信号转换成相应的电信号。此时的信号非常微弱而且干扰特别大,为了实现对信号准确的检测和转换,除了高性能的红外光电转换器件,还应合理地选择并设计性能良好的电路形式。最常用的

红外编码解码

通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。 2 遥控发射器及其编码 遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以***NEC的uPD6121G组成发射电路为例说明编码原理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征: 采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms 的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的“1”,其波形如图2所示。 上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图3所示。

UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01H;后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)组成。 代码格式(以接收代码为准,接收代码与发射代码反向) ①位定义 ②单发代码格式 ③连发代码格式 注:代码宽度算法: 16位地址码的最短宽度:1.12×16=18ms 16位地址码的最长宽度:2.24ms× 16=36ms 易知8位数据代码及其8位反代码的宽度和不变:(1.12ms+2.24ms)×8=27ms

红外遥控器软件解码原理和程序

红外遥控应用领域非常广泛,给消费者带来了很大的便利,但由于红外通讯协议的庞杂,也给使用者造成了一定的麻烦,同样也给设备集成商造成了不变,不同种控制设备的遥控器均不相同,据统计全世界红外遥控码类型已经超过一万种,中国国内应用的红外码型已经超过600种,其中有很多都是生产厂家为避免与其他设备串码而自定义的,这样对于红外学习来说造成了很大的难度。 红外遥控学习的方法有很多,大体上归纳为两种,一拷贝波形,二分析波形,拷贝波形的优点是能学习所有波形,缺点是学习过程中波形畸变也完全复制了,另红外码有多种载波,拷贝波形如加载波一起拷贝显然数据量非常大,因而通行拷贝波形不会拷贝载波,这就导致了可能波形拷贝对了,但载波不对,依然不能控制设备;分析波形的优点是取得波形片段后无论波形如何畸变均能按标准波形发出红外码,缺点是需要建立一个庞大的标准码库,这个工作只能通过不断的积累来完成。 本红外学习模块折中了以上两种方式,对于普遍使用的码型采用波形分析的方法,对于不常用的码型采用拷贝波形的方式,并且对于所有的红外码均采用了特征纠偏的方法,经大量实验证明,这种学习方法比较优秀,可以学习电视、DVD、机顶盒、空调、CD、投影机等设备的红外控制信号,同时可以不断更新标准码库,如果已将本红外学习模块应用到产品上,依然可以通过标准串口更新标准码库。 本红外学习模块如果大量应用在产品上,为避免每个模块都要学习,可以先学习一个模块,测试成功后通过标准串口将学习好的红外数据传输到其他未学习的模块上,为批量产品提供了便利。 本红外学习模块提供了两种电气接口供使用者选择,SPI或TTL电平的串口,通过一个功能选择接口即可选择合适的接口,同时提供给用户三个额外的I/O口,用户可使用命令来控制或读取这三个I/O口,如使用SPI接口则用户可得到一个额外的标准串口,这对于使用多个串口的用户提供了便利,其中SPI接口和串口均为硬件接口,并非通过I/O口模拟的,因而用户可以放心使用,其中SPI接口提供了无SPI功能的MCU与之通讯的模拟程序,方便用户移植,串口则提供了从110~512000bps的波特率,用户可通过寄存器设置(使用SPI做为控制接口时) 本红外学习模块提供给用户一个状态复位控制引脚,在本模块上电前将此引脚接地则可以恢复到出厂前的设置,但已学习好的数据不会擦除。 本红外学习模块可提供外壳封装版本,可以为客户提供OEM版,为大客户提供单芯片版。关于本模块的使用和应用上的任何问题,请来电或邮件咨询,升级信息及改版信息请见网站通告。 QQ: EMAIL: 手机: 红外遥控器软件解码原理和程序 #include "at89x52.h" #define NULL 0x00//数据无效 #define RESET 0X01//程序复位 #define REQUEST 0X02//请求信号

相关文档
相关文档 最新文档