(玩电子) 电子技术学习与研究
当前位置单片机教程网 >> MCU设计实例 >> 浏览文章

单片机红外遥控器设计

作者:mcu110   来源:51hei   点击数:x  更新时间2007年08月01日   字体

红外线遥控是目前使用很广泛的一种通信和遥控技术由于红外线遥控装置具有体积小功耗低功能强成本低等特点因而继彩电录像机之后在录音机音响设备空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控工业设备中在高压辐射有毒气体粉尘等环境下采用红外线遥控不仅完全可*而且能有效地隔离电气干扰

   红外线是太阳光线中众多不可见光线中的一种由德国科学一胥尔于1800年发现又称为红外热辐射,他将太阳光用三棱镜分解开在各种不同颜色的色带位置上放置了温度计试图测量各种颜色的光的加热效应结果发现位于红光外侧的那支温度计升温最快因此得到结论太阳光字У红光的外侧必定存在看不见的光线这就是红外线也可以当作传输之媒界 太阳光谱上红外线的波长大于可见光线波长为0.751000μm红外线可分为三部分即近红外线波长为0.751.50μm之间中红外线波长为1.506.0μm之间远红外线波长为6.0l000μm 之间
真正的红外线夜视仪是光电倍增管成像与望毒原理全完不同白天不能使用价格昂贵且需电源才能工作

红外遥控系统

通用红外遥控系统由发射和接收两大部分组成应用编/解码专用集成电路芯片来进行控制操作如图1所示发射部分包括键盘矩阵编码调制LED红外发送器接收部分包括光电转环大器解调解码电路

图1a红外发射原理图
图1b 红外接受原理图

遥控发射器及其编码

红外遥控发射器专用芯片很多根据编码格式可以分成两大类这里我们以运用比较广泛解码比较容易的一类来加以得现以日本NEC的uPD6121G组成发射电路为例得编码原理当发射器按键按下后即有遥控码发出所按的键不同遥控编码也不同这种遥控码具有以下特征

采用脉宽调制的串新룬月宽为0.565ms间隔0.56ms周期为1.125ms的组合表示二进制的“0”月宽为0.565ms间隔1.685ms周期为2.25ms的组合表示二进制的“1”其波形如图2所示

 

上述“0”和“1”组成的32位二进制码经38kHz的载到行二次调制以提高发射效率达到降低电源功耗的目的然后再通过红外发射二极管产生红外线向空间发射如图3所示连发波形如图4所示

 

UPD6121G产生的遥控编码是连续的32位二进制码组其中前16位为用户识别码能区别不同的电器设备防止不同机种遥控码互相干扰该芯片的用户识别码固定为十六进制01H后16位为8位操作码功能码及其反码UPD6121G最多额128种不同组系编码

当遥控器在按键按下后周期性地发出同一种32位二进制码周期约为108ms一组码本身的中时间随它包含的二进制“0”和“1”的个数不同而不同大约在4563ms之间图4为发射波形图

当一个键按下超过36ms振荡器使芯片激活将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码9ms,一个结果码4.5ms,低8位地址码9ms~18ms,高8位地址码9ms~18ms,8位数据码9ms~18ms和这8位数据的反码9ms~18ms组成如果键按下超过108ms仍此开接下来发射的代码连发代码将仅由起始码9ms和结束码2.5ms组成

代码格式以接收代码为准接收代码与发射代码反向

位定义



单发代码格式



连发代码格式

注代码宽度算法

16位地址码的最短宽度1.12×16=18ms 16位地址码的最长宽度2.24ms×16=36ms

已知8位数据代码及其8位反代码目度和不变1.12ms+2.24ms×8=27ms

∴ 32位代码目度为18ms+27ms~(36ms+27ms)

1 解码的关键是如何识别“0”和“1”从位的定义我们可以发现“0”“1”均以0.56ms的低电平开始不同的是高电降目度不同“0”为0.56ms,“1”为1.68ms,所以必须根据高电降目度区别“0”和“1”如果从0.56ms低电平过后开始延时0.56ms以后若读到的电平为低得该位为“0”反之则为“1”为了可*起见延时必须比0.56ms长些但又不能超过1.12ms,否则如果该位为“0”读到的已是下一位的高电平因此取1.12ms+0.56ms/2=0.84ms最为可*一般取0.84ms左右均可

2 根据码的格式应该等待9ms的起始码和4.5ms的结果码完成后才能读码


红外遥控解码实验硬件

一体化红外线接收器是一种集红外线接收和放大整形于一体不需要任何外接元件就能完成从红外线接收到输出与TTL电平信号兼容的所有工作而体积又很小巧它适合于各种红外线遥控和红外线数据传输广泛用于电视机卫星接收机VCDDVD音响空调等家用电器中接收红外信号图5是一体化接收头的引脚排型图6是本站产放套的采用屏蔽线焊接的一体化红外接收头采用屏蔽线焊接抗干扰能力强接收更可*没有购买实验板配套的一体化红外接收头的网友可以根据图2所示接收头引脚排型约焊接一个

 
 
图5一体化红外接收头
引脚排型
 
图6本站产放套一体化红外接收头已经用屏蔽线焊接好抗干扰能力强插入实验板即可使用

下面就是我们将要进行红外遥控解码实验所要用到的硬件设备S51增强型实验板ISP编程器AT89S51实验芯片豪华型多功能红外线遥控器

 
 
图7S51增强型单片机实验板及防插反红外遥控接口


 

 
图8豪华型多功能红外遥控器 高灵敏度一体化红外接收头23元


 

图932键豪华型红外遥控器原理图



 

图10ISP编程器烧写实验单片机芯片AT89S51


红外遥控解码实验

我们经过对前面的遥控编解码知识的学习对红外遥控有了基本的了解下面我们马上进行解码实验本红外遥控解码实验的的功能是程序对遥控器发射的遥控码进行解码解码成功时蜂鸣器发出"嘀嘀"的解码成功提示音如果按压的是数字键"09"就将按键值在实验板系5位数码管上显境按键值同时将按键的十六进制值用P1口的8位发光二极管指境来如果按压的不是数字键"09"就直接从P1口输出键值下面是遥控解码汇编源程序

实验时将先连接好硬件设备将配套的一体化红外遥控接收头插入实验板系"红外遥控"接口内在Keil单片机集成开发环境中新建工程通过Keil将源程序编译得到HEX格式目标文件yk.hex最后使用ISP编程器将目标文件烧写到AT89S51单片机中插到S51增强型实验板上运行拿出配套的红外遥控器进行解码测试看看实验结果是否和程序相同

>>> 点此下载HEX格式目标文件 yk.hex >>>
>>> 点此下载遥控解码源程序和Keil工程文件 >>>

ORG 0000H
MAIN: MOV SP,#60H
MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
JNB P3.2,$;等待遥控信号出现
MOV R6,#10
SB: ACALL YS1 ;调用882微秒延时子程序
JBP3.2,MAIN ;延时882微秒后判断P3.2脚是否出现高电平如果芯退出解码程序
DJNZR6, SB;重复10次目的是检测在8820微秒内如果出现高电平就退出解码程序
;以上完成对遥控信号的9000微秒的初始低电平信号的识别
JNB P3.2, $ ;等待高电平避开9毫秒低电平引导脉冲
ACALL YS2 ;延时4.74毫秒避开4.5毫秒的结果码
MOV R1,#1AH ;设定1AH为起始RAM区
MOV R2,#4
PP: MOV R3,#8
JJJJ: JNB P3.2,$;等待地址码第一位的高电平信号
LCALL YS1 ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
MOV C,P3.2;将P3.2引脚此时的电平状态0或1存入C中
JNC UUU ;如果为0就跳转到UUU
JBP3.2,$;如果为1就等待高电平信号结束
UUU: MOV A,@R1 ;将R1中地址的给A
RRC A ;将C中的值0或1移入A中的最低位
MOV @R1,A ;将A中的数暂时存放在R1中
DJNZR3,JJJJ ;接收地址码的高8位
INC R1;对R1中的值加1换成下一个RAM
DJNZR2,PP ;接收完16位地址码和8位数据码和8位数据反码存放在1AH/1BH/1CH/1DH的RAM中
;以下源码是否正泛定义进行识别
MOV A,1AH ;比较高8位地址码
XRL A,#00000000B;判断1AH的值是否等于00000000相等的话A为0
JNZ MAIN;如果不相等得解码失败退出解码程序
MOV A,1BH ;比系8位地址
XRL A,#11111111B;再判断高8位地址是否正确
JNZ MAIN;如果不相等得解码失败退出解码程序
MOV A,1CH ;比较数据码和数据反码是否正确?
CPL A
XRL A,1DH ;将1CH的等反后和1DH比较 不同则无效丢弃核对数据是否准确
JNZ MAIN;如果不相等得解码失败退出解码程序
LCALL SOUND ;解码成功声音提示
MOV A,1AH
CPL A
MOV P1,A;遥控码十六进制值通过P1口LED显境来

;-------- 下面为09键码判断并在实验板的5位数码管中显示键值 --------
JZPD: MOV A,1AH
IRD0: CJNEA,#00H,IRD1 ;按键"0"判断显示
MOV P0,#0C0H
MOV P2,#11100000B
AJMPMAIN
IRD1: CJNEA,#01H,IRD2 ;按键"1"判断显示
MOV P0,#0F9H
MOV P2,#11100000B
AJMPMAIN
IRD2: CJNEA,#02H,IRD3 ;按键"2"判断显示
MOV P0,#0A4H
MOV P2,#11100000B
AJMPMAIN
IRD3: CJNEA,#03H,IRD4 ;按键"3"判断显示
MOV P0,#0B0H
MOV P2,#11100000B
AJMPMAIN
IRD4: CJNEA,#04H,IRD5 ;按键"4"判断显示
MOV P0,#99H
MOV P2,#11100000B
AJMPMAIN
IRD5: CJNEA,#05H,IRD6 ;按键"5"判断显示
MOV P0,#92H
MOV P2,#11100000B
AJMPMAIN
IRD6: CJNEA,#06H,IRD7 ;按键"6"判断显示
MOV P0,#82H
MOV P2,#11100000B
AJMPMAIN
IRD7: CJNEA,#07H,IRD8 ;按键"7"判断显示
MOV P0,#0F8H
MOV P2,#11100000B
AJMPMAIN
IRD8: CJNEA,#08H,IRD9 ;按键"8"判断显示
MOV P0,#80H
MOV P2,#11100000B
AJMPMAIN
IRD9: CJNEA,#09H,IRDOR ;按键"9"判断显示
MOV P0,#90H
MOV P2,#11100000B
AJMPMAIN

IRDOR:MOV P2,#0FFH ;关闭数码管使能"09"以外的非数字功能按键键值不采用数码管显示直接从P1口输出键值
AJMPMAIN

YS1: MOV R4,#19 ;延时子程序1
D1: MOV R5,#18
DJNZR5,$
DJNZR4,D1
RET

YS2: MOV R4,#10 ;延时子程序2
D2: MOV R5,#216
DJNZR5,$
DJNZR4,D2
RET

SOUND:MOV R7,#228 ;音效延时子程序
SDL1: CPL P3.7
MOV R6,#0FFH
SDL0: DJNZR6,SDL0
DJNZR7,SDL1
RET

把上面程序写入at89S51单片机中一个简单的单片机红外遥控器设计就完成了哈哈是不是很有兴趣了通电后按压遥控器系09按键则实验板系数码管上就显境对应的按键值同时解码成功后发出声音指示

发表评论告诉好友收藏此文关闭窗口

文章评论

ձһhƬձƵ ձƵɫwww ձƵ:ɫ