您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 单片机学习实例--红外遥控实验学习
我们的服务网址:我们的学习网:实例学习红外线遥控应用实例红外线遥控成本低,安全可靠,不会产生电器干扰,因此,在家电设备及其他近距离的遥控中得到广泛应用。本章将通过LED显示遥控器按键值实例、简易红外线遥控开关和红外线遥控七色小彩灯实例,介绍红外线遥控基本原理及其设计、应用方法。C.1LED显示遥控器按键值功能说明:选用一种电视机遥控器,再利用接收模块结合单片机解码,控制P1端口所接的8个LED亮或灭。因此,8个LED的亮或灭的状态,即是显示红外遥控器的按键值。8个LED视为8位二进制数,其中LED亮视为0,LED灭视为1。例如,按动红外遥控器按键1,8个LED中右边第一个灭,其他全亮,则表示二进制数为00000001B,转换成十六进制数为01H,即红外遥控器按键1的控制编码为01H;如果按动红外遥控器按键2,8个LED中右边第二个灭,其他全亮,表示二进制数为00000010B,转换成十六进制数为02H,即红外遥控器按键2的控制编码为02H。再如,按动红外遥控器“POWER”键,8个LED中第2、5灭,其他全亮,表示二进制数为00010010B,转换成十六进制数为12H,即遥控器的POWER键控制编码为12H。二进制数转换十六进制数的方法可以参考书后附录B的制式转换表。我们的服务网址:我们的学习网:红外线遥控原理1.红外线遥控系统结构红外线遥控系统是由发射端和接收端两部分组成,如图C.1和C.2所示。红外线发射端就是红外遥控器,主要包括键盘、编码调制芯片、红外线发射LED。当按下某一按键后,遥控器上的编码调制芯片便进行编码,并结合载波电路的载波信号而成为合成信号,再经红外线发射二极管,将红外线信号发射出去。键盘编码和调制模块红外线发射LED发射端部分图C.1红外线发射端工作方框图红外线接收模块解码单片机接收端部分图C.2红外线接收端工作方框图红外线接收端主要包括红外线接收模块、解码单片机。其中红外线接收模块里包括光、电转换放大器、解调电路。当红外线发射信号进入接收模块后,在其输出端便可以得到原先的数字控制编码,再经过单片机解码程序进行解码,便可以得知按下了哪一按键,从而完成红外线遥控的动作。我们的服务网址:我们的学习网:.编码方式与解码原理红外线遥控器的编码与所使用的编码芯片有关,不同的芯片编码有所不同,但基本原理相似。这里以SC9012芯片为例,说明遥控编码方式和解码原理。SC9012一帧完整的发射码是由引导码、用户编码和键数据码3部分组成。编码的格式如图C.3所示。S0S1S2S3S4S5S6S7S0S1S2S3S4S5S6S7D0D1D2D3D4D5D6D7D0D1引导码用户码用户码键数据码图C.3红外线发射码格式引导码由一个4.5ms的高电平脉冲及4.5ms的低电平脉冲组成。八位的用户编码被连续发送两次,八位的键数据码也被发送两次,第一次发送的是键数据码的原码,第二次发送的是键数据码的反码,所以,整个数据编码占用32位。数据编码方式是通过脉宽调制来实现的,以脉宽为0.56ms,间隔为0.56ms,周期为1.125ms的组合表示二进制的“0”;以脉宽为0.56ms,间隔为1.69ms,周期为2.25ms的组合表示二进制的“1”,其接收端波形如图C.4和图C.5所示。0.56ms1.125ms位“0”我们的服务网址:我们的学习网:图C.4遥控码“0”波形图0.56ms2.25ms位“1”图C.5遥控码“1”波形图单片机解码的关键是如何识别“0”和“1”,从上面遥控码“0”和“1”的波形图中可以发现“0”、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,即“1”的高电平宽度是“0”的高电平宽度的3倍。如果延时0.56ms,若读到的电平为低,说明该位为“0”,反之则为“1”。或者设计一精确的延时时间,例如以0.093ms延时时间当作基础时间,以调用基础延时时间的次数来计数实际的波形宽度,若读值为6表示波形宽度为0.56ms,若读值为18则表示波形宽度为1.68ms,因此,可以直接通过判断高电平的宽度的计数值是6或是18,来判断接收的原编码为0或1。C.1.2硬件设计红外线发射端采用市场上通用的一种红外遥控器(芯片为SC9012或TC9012系列等)。接收端采用一体化红外接收头,红外接收头只有3个引脚:引脚1为数字信号输出端(OUT),引脚2为接地端(GND),引脚3为电源输入(VCC)。红外接收头与单片机连接非常简单,只需将信号输出端(OUT)与单片机一个I/O引脚连接(P3.2),然后接上电源即可。单片机主要用于解码,P1端口所接的8个LED用来显示解码后红外遥控器的按键值。单片机的P2.4引脚通过限流电阻R与三极管基极相我们的服务网址:我们的学习网:接,三极管的集电极接有蜂鸣器,电路如图C.6所示。X1EA89C51P1.0P1.1P1.2P1.3P1.4P1.5....12MHz30P30P+10μF..+5V。。kΩ10.SWRRSTVSSVCC+5V360Ω×8.......+5VOUTGNDVCC123+5VX2P1.6P1.7P3.2IRR1kSPK+5VP2.4图C.6红外线接收电路图C.1.3程序设计程序中,主程序通过调用解码子程序,将接收到的红外线遥控器信号进行解码,再调用遥控执行子程序,将解码后的按键值由LED显示出来。所以,解码子程序是程序中的主要部分。1.主要标号说明•MAIN:主程序。•IR_IN:解码子程序。•IR_ZX:遥控执行子程序。•FS_SPK:发声子程序。•DE:短暂延时子程序。•DELAY05_R5:延时子程序,总延时时间为0.5ms×R5。我们的服务网址:我们的学习网:•DEL:用于解码延时子程序,延时时间为0.093ms。2.程序清单汇编语言编写的LED显示红外线遥控器按键值源程序IR01.ASM代码如下:01;---------------------------------------------------------------------02;程序名:IR01.ASM03;程序功能:显示红外遥控器按键值04;---------------------------------------------------------------------05;----------------------------程序初始化-------------------------------06SPKEQUP2.4;压电喇叭信号输入位07IRINEQUP3.2;红外线IR信号输入位08;--------------------------09IRDZEQU20H;解码数据放置起始地址10DZ3EQU22H;比较第3字节1112;-------------------------------主程序-------------------------------1314MAIN:15ACALLFS_SPK;调用发声子程序,响一声16SETBIRIN;IR输入位设置为高电平17LOOP:18MOVR0,#IRDZ;设置IR解码起始地址19ACALLIR_IN;调用解码子程序,解码20ACALLIR_ZX;调用遥控执行子程序,执行动作我们的服务网址:我们的学习网:继续循环执行2223;----------------------------解码子程序-------------------------------2425IR_IN:;解码子程序26;确认IR信号出现,避开9毫秒引导脉冲27L1:JNBIRIN,L2;等待IR信号出现28JMPL129L2:MOVR5,#17;避开9毫秒引导脉冲30ACALLDELAY05_R531JBIRIN,L1;确认IR信号出现32;-------------------------------33L3:JBIRIN,L4;等IR变为高电平34ACALLDEL;调用0.093ms延时程序35JMPL336L4:MOVR3,#0;8位计数清为037;-------------------------------38;避开低电平,待直接判断高电平39L5:JNBIRIN,L6;等IR变为低电平40ACALLDEL;调用0.093ms延时程序41JMPL542L6:JBIRIN,L7;等IR变为高电平43ACALLDEL;调用0.093ms延时程序44JMPL645;-------------------------------46;通过调用0.093ms延时次数的计数值来判断高电平的宽度,解码0或147L7:MOVR2,#0;0.093ms计数清为048L8:ACALLDEL;调用0.093ms延时子程序49JBIRIN,L9;等IR变为高电平我们的服务网址:我们的学习网:将A寄存器设置为852CLRC;清除借位标志C53SUBBA,R2;以减法指令SUBB来判断高低位54MOVA,@R0;R0值为解码内存地址,即取出内存数据给A55RRCA;将借位标志C右移进入A56MOV@R0,A;将数据写入内存57INCR3;R3值加1,处理完一位58CJNER3,#8,L5;需处理完8位59;---------------------60MOVR3,#0;计数清061INCR0;R0值加162CJNER0,#23H,L5;收集到4字节63JMPL1064L9:INCR2;R2值加165CJNER2,#30,L8;计数过长离开66L10:67RET;子程序返回6869;---------------------------遥控执行子程序------------------------------7071IR_ZX:;遥控执行子程序72MOVA,DZ3;将第3字节数据赋予A73MOVP1,A;显示二进制按键值74ACALLFS_SPK;调用发声子程序,响一声75RET7677;-------------------------------发声子程序我们的服务网址:我们的学习网::;发声子程序80MOVR6,#081B1:ACALLDE82CPLSPK83DJNZR6,B184MOVR5,#10085ACALLDELAY05_R586RET8788;---------------------------短暂延时子程序----------------------------8990DE:;短暂延时子程序91MOVR7,#18092DE1:NOP93DJNZR7,DE194RET9596;------------------------------延时子程序-----------------------------9798DELAY05_R5:;延时子程序,总延时时间为0.5ms*R599MOVR6,#5100D1:MOVR7,#10101DJNZR7,$102DJNZR6,D1103DJNZR5,DELAY05_R5104RET我们的服务网址:我们的学习网:
本文标题:单片机学习实例--红外遥控实验学习
链接地址:https://www.777doc.com/doc-5400784 .html