
万能红外遥控解码模块.doc
14页■* ■*■ SAA301C及兼容芯片如PT2210等)和NEC编码(典型编码芯片如 uPD6121,uPD6122, TC9012 )以及众多的兼容芯片型号,(如 PT2221, PT2222, SC6121, SC6122,SC9012 等等),采用该模 块,可以缩短开发时间,节约 CPU资源,降低总体成本特点•使用简单、可靠•支持多种编码• 兼容SPI及UART波特率9600)的串行输出•采用数字滤波技术,高抗干扰,无误码•接收有效指示输出•工业级温度范围储存温度-65 至+150C工作温度-40 至 +85C任意接口对地电压-0.3 至 6V红外编码介绍目前应用于家电等领域的红外线遥控装置, 并没有统一的国际标准,目前市场上所见的红外线遥控编码芯片,超过10种之多,分别由飞利浦公司、NEC公 司、SONY公司、东芝公司、三菱公司、JVC公司等生产,使用的编码方式各不 相同目前应用最广泛、兼容产品最多的,是飞利浦公司(RC编码)的和NEC公 司的编码芯片本模块可以完成这两种格式编码的解码工作RC5编码:RC5编码由飞利浦公司推出,其编码芯片有SAA3010,SAA3006等,是应用很广泛的一种编码方式。
RC5编码采用双相位编码方式,用不同相位分别代表“ 0”和“ 1”传送每一位的时间固定为1.778mS每一个指令包扌括E15bits的起始位(2个逻辑1),辑{个翻转位,5位系统码(地址码),以及6位命令码(键码),因此,最多可以支持 64个键MSB LSB MSB LSB起始位科转位 地址码 按键码翻转位在每次有新的按键按下去的时候翻转一次, 这里指的新按键,也包括同一个键抬起后再次按下的情况如果某个键持续按下,则编码芯片会不断地重 复发送同样的数据翻转位保持不变而如果该键中途抬起后再次按下, 则再次 按下后所发送的数据中的翻转位发生翻转,其它数据保持不变NEC编码:NEC编码由NEC公司推出,其典型编码芯片为uPD6121uPD6122除了 NEC公 司的产品,市场上还有大量与之相兼容的产品,如 PT2221, PT2222, SC6121,SC6122,SC9012等等是应用最广泛的一种编码方式该编码方式采用脉冲位置编码方式,利用脉冲间的时间间隔来区分“ 0”和逻辑1每个指令包括32位数据,包括16位的用户码、以及8位键数据码和键数据 码的反码因为具有反码可以作为校验的依据,因此该种编码方式具有很低的误 码率。
理论上该编码方式可以支持256个键,实际的编码芯片一般可支持64个引#卄C133C4■LXico13匚1C-U13CO-1U3•_i>丄■UO'131C773IML>i-1 !■ nii*.LkgDIU2U'JLMU6i A低时汕|小・;侶9p'iW悖徒林円的蚯讯UPD1621等芯片支持组合按键,即某些键码只有在特定的2个键同时按下的 情况下才会发出,这个功能对于类似录像机“录像”键等需要防止误操作的场合 非常有用模块的输出接口ATC言号:模块的ACT引脚作为接收有效指示输出,当模块芯片接收到有效的数 据时,ACT变为低电平对于RC5和NEC 2种工作模式,ACT信号的表现略有不 同,这是由于两种编码制式的不同传输方式决定的下面分别介绍在两种工作模 式下模块的输出情况:RC5模式:RC5的编码芯片在有持续按键的时候,会不断地重复发送相同的数据,因此, 本模块也会不停地重复输出解码出的数据, 而ACT信号也会随着不停地跳变,每 一个新的数据码到来时,都会输出一个低电平脉冲NEC模式:与RC5模式的遥控器不同,NEC格式的遥控芯片在有按键持续按下的情况 下,不是重复地发出数据码,而是仅在第一次时传送一次数据,此后只是每108ms 发送一次引导信号,表示按键还持续有效。
因此,本模块在接受这样的信号时, 也只会在最开始输出一次数据,而按键的保持情况,是通过ACT信号的持续低电 平来表示的,如果ACT 一直持续保持低电平,则表示该按键一直有效,按键抬起 后,ACT也随之恢复高电平见下图)ACT信号如果用户需要判断遥控器的键是否被持续按下,对应 RC5模式和NEC模式, 应采用不同的方法,RC5模式下,系统用翻转位来表示新的按键,用户可以将最 后收到的键码数据中的翻转位(本模块芯片将翻转位置于键码数据的最高位 BIT7) 与上一次收到的数据中的翻转位相比较, 如果两次翻转位相同,则表示是持续的 按键,如果不同,则表示这是一个新的按键而对于 NEC模式,用户则可以通过 监视ACT信号来判断按键的情况,如果收到键码后,ACT持续保持为低电平,则 表示按键一直没有释放ACTD7(DAT)D6(CLK}D5(SS)串行输出:模块串行数据输出使用三个引脚,分别用作 SS (选通信号),CLK (时 钟信号),DAT(串行数据)使用串行输出时,ACT引脚电平也会发生变化,ACT 在数据开始输出前就跳变为低电平模块的串行输出,采用的是标准的3线SPI接口方式,不过,为了达到最大 的兼容性,数据的传送速率(波特率)被特别设定为9600,因此,发出的数据也 可以直接用于波特率为9600的异步串行接口。
数据采用低位在前的方式输出 时,SS首先变为低电平,同时DAT端也变为低电平,这个状态将保持104uS,这 个时间正好是波特率9600的异步串行口传送1个BIT所用的时间,如果接收数 据方是UART则DAT保持低电平的这个104uS,相当于发送了 1个起始位(START BIT)随后第一个数据位在DAT上输出,CLK开始输出同步脉冲,每输出一位 所用的时间为104uS, 8位数据的最后一位数据输出完成后,SS恢复为高电平模块工作时,会将收到的用户码和按键键码一同输出,因此每次输出2-3个 字节,RC5模式地址码只有5位,因此输出2个字节,一个字节的地址码和一个 字节的键码,地址码先输出NEC模式有16位用户码,因此将总共输出3个字 节,用户码高8位在前,其次是用户码低8位,最后是按键的键码下面用NEC模式为例,说明其输出的波形:ACTDAT |用户码高8位| |用户码低8位| 按键码clk nww™ aniwwss模块的应用方式1. 与微处理器接口(1) 、使用UART方式很多的微处理器都提供片上的UART接 口,模块的串行输出兼容于“波特率 9600, 1个起始位,1个停止位,无奇偶校验位”的UART使用的方式极其简单, 只需要将模块的DATH脚与微控制器的R>引脚相连即可。
这种接口方式只需要占 用1根口线,微处理器的数据接收可以由硬件完成,占用 CPU的资源很少2) 、使用SPI方式有的微处理器,比如ATMEL公司的AVR系列等,具有片上的可以工作于从机 模式的SPI接口,这时也可以利用SPI接口,和UART方式类似,这种方式数据 传输也由硬件完成,占用CPU资源很少以AVR芯片为例,将模块的DATf单片 机的MOSI引脚相连,CLK与SCK相连,SS与SS相连,设置AVR芯片的SPI接 口工作于“从机、上升沿为起始沿(Clock Polarity=LOW)、起始沿采样、低位数 据在前”模式即可3) 、使用外部中断读取串行数据上面第三种方式占用的I/O 口比较多,如果希望减少I/O的使用,可以采用 外部中断读取串行数据的方式,这时,可以用 SS信号的下降沿或者CLK信号的 上升沿作为中断的触发条件使用SS下降沿作为触发时,从中断触发到数据出 现在DAT引脚上,有104uS的时间,用户可以在中断处理程序中监视 CLK的状态, 每次CLK由低电平变为高电平,就读取一位数据因为每一位的时间都是104uS, 加上开始时的104uS,整个中断处理程序(读取一个字节)需要耗时约 900uS。
也可以采用CLK的上升沿作为中断触发条件,每次中断服务程序只读取一位数 据,这样可以减少一些读取数据的时间开销4) 、不使用中断的接口方式上面的几种方式都使用了硬件的串行接口或者是中断资源, 有的低成本的微 控制器没有这些资源,或者资源被其它程序占用,不能使用硬件接口和中断,则 必须采取查询的方式查询方式的最大问题在于存在的丢失数据的可能性, 因为 程序除了查询模块状态外,还会有其他工作要做当程序正在执行其他任务,或 者收到一个按键指令后进行处理尚未完成时, 又有新的按键数据,则新来的数据 就有可能因为未被CPU察觉而丢失2. 与RS-232口相连模块的DAT俞出经过简单的电平转换,就可以直接用于RS-232接口,可以直 接被PC接收,配合适当的软件(如串口调试助手等),可以完成 PC勺遥控控制及 键码显示如通过MAX2326平转换后,在PC上通过配置好的串口调试助手,如下图, 就能读出相应遥控器的按键编码模块的示例程序//模块的DAT端接51单片机RX端在LCD1602显示一款NEC编码遥控器数字0-9 #in clude
