当前位置:文档之家› 一种红外遥控信号的解码方法

一种红外遥控信号的解码方法

第18卷第2期苏州大学学报(自然科学) Vol .18, No .2 2002 年 4 月JOURNAL OF SUZHOU UNIVERSITY(NATURAL SCIENCE) Apr .2002文章编号:1000-2073(2002)02-0101-06一种红外遥控信号的解码方法肖圣兵,仲兴荣,徐清源,曲波(苏州大学通信与电子工程系, 江苏苏州215021)摘要:文章介绍了红外遥控的基本原理和红外遥控发射器的组成,详细论述了以单片机89C2051 为核心的红外遥控信号的解码方法, 提出了用单片机对红外遥控信号进行识别译码的程序设计流程.关键词:单片机;89C2051;红外遥控;解码中图分类号:TP722文献标识码:A红外遥控技术广泛应用于各种家用电器产品、金融及商业设施中,为用户提供方便的操纵手段.一些遥控功能相对简单的电器产品,红外遥控信号的接收识别往往采用与编码调制芯片配套的译码芯片.而遥控功能比较复杂的一些电器产品(如电视机),均采用专用的遥控解码芯片,实现特定的功能.为了能将性能稳定、价格低廉、功能较多的电视机遥控器应用于其他控制场合,本文利用单片机89C2051为核心,设计了一套红外遥控信号解码的软硬件系统,通过驱动电路的扩展,可实现功能较复杂的遥控控制.1 红外遥控的基本原理红外遥控系统一般由发射系统和接收系统组成.发射系统由专用芯片产生指令代码,经载波调制后驱动红外发射器件,发射红外控制信号.红外信号的指令代码均为二进制码,编码调制由专用芯片完成,编码的方法有多种,不同芯片的编码方法和代码长度有所不同.指令信号常用的编码调制方法有脉冲宽度调制(PWM)和脉冲位置调制(PPM)两种,本系统采用脉冲位置调制方法的遥控信号发射器,即用两个脉冲串之间的时间间隔来表示二进制信息.红外遥控信号被红外接收头接收后,经放大、检波、整形,得到TTL电平的代码信号,再送给解码电路,经译码并执行,去控制指定对象,实现遥控功能.收稿日期:2002-01-10基金项目:江苏省青年教师基金(Q3119218)作者简介:肖圣兵(1964-),男(汉族),江苏苏州人,高级工程师,主要从事信息技术的研究.102苏州大学学报(自然科学)第18卷2 红外遥控信号发射器的组成红外遥控信号发射器选用以集成电路TC9012为核心的遥控信号发生器,它与键盘矩阵、输出驱动级和红外发光二极管组成遥控发射器器,图1为红外遥控信号发射器的电原理图.图1红外遥控信号发射器的电原理图遥控信号发生器集成电路TC9012,由振荡器、时钟信号发生器、键位扫描信号发生器、键位编码、遥控指令编码器、码转换器、编码调制器以及输出缓冲器等组成.振荡器由第8、9脚间的内部电路及其外接陶瓷谐振器组成,振荡频率取决于陶瓷谐振器,此处为455kHz,经TC9012 内部电路 12 分频后得到约为 37 .9kHz 、占空比为 1 3 的脉冲载波信号, 遥控编码脉冲对37.9kHz的载波信号进行调制,经驱动放大后,激励红外发射管发出红外遥控信号. 455kHz经 256 分频后得到约为 1 .78kHz 的系统时钟脉冲信号, 时钟脉冲周期 T cp =0 .5626ms .3 红外遥控信号的编码方式图2遥控编码信号的波形遥控器发射的遥控编码脉冲由前导码、系统码、系统码、功能码、功能码的反码组成,如图2所示.前导码是一个遥控码的起始部分,由时间宽度均为8T cp的一个高电平和一个低电平组成,作为接收数据的准备脉冲.系统码和功能码的编码是采用脉冲位置调制方式,根据第2期肖圣兵,仲兴荣,等:一种红外遥控信号的解码方法103脉冲之间的时间间隔来区分码值的“0”或“1” .对应于二进制数字信号“0”、“1”的脉冲时间间隔分别为2T cp和4T cp,而每一脉冲的宽度仍不变均为T cp,如图3所示.系统码是通过遥控器的遥控编码芯片的引脚不同接法设定的,用以区分不同型号的遥控系统;功能码则是遥控器图3脉冲位置调制方式的二进制码“0”和“1”的波形功能按键的编码,不同的功能按键其代码不相同;功能码的反码是用来纠错的.系统码为8位,功能码也为8位,所以脉冲码共为32位.,为了增强遥控系统的可靠性,将系统码发送两次,将功能码与其相反码一起发送.从图中可知,该遥控器的系统码为八位二进制数01101110 , 功能码为 01100000 八位二进制数, 该遥控器最多可以有256 个功能键 .4 红外遥控信号接收器红外遥控接收器由光电二极管和红外遥控信号接收集成电路CX20106构成,其原理如图4所示.遥控信号接收集成电路CX20106由前置放大器、限幅放大器、带通滤波器、峰值检波器和整形电路等组成.红外遥控信号发射器发射的红外遥控信号,激励光电二极管,产生光电流,经输入电阻转换成电压信号,通过CX20106 放大,再经过检波器滤去 38kHz 的载波 ,最后经整形电路整形,由脚7输出遥控编码脉冲,送至单片机解码电路.图4红外遥控接收器电原理图5 红外遥控信号单片机解码的硬件电路图 5红外遥控信号解码硬件电路以 89C2051 单片机为核心组成的红外遥控信号解码电路如图 5 所示.104 苏州大学学报(自然科学)第18卷图 5 中 89C2051 是美国 ATMEL 公司推出的一种高性价比单片机.89C2051 指令系统与MSC -51 完全兼容,具有2K 字节可重复编程的闪烁存储器和128 字节内部 RAM ;P3 .0~ P3 .6 共7 个脚, 准双向端口,并且保留了全部P3 的第二功能, 如P3 .0、P3 .1的串行通信功能, P3 .2、P3 .3的中断输入功能 ,P3 .4、P3 .5 的定时输入功能, 以及两个 16 位定时计数器 .图 5 中 U2 为具有上电复位功能的“看门狗”集成电路 IMP706 ,其6 脚与89C2051 的 9 脚相连,接收89C2051输出的“看门狗”控制信号,U2的7脚输出的复位信号通过一个反相器连接到89C2051的复位端1脚.89C2051的4、5脚外接12MHz的晶振和2只20P的元片电容,与其内部电路一起产生12MHz 的时钟信号.遥控编码脉冲直接传送至单片机的 11 脚 ,并经一反相器传送至单片机的6脚.6 红外遥控代码单片机译码程序的设计方法单片机红外遥控译码信号采用中断方式.红外接收头输出信号(图4中OUT与图5中的IN相连)经反相后连接到89C2051的外部中断INT0.INT0设置为下降沿边缘触发方式,用内部定时器T0测量正脉冲宽度,T0工作于方式2(16位计数器),在INT0的中断服务程序中,完成遥控译码.红外遥控信号在INT0引脚引起单片机中断后,进入中断服务程序.在中断服务程序中检测INT0引脚上是否为低电平,如为低电平表示传送码到来,延时等待至再次出现高电平,清TH0、TL0,开启T0,计数开始,INT0引脚变低时关闭T0.根据计数器TH0、TL0 的计数值 ,判断出该位代码为“0”或“1” ,并存入系统码寄存器的对应位;继续进行延时等待,直至INT0引脚电平升高后重复进行上述位代码检测步骤,并将相应值放入相应位至8 位系统码检测完毕 .随后进行8 位系统码、8 位功能码和8 位功能反码检测,具体过程与第一次系统码检测完全相同,结果存入相应寄存器中.最后,单片机系统根据功能码寄存器内容进行不同的功能操作.6 .1引导码的识别无遥控信号时,遥控接收器输出为低电平,经反相后INT0引脚上为高电平,当有遥控信号引导码出现时,INT0引脚由高到低发生电平变化,引起INT0中断.在INT0中断服务程序中检测INT0引脚电平,如为低电平则等待,直至INT0引脚出现高电平,清TH0、TL0,启动T0计数.根据TH0和TL0的计数值,判断正脉冲的宽度.如正脉冲的宽度在3.5~5.5ms范围内(实际引导码正脉冲宽度为 8T CP =8 ×0 .563ms =4 .5ms), 则认为是引导码 ,准备读取后续遥控代码,否则认为干扰,跳出INT0中断译码程序,返回主程序.程序流程图如图6所示.6 .2系统码、功能码、功能反码的译码 .系统码、功能码、功能反码的识别技术关键是0、1代码的识别.根据上面的遥控编码方法和波形图可知,在INT0中断服务程序中,我们只要能测出加到单片机INT0引脚的遥控接收反码信号的高电平宽度即可得到其代码.如脉冲宽度编码方法中,表示“0”的高电平宽度为0.56ms,表示“1”的高电平宽度为1.68ms,我们需要做的是判断出高电平的宽度范围.如大于0.46ms小于0.66ms可判为“0” ,大于1.58ms小于1.78ms可判为“1”,否则,判为非法的干扰代码,退出中断译码程序.这样我们就可以比较容易用程序读取代码.程序流程图如图7 所示.第2期肖圣兵,仲兴荣,等:一种红外遥控信号的解码方法105图6引导码识别流程图图7系统码、功能码识别流程图7 单片机红外遥控译码的软件抗干扰技术在红外遥控系统中,虽然发射、接收芯片内部均含有抗干扰及杂波滤除功能,但红外干扰源对系统的影响仍无法完全避免;另外,某些意外情况也可能造成译码的错误.为了提高系统的抗干扰能力,杜绝误操作,在软件上采用了多种抗干扰措施.7 .1单片机译码程序中“窗口”范围的确定单片机译码系统中,单片机晶振采用12MHz,机器周期为1μs,即每经过1μs,定时器的计数值T0加1.则脉冲“0”的高电平宽度为0.56ms对应的计数值为N0=0.56ms 1μs=560= 0230H ,脉冲“1”的高电平宽度为1 .68ms 对应的计数值为 N1 =1 .68ms 1μs =1680 =0690H , 引导码的脉冲高电平宽度为4.5ms对应的计数值为N2=4.5ms 1μs=4500=1194H.由于遥控脉冲形变、外界干扰及计数器计时误差,实际测出的遥控码计数值只在上述数值附近.为此,为读出的T0计数值设计一个“窗口” ,“窗口”范围为±0.1ms(对应计数值为±64H),即“0”范围 :0230H ±64H , 01DCH ~ 0294H“1”范围 :0690H ±64H , 062CH ~ 06F4H引导码范围:1194H±64H,1130H~11F8H只有位于“窗口”内的计数值才作为有效数据记录在数据存储区内.7 .2忽略干扰数据、提取有效数据实际上遥控脉冲信号由于干扰有“移位”现象,遥控发射器的按键按下以前,若此时有干。

相关主题