0 卖盘信息
BOM询价
您现在的位置: 首页 > 电子资讯 >设计应用 > 基于51单片机的红外线遥控器解码程序设计

基于51单片机的红外线遥控器解码程序设计

来源: 电子发烧友
2019-10-16
类别:设计应用
eye 111
文章创建人 拍明

原标题:基于51单片机的红外线遥控器解码程序设计

  下面是一个对51实验板配套的红外线遥控器的解码程序,它可以把红外遥控器每一个按键的键值读出来,并且通过实验板上P1口的8个LED显示出来,在解码成功的同时并且能发出“嘀嘀嘀”的提示音。

  

图片.png

  ;=================================================

  ; 红外遥控接收

  ;=================================================

  ; 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,{1}6

  ;LJMP -à跳到对应按键执行处

  ;CJNE A,#xxH,{1}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

  来源;21ic


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯