51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机技术文章 > 51单片机 > 详细内容
红外遥控系统原理及单片机软件解码实例
发布时间:2009/6/29  阅读次数:6802  字体大小: 【】 【】【
  
4  遥控信号的解码
  
             下面是一个对51实验板配套的红外线遥控器的解码程序,它可以把红外遥控器每一个按键的键值读出来,并且通过实验板上P1口的8个LED显示出来,在解码成功的同时并且能发出“嘀嘀嘀”的提示音。
            
;=================================================
; 红外遥控接收        
;=================================================
;     ew51仿真编程器       配套实验板学习例程
;
;     中山单片机学习网       智佳科技     逸风
;
;     http://www.zsMCU.com
;     E-mail:info@zsmcu.com
;=================================================
ORG 0000H
  
MAIN:
       JNB       P2.2,IR              ;遥控扫描
       LJMP     MAIN                    ;在正常无遥控信号时,一体化红外接收头输出是高电平,程序一直在循环。
  
;=================================================
;     解码程序
IR:
       ;以下对遥控信号的9000微秒的初始低电平信号的识别,波形见图5。
      MOV      R6,#10
IR_SB:
       ACALL DELAY882              ;调用882微秒延时子程序
       JB         P2.2,IR_ERROR   ;延时882微秒后判断P2.2脚是否出现高电平如果有就退出解码程序
       DJNZ    R6,IR_SB            ;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序
  
       ;识别连发码,和跳过4.5ma的高电平。
       JNB        P2.2, $              ;等待高电平避开9毫秒低电平引导脉冲
       ACALL   DELAY2400
       JNB        P2.2,IR_Rp      ;这里为低电平,认为是连发码信号,见图6。
       ACALL   DELAY2400          ;延时4.74毫秒避开4.5毫秒的结果码
  
       ;以下32数据码的读取 ,0和1的识别 请看图2
       MOV        R1,#1AH             ;设定1AH为起始RAM区
       MOV        R2,#4
IR_4BYTE:
       MOV        R3,#8
IR_8BIT:    
       JNB        P2.2,$               ;等待地址码第一位的高电平信号
       LCALL   DELAY882              ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
       MOV       C,P2.2                  ;将P2.2引脚此时的电平状态0或1存入C中
       JNC        IR_8BIT_0           ;如果为0就跳转到IR_8BIT_0
       LCALL   DELAY1000
IR_8BIT_0:
       MOV       A,@R1                   ;将R1中地址的给A
       RRC       A                          ;将C中的值0或1移入A中的最低位
       MOV       @R1,A                    ;将A中的数暂时存放在R1中
       DJNZ     R3,IR_8BIT           ;接收地址码的高8位
       INC       R1                        ;对R1中的值加1,换下一个RAM
       DJNZ     R2,IR_4BYTE         ;接收完16位地址码和8位数据码和8位数据,
                                                     ;存放在1AH/1BH/1CH/1DH的RAM中
       ;解码成功
       JMP       IR_GOTO
  
IR_Rp:
       ;这里为重复码执行处
       ;按住遥控按键时,每过108ms就到这里来
       JMP       IR_GOTO
  
IR_ERROR:
       ;错语退出
       LJMP     MAIN ;退出解码子程序
  
;=================================================
;遥控执行部份
IR_GOTO:
       ;这里还要判断1AH和1BH 两个系统码或用户码,用于识别不同的遥控器
       ;MOV     A,1AH
       ;CJNE   A,#xxH,IR_ERROR     ;用户码1不对则退出
       ;MOV     A,1BH
       ;CJNE   A,#xxH,IR_ERROR     ;用户码2不对则退出
  
  
  
       ;判断两个数据码是否相反
       MOV       A,1CH
       CPL       A
       CJNE     A,1DH,IR_ERROR       ;两个数据码不相反则退出
       ;遥控执行部份
       ;MOV     A,1DH                         ;判断对应按键
       ;CJNE   A,#xxH,$+6
       ;LJMP   -à跳到对应按键执行处
       ;CJNE   A,#xxH,$+6
       ;LJMP   -à跳到对应按键执行处
       ;.
  
       MOV        P1,1DH               ;将按键的键值通过P1口的8个LED显示出来!
       CLR        P2.3                  ;蜂鸣器鸣响-嘀嘀嘀-的声音,表示解码成功
       LCALL   DELAY2400
       LCALL   DELAY2400
       LCALL   DELAY2400
       SETB     P2.3                   ;蜂鸣器停止
  
       ;清除遥控值使连按失效
       MOV       1AH,#00H
       MOV       1BH,#00H
       MOV       1CH,#00H
       MOV       1DH,#00H
       LJMP     MAIN
;=================================================
; 延时子程序
;=============================882
DELAY882: ;1.085x ((202x4)+5)=882
       MOV R7,#202
DELAY882_A:
       NOP
       NOP
       DJNZ     R7,DELAY882_A
RET
  
;=============================1000
DELAY1000: ;1.085x ((229x4)+5)=999.285
       MOV R7,#229
DELAY1000_A:
       NOP
       NOP
       DJNZ     R7,DELAY1000_A
RET
;=============================2400
DELAY2400: ;1.085x ((245x9)+5)=2397.85
       MOV R7,#245
DELAY2400_A:
       NOP
       NOP
       NOP
       NOP
       NOP
     NOP
       NOP
       DJNZ     R7,DELAY2400_A
RET
END
  
上一页12
上一篇:dac0832引脚图电路及程序 下一篇:DS1302时钟芯片应用
我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号