松翰单片机之红外遥控软件编解码简析 <一>

[复制链接]
查看12453 | 回复14 | 2009-11-21 13:36:14 | 显示全部楼层 |阅读模式
红外线遥控是目前应用最广泛的一种通信和遥控手段。由于红外线遥控器具有体积小、
功耗低、功能强、成本低等特点。因此在家电产品中有着广泛的应用。相比与专用的控制芯
片,微控制器具有开发灵活的特点,用户可以随意制定编解码格式。SONIX 8bit MCU 中的
SN8P25xx、SN8P26xx 系列拥有丰富的资源,在红外应用中有着独特的优势:由于表格添
加不上去我这里就省掉了,如想真心的学可以M我!!!!我很高心和大家一起研究
   
    一、 红外编码格式说明

    用户采用红外模块时,编码格式非常灵活。目前市场上的红外编码格式非常多,每家公
司都可以自己定义一种编解码格式。下面以一种比较常用的格式来做分析说明(示意图中高
电平代表 38K 载波输出):  

    上面的波形格式包括前导码(Load Code )、身份码和身份反码(ID Code)、数据码和数
据反码(Data Code)。
    导航码(Load      Code):导航码用来通知接受器其后为遥控数据,解码部分在接受到这
个信号后就可以开始解码。
   
    系统码(ID Code): 系统码用来区分是哪一机型的数据,接收端依此来判断后续的数
据是否为须执行的指令。

    数据码(Data code):  数据码用来区分是哪一个键被按下,接收端根据数据码做
出应该执行什么动作的判断。  
    数据帧间的空闲时间:有用信号中两帧数据间的空闲时间。  
    红外遥控数据传输系统中的关键是数据传输的可靠性。因此有些公司也会在系统码和数
据码后面分别再传送一个同样的码或反码,供误码校验用。  
    在红外遥控编码中数据位的格式一般如下图所示,通过低电平的时间不同,来区别 0
和 1。在解码的时候既可以根据总的时间长度不同来解码,也可以根据低电平时间的不同来
解码。  
    二、 红外发射接收硬件电路部分

    红外遥控的发射接收电路比较简单,其中接收电路可以使用集成红外接收器成品。接
收器包括红外接收管和信号处理IC。接收器对外只有3 个引脚:Vcc、GND 和 1个脉冲信
号输出 PO。与单片机接口非常方便,如图所示。图贴布上去真郁闷     ①Vcc 接系统的电源正极(+5V);
    ②GND 接系统的地线(0V);
    ③脉冲信号输出接 CPU 的中断输入引脚。采取这种连接方法,软件解既可工作于查询
方式,也可工作于中断方式。
    但需要注意的两点:一是注意发射接收管的驱动电流;二是要注意接收部分的滤波措
施,上图中C2 就是用做稳定输出波形,但注意C2 不可太大。

三、 红外编码发射接收软件实现部分

   1、 红外编码发射部分软件实现方法:
    红外发射管需要靠 38K 的载波驱动,才能将信号发送出去。有的MCU 没有 BUZZER
输出功能,不能靠硬件实现 38K              载波,就必须用软件模拟 38K              载波的输出。而我们
SN8P25XX,SN8P26XXS 系列的BUZZER 输出功能配合适当的震荡频率,可以很方便的实
现 38K 载波的输出。
     红外发射部分的软件实现一般可以分为两种:纯软件编码发射,计时器编码发射。
     纯软件编码发射:根据编码格式,利用延时取得适当的时间段来控制载波的输出时间
和输出间隔时间,达到编码正确发送的目的。这种方式思路简单容易实现,但比较浪费资源,
实时性不高,也不利于程序的移植。
     计时器编码发射:根据编码格式,采用计时器中断取得合适的时间段来控制载波的输
出时间和输出间隔时间。这种方法充分利用了系统的资源,执行效率很高,并很容易实现程
序的移植。
      2、 红外编码接收部分软件实现方法:
       根据数据帧中不同的数据位格式和 MCU                中的资源,重要数据解码接收在程序设计
中存在很大差别。一般有几种情况:纯软件解码、计时器解码、外部中断和计时器配合解码
等。
       纯软件解码:根据数据格式采用延时方式来取得合理的采样时间,每到达一次采样
时间就测电平变化以确定解码数值。此种方法对MCU 资源要求不高,无需计时器,也无需
外部电平变换中断源,其实现方法也比较简单,并可以进行软件滤波处理。但此方法在解码
过程中不能并行处理其他事,所以在比较复杂的系统中不推荐应用。
       计时器解码:可以有两种思路来实现解码:一种方式是根据数据位格式利用计时器
取得合理的采样时间,每达到一次采样时间就检测电平变化,根据在设定的时间内检测到高
电平(或低电平)的次数来确定解码数值。另一种方法是累计电平变化的时间,计算两次电
平变化之间的时间,再根据时间的长短来确定解码数值。
       外部中断和计时器配合解码:利用外部中断的下降沿中断功能侦测编码信号的电平
变化,利用计时器采样检测电平,累计时间以确定解码数值。此种方式效率高,解码灵敏,
可以实现各种复杂系统中的准确解码。但在应用外部中断做信号变化侦测的时候,要注意外
部干扰信号,需要在外部电路中做好滤波措施。
       在 SONIX  的 SN8P25XX,SN8P26XX 系列中都有电平变化的外部中断源,因此非常
适合各种编码格式的解码。至于软件部分,由于今天太累了,下次有时间再写一写!!!!
小兵 | 2009-11-26 13:47:36 | 显示全部楼层
至于软件部分,由于今天太累了,下次有时间再写一写!!!!


期待软件什么时间写出来
小良 | 2009-11-27 12:58:16 | 显示全部楼层
2# 小兵


谢谢支持!这几天工作实在太忙了!但为了和大家能分享我的成果,累也是不怕的
多支持我,我才有动力去拿东西给大家分享
ritammkk | 2010-5-20 21:51:38 | 显示全部楼层
软件什么时候出来呀?
DJSKYLONG | 2010-8-10 10:33:42 | 显示全部楼层
好贴,大家顶起身!
FOUCES | 2010-8-14 15:07:32 | 显示全部楼层
老大,有没C格式的啊?
lsmfr | 2010-8-14 16:05:15 | 显示全部楼层
我们的论坛上面有啊,资讯下载的有 C 的教程,你可以去看看
yanhaihong | 2010-8-18 11:03:23 | 显示全部楼层
软件什么时候出来呀?
avr48 | 2010-9-7 09:38:28 | 显示全部楼层
楼主写得太好了,期待继续!
zhouchuan1452 | 2010-9-7 10:42:00 | 显示全部楼层
好贴,楼主果然是高手。期待你的解码程序
您需要登录后才可以回帖 登录 | 注册

本版积分规则