红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。
1 红外遥控系统
通用红外遥控系统由发射和接收两大部分组成。应用编/解码专用集成电路芯片来进行控制操作,如图1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。
; 红外遥控接收;=================================================; 中山单片机学习网 智佳科技 逸风;=================================================ORG 0000HMAIN:JNB P2.2,IR ;遥控扫描LJMP MAIN ;在正常无遥控信号时,一体化红外接收头输出是高电平,程序一直在循环。;=================================================;=================================================; 解码程序IR:;以下对遥控信号的9000微秒的初始低电平信号的识别,波形见图5。MOV R6,#10IR_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 DELAY2400JNB P2.2,IR_Rp ;这里为低电平,认为是连发码信号,见图6。ACALL DELAY2400 ;延时4.74毫秒避开4.5毫秒的结果码;以下32数据码的读取 ,0和1的识别 请看图2MOV R1,#1AH ;设定1AH为起始RAM区MOV R2,#4IR_4BYTE:MOV R3,#8IR_8BIT:JNB P2.2,$ ;等待地址码第一位的高电平信号LCALL DELAY882 ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态MOV C,P2.2 ;将P2.2引脚此时的电平状态0或1存入C中JNC IR_8BIT_0 ;如果为0就跳转到IR_8BIT_0LCALL DELAY1000IR_8BIT_0:MOV A,@R1 ;将R1中地址的给ARRC A ;将C中的值0或1移入A中的最低位MOV @R1,A ;将A中的数暂时存放在R1中DJNZ R3,IR_8BIT ;接收地址码的高8位INC R1 ;对R1中的值加1,换下一个RAMDJNZ R2,IR_4BYTE ;接收完16位地址码和8位数据码和8位数据,;存放在1AH/1BH/1CH/1DH的RAM中;解码成功JMP IR_GOTOIR_Rp:;这里为重复码执行处;按住遥控按键时,每过108ms就到这里来JMP IR_GOTOIR_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,1CHCPL ACJNE 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 DELAY2400LCALL DELAY2400LCALL DELAY2400SETB P2.3 ;蜂鸣器停止;清除遥控值使连按失效MOV 1AH,#00HMOV 1BH,#00HMOV 1CH,#00HMOV 1DH,#00HLJMP MAIN;=================================================; 延时子程序;=============================882DELAY882: ;1.085x ((202x4)+5)=882MOV R7,#202DELAY882_A:NOPNOPDJNZ R7,DELAY882_ARET;=============================1000DELAY1000: ;1.085x ((229x4)+5)=999.285MOV R7,#229DELAY1000_A:NOPNOPDJNZ R7,DELAY1000_ARET;=============================2400DELAY2400: ;1.085x ((245x9)+5)=2397.85MOV R7,#245DELAY2400_A:NOPNOPNOPNOPNOPNOPNOPDJNZ R7,DELAY2400_ARETEND
文章评论(0条评论)
登录后参与讨论