<meta name="keywords" content="必胜时时彩开户,keywords" /> 详细简介用51单片机解密任何红外遥控器 联系我们

详细简介用51单片机解密任何红外遥控器

    首先说一下 想写这个帖子 看到服装网www.vhao.net服装论坛t.vhao.nett.vhao.net上有关于遥控器方面的帖子 然则都没有很详细的简介 而且是曾经有完全的波形 仅仅简介明确码部门 而没有剖析波形数据方面的简介 ,是以有了写一篇完全的关于遥控器方面的文章的激动   此贴对内行能够有点艰辛不外 没紧要 我会以最浅易的要领来诠释 假定有不明确的 建议去看看书 自己起劲 没有弗成能的事  他人能做到 你也一定行,关于红外遥控的基础现实,年夜家可以到这个贴去看下http://mamjap.com/mcu/184.html,外面有详细的简介。在这里我仅把一些要害的带出来 关于硬件电路 那么抛开那么多文字简介 最后意思就是说 你家里的遥控板 也就是发射部门 是把一切的封装好了的  好比键盘矩阵、编码调制、LED红外发送器 等等 那么吸收部门 SM0038 3个脚 一个脚地 一个脚电源 一个脚旌旗暗记脚 接到 单片机随便个P口上(此处是P3。6) OK  硬件部门就弄定了虽然还有数码管显示 ,这些一定不用说你都能弄定吧,我这恰恰有一块51hei单片机学习板是在mamjap.com的服装网www.vhao.net服装论坛t.vhao.nett.vhao.net买的,这些东东都有,以是就不用自己去搭电路那么费事了),那么 我们想 我们按一下遥控板 年夜家看到 有个灯闪了一下 然后OVER 那么 我们现在要做的就是在灯闪了那一下以后让 单片机来读它的键码 然后不合的键码来干不合的事 ,本文 是向年夜家诠释一种措施  虽然假定你知道遥控器的编码 那么 我想写解码法式模范模范应当是很质朴的事 而我的意思是说我们现在从0泉源  拿就职何一种遥控板 那怕不知道它的型号 然则 年夜家想 纵然它甚么型号都没写 然则按一下不合的键 它的发射的脉冲 一定纷歧样 不外就是指导码 然后 地址码 键码 验证码 由于不合的遥控板 它所界说的规则纷歧样 (这里说一点题外话 着实在读出波型后 年夜家便可以看出这个遥控板最泉源设计时的人的意思 或许说推敲 它的这个设计要领能否是最好的 能否稳固 能否具有通用性 或许说 日本的和中国的设计师 在设计时他们所推敲的 名牌和 杂牌的 他们在设计时所推敲的 等等 这些着实也是件很居心思的事 就像窃视到一小我的心坎天下一样 扯远了 。。--)


   下面我们来讲说本问应用51单片机软件解密的措施 首先年夜家看了我适才贴出来的毗连 应当知道了 编码不外就是低电平高电平。然则我们知道一点 它一定是有纪律的 (这里诠释一下 假定你能找到它的PDF 下面写好了它的波形 或许你在网上找到了祖先把某型号的遥控器的波形曾经剖析出来了那么你完全可以把这篇帖子当水贴 跳过 我这里的目的是想经由历程一种措施 一种 完全的剖析措施  就像医生拿起手术刀 解开它的外部 看凡人所不克不及看到的器械 事实能把一种很通用的器械 把它的外部原理能够完全的明确 一切从质朴学起 做起 以后通常触及到 这类 类型的器械 信托你会加倍自尊 而不是只知足做一个课程设计 一个师长教员部署的作业 扯远了。。  )
    详细我们怎样纪录这类纪律  很质朴 我们用准时器把每个曲折电平的时间记上去 然后显示在数码管上 设置2秒显示一个数据 然后用EXCLE纪录上去
再用铅笔 或许 随便甚么绘图软件 把它的波形画出来 标上 低电平 高电平 再较量下不合的键的差异 一切就豁然爽朗了
 现在举 现实的例子
万能遥控板年夜家应当都知道吧

此主题相关图片以下:图片 04.jpg

随便去那都能买到 几块钱 左右 安上电池 设置好型号(这里例子设置的是长虹 假定用家里的遥控板 那么不用设置了 )
 单片机上电 SM0038接好
  要害法式模范模范以下 :(在这里我想勉励下年夜家 不要一想到法式模范模范就是完全的 可以直接烧出来 算作果的 着实 我上个帖子也说过 你能看法式模范模范 看到要害的焦点代码 那么诠释你曾经前进了 能找出其中的要害代码 其他好比SM0038的接口 数码管显示的接口 等等 自己加上去就好了 这段法式模范模范 的效果是事实把 脉冲波的个数 和每个曲折电平的时间数 放在存放器里 那么既然你要做的就是 用自己手边的单片机 把存放器的值显示到 数码管上 把数据纪录上去 然后剖析 找出纪律 得出你想要的效果 在这个历程当中 我信托反是喜欢弄砖研的 都邑享用这个历程   )               
          mov r5,#0            ;用于纪录生涯的时间值的个数
           mov r1,#bmhcq    ;曲折电平宽度值缓冲区

           dec r1
           jb   p3.6,$          ;期待变低 , 即期待按键
next:      setb tr1             ;启动准时器1
           jnb p3.6,$   ;  期待变高,以丈量低电寻常浅易间宽度
           clr tr1      ;关闭准时器1                             ;1US
           inc r5       ;时间值个数加1                           ;1
           inc r1                                                ;1
           mov @r1,th1  ;存低电寻常浅易间值 ,先存高8位,后存低8位   ;2US
           inc r1                              ;1
           mov @r1,tl1                     ;2
           mov th1,#0   ;重赋初值     ;2
           mov tl1,#13  ;13为阻拦T1到重启T1经由的时间     ;2
           setb tr1     ;重新启动准时器    ;1
           jb p3.6,$    ;期待变低
           clr tr1      ;关闭准时器1    ;1
           inc r5                              ;1
           inc r1                             ;1
           mov @r1,th1  ;存高电寻常浅易间值   ;2
           inc r1                        ;1
           mov @r1,tl1              ;2
           mov th1,#0   ;重赋初值    ;2
           mov tl1,#15  ;15为阻拦T1到重启T1经由的时间    ;2
           ajmp next    ;循环检测,直到T1在遥控器无键按下时溢出时发生中止   ;2
           ajmp $

;-----------------------------------------
 ;准时器1中止法式模范模范
 ;在遥控器无键按下时发生中止,便按序将BMHCQ中的曲折电寻常浅易间值转换为BCD码并显示出来
;-----------------------------------------
t1zd:
          setb tr0       ;启动T0
          clr tr1        ;关闭T1
          setb et0       ;T0开中止
          mov a,r5
          mov r2,a
          mov r3,#0
          lcall hextoxcq
          lcall display
          jb yszt,$           ;延时一段时间,以便纪录显示的时间值
          setb yszt
          mov r0,#bmhcq
dispnext: mov a,@r0           ;从BMHCQ中按序取出时间值(16位)调BTOD子法式模范模范将其转换为5位BCD码并放入XCQ中再调显示子法式模范模范显示
          mov r3,a  ;取高8位
          inc r0
          mov a,@r0
          mov r2,a   ;取低8位
          inc r0
          ;lcall BtoD      ;将高电平或低电寻常浅易间值转为BCD码放于XCQ中
          lcall HEXtoXCQ   ;将高电平或低电寻常浅易间值转为十六进制的LED码放于XCQ中
          lcall display   ;显示
          cpl p2.5        ;改变指导灯的状态,以此说显着示内容的改变
          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
           PUSH         07H
           PUSH         B
           MOV          B,#0FFH
           JNB          TF1,JMCW         ;经由历程T1从0泉源准时到溢出来避开遥控器的重发码 ,也就是说在读了一个遥控按键后
           CLR          TF1                   ;到少要等到T1从0泉源准时到溢出才干读取第二个按键


;指导码准确时推行以下代码
        ;   CLR          YKBZ              ;遥控标志清0
JM21:
           MOV          R2,#16           ;每次循环读8位码
           MOV          R6,#0             ;存放16位码中的低8位
           MOV          R7,#0             ;存放16位码中的高8位
JM3:
           JNB          P3.6,$             ;期待低电平阻拦,岂论其宽度,由因此经由历程高电平的宽度来分辨0(约为0.5ms)和1(约为1.6ms)
           MOV          TH1,#0
           MOV          TL1,#0
           SETB         TR1               ;启动T1,统计高电平的宽度
           JB           P3.6,$
           CLR          TR1
    MOV   A,TH1
           CJNE         A,#2,JM4      ;若高电平宽度值年夜于2,则诠释此高电平为宽脉冲(1),否则为窄脉冲(0)
JM4:       CPL          C                 ;当TH1的值年夜于2时,C=0,小于2时,C=1
           MOV          A,R7
           RRC          A
           MOV          R7,A
           MOV          A,R6
           RRC          A
           MOV          R6,A
           DJNZ         R2,JM3          ;连读16位,先读的为低位,后读的为高位,高8位(数据码)存于R7中,低8位(地址码)存于R6中
           MOV          A,R6
           CJNE         A,#47H,JMCW     ;断定地址码能否为47H,不是转掉落足前往
           MOV          A,R7            ;若地址码准确,则R7中便为数据码
           mov          r1,#jzh
           mov          @r1,A
           LJMP         JMFH
JMCW:      MOV          A,B
JMFH:      CLR          TF1            ;T1的溢出标志清0
           MOV          TH1,#0          ;为T1设定初值并启动它
           MOV          TL1,#0          ;以此来防止对统一按键读两次(避开遥控器的重发代码)
           SETB         TR2
           POP          B
           POP          07H
           POP          06H
           POP          02H
           POP          PSW
           RET                          ;此时,若指导码、地址码、键值码和键值反码中有一个有用果,A中便为弱点代码,否则,A中便为所按键之键值码

 文章写完了。欲望能对年夜家有大批的赞助 以为有用就拿去研究下吧。最后放上完全的EXCLE 数据剖析表 和 整理出的波形图 年夜家看不清晰的下载后看完全的图
 “要发只发精品   把最好的给年夜家”
[ 原 创 ] Suse| haozi
2009.5.7 15:55
原创作品转载请生涯本文链接