您当前的位置:五五电子网电子知识单片机-工控设备51单片机51单片机解密红外遥控器 正文
51单片机解密红外遥控器

51单片机解密红外遥控器

点击数:7509 次   录入时间:03-04 11:39:48   整理:http://www.55dianzi.com   51单片机
          jb    yszt,$    ;延时,以便抄录时间值
          setb  yszt
          djnz r5,dispnext ;获取的时间值没显示完则继续
          sjmp $          ;显示完毕,在此踏步
          reti
         
 HEXtoXCQ:
          push 00h
          mov r0,#xcq
          mov a,r2
          anl a,#0fH
          mov dptr,#LED
          movc a,@a+dptr
          mov @r0,a
          inc r0
          mov a,r2
          swap a
          anl a,#0fH
          mov dptr,#LED
          movc a,@a+dptr
          mov @r0,a
          inc r0
         
          mov a,r3
          anl a,#0fH
          mov dptr,#LED
          movc a,@a+dptr
          mov @r0,a
          inc r0
          mov a,r3
          swap a
          anl a,#0fH
          mov dptr,#LED
          movc a,@a+dptr
          mov @r0,a
          inc r0
          mov @r0,#7eh
          inc r0
          mov @r0,#7eh
          pop 00H
          ret
 led:    db 7eh,30h,6dh,79h,33h,5bh,5fh,70h,7fh,7bh,77h,1fh,4eh,3dh,4fh,47h                         

    ;---------------------------------------------
;将存于R3R2中高电平或低电平时间值转为BCD码放于XCQ中
;---------------------------------------------
BtoD:
        push 00h
        mov r0,#BCD
        mov r4,#3
bd0:    mov @r0,#0      ;BCD缓冲区清0
        inc r0
        djnz r4,bd0
        mov r6,#16
bd1:    clr c            ;将R3R2中的16位二进制值转换为三字节BCD码存入BCD缓冲区中
        mov a,r3
        rlc a
        mov r3,a
        mov a,r2
        rlc a
        mov r2,a
        mov r4,#3
        mov r1,#bcd
BD3:    mov a, @r1
        addc a,@r1
        da a
        mov @r1,a
        inc r1
        djnz r4,bd3
        djnz r6,bd1
        mov r0,#xcq      ;将转换结果从BCD缓冲中存入XCQ中
        mov r1,#bcd
        mov r4,#3
bd4:    mov a,@r1
        xchd a,@r0
        inc r0
        swap a
        xchd a,@r0
        inc r0
        inc r1
        djnz r4,bd4
        pop 00h
        ret

     

    通过上面的程序我们读出了按下一个键后的编码的本质的东西
  那么动手把 图画下来 找规律 解码 
我把我例子长虹解码后的波形图 发出来

此主题相关图片如下:01.jpg 点击图片放大
点击浏览下一页
 01。JPG 是脉冲开始时所有键前8个完全一样的高低脉冲


此主题相关图片如下:02.jpg
点击浏览下一页
02。JPG 大家注意看按不同的键 中间只是有3个脉冲在变化 是EXCLE的 W列-AC列 而这3位数值就是我们解码的关键 01。JPG 中8位数 大家应该看出 所有键都是一样的11100010 后面02。JPG中我们把键码整理出来就是 
按1键 00000000  00H
按2键 00010000  10H
按3键 00001000  08H
按4键 00011000  18H
按5键 。。。。。
后面就不写了
为了大家清晰可见 我把画出的最后的波形图03。JPG 贴出来 大家看下规律 

此主题相关图片如下:03.jpg 点击图片放大
点击浏览下一页
然后我们 来分析应该怎么解码 我相信到了这一步应该很简单了吧 比如在这个例子中 我们发现 后面的键码改变的部分完全是重复 那么为什么完全可以不去读后面的码 只读前面的16位的脉冲 放在寄存器中 再用比较指令 跳转 下面是针对这个波形图的解码程序  相信大家已经能用自己手中的利器 把它搞定了
写到这里 我觉得很疑惑 感觉自己没能把具体问题简单化  很多东西还是要*大家自己去消化理解了
  程序看不懂。?那么OK  去翻指令 查书 一条一条看吧  程序我敢保证都是 编译通过的
下面是解码程序的关键代码 : 

    DYKJZ:    JB  P3.6,$

              LCALL YKJM  ;核心解码代码子程序
          cpl a
          jz    no    ;判断是否为错误代码(0FFH)
          cpl a

               AJMP JZPD
NO:      LJMP  DYKJZ
            RET 
 

    JZPD:    CJNE A,#09H,JZ1  ;键码为09H吗?
            AJMP KAIS            ;键码为09H 转开始程序()

    JZ1:                                ;不为09H 转最开始 等待下一次遥控器按键到来
            AJMP DYKJZ     
            RET
KAIS: ;放你需要执行的代码 
           ;比如 点亮一个灯 给单片机接上串口  用单片机控制电脑的打开 放音乐。等等 
          ;这些不属于本问讨论的范围 有兴趣的可以自己扩展
        RET
;-----------------------
  ;核心解码代码子程序
;------------------------
YKJM:
       

              PUSH        PSW
          PUSH        02H
          PUSH        06H

上一页  [1] [2] [3]  下一页


本文关键字:遥控器  单片机解密  51单片机单片机-工控设备 - 51单片机