主题 : 6410 WINCE 下,红外遥控技术实验 复制链接 | 浏览器收藏 | 打印
QQ:1328110980WINCE淘宝店 iwince.taobao.com
级别: 新手上路
UID: 92986
精华: 0
发帖: 12
金钱: 60 两
威望: 12 点
贡献值: 0 点
综合积分: 24 分
注册时间: 2013-06-11
最后登录: 2014-07-16
楼主  发表于: 2013-06-12 17:53

 6410 WINCE 下,红外遥控技术实验

6410 WINCE 下,红外遥控技术实验
  大家好,本文章向大家讲一下关于WINCE下,如何实现红外接收。同时我会实际效果录成了视频,大家可以上优酷上去看,论坛不可以发视频,所以麻烦大家点进去看吧。呵呵~~~~
准备工作:
   1.6410或2440开发板一块
   2.烧写工具
   3.红外接收头(3脚的那种)
   4.简单遥控器
  开始动手:
   1.将红外接收头焊在一个用户GPIO引脚上
       具体引脚接法,搞硬件的都知道,一般搞软件的,也许不太明白。这种接收头有3个引脚,
          A 最左边的是 DATAOUT,请一定要接GPIO引脚上
          B  中间的是GND,请接公共引脚
          C  最右边的是 +5V,请接5V电压
     由于论坛上发图片不方便,实际效果请大家看视频。
    2.红外信号分析
       现在我们把红外接上GPIO口了,要如何去接收信号呢?这个就要从红外编码与解码说起了。如果是用51单片机做,网上大把的源码,1分钟就能写出来。但如果用WINCE做,我们要考虑的东西就非常多,其实原理都是一样的,至少在解码这一块,算法是一样的!
       下面了解一下编码格式,遥控器出来的信号是NEC码。NEC协议是众多红外遥控协议的其中一种,除NEC外,还有RC5、RC6等其它的。市面上买到的非学习型万能电视遥控器大多集成一种或多种编码是NEC型的,

NEC编码的一帧(通常按一下遥控器按钮所发送的数据)由引导码、地址码及数据码组成,,如下图所示,把地址码及数据码取反的作用是加强数据的正确性。
 
由上图可以看出,当按钮按下时,会出现一个引导码,引导码是必要存在的,因为 WINCE是最先接收到引导码的,引导码一旦出现,就意味着下面跟着来的就是数据。那么数据是怎么样的呢,大家可以看到,数据分为4个区,其实是两个区,有一个反码区,是验证数据正确性的,其实我们日常解码的都不会去管反码区,因为现在技术手段都是成熟的,数据不会偏掉,大不了我再按一次,如果错的话。
 那么4组数据我们要解那一区呢,这个很重要,我们只要对第3区进行解码就可以了,因为第3区的数据就是按键值。

  大家一定要问了,到底如何解码呢。别急,下面会说。
 简单地说,数据区会有 8个位,这8个位对应了8个高电平,这8个高电平如何来编码呢,事实上,虽然都是高电平,但宽度不同,
大家可以看到,数据1 和数据0的高电平时间是有差别的,这个大家自己算。下面就简单了吧,我们只要在出现高电平时,计算一下每个高电平的时间,就知道了数据。
  比如说数据是   11001111  ,那么遥控码就是  207  ,事实上遥控码一般在100以下。
 
  也许现在大家认为我说的和WINCE无关,那么下面我就要补充对WINCE下写红外驱动的知识。
  我们可以新建一个驱动目录,方便区分。命名为  IRD,比如说我们把数据引脚接在GPC0,
  我们只需要在驱动里写上实时检测 GPC0的 信号,立刻去启动一个线程,去把4*8 ,32个位的数据编码读取到,我们只需要对第3组,或第3区的数据进行解码就可以了。对于写过驱动的朋友来说,我们我说的已经可以让你们马上可以动手写驱动了。对于没写过的,也许要多花些时间去分析硬件上的原理,与软件上的实现方法。

 红外应用,其实是可以发散到很多应用中去的。这个就靠大家日后多多扩展自己的应用了!

 有什么不理解的大家不要回贴问我,直接给我打电话,我一定认真解答各位的问题。也可以加我QQ,加QQ的时候一定要写上咨询的内容。

 我的电话 13276120195
 我的QQ     2541414627

 
 

 
级别: 新手上路
UID: 96605
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
贡献值: 0 点
综合积分: 2 分
注册时间: 2013-09-22
最后登录: 2013-09-25
1楼  发表于: 2013-09-25 17:40
哈哈,多谢楼主的热心,我也打算做这个驱动,不过实在LINUX+android下。多谢你的指点