×
单片机 > 单片机程序设计 > 详情

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

发布时间:2020-09-03 发布时间:
|

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


    一.红外编码.


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


    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



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32中断向量表的位置.重定向