首页 > 最新动态 > 晶控课堂 >

51单片机综合学习系统之 红外线遥控篇

2017-09-30 09:16
分享到:
    大家好,通过以前的学习,我们已经对51单片机综合学习系统的使用方法及学习方式有所了解与熟悉,学会了12864点阵型液晶显示的基本知识,体会到了综合学习系统的易用性与易学性,这一期我们将一起学习红外线遥控的基本原理与使用方法。

    先看一下我们将要使用的51单片机综合学习系统能完成哪些实验与产品开发工作:分别有流水灯,数码管显示,液晶显示,按键开关,蜂鸣器奏乐,继电器控制,IIC总线,SPI总线,PS/2实验,AD模数转换,光耦实验,串口通信,红外线遥控,无线遥控,温度传感,步进电机控制等等。

 

    上图是我们将要使用的51单片机综合学习系统硬件平台,本期实验我们用到了综合系统主机,1602液晶屏、超薄型红外线遥控器,综合系统其它功能模块原理与使用详见前几期《电子制作》杂志及后期连载教程介绍。

    红外线遥控是目前使用非常广泛的一种通信和遥控方式。由于红外线遥控装置具有体积小、功耗低、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也被纷纷采用。

1、红外遥控系统

    通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。

这就是我们将要实验使用的高质量超薄型红外线遥控器。

2、遥控发射器及其编码

    遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理,我们使用的超薄型红外线遥控器使用的就是6121编码。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:

    采用脉宽调制的串行码,以脉宽为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)

    对于红外线遥控对于很多电子爱好者来讲,都感觉到非常神奇,看不到,摸不着,但能实现无线遥控,其实控制的关键就是我们要用单片机芯片来识别红外线遥控器发出红外光信号,即我们通常所说的解码,单片机得知发过来的是什么信号,然后再做出相应的判断与控制,如我们按电视机遥控器的频道按钮,则单片机会控制更换电视频道,如按的是遥控器音量键,则单片机会控制增减音量。而解码的关键是如何识别“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左右均可。根据码的格式,应该等待9ms的起始码和4.5ms的结果码完成后才能读码。

接收器及解码

    一体化红外线接收器是一种集红外线接收和放大于一体,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,而体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输。你可以在51单片机综合学习系统的右上角发现黑色的一体化红外线接收头。


    说了这么多,下面我们来一起看一下一个简单实验,我们按红外遥控器上的按钮,一体化接收头将输出怎么样的信号。由于文章篇幅有限,解码源程序比较长,所以读者朋友可以通过网络或电子邮件向我们索取,当然,也可以在51单片机综合学习系统的配套光盘中找到,有若干红外线解码程序供读者学习使用。我们将通过示波器来察看红外线遥控器波形的过程图。与传统的示波器不同,数字示波器可以记录下一定时间内的波形变化,因此,用来分析红外线编码非常方便。

 

    如图所示,是一个红外解码,并通过1602液晶显示的实验实例,源程序在配套光盘中找到,然后运行该程序,按遥控器上任一按键,液晶屏将显示出遥控器按键的键码值,用16进制表示,如图中所示的键码为:26H。这是一个程序显示结果,那么在一体化红外线接收头输出的到底是什么信号呢?下面我们就用示波器来一起看一下。



     按红外线遥控器上的按钮,我们通过数字示波器的波形捕捉功能,截取图像如上,可以看到示波器屏幕上出现脉冲波形。在此,要特别说明一点,红外线遥控器的发射和接收端的电平状态为反相的关系,即发射是“1”的话,则接收端的数据为“0”。


    现在波形已被我们截下来了,然后我们需要根据前面所讲的6121编码规则来进行红外线信号的分析。从示波器的屏幕中,我们可以清楚地看到,红外遥控信号的编码组成规律,前面的是引导码,其次是地址码,后面是数据码。图中上面部分显示完整的一串波形全览。下方放大的波形看上去显示不全,还有一部分数据不在显示范围之内,可以通过示波器旋钮来移动左右位置。

    相信看到这里,你应该可以理解原来看似神奇的红外线遥控功能其实真正内在原理是怎么样的了,你也可以自己来完成红外线遥控电路的设计与应用。由于篇幅有限,读者朋友可以通过网站或电子邮件一起交流与学习。在下几期中,我们将陆续介绍51单片机综合学习系统的其它功能原理与应用。