《基于单片机系统的红外遥控器应用教学提纲.doc》由会员分享,可在线阅读,更多相关《基于单片机系统的红外遥控器应用教学提纲.doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Good is good, but better carries it.精益求精,善益求善。基于单片机系统的红外遥控器应用-遥控器应用摘要1Abstract21红外遥控器信号发射原理简介22红外遥控器信号接收芯片外围电路33遥控编码4一、编码格式5二、单片机遥控接收电路84软件解码应用程序85结语9参考文献9摘要介绍红外遥控器与单片机的硬件接口,并从原理出发给出软件解码的方法。通过软件程序对红外遥控器发射的脉冲波形检测得出信号码,从而为软件解码提供依据。红外遥控器由于其体积小、功耗低、功能强、成本低的特点,已经在家电产品设备中广泛应用。现代智能化仪器仪表系统、工业设备中的控制输入也较多地使用红
2、外遥控器。本文给出红外遥控器信号发射原理、红外接收器的连接方式和单片机软件解码应用程序,并提供了一种对未知格式的遥控器信号码检测的应用程序。关键词:遥控器;软件解码;单片机;红外线AbstractIntroductioninfraredremotecontrolandmicrocontrollerhardwareinterfaceandsoftwaredecodingarepresentedandfromtheprincipleofthemethod.Throughtheinfraredremotecontrolsoftwareprogramlaunchedintheletterobtaine
3、dpulsedetectionnumber,andthusprovidethebasisforsoftwaredecoding.Infraredremotecontrolbecauseofitssmallsize,lowpowerconsumption,strongfunction,andlowcosts,hasbeenwidelyusedinhomeappliancesequipment.Modernintelligentinstrumentationsystems,industrialequipment,thecontrolinputisgreateruseofinfraredremote
4、control.Inthispaper,principleofinfraredremotecontrolsignaltransmission,infraredreceiverconnectionandSCMsoftwaredecodingapplications,andprovidesaremotecontrolforunknownformatletternumberdetectionapplications.Keywords:remotecontrol;softwaredecoding;SCM;infrared1红外遥控器信号发射原理简介通用红外发射器由指令键、指令信号产生电路、调制电路、驱
5、动电路及红外发射器组成。如图1所示。遥控器所产生的脉冲编码的格式一般为:引导脉冲(头)识别码(用户码)键码键码的反码其引导脉冲为宽度是10ms左右的一个高脉冲和一个低脉冲的组合,用来标识指令码的开始。识别码、键码、键码的反码均为数据编码脉冲,用二进制数表示。“0”和“1”均由ms量级的高低脉冲的组合代表。识别码(即用户码)是对每个遥控系统的标识。通过对识别码的检验,每个遥控器只能控制一个设备动作,有效的防止了多个设备之间的串扰。当指令键按下时,指令信号产生电路便产生脉冲编码。键码后面一般还要有键码的反码,用来检验键码接收的正确性,防止误动作,增强系统的可靠性。这些指令信号由调制电路调制成324
6、0kHz的信号,经调制后输出,最后由驱动电路驱动红外发射器件(LED)发出红外遥控信号。2红外遥控器信号接收芯片外围电路接收电路可以使用集成红外接收器成品,一般不需要任何外接元件就能完成从红外接收到输出TTL电平兼容信号的所有工作。注意选择接收器件时要保证接收器件的中心频率与发射信号的中心频率相匹配。接收器对外只有3个引脚:VCC,GND和1个脉冲信号输出OUT。与单片机接口非常方便,如图2所示。脉冲信号输出接CPU的普通输入引脚或中断输入引脚(IO/INT)。采取这种连接方法,软件解码既可工作于查询方式,也可工作于中断方式。在实际应用中,还可以进一步增加抑制干扰电路和提高驱动能力电路,增强系
7、统的稳定性。红外线遥控信号发送器电路TC9012F的遥控信号,TC9012F为4位专用微控制器,其内部振荡电路的振荡频率fosc典型值为455kHz。当不按下操作键时,其内部455kHz的时钟振荡器停止工作,以减少电池消耗。内部分频电路将振荡频率,fosc进行12分频后,变成频率fc=379kHz,占空比为1/3的脉冲载波信号。红外遥控信号发送器电路由集成电路TC9012F、键盘矩阵电路、驱动器和红外发光二极管组成,遥控信号为379kHz的脉冲载波被遥控编码脉冲调制的已调波,三、遥控信号的解码算法及程序编制,遥控器无键按下。红外发射二极管不发出信号,遥控接收头输出信号1。有键按下时O和1编码的
8、高电平经遥控头倒相后会输出信号O由于与单片机的中断脚相连,将会引起单片机中断(单片机预先设定为下降沿产生中断)。单片机在中断时使用定时器0或定时器1开始计时到下一个脉冲到来时,即再次产生中断时,先将计时值取出。清零计时值后再开始计时通过判断每次中断与上一次中断之间的时间间隔。便可知接收到的是引导码还是O和1。如果计时值为9ms。接收到的是引导码,如果计时值等于112ms,接收到的是编码O。如果计时值等于225ms接收到的是编码1。在判断时间时,应考虑一定的误差值。因为不同的遥控器由于晶振参数等原因,发射及接收到的时间也会有很小的误差。以接收TC9012遥控器编码为例,解码方法如下:(1)设外部
9、中断0(或者1)为下降沿中断,定时器0(或者1)为16位计时器初始值均为O。(2)第一次进入遥控中断后,开始计时。(3)从第二次进入遥控中断起,先停止计时。并将计时值保存后,再重新计时。如果计时值等于前导码的时间,设立前导码标志。准备接收下面的一帧遥控数据,如果计时值不等于前导码的时间,但前面已接收到前导码,则判断是遥控数据的O还是1。(4)继续接收下面的地址码、数据码、数据反码。(5)当接收到32位数据时,说明一帧数据接收完毕。此时可停止定时器的计时,并判断本次接收是否有效如果两次地址码相同且等于本系统的地址,数据码与数据反码之和等于0FFH,则接收的本帧数据码有效。否则丢弃本次接收到的数据
10、。(6)接收完毕,初始化本次接收的数据,准备下一次遥控接收。3遥控编码遥控编码脉冲由引导码、用户码、功能码和功能码的相反码组成,用户码是同一组码发送两次,如图2所示。用户码为8位,所以整个脉冲码为32位。引导码作为接收数据的准备脉冲,他由8TCP(45ms)的高电平和8TCP(45ms)的低电平组成。用户码和功能码采用脉冲位置调制(PPM)方式编码,根据脉冲之间的时间间隔来区分码值的0或1。对应于二进制数字信号的0或1,脉冲时间间隔分别为2TCP(1125ms)和4TCP(225ms),而每一脉冲的宽度仍不变,均为TCP(05626ms)。由于用户码发送两次,功能码与其相反码一起发送,因此系统
11、的误动作很少。本遥控器采用第一次发送的遥控信号的编码脉冲(图3所示)和第二、第三次连续发送的遥控信号的编码脉冲(图4所示)不同的工作方式。这样,当按键一直按着的时候,从第二次连续发送开始,只发送引导码和用户码第一位SO的相反码SO,因此可减少接收处理时间和红外发光二极管功耗,遥控编码脉冲经脉冲载波调制后由TC9021F的第脚输出,再经激励器驱动红外发光二极管,发送出波长为940nm的脉冲红外光。假设用户码为十六进制的76H则第一次发送的遥控信号的编码脉冲如图3所示。解码器硬件以AT89C51单片机为核心,如图5所示,图中只给出接收红外遥控信号的部分电路。红外遥控信号经过红外接收模块接收后,解调
12、为遥控信号的编码脉冲由输出端A输出,其波形如图3和图4所示,此信号经过反相器74LS04输出到AT89C51的外部中断INT0输入端.单片机通过运行程序对红外遥控器TC9021所发出的编码脉冲进行接收和译码。用单片机解码红外遥控器遥控器使用方便,功能多目前已广泛应用在电视机、VCD、DVD、空调等各种家用电器中,且价格便宜,市场上非常容易买到。如果能将遥控器上许多的按键解码出来用作单片机系统的输入则解决了常规矩阵键盘线路板过大、布线复杂、占用IO口过多的弊病。而且通过使用遥控器,操作时可实现人与设备的分离,从而更加方便使用。下面以TC9012编码芯片的遥控器为例。谈谈如何用常用的51系统单片机
13、进行遥控的解码。一、编码格式1、0和1的编码遥控器发射的信号由一串O和1的二进制代码组成不同的芯片对0和1的编码有所不同。通常有曼彻斯特编码和脉冲宽度编码。TC9012的O和1采用PWM方法编码,即脉冲宽度调制,其O码和1码如图1所示(以遥控接收输出的波形为例)。O码由O56ms低电平和056ms高电平组合而成脉冲宽度为112ms1码由056ms低电平和169ms高电平组合而成脉冲宽度为225ms。在编写解码程序时通过判断脉冲的宽度,即可得到0或1。2、按键的编码当我们按下遥控器的按键时,遥控器将发出如图2的一串二进制代码,我们称它为一帧数据。根据各部分的功能。可将它们分为5部分,分别为引导码
14、、地址码、地址码、数据码、数据反码。遥控器发射代码时均是低位在前。高位在后。由图2分析可以得到引导码高电平为45ms,低电平为45ms。当接收到此码时表示一帧数据的开始。单片机可以准备接收下面的数据。地址码由8位二进制组成,共256种图中地址码重发了一次。主要是加强遥控器的可靠性如果两次地址码不相同则说明本帧数据有错应丢弃。不同的设备可以拥有不同的地址码因此。同种编码的遥控器只要设置地址码不同,也不会相互干扰。图中的地址码为十六进制的0EH(注意低位在前)。在同一个遥控器中所有按键发出的地址码都是相同的。数据码为8位,可编码256种状态,代表实际所按下的键。数据反码是数据码的各位求反,通过比较
15、数据码与数据反码可判断接收到的数据是否正确。如果数据码与数据反码之间的关系不满足相反的关系则本次遥控接收有误数据应丢弃。在同一个遥控器上所有按键的数据码均不相同。在图2中,数据码为十六进制的0CH,数据反码为十六进制的0F3H(注意低位在前)两者之和应为0FFH。单片机程序主要解决的问题就是如何对接收到的9021型红外遥控器所发射的信号进行解码,编码脉冲信号是由引导码、用户码、和功能码等部分组成,我们只对获取其功能码过程进行分析。在单片机设置中,将单片机AT89C51内部定时器/计数器T0设为定时方式1,定时时间为1ms;设外部中断INT0为下降沿中断触发方式,由于在接收时将编码脉冲信号进行反
16、相,因此,每当INT0外管脚信号下降沿到来时,外部中断INT0发生中断,启动定时器T0,定时器每次中断定时时间为1ms并累加到定时计数器中,在下一次外部中断INT0发生中断时读取定时计数器中的时间,通过对两个脉冲之间的定时时间的分析来对遥控器功能码进行解码示例程序如下:E1INT:-PUSHACCPUSHPSWCLRTR1MOVRMTLEN,TH1、MOVTH1,#00HMOVTL1,#00HSETBTR1MOVA,RMJLENJNZLBLRMDATBITMOVRMADDR#00HMOVRMRADDR,#00HMOVRMDAT,#00HMOVRMRDAT,#00HMOVRMBIT_CNT,#0
17、0HCLRRMOKCLRRMGUIDEPOPPSWPOPACCRET1IBIRMDATBIT:MOVA,RM_TLENCJNEA,#23H,LBLRM_ADDR_DATSETBRMGUIDESJMPLBLE1INT-RETLBLRM_ADDR_DAT;JNBRMGUIDE,LBLRMERRORCJNEA,#04H,LBL_RM_ONECLRCSJMPLBL_RMSHIFTLBLRMONE:CJNEA。#08H。LBLRMERRORSETBCLBL_RM_SHIFT:MOVA,RMRDATRRCAMOVRMRDATAMOVA,RMDATRRCAMOVRMDAT,AMOVA,RMRADDRRRCA
18、MOVRMRADDRAMOVA。RM-ADDRRRCAMOVRMADDRALBLRMEND:INCRMBITCNTMOVA,RM_BIT_CNTCJNEA,#32,LBLE1INT_RETCLRTR1MOVTH1,#00HMOVTL1,#00HMOVHOURRMADDRMOVMINUTE,RMDATMOVRM_ADDR,#00HMOVRMRADDR,#00HMOVRMDAT,#00HMOVRMRDAT,#00HMOVRM一8IT_CNT,#00HCLRRMGUIDESEITBRMOKSJMPLBLE1INTRETLBLRMERROR:CLRTR1MOVTH1,#0OHMOVTL1,#00HMO
19、VRM_ADDR,#00HMOVRMRADDR,#00HMOVRMDAT,#00HMOVRMRDAT,#00HMOVRMB1TCNT,#00HCLRRMGUIDELBLE1INTRET:POPPSWPOPACCRETI二、单片机遥控接收电路红外遥控接收可采用较早的红外接收二极管加专用的红外处理电路的方法。如CXA20106,此种方法电路复杂,现在一般不采用。较好的接收方法是用一体化红外接收头,它将红外接收二极管、放大、解调、整形等电路做在一起,只有三个引脚分别是+5V电源、地、信号输出。常用的一体化接收头的外形及引脚见图3和图4。红外接收头的信号输出接单片机的INTO或INTl脚典型电路如图5
20、所示图中增加了一只PNP型三极管对输出信号进行放大。以上以Tc9012编码格式为例,说明了解码的原理与方法。只要注意一帧数据的格式及引导码、O码和1码的时间长度其它编码芯片如HT6121、M50560、LC7461等也非常容易解码。4软件解码应用程序在已知遥控器信号码格式的条件下,可以通过单片机软件程序实现解码。以笔者手中的遥控器为例,根据上面已测得的信号码,采用PIC16C54单片机,4MHz晶振,提供一种软件解码的应用程序。PIC16C54单片机是一款有着较高性能价格比的低档单片机,最适合低价格、低功耗、小体积的设备。PIC16C54没有中断系统,程序采用软件查询法,查询输入引脚的电平变化
21、,采用定时器定时,根据定时器的记录值和已知的信号格式比较,判断各部分接收是否正确以及分辨键码并执行相应的命令。由于遥控器脉宽时间值是在一个小范围内波动,而且检测过程中定时器也存在误差。因此,对信号的识别不能采取精确比较法,本程序采用了区间比较法,即判断定时器的记录值是否在预先计算的区间内。由88于引导脉冲和数据脉冲的时间相差很大,解码时对定时器采用不同的预分频,以尽量提高解码的准确度。引导脉冲判断:低884ms,高440ms,预分频164,理论计算得定时器值应为:低8AH,高44H。如实际所得低部分在85H和90H之间、高部分在40H和4AH之间,则认为引导脉冲接收正确。“0”,“1”判断:数
22、据脉冲流的低电平脉宽相同,忽略不判断;高电平脉宽是判断数据流每位是“0”还是“1”的依据。“0”对应高050ms,“1”对应高162ms,预分频18,理论计算得定时器值应为:“0”对应高3EH,“1”对应高0CAH。如所得“0”对应高在39H和42H之间、“1”对应高在0C5H和0D0H之间则认为接收正确。判断16b识别码是否和已知的识别码(19D6H)相同。判断8b键码是否与8b键码的反码相对应。根据键码,选择所应执行的命令。注意,在程序容易发生死循环或者出错的地方,要检验定时器是否溢出。一旦发生溢出,要立即使程序复位,以便程序能够在出错之后返回到程序开始部分,增强系统的可靠性。基于以上设计
23、思想可以在多种单片机上实现遥控器的解码。读者可自行尝试应用中断方法实现遥控器的信号解码。5结语生产即时显示系统面向生产现场,对生产效率进行量化管理,目前在发达国家和国内一些外资企业已经得到广泛的应用。他通过即时显示生产中的定额任务量、生产目标以及当前时刻实际完成的生产数量,可以使生产情况一目了然,提高了生产效率。此显示系统一般都安放在生产线上方,工作人员需要经常对显示系统进行操作,设定和修改数据,用红外遥控器对生产即时显示系统进行不接触的参数设定,可以使操作灵活方便,抗干扰强参考文献1 窦振中PIC系列单片机原理和程序设计M北京:北京航空航天大学出版社,19982 徐科军.传感器与检测技术(第二版).北京:电子工业出版社3 何立民,单片机应用系统设计.北京:航天航空大学出版社4 胡汉才,单片机原理及其接口技术,北京:清华大学出版社,19965 5赵负图,传感器集成电路手册.第一版,化学工业出版社