7375|20

396

帖子

5

TA的资源

纯净的硅(中级)

楼主
 

msp430g2553红外遥控解码 [复制链接]

基于MSP430G2553的红外遥控
红外遥控原理:
红外无线遥控主要用于短距离(一般10米以内可靠)控制被操作对象。我们家里有很多电器都用到了红外遥控,比如,电视机,DVD,空调等。
这里主要讲用于MP3的遥控器。这种遥控器小巧便宜随处可见,电子市场和各淘宝上的电子元件卖家的店里更是相当的廉价(2块钱左右)。先来讲讲它的物理特性,遥控板上有21个按键,意味着你有21种功能选择,遥控器长方形一只手就能握完。它能发射频率约为38KHZ的载波,不可见,这种电波是红外线(常见的波长例如940nm)。
至于它为什么能发送38KHZ的载波,就不是我们的研究范围了,我也解释不清。这个最好是咨询专门做这个东西的专家了,这里面涉及到微电子技术,调制技术,我们主要是知道怎么用就行了,这东西深究不起,我也没那能力了,呵呵。
遥控器发送的载波,通过红外接收头解调输出一个一个的矩形波序列。我们需要用单片机去检测识别并解读出这些矩形波序列。矩形波序列由引导码,地址码,地址码,数据码,数据反码组成。单片机就是要解读这些码,从而判断遥控器按下的哪个键。
file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps_clip_image-7882.pngfile:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps_clip_image-16904.pngfile:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps_clip_image-15502.png矩形波序列图:
file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps_clip_image-20271.pngfile:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps_clip_image-17378.pngfile:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps_clip_image-1651.png          9ms                        4.5ms               
file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps_clip_image-10606.pngfile:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps_clip_image-23140.pngfile:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps_clip_image-11261.pngfile:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps_clip_image-13104.pngfile:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps_clip_image-27983.pngfile:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps_clip_image-17593.png       
引         导          码                 地址码1           地址码2                数据码                数据反码
file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps_clip_image-3671.png
红外接收头的输出信号以13.5ms长的引导码开始,接着是地址码1,地址码212一般是相同的码,通过检测两次发送的地址码是否相同从而防止其他遥控器干扰。)。紧随地址码的是数据码,数据反码(即前面的数据码取反,通过判断数据反码提高遥控的可靠性)。
先来介绍一下怎么判断01
file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps_clip_image-24153.pngfile:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps_clip_image-21107.png
1”由0.56ms的低电平                                “0”由0.56ms的低电平和
1.69ms高电平组成                                        0.56ms的高电平组成
解码就是要将这串序列波中把01判断出来(其实就是需要计算出高低电平持续的时间)。引导码是由一段9毫秒(我看有些文章是写的4.5毫秒,可能是调制的区别吧,这没关系的)的低电平和一段4.5毫秒的高电平组成。因此我需要解地址码18位二进制码)、地址码28位)、数据码(8位)、数据反码(8位)。 所以我们需要解出这串32位二进制码,简单的说,地址码1决定哪块遥控板,数据码决定遥控板上哪个按键。地址码2=地址码1,数据反码=~数据码,它们的存在是为了排除干扰提高遥控的可靠性。
举一个8位地址码的例子如下图:
file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps_clip_image-18870.png
解码得:01010010
解码过程中由于晶振的误差或其他因素导致计算电平时间不准确,应考虑一定的时间误差。比如,计算出电平时间大于1.15ms判断为“1”,小于1.15ms判断为“0”。
正序解码法——以发送最高位开始
定义按键数组address[21]对应遥控器的21个按键(具体元素值见程序);定义触发的中断次数j;定义解码数组receive[2]即数据码,数据反码;定义高电平持续时间count;
经过多次试验调试,发现我所买的1.5元的MP3红外遥控器的地址码1是0000 0000,地址码2是1111 1111,其次是数据码xxxx xxxx,数据反码。因为在我所遥控的范围内没有其他遥控器干扰,所以为了简化解码,我跳过引导码,地址码1、2,直接解数据码和数据反码。解码完之后,能和按键完全对应效果较好。下面来看我是怎么解码的:
设置P1.1开中断,下降沿触发,P1.1接红外接收头的输出。遥控器一有按键按下,红外接收头就会发出一系列的脉冲波序列,这序列波上文已经详细叙述了。所以P1.1会触发33次以上的中断。第1次为引导码,第2到9次为地址码1,第10到17次是地址码2,第18到25次是数据码,第26到33次是数据反码。我只需把第18到33次中断的码解出即可。
当中断次数j大于17时,解码数组开始接受解码;当j大于25时,数据码解完;当j大于33时,数据反码解完。解得的码放在receive[2]中,找到按键数组和解码数组第一个元素相等的值,从而知道是按键数组的哪个元素。最后根据找到的元素,作出相应的控制。
解码结束。如果对原理不太明白,可留言,我再针对具体问题具体讲述。。

hongwaijiema.txt

1.41 KB, 下载次数: 221

c程序

最新回复

谢楼主分享   正好参考一下楼主的时钟配置程序  详情 回复 发表于 2014-8-9 14:05
 
点赞 关注(1)

回复
举报

396

帖子

5

TA的资源

纯净的硅(中级)

推荐
 

回复 14楼黄长新 的帖子

是按我的解码方式,一个一个解码出来的。

点评

楼主很有实力,也很有耐心,顶一下  详情 回复 发表于 2013-12-9 14:26
 
个人签名一别四五年,变化万千。https://home.eeworld.com.cn/static/image/smiley/comcom/5.gif[/img]
 

回复

396

帖子

5

TA的资源

纯净的硅(中级)

板凳
 
如果前面部分的码序图不能看,就请到网上看看其他的,钱面部分就是红外解码的简述,和传统解码一样。不一样的在
正序解码法以后的文字描述。。。。
 
 
 

回复

7228

帖子

192

TA的资源

五彩晶圆(高级)

4
 
程序测试过么 楼主

点评

测试过了,no problem。  详情 回复 发表于 2013-4-29 12:16
 
 
 

回复

396

帖子

5

TA的资源

纯净的硅(中级)

5
 

回复 板凳 常见泽1 的帖子

测试过了,no problem。
 
 
 

回复

1976

帖子

0

TA的资源

五彩晶圆(初级)

6
 
谢谢楼主,先收藏一下,说不定以后会用到
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

7
 
楼主真的有测试过吗,我用的是g2231的芯片,测试了你的代码发现不行啊,楼主能否帮帮忙,我的qq是657506910,如果你有空我想向你请教下啊

点评

真的没问题的,,你用的g2231,我没过这个片子的。而且这个程序只是能解码红外,但不完美。我改善的还没传。  详情 回复 发表于 2013-5-15 12:59
 
 
 

回复

396

帖子

5

TA的资源

纯净的硅(中级)

8
 

回复 6楼 bark 的帖子

真的没问题的,,你用的g2231,我没过这个片子的。而且这个程序只是能解码红外,但不完美。我改善的还没传。
 
 
 

回复

396

帖子

5

TA的资源

纯净的硅(中级)

9
 

改善并注释后的程序

如果需要这个程序的,留个言我给你们发邮件。。
 
 
 

回复

28

帖子

0

TA的资源

一粒金砂(中级)

10
 
谢谢楼主
 
 
 

回复

396

帖子

5

TA的资源

纯净的硅(中级)

11
 

最终的程序-红外

程序是以1Mhz的单片机频率运行的,如果你不是用的这个频率可以根据time数组里的值,更改高电平判别时间,根据实际情况改变count的比较值。。在这里,解码得到的逻辑0,高电平时间是60-70;解码得到的逻辑1,高电平时间是150-180;所以我设置count的比较值是80。我试过将此程序移植到其他单片机上,此单片机不是1mhz的运行频率。经过我在线调试,发现此时,count的比较值应该改为200才能正确判别出逻辑0和1。。。有什么问题请留言。

红外遥控解码程序.txt

3.79 KB, 下载次数: 87

注释详细

 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

12
 
/不错 。。谢谢
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

13
 

为什么不用UCSI_A0来实现红外通信

P1.1用作红外输入,为什么不用UCSI_A0来实现红外通信呢?MSP430G2253的UART带有IrDA功能的。

点评

这个是做了一个通用的红外解码程序。可以很方便地移植到其他单片机上。IrDA,有这个功能的单片机应该没有多少吧。。  详情 回复 发表于 2013-9-18 16:47
 
 
 

回复

396

帖子

5

TA的资源

纯净的硅(中级)

14
 

回复 12楼yucejun 的帖子

这个是做了一个通用的红外解码程序。可以很方便地移植到其他单片机上。IrDA,有这个功能的单片机应该没有多少吧。。
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

15
 
你的摁键地址怎么知道的,是自己定义的吗

点评

是按我的解码方式,一个一个解码出来的。:handshake  详情 回复 发表于 2013-12-9 12:13
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

16
 

回复 15楼jqh_111 的帖子

楼主很有实力,也很有耐心,顶一下
 
 
 

回复

553

帖子

0

TA的资源

纯净的硅(中级)

17
 
学习了
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

18
 
中断里有好大一个delay(); 这么搞也行?
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

19
 
朋友你好,请问可以加QQ吗?QQ:779871269,我学得不深,对于程序,我有一点疑问,谢谢啦
 
 
 

回复

64

帖子

1

TA的资源

一粒金砂(中级)

20
 
你好,麻烦发一下这个程序,谢谢你了 !122149787@qq.com
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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