基于单片机系统的红外遥控器应用.docx
《基于单片机系统的红外遥控器应用.docx》由会员分享,可在线阅读,更多相关《基于单片机系统的红外遥控器应用.docx(11页珍藏版)》请在冰点文库上搜索。
基于单片机系统的红外遥控器应用
遥控器应用
摘 要
介绍红外遥控器与单片机的硬件接口,并从原理出发给出软件解码的方法。
通过软件程序对红外遥控器发射的脉冲波形检测得出信,从而为软件解码提供依据。
红外遥控器由于其体积小、功耗低、功能强、本钱低的特点,已经在家电产品设备中广泛应用。
现代智能化仪器仪表系统、工业设备中的控制输入也较多地使用红外遥控器。
本文给出红外遥控器信号发射原理、红外接收器的连接方式和单片机软件解码应用程序,并提供了一种对未知格式的遥控器信检测的应用程序。
关键词:
遥控器;软件解码;单片机;红外线
Abstract
Introductioninfraredremotecontrolandmicrocontrollerhardwareinterfaceandsoftwaredecodingarepresentedandfromtheprincipleofthemethod.Throughtheinfraredremotecontrolsoftwareprogramlaunchedintheletterobtainedpulsedetectionnumber,andthusprovidethebasisforsoftwaredecoding.Infraredremotecontrolbecauseofitssmallsize,lowpowerconsumption,strongfunction,andlowcosts,hasbeenwidelyusedinhomeappliancesequipment.Modernintelligentinstrumentationsystems,industrialequipment,thecontrolinputisgreateruseofinfraredremotecontrol.Inthispaper,principleofinfraredremotecontrolsignaltransmission,infraredreceiverconnectionandSCMsoftwaredecodingapplications,andprovidesaremotecontrolforunknownformatletternumberdetectionapplications.
Keywords:
remotecontrol;softwaredecoding;SCM;infrared
1 红外遥控器信号发射原理简介
通用红外发射器由指令键、指令信号产生电路、调制电路、驱动电路及红外发射器组成。
如图1所示。
遥控器所产生的脉冲编码的格式一般为:
引导脉冲(头)─识别码(用户码)─键码─键码的反码
其引导脉冲为宽度是10ms左右的一个高脉冲和一个低脉冲的组合,用来标识指令码的开场。
识别码、键码、键码的反码均为数据编码脉冲,用二进制数表示。
“0〞和“1〞均由ms量级的上下脉冲的组合代表。
识别码(即用户码)是对每个遥控系统的标识。
通过对识别码的检验,每个遥控器只能控制一个设备动作,有效的防止了多个设备之间的串扰。
当指令键按下时,指令信号产生电路便产生脉冲编码。
键码后面一般还要有键码的反码,用来检验键码接收的正确性,防止误动作,增强系统的可靠性。
这些指令信号由调制电路调制成32~40kHz的信号,经调制后输出,最后由驱动电路驱动红外发射器件(LED)发出红外遥控信号。
2 红外遥控器信号接收芯片外围电路
接收电路可以使用集成红外接收器成品,一般不需要任何外接元件就能完成从红外接收到输出TTL电平兼容信号的所有工作。
注意选择接收器件时要保证接收器件的中心频率与发射信号的中心频率相匹配。
接收器对外只有3个引脚:
VCC,GND和1个脉冲信号输出OUT。
与单片机接口非常方便,如图2所示。
脉冲信号输出接CPU的普通输入引脚或中断输入引脚(IO/INT)。
采取这种连接方法,软件解码既可工作于查询方式,也可工作于中断方式。
在实际应用中,还可以进一步增加抑制干扰电路和提高驱动能力电路,增强系统的稳定性。
红外线遥控信号发送器电路TC9012F的遥控信号,TC9012F为4位专用微控制器,其内部振荡电路的振荡频率fosc典型值为455kHz。
当不按下操作键时,其内部455kHz的时钟振荡器停顿工作,以减少电池消耗。
内局部频电路将振荡频率,fosc进展12分频后,变成频率fc=37.9kHz,占空比为1/3的脉冲载波信号。
红外遥控信号发送器电路由集成电路TC9012F、键盘矩阵电路、驱动器和红外发光二极管组成,遥控信号为37.9kHz的脉冲载波被遥控编码脉冲调制的已调波,三、遥控信号的解码算法及程序编制,遥控器无键按下。
红外发射二极管不发出信号,遥控接收头输出信号1。
有键按下时.O和1编码的高电平经遥控头倒相后会输出信号O.由于与单片机的中断脚相连,将会引起单片机中断(单片机预先设定为下降沿产生中断)。
单片机在中断时使用定时器0或定时器1开场计时.到下一个脉冲到来时,即再次产生中断时,先将计时值取出。
清零计时值后再开场计时.通过判断每次中断与上一次中断之间的时间间隔。
便可知接收到的是引导码还是O和1。
如果计时值为9ms。
接收到的是引导码,如果计时值等于1.12ms,接收到的是编码O。
如果计时值等于225ms.接收到的是编码1。
在判断时间时,应考虑一定的误差值。
因为不同的遥控器由于晶振参数等原因,发射及接收到的时间也会有很小的误差。
以接收TC9012遥控器编码为例,解码方法如下:
(1)设外部中断0(或者1)为下降沿中断,定时器0(或者1)为16位计时器.初始值均为O。
(2)第一次进入遥控中断后,开场计时。
(3)从第二次进入遥控中断起,先停顿计时。
并将计时值保存后,再重新计时。
如果计时值等于前导码的时间,设立前导码标志。
准备接收下面的一帧遥控数据,如果计时值不等于前导码的时间,但前面已接收到前导码,那么判断是遥控数据的O还是1。
(4)继续接收下面的地址码、数据码、数据反码。
(5)当接收到32位数据时,说明一帧数据接收完毕。
此时可停顿定时器的计时,并判断本次接收是否有效.如果两次地址码一样且等于本系统的地址,数据码与数据反码之和等于0FFH,那么接收的本帧数据码有效。
否那么丢弃本次接收到的数据。
(6)接收完毕,初始化本次接收的数据,准备下一次遥控接收。
3遥控编码
遥控编码脉冲由引导码、用户码、功能码和功能码的相反码组成,用户码是同一组码发送两次,如图2所示。
用户码为8位,所以整个脉冲码为32位。
引导码作为接收数据的准备脉冲,他由8TCP(4.5ms)的高电平和8TCP(4.5ms)的低电平组成。
用户码和功能码采用脉冲位置调制(PPM)方式编码,根据脉冲之间的时间间隔来区分码值的"0"或"1"。
对应于二进制数字信号的"0"或"1",脉冲时间间隔分别为2TCP(1.125ms)和4TCP(2.25ms),而每一脉冲的宽度仍不变,均为TCP(0.5626ms)。
由于用户码发送两次,功能码与其相反码一起发送,因此系统的误动作很少。
本遥控器采用第一次发送的遥控信号的编码脉冲(图3所示)和第二、第三次连续发送的遥控信号的编码脉冲(图4所示)不同的工作方式。
这样,当按键一直按着的时候,从第二次连续发送开场,只发送引导码和用户码第一位SO的相反码SO,因此可减少接收处理时间和红外发光二极管功耗,遥控编码脉冲经脉冲载波调制后由TC9021F的第脚输出,再经鼓励器驱动红外发光二极管,发送出波长为940nm的脉冲红外光。
假设用户码为十六进制的76H那么第一次发送的遥控信号的编码脉冲如图3所示。
解码器硬件以AT89C51单片机为核心,如图5所示,图中只给出接收红外遥控信号的局部电路。
红外遥控信号经过红外接收模块接收后,解调为遥控信号的编码脉冲由输出端A输出,其波形如图3和图4所示,此信号经过反相器74LS04输出到AT89C51的外部中断INT0输入端.单片机通过运行程序对红外遥控器TC9021所发出的编码脉冲进展接收和译码。
用单片机解码红外遥控器
遥控器使用方便,功能多.目前已广泛应用在电视机、VCD、DVD、空调等各种家用电器中,且价格廉价,市场上非常容易买到。
如果能将遥控器上许多的按键解码出来.用作单片机系统的输入.那么解决了常规矩阵键盘线路板过大、布线复杂、占用I/O口过多的弊病。
而且通过使用遥控器,操作时可实现人与设备的别离,从而更加方便使用。
下面以TC9012编码芯片的遥控器为例。
谈谈如何用常用的51系统单片机进展遥控的解码。
一、编码格式
1、0和1的编码
遥控器发射的信号由一串O和1的二进制代码组成.不同的芯片对0和1的编码有所不同。
通常有曼彻斯特编码和脉冲宽度编码。
TC9012的O和1采用PWM方法编码,即脉冲宽度调制,其O码和1码如图1所示(以遥控接收输出的波形为例)。
O码由O.56ms低电平和0.56ms高电平组合而成.脉冲宽度为1.12ms.1码由0.56ms低电平和1.69ms高电平组合而成.脉冲宽度为2.25ms。
在编写解码程序时.通过判断脉冲的宽度,即可得到0或1。
2、按键的编码
当我们按下遥控器的按键时,遥控器将发出如图2的一串二进制代码,我们称它为一帧数据。
根据各局部的功能。
可将它们分为5局部,分别为引导码、地址码、地址码、数据码、数据反码。
遥控器发射代码时.均是低位在前。
高位在后。
由图2分析可以得到.引导码高电平为4.5ms,低电平为4.5ms。
当
接收到此码时.表示一帧数据的开场。
单片机可以准备接收下面的数据。
地址码由8位二进制组成,共256种.图中地址码重发了一次。
主要是加强遥控器的可靠性.如果两次地址码不一样.那么说明本帧数据有错.应丢弃。
不同的设备可以拥有不同的地址码.因此。
同种编码的遥控器只要设置地址码不同,也不会相互干扰。
图中的地址码为十六进制的0EH(注意低位在前)。
在同一个遥控器中.所有按键发出的地址码都是一样的。
数据码为8位,可编码256种状态,代表实际所按下的键。
数据反码是数据码的各位求反,通过比拟数据码与数据反码.可判断接收到的数据是否正确。
如果数据码与数据反码之间的关系不满足相反的关系.那么本次遥控接收有误.数据应丢弃。
在同一个遥控器上.所有按键的数据码均不一样。
在图2中,数据码为十六进制的0CH,数据反码为十六进制的0F3H(注意低位在前).两者之和应为0FFH。
单片机程序主要解决的问题就是如何对接收到的9021型红外遥控器所发射的信号进展解码,编码脉冲信号是由引导码、用户码、和功能码等局部组成,我们只对获取其功能码过程进展分析。
在单片机设置中,将单片机AT89C51内部定时器/计数器T0设为定时方式1,定时时间为1ms;设外部中断INT0为下降沿中断触发方式,由于在接收时将编码脉冲信号进展反相,因此,每当INT0外管脚信号下降沿到来时,外部中断INT0发生中断,启动定时器T0,定时器每次中断定时时间为1ms并累加到定时计数器中,在下一次外部中断INT0发生中断时读取定时计数器中的时间,通过对两个脉冲之间的定时时间的分析来对遥控器功能码进展解码例如程序如下:
E1INT:
PUSHACC
PUSHPSW
CLRTR1
MOVRM—TLEN,TH1 、
MOVTH1,#00H
MOVTL1,#00H
SETBTR1
MOVA,RMJLEN
JNZLBL—RM—DAT—BIT
MOVRM—ADDR.#00H
MOVRM—RADDR,#00H
MOVRM—DAT,#00H
MOVRM—RDAT,#00H
MOVRM—BIT_T,#00H
CLRRM—OK
CLRRM—GUIDE
POPPSW
POPACC
RET1IBIRMDATBIT:
MOVA,RM_TLEN
CJNEA,#23H,LBL—RM_ADDR_DAT
SETBRM—GUIDE
SJMPLBLE1INT-RET
LBLRM_ADDR_DAT;
JNBRM—GUIDE,LBL—RM—ERROR
CJNEA,#04H,LBL_RM_ONE
CLRC
SJMPLBL_RM—SHIFT
LBLRM—ONE:
CJNEA。
#08H。
LBL—RM—ERROR
SETBC
LBL_RM_SHIFT:
MOVA,RM—RDAT
RRCA
MOVRM—RDAT.A
MOVA,RM—DAT
RRCA
MOVRM—DAT,A
MOVA,RM—RADDR
RRCA
MOVRMRADDR.A
MOVA。
RM—-ADDR
RRCA
MOVRM—.ADDR.A
LBL—RM—END:
INCRM—BIT—T
MOVA,RM_BIT_T
CJNEA,#32,LBLE1INT_RET
CLRTR1
MOVTH1,#00H
MOVTL1,#00H
MOVHOUR.RM—ADDR
MOVMINUTE,RM—DAT
MOVRM—_ADDR,#00H
MOVRM—RADDR,#00H
MOVRM—DAT,#00H
MOVRM—RDAT,#00H
MOVRM一8IT_T,#00H
CLRRM—GUIDE
SEITBRM—OK
SJMPLBL—E1INT—RETLBL—RM—ERROR:
CLRTR1
MOVTH1,#0OH
MOVTL1,#00H
MOVRM—_ADDR,#00H
MOVRM—RADDR,#00H
MOVRM—DAT,#00H
MOVRM—RDAT,#00H
MOVRM—B1T—T,#00H
CLRRM—GUIDE
LBL—E1INT—RET:
POPPSW
POPACC
RETI
二、单片机遥控接收电路
红外遥控接收可采用较早的红外接收二极管加专用的红外处理电路的方法。
如CXA20216,此种方法电路复杂,现在一般不采用。
较好的接收方法是用一体化红外接收头,它将红外接收二极管、放大、解调、整形等电路做在一起,只有三个引脚.分别是+5V电源、地、信号输出。
常用的一体化接收头的外形及引脚见图3和图4。
红外接收头的信号输
出接单片机的INTO或INTl脚.典型电路如图5所示.图中增加了一只PNP型三极管对输出信号进展放大。
以上以Tc9012编码格式为例,说明了解码的原理与方法。
只要注意一帧数据的格式及引导码、O码和1码的时间长度.其它编码芯片如HT6121、M50560、LC7461等也非常容易解码。
4软件解码应用程序
在遥控器信格式的条件下,可以通过单片机软件程序实现解码。
以笔者手中的遥控器为例,根据上面已测得的信,采用PIC16C54单片机,4MHz晶振,提供一种软件解码的应用程序。
PIC16C54单片机是一款有着较高性能价格比的低档单片机,最适合低价格、低功耗、小体积的设备。
PIC16C54没有中断系统,程序采用软件查询法,查询输入引脚的电平变化,采用定时器定时,根据定时器的记录值和的信号格式比拟,判断各局部接收是否正确以及分辨键码并执行相应的命令。
由于遥控器脉宽时间值是在一个小X围内波动,而且检测过程中定时器也存在误差。
因此,对信号的识别不能采取准确比拟法,本程序采用了区间比拟法,即判断定时器的记录值是否在预先计算的区间内。
由88于引导脉冲和数据脉冲的时间相差很大,解码时对定时器采用不同的预分频,以尽量提高解码的准确度。
①引导脉冲判断:
低8.84ms,高4.40ms,预分频1∶64,理论计算得定时器值应为:
低8AH,高44H。
如实际所得低局部在85H和90H之间、高局部在40H和4AH之间,那么认为引导脉冲接收正确。
②“0”,“1”判断:
数据脉冲流的低电平脉宽一样,忽略不判断;高电平脉宽是判断数据流每位是“0”还是“1”的依据。
“0”对应高0.50ms,“1”对应高1.62ms,预分频1∶8,理论计算得定时器值应为:
“0”对应高3EH,“1”对应高0CAH。
如所得“0”对应高在39H和42H之间、“1”对应高在0C5H和0D0H之间那么认为接收正确。
③判断16b识别码是否和的识别码(19D6H)一样。
④判断8b键码是否与8b键码的反码相对应。
⑤根据键码,选择所应执行的命令。
注意,在程序容易发生死循环或者出错的地方,要检验定时器是否溢出。
一旦发生溢出,要立即使程序复位,以便程序能够在出错之后返回到程序开场局部,增强系统的可靠性。
基于以上设计思想可以在多种单片机上实现遥控器的解码。
读者可自行尝试应用中断方法实现遥控器的信号解码。
5结语
生产即时显示系统面向生产现场,对生产效率进展量化管理,目前在兴旺国家和国内一些外资企业已经得到广泛的应用。
他通过即时显示生产中的定额任务量、生产目标以及当前时刻实际完成的生产数量,可以使生产情况一目了然,提高了生产效率。
此显示系统一般都安放在生产线上方,工作人员需要经常对显示系统进展操作,设定和修改数据,用红外遥控器对生产即时显示系统进展不接触的参数设定,可以使操作灵活方便,抗干扰强
参考文献
[1]窦振中.PIC系列单片机原理和程序设计[M].:
航空航天大学,1998.
[2]X科军.传感器与检测技术〔第二版〕.:
电子工业
[3]何立民,单片机应用系统设计.:
航天航空大学
[4]胡汉才,单片机原理及其接口技术,:
清华大学,1996
[5]5赵负图,传感器集成电路手册.第一版,化学工业