红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。
红外通讯通过使用红外光进行通信,发送设备将电信号转成光信号,接收设备则再将光信号还原成电信号,红外收发系统的框图如图所示:
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
图 1 红外收发系统
目前基于红外通讯的通讯协议有上百种,这些协议大同小异,下面以飞利蒲的RC5协议为例来进行介绍。同别的红外协议一样,飞利蒲的RC5协议也是由下列几部分组成:
之所以定义键码就是为了规范设计,至少保证飞利蒲公司内部的红外通信设备之间可以互通,不会出现混乱的情况,当然大家也可以自个定义,这有点像TCP/IP中的应用层,你可以自个定义一个协议,也可以用标准定义好的协议。键码是基于数字信号二进制的0/1而言的。比如0x12,换成二进制就是0b00010010。飞利蒲定义的键码如下所示。
1) 地址设备对照表(下表中的不同地址用于给不同类型的设备使用)
RC5 Address Device RC5 Address Device
$00 - 0 TV1 |$10 - 16 Pre-amp
$01 - 1 TV2 |$11 - 17 Tuner
$02 - 2 Teletext |$12 - 18 Recorder1
$03 - 3 Video |$13 - 19 Pre-amp
$04 - 4 LV1 |$14 - 20 CD Player
$05 - 5 VCR1 |$15 - 21 Phono
$06 - 6 VCR2 |$16 - 22 SatA
$07 - 7 Experimental |$17 - 23 Recorder2
$08 - 8 Sat1 |$18 - 24
$09 - 9 Camera |$19 - 25
$<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />0A - 10 Sat2 |$1A - 26 CDR
$0B - 11 |$1B - 27
$0C - 12 CDV |$1C - 28
$0D - 13 Camcorder |$1D - 29 Lighting
$0E - 14 |$1E - 30 Lighting
$0F - 15 |$1F - 31 Phone
2)命令功能对照表(下表中定应义了常用的遥控的命令)
RC5 Command | TV Command | VCR Command
------------------------------------------------------
$00 - 0 | 1 | 1
$01 - 1 | 2 | 2
$02 - 2 | 2 | 2
$03 - 3 | 3 | 3
$04 - 4 | 4 | 4
$05 - 5 | 5 | 5
$06 - 6 | 6 | 6
$07 - 7 | 7 | 7
$08 - 8 | 8 | 8
$09 - 9 | 9 | 9
$0C - 12 | Standby Standby |
$10 - 16 | Volume + |
$11 - 17 | Volume - |
$12 - 18 | Brightness + |
$13 - 19 | Brightness - |
$32 - 50 | | Fast Rewind
$34 - 52 | | Fast Forward
$35 - 53 | | Play
$36 - 54 | | Stop
$37 - 55 | | Recording
---------------------------------------------------------
如何实现上述的键码的发送,并保持红外接收解码器件收到并识别呢,当然就必须按一定的格式进行编码并发送。这跟我们常用的IIC有点相仿,必须有开始位和结束位,RC5的数据格式如下:
图 2 RC5编码
先发三个1,表示发送开始,接下来发送5位地址,然后再发送6位命令,一帧数据共14位。由接收设备再按照上述格式进行解码。其中地址和命令都是先发低位,再发高位。
什么是0/1标准呢,传统的TTL电平,只是电平>vIh就是1,小于ViL就是0,这里则不是这样的了,RC5是这样定义的:先发900us的高,再发900us的低电平,则表示为0,反之则为1。如下图所示。
图 3 RC5 0/1定义
什么是载波呢,也就是说红外波的发送是以一定的波长的形式发送出去的,0/1标准中介绍的900us的高,并不是一直为高,而是以一定频率的脉冲的形式存在,RC5定义载波频率为38KHZ。
红外发送的实现比较简单,可以使用专用的红外发送IC来实现,也可以通过单片机I/O软件模拟来实现。下面介绍基于MSP430F147单片机实现的红外遥控器。带LCD的红外遥控器框图如图所示:
图 4红外遥控器框图
由于硬件电路非常简单,将不做介绍。
下面介绍一下软件实现。系统软件框图如图5所示
图 5系统软件框图
其中LCD和键盘非本文重点,不作介绍。
下面主要介绍一下红外发送。
1)38KHZ频率的载波由于频率较快,如果使用定时中断,CPU往往难以快速响应,因此发0/发1函数的38HZ载波可以使用NOP()延时实现。
2)发0/发1中使用的900us间隔则可以使用定时中断控制标志位实现。
3)红外发送函数由发送开始位,发送地址,发送命令字三个子函数组成,通过移位判断是发送0还是发送1。
图 6红外发送软件框图
举例编码如下:
设定本遥控地址码为30(0x1E,0b1_1110),如果我们要发送一个VOLUME+,则命令字为0x10,换成二进制就为0b01_0000.
根据编码规则,一个完整的编码为:(START)111_01111_000010(END),注意:地址和命令字都是先发送低位。
RC5编码红外通信接收实现则是红外发送的逆过程,不过,实现上会稍微复杂一些,将在别的文章中再另行介绍。
用户1059843 2009-2-26 10:54
用户618590 2009-2-22 22:23
用户518079 2009-1-10 11:14