低脉冲的时间是0.565,间隔0.56为0,低脉冲的时间是0.565,间隔为1.685的为1在开始时是9MS的高脉冲间隔4.5的低脉冲后经过接收的取反后就为9MS的低脉冲间隔为4.5的高脉冲了!一种基于单片机的红外遥控软件解码方法摘要:文章详细论述了红外遥控数据的调制与编码方式,设计了一种基于MCS-51单片机的红外遥控解码方案,并简要介绍了红外通信抗十扰措施并给出软件设计实例。关键词:单片机红外遥控编码解码ABSTRACT:Thispapermainlydiscussthecxncxctandcxdingmethodofinfraredremotecontrol,andthed,-signofdecodesystembaseontheMCS一51singlachipisputforward;atthesconetuneabriefintroductionofresist-inginten}erenceofsoftwareandanexampleisgiven。KEYWORDS:SinglechipInfraredremotecxntrolCodingDecxde0引言红外线遥控是日前使用广泛的一种通信和遥控乎段。由于红外线遥控装置具有体积小、功耗低、功能强J戊本低等特点广泛应用于各种家用电器产品。市场上的各种家电红外遥控系统技术成熟、成本低廉,但都是针对各自的遥控对象(彩电、冰箱、空调等),为了能将性能稳定价格低廉、功能较多的电视机遥控器应用于其它控制场合,本文以MCS-51单片机W78E58为核心,设计了一套红外遥控信号解码的软件系统,通过驱动电路的扩展,能使智能仪器实现功能较复杂的遥控控制。1红外遥控的基本组成和接收解码电路红外遥控系统一般由红外遥控信号发射器、红外遥控信号接收器和微控制器及其外围电路3部分组成,如图1所示:、当遥控信号发射器的某个按键被按下,其内部的信号发射器就产生遥控编码脉冲,经载波调制后由红外发射竹串行输出;遥控接收头完成对遥控信号的接收放大、检波、整形、再送给微控制器,由微控制器解调出编码脉冲并执行相应的遥控功能。遥控器接收部分非常简单,红外接收头与W78E58共用电源和地,接收头的信号线与单片机的外部中断源INT0相连,当有信号输出时,就可以使单片机进入中断。在电源和信号线之间接上一个电阻和发光一极竹,这样,当接收头接收到信号并输出时,发光一极竹会随着信号线上电平的高低而闪烁,这样,我们就可以很清楚地看到接收头在接收信号。2红外数据传送的调制格式遥控器的红外数据传送编码格式基本上有脉冲宽度调制}PW1Ul)和脉冲位置调制(PPM)两种。对于脉宽调制格式,接收头信号的逻辑0和1是根据信号电平的宽度来区分的。每个逻辑1的高电平宽度比逻辑0的高电平宽度宽,而低电平宽度都是一致的,如图2所习、。脉宽调制方式最常使用的芯片有M50462,TC9012,LC7461等,使用这些芯片的遥控器有康佳KK-Y01,T920,二洋2169,2189等。脉冲相位调制方式的逻辑0和逻辑1的脉冲宽度都是一致的,而电平i1,好相反,如图3所小。相位调制方式最常用的芯片是SAA3010,使用这个芯片的遥控器有乐华542A-2PD,索尼G21S29K29等。3红外遥控编码方式发射系统由专用芯片产生指令代码,驱动红外发射器件,发射红外控制信号,红外信号的指令代码为一组串行一进制码,编码的方法有多种,不同芯片的编码方法和代码长度有所不同。日前流行的红外遥控器编码芯片卞要有M50462,PI'6221,TC9148等,其工作原理基本相同,都是通过编码后的串行数据对38}40kHz的方波进行脉冲宽度调制。编码卞要是由用户码和数据码构成,通常还包括引导脉冲,引导脉冲总是出现在编码脉冲的前头,作为遥控接收的启动信号;CPU只有在接收到引导脉冲之后,才可以对接收到的数据进行解码,以防止接收到不完整的发射信号。用户码和数据码统称为传送码,通常为8位或16位的“01码,为了避免出现差错,每次发射的传送码中一般都包含两次编码:一次为原码,一次为反码;或相同的码连续发两次。采用P}}1Vl方式调制的编码,按照脉冲的时间关系来区分1”和“0,通常以0.5}lms的低电平开始,区别是高电平的宽度不同,+0;一般为0.5}0.8ms,1”则为1.2}2ms。由于各种遥控器发码的时序不尽相同,在这单,我们以普通的红外遥控器康佳KK-Y01为例,其红外编码芯片为M504620图4所示的是M50462的P}}1VI1泳冲的周期,它的+1;是+0”的两倍。其指令编码既没有引导脉冲,也没有反转码或重复码,只是将用户码和数据码各发送一次,码的形式如图5所示,每一条传送指令有16个“0或1”代码组成,指令的末尾再附加一个尾码,因此总共包括17个宽度为0.25ms的负脉冲。CPU在收到传送码后,通过对脉冲的个数的检查来排除错误的编码,具体地说,就是在第17个脉冲之后在4ms的时间之内不应再出现第18个脉冲,否则视为误码。本系统采用的遥控发射器康佳KK-Y01每个按键的编码包含16位,其中前8位为用户码(识别码),后8位为数据码。用户码不随按键的不同而变化,其要作用是防止不同机种的遥控器之间的相匀_十扰产生误操作,数据码随按键的不同而不同。发射器使用了25种键操作,其功能操作码(传送码)见表to4红外遥控代码单片机译码程序的设计方法4.1软件设计原理经红外遥控接收器还原的P}}1Vl码要被CPU解码并执行相应的指令,必须对每个脉宽进行测量。脉宽测量通过对脉宽的时间计数来实现,解码通过解码程序来实现。单片机红外遥控译码采用中断方式。红外接收头输出信号(图1中的OUT线)直接连接到W78E58的外部中断aVTO,I1VT0设置为下降沿边缘触发方式,用内部定时器TO测量i1,脉冲宽度,设置内部定时器TO工作于方式1,TO的初值置为0目不允许TO产生中断,并将寄存器TOMD中的选通门GATE置为1,当中断0为低电平时,表示传送码到来,由硬件置位IEO,请求中断,在P,1'I'0引脚引起单片机中断后,进入中断服务程序。禁止中断响应,关中断,当中断0变为高电平时,启动定时器TO,开始计数,当中断0日重新变化为低电平时,关闭TO,读取TO计数值,并重置TO的初值为0,循环读出编码的16个脉宽,根据读得的计数值判断出相应的“0或“1,从而识别按下的键并执行相应的功能操作。编码的识别技术关键是0,1代码的识别。根据上面的遥控编码方法和波形图可知,在P,1'I'0中断服务程序中,只要能测出加到单片机aVTO引脚的遥控接收信号的高电平宽度即可得到其代码。表示“0”的高电平宽度为0.75ms,表示“1”的高电平宽度为1.75ms,这样就可以读取代码。在本系统中,单片机使用12M品振,所以每经过1}定时器加1,若分别用T0,T1,表示代4i}0不111泳冲的高电平宽度计数值,则:1】一1.lJ1\Il1一VLVll因此,当T()计数值为2EEH时,其对应的代码为0,Tc)的计数值为6D6H时,其对应的代4i为“1。4.2单片机红外遥控译码的软件抗十扰技术在红外遥控系统中,虽然发射、接收芯片内部均含有抗十扰及杂波滤除功能,但红外十扰源对系统的影响仍无法完全避免;另外,某些意外情况也可能造成译码的错误。为了减少十扰对脉冲信号的影响,提高系统的抗十扰能力,杜绝误操作,在软件上采用了多种抗十扰措施。(1)实际上遥控脉冲信号由于十扰有“移位”现象,遥控发射器的按键按下以前,若此时有十扰,解码电路也记录位于“窗日”内的十扰数据脉冲,这样,当由于键按下而收到的有效指令代码己经在数据存储区内向后移动了儿位,那么怎样才能区别是传送码还是十扰信号呢?我们设置在程序进入中断后,延时0.lms,若此时中断0日变为高电平,则为误码,因为如图4所示,M50462的低电平的宽度应有0.25ms,如果0.lms后就变高,我们认为是十扰信号。(2)由于遥控脉冲形变、外界十扰及计数器计时误差,实际测出的遥控码计数值在我们计算出的2EEH和6D6H附近,因此,为读出的计数值设计一个“窗日”,窗日范围为士0.lms(对应计数值为64H),只有计数值落在“窗日”内才为有效计数值,即:“O,,的范围:2EEH士64H1”的范围:6D6H士64H(3)当一组传送码过后,将出现4ms以上的高电平尾码,用计数器TO测量此脉宽,如果时间没有落在4ms以上范围内,则认为它是误码。(4)确定识别码,本系统的识别码为E2H,如果识别码不i1:确,则认为是误码。整个配料及上石系统的应用程序采用SIMATIC工业软件STEP?-Micro/WIN32V3.1编制,其梯行图(LAD)略。此PLC控制在鸿化公司己应用了一年多时间,我们对其效果进行了考察,在此期间,除更换一台称重传感器外,没有出现其它故障,整个控制系统使用效果良好,达到了预期日的。」断5结束语本系统以单片机为处理核心,采用软件译码方法和抗十扰技术对遥控信号进行分析判断和解码,实现了远程控制。在本系统中,硬件电路极为简单,无需外围芯片;原理简单、工作稳定可靠、易于兼容。当发射器的类型不同时只需对中断处理程序的部分参数稍加改动即可,就可以适用于多种红外遥控器信号的接收和解码,极大地节约了硬件实现的资源开销。所开发的系统具有较强的灵活性和实用性,为新型遥控器材的研制做了有益的探索,具有一定的参考和借鉴作用。