红外遥控编解码全攻略

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

-DYDIY-

红外遥控编解码全攻略

作者:杜洋

2005-9-26

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

红外遥控器的解码:

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

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

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

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

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

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

红外遥控协议说明:

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

1

E-mail:dydiy@

E-mail :dydiy@

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@

E-mail :dydiy@

4

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

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

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

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

5

E-mail:dydiy@

用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@

相关文档
最新文档