PIC单片机红外遥控编码及识别.


红外遥控应用广泛,而编码及识别往往是单片机初学者最头痛的问题,其实红外编码及识别并不难,关键是要掌握红外编码及识别的方法,首先让我们来了解下红外编码.

          一.红外编码.

           红外编码一般是以下格式.

            

9ms 高电平的头+2.4ms低电平的结果码+8byte address code+8byte address code+8 byte user data+ 8byte data

由于采用一体化红外接收头,所以这里要注意发送的高电平实际上是38K的载波,就是高低电平按38K的频率不断地变换,一体化接收头会自动识别,整理为低电平.

另外一点要注意的是,发送的1,和0如图所示,其实是低电平的时间长短不同.高电平的时间都为560us.判断低电平的时间是识别0,1的关键.

  二,红外识别.

   红外识别实际上是发送的相反过程.如高电平接收后是低电平,以下是识别流程,

    1.判断9MS头是否OK

    2.判断结果码.

    3.数据560us低电平结束,高电平开始,开始判断接收数据. 长的高电平为1,反之为0.

    4.32BYTE接收完否?没有,重复第三步.

     三,连续码的问题.

     如果用户长按,实际上是只发送一个9MS头,和一个结果码,还有一个560us高电平即可.这样读出的数据实际上是一个固定的值.根据这个值就可以判断是否是连发代码.

     这里简单讲了红外编码及识别的初步知识,以下是部分识别代码.

 ;---------------------------------------------------
ir_rec
    movlw 0x20
    movwf IPOD3     ;4*8=32 bits.    
ir_begin
    movlw 0x09     ;9
    movwf IPOD2
ir_rec_data
    call delay120us     ;delay delay120us 
    btfss _IR
    goto ir_low         ;low....
    decfsz IPOD2,F
    goto ir_rec_data    ;9*120us...if low then 0,
    setc                ;still high? 1
    goto ir_save_data
ir_low
    clrc 
ir_save_data
    rlf  IPOD5,F
    rlf  IPOD6,F
    rlf  IPOD7,F
    rlf  IPOD8,F      ;4*8=32 bits.
    
    movlw .80        ;80
    movwf IPOD2

ir_next 
    call delay120us         ;delay120us
    btfss _IR
    goto ir_next_bit        ;next bit
    decfsz IPOD2,F          ;80*120us=9.6ms
    goto ir_next
   
    bsf _IROK
      
    retlw 0     ;return


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值