18581|40

186

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

吃饱了,聊聊咱的红外遥控的编码和解码 [复制链接]

红外线遥控是目前应用最广泛的一种通信和遥控手段。由于红外线遥控器具有体积小、功耗低、功能强、成本低等特点。因此在家电产品中有着广泛的应用。

相比与专用的控制芯片,微控制器具有开发灵活的特点,用户可以随意制定编解码格式。

 

但是,长期以来大家,特别是DIY爱好者对红外遥控的编码和解码原理和现实不太理解,以至于

 

无法根据自己的想法写出相应的程序,东奔西走,求爷爷告奶奶也无从得到,于是,今天在这里,咱们有心人开辟一个专题,来深刻地讨论,红外的编码和解码原理,以及实现程序,推而广之,电路的设计和电路图的分享。

 

    好了,废话不多说了。我就把我所知道的和盘托出吧,高手们不要吝啬拍砖啊。

 

    先说红外的编码吧:

 

一、    红外编码格式说明

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

                                               

                                                  

       上面的波形格式包括前导码(Load Code)、身份码和身份反码(ID Code)、数据码和数据反码(Data Code)。

引导码(Load Code:引导码用来通知接受器其后为遥控数据,解码部分在接受到这个信号后就可以开始解码。

系统码(ID Code: 系统码用来区分是哪一机型的数据,接收端依此来判断后续的数据是否为须执行的指令。

      数据码(Data code:  数据码用来区分是哪一个键被按下,接收端根据数据码做出应该执行什么动作的判断。

    数据帧间的空闲时间:有用信号中两帧数据间的空闲时间。

红外遥控数据传输系统中的关键是数据传输的可靠性。因此有些公司也会在系统码和数据码后面分别再传送一个同样的码或反码,供误码校验用。

    在红外遥控编码中数据位的格式一般如下图所示,通过低电平的时间不同,来区别01。在解码的时候既可以根据总的时间长度不同来解码,也可以根据低电平时间的不同来解码。

 

     

 

 

 

 

 

[ 本帖最后由 libin200899 于 2011-5-16 22:21 编辑 ]
此帖出自51单片机论坛

最新回复

顶起来!  详情 回复 发表于 2015-10-26 23:57
点赞 关注(3)
 

回复
举报

186

帖子

0

TA的资源

纯净的硅(中级)

沙发
 

接上一话题接着说

二、 红外发射接收硬件电路部分

红外遥控的发射接收电路比较简单,其中接收电路可以使用集成红外接收器成品。接收器包括红外接收管和信号处理IC。接收器对外只有3个引脚:VccGND1个脉冲信号输出PO。与单片机接口非常方便,如图所示。

Vcc接系统的电源正极(+5V);

GND接系统的地线(0V);

脉冲信号输出接CPU的中断输入引脚。采取这种连接方法,软件解既可工作于查询方式,也可工作于中断方式。

但需要注意的两点:一是注意发射接收管的驱动电流;二是要注意接收部分的滤波措施,上图中C2就是用做稳定输出波形,但注意C2不可太大。

 

 

此帖出自51单片机论坛
 
 
 

回复

186

帖子

0

TA的资源

纯净的硅(中级)

板凳
 

接着说,大家可以随便砸砖啊!

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

1、    红外编码发射部分软件实现方法:

红外发射管需要靠38K的载波驱动,才能将信号发送出去。有的MCU没有BUZZER输出功能,不能靠硬件实现38K载波,就必须用软件模拟38K载波的输出。而我们SN8P25XXSN8P26XXS系列的BUZZER输出功能配合适当的震荡频率,可以很方便的实现38K载波的输出。

红外发射部分的软件实现一般可以分为两种:纯软件编码发射,计时器编码发射。

纯软件编码发射:根据编码格式,利用延时取得适当的时间段来控制载波的输出时间和输出间隔时间,达到编码正确发送的目的。这种方式思路简单容易实现,但比较浪费资源,实时性不高,也不利于程序的移植。

计时器编码发射:根据编码格式,采用计时器中断取得合适的时间段来控制载波的输出时间和输出间隔时间。这种方法充分利用了系统的资源,执行效率很高,并很容易实现程序的移植。

现采用SN8P2602A,外部晶振为3.58MHz所做的一款简单的遥控器,其编码发射流程图见图1

1、    红外编码接收部分软件实现方法:

根据数据帧中不同的数据位格式和MCU中的资源,重要数据解码接收在程序设计中存在很大差别。一般有几种情况:纯软件解码、计时器解码、外部中断和计时器配合解码等。

纯软件解码:根据数据格式采用延时方式来取得合理的采样时间,每到达一次采样时间就测电平变化以确定解码数值。此种方法对MCU资源要求不高,无需计时器,也无需外部电平变换中断源,其实现方法也比较简单,并可以进行软件滤波处理。但此方法在解码过程中不能并行处理其他事,所以在比较复杂的系统中不推荐应用。

计时器解码:可以有两种思路来实现解码:一种方式是根据数据位格式利用计时器取得合理的采样时间,每达到一次采样时间就检测电平变化,根据在设定的时间内检测到高电平(或低电平)的次数来确定解码数值。另一种方法是累计电平变化的时间,计算两次电平变化之间的时间,再根据时间的长短来确定解码数值。

外部中断和计时器配合解码:利用外部中断的下降沿中断功能侦测编码信号的电平变化,利用计时器采样检测电平,累计时间以确定解码数值。此种方式效率高,解码灵敏,可以实现各种复杂系统中的准确解码。但在应用外部中断做信号变化侦测的时候,要注意外部干扰信号,需要在外部电路中做好滤波措施。

SONIXSN8P25XX,SN8P26XX系列中都有电平变化的外部中断源,因此非常适合各种编码格式的解码。下面为采用方式三解码的程序流程图,如下图。

 

 

 

 

此帖出自51单片机论坛
 
 
 

回复

452

帖子

0

TA的资源

五彩晶圆(初级)

4
 
楼主快手,呵呵
此帖出自51单片机论坛
 
个人签名人生苦短,何必为声名所累,放开自己心态,去追求自己想要的梦想去吧!http://pytech-inc.taobao.com/
 
 

回复

452

帖子

0

TA的资源

五彩晶圆(初级)

5
 
我再补充一下,那个系统码是16位的,有效位为前面8位,后面8位为校验码,数据码也是16位的,有效位也是前面8位,后面8位为校验码,另外想说的是那个引导码过后要延时较长时间才到系统码,系统码和数据码之间没间隔,所以只要能判断引导码然后根据合适的延时就可以解码
此帖出自51单片机论坛
 
个人签名人生苦短,何必为声名所累,放开自己心态,去追求自己想要的梦想去吧!http://pytech-inc.taobao.com/
 
 

回复

186

帖子

0

TA的资源

纯净的硅(中级)

6
 

回楼上

楼上的兄弟说得很对,引导码要与用户码相隔一段时间,如果不延时的话,可能解码部分会出错误,昨天我写了一个通过软件延时来实现红外发射的程序,结果就是因为引导码之后没有相应的延时而导致解码失败。
此帖出自51单片机论坛
 
 
 

回复

888

帖子

3

TA的资源

五彩晶圆(初级)

7
 
顶一下,可惜啊!我现在还是没有明白改怎么编程序
此帖出自51单片机论坛
 
个人签名邮箱:ternence.hsu@foxmail.com
 
 

回复

246

帖子

0

TA的资源

纯净的硅(初级)

8
 

标题

犀利啊!研究的这么透彻!这么好的东西怎么没人顶?顶起来啊!
此帖出自51单片机论坛
 
 
 

回复

734

帖子

4

TA的资源

纯净的硅(初级)

9
 

回复 板凳 libin200899 的帖子

顶你!顶你!谢谢!
此帖出自51单片机论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

10
 

回复 5楼 梦之旅 的帖子

强人,要是有51的就更好了,再附上程序
此帖出自51单片机论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

11
 

回复 6楼 libin200899 的帖子

能否把发射接收程序传上来共享
此帖出自51单片机论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

12
 
我对学习型的红外遥控接收单片机更感兴趣,因为身边的遥控器实在是太多了,总想多利用这些资源
此帖出自51单片机论坛
 
 
 

回复

7172

帖子

195

TA的资源

五彩晶圆(高级)

13
 
zailaixue再来学习一次 有学习到了新的东西
此帖出自51单片机论坛
 
 
 

回复

308

帖子

0

TA的资源

纯净的硅(中级)

14
 
最喜欢的就是这种讨论帖,比光发资料的好多了
此帖出自51单片机论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(高级)

15
 
学习了,最近在搞IR
此帖出自51单片机论坛
 
 
 

回复

189

帖子

0

TA的资源

一粒金砂(中级)

16
 
强我呀
此帖出自51单片机论坛
 
 
 

回复

189

帖子

0

TA的资源

一粒金砂(中级)

17
 
强人呀
此帖出自51单片机论坛
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

18
 
LZ发射你做的有好远啊。。。。。。。。。
此帖出自51单片机论坛
 
 
 

回复

22

帖子

0

TA的资源

一粒金砂(中级)

19
 
我有点不明白的是:如果你用空调遥控器对着接收器发射。读进来的TTL电平是先引导码,然后身份码再数据码的吗?然后单片机记录高电平时间和低电平时间?
此帖出自51单片机论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

20
 

能给51的程序么
此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表