‘壹’ 求单片机C51红外线收发方案(最好有详细解释)
红外线遥控器解码程序
2007-02-07 18:52 红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。现在工业设备中,也已经广泛在使用。。。。。
1 红外遥控系统
通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。
2 遥控发射器及其编码
遥控发射器专用芯片很多,根据编码格式可以分成脉冲宽度调制和脉冲相位调制两大类,这里我们以运用比较广泛,解码比较容易的脉冲宽度调制来加以说明,现以3310组成发射电路为例说明编码原理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:
采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”
上述“0”和“1”组成的42位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,
3310产生的遥控编码是连续的42位二进制码组,其中前26位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后16位为8位的操作码和8位的操作反码用于核对数据是否接收准确。
当遥控器上任意一个按键按下超过36ms时,LC7461芯片的振荡器使芯片激活,将发射一个特定的同步码头,对于接收端而言就是一个9ms的低电平,和一个4.5ms的高电平,这个同步码头可以使程序知道从这个同步码头以后可以开始接收数据。
解码的关键是如何识别“0”和“1”,从位的定义我们可以发现“0”、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,所以必须根据高电平的宽度区别“0”和“1”。如果从0.56ms低电平过后,开始延时,0.56ms以后,若读到的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比0.56ms长些,但又不能超过1.12ms,否则如果该位为“0”,读到的已是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最为可靠,一般取0.84ms左右即可。
根据红外编码的格式,程序应该等待9ms的起始码和4.5ms的结果码完成后才能读码。
接收器及解码
LT0038是塑封一体化红外线接收器,它是一种集红外线接收、放大、整形于一体的集成电路,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,没有红外遥控信号时为高电平,收到红外信号时为低电平,而体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输。
下面是一个对51ISP编程实验开发板配套的红外线遥控器的解码程序,它可以把红外遥控器每一个按键的键值读出来,并且通过实验板上P1口的8个LED显示出来,在解码成功的同时并且能发出“嘀嘀嘀”的提示音。
ORG 0000H
AJMP MAIN;转入主程序
ORG 0003H ;外部中断P3.2脚INT0入口地址
AJMP INT ;转入外部中断服务子程序(解码程序)
;以下为主程序进行CPU中断方式设置
MAIN:SETB EA ;打开CPU总中断请求
SETB IT0 ;设定INT0的触发方式为脉冲负边沿触发
SETB EX0 ;打开INT0中断请求
;以下对单片机的所有引脚进行初始化,全部设置成高电平
MOV P2,#11111111B
AJMP $
;以下为进入P3.2脚外部中断子程序,也就是解码程序
INT: CLR EA ;暂时关闭CPU的所有中断请求
MOV R6,#10
SB: ACALL YS1;调用882微秒延时子程序
JB P3.2,EXIT;延时882微秒后判断P3.2脚是否出现高电平如果有就退出解码程序
DJNZ R6, SB;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序
;以上完成对遥控信号的9000微秒的初始低电平信号的识别。
JNB P3.2, $ ;等待高电平避开9毫秒低电平引导脉冲
ACALL YS2 ;延时4.74毫秒避开4.5毫秒的结果码
MOV R7,#26;忽略前26位系统识别码
JJJJA:JNB P3.2,$;等待地址码第一位的高电平信号
LCALL YS1;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
MOV C,P3.2;将P3.2引脚此时的电平状态0或1存入C中
JNC UUUA;如果为0就跳转到UUUA
LCALL YS3;检测到高电平1的话延时1毫秒等待脉冲高电平结束
UUUA: DJNZ R7,JJJJA
MOV R1,#1AH ;设定1AH为起始RAM区
MOV R2,#2;接收从1AH到1BH的2个内存,用于存放操作码和操作反码
PP: MOV R3,#8;每组数据为8位
JJJJ: JNB P3.2,$;等待地址码第一位的高电平信号
LCALL YS1;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
MOV C,P3.2;将P3.2引脚此时的电平状态0或1存入C中
JNC UUU;如果为0就跳转到UUU
LCALL YS3;检测到高电平1的话延时1毫秒等待脉冲高电平结束
UUU: MOV A,@R1;将R1中地址的给A
RRC A;将C中的值0或1移入A中的最低位
MOV @R1,A;将A中的数暂时存放在R1数值的内存中
DJNZ R3,JJJJ;接收满8位换一个内存
INC R1;对R1中的值加1,换下一个RAM
DJNZ R2,PP ;接收完8位数据码和8位数据反码,存放在1AH/1BH中
MOV A,1AH
CPL A;对1AH取反后和1BH比较
CJNE A,1BH,EXIT;如果不等表示接收数据发生错误,放弃
MOV P1,1AH;将按键的键值通过P1口的8个LED显示出来!
CLR P2.0;蜂鸣器鸣响-嘀嘀嘀-的声音,表示解码成功
LCALL YS2
LCALL YS2
LCALL YS2
SETB P2.0;蜂鸣器停止(使用时可以将J2的YINYUE脚用跳线接J4 的XS1脚才可以使用蜂鸣器)可以看原理图
EXIT: SETB EA ;允许中断
RETI ;退出解码子程序
YS1: MOV R4,#20 ;延时子程序1,精确延时882微秒
D1: MOV R5,#20
DJNZ R5,$
DJNZ R4,D1
RET
YS2: MOV R4,#10 ;延时子程序2,精确延时4740微秒
D2: MOV R5,#235
DJNZ R5,$
DJNZ R4,D2
RET
YS3: MOV R4,#2;延时程序3,精确延时1000微秒
D3:MOV R5,#248
DJNZ R5,$
DJNZ R4,D3
RET
END
以上程序紧供参考。
0A 01
11 12 13 14
15 16 17 18
19 10 1A 1B
0E 02 03 1C
06 04 05 0C
0D 08 09 1D
00 1F 1E 0B
07 0F
这是按照红外遥控器按键的实际位置给出的32个按键的键值(16进制)
‘贰’ 红外通信协议的典型案例
针对便携产品应用的红外数据通信模块(图)
作者:解放军理工大学刘荣何敏日期:2005-6-1
摘要:红外通信有着成本低廉、连接方便、简单易用和结构紧凑的特点,因此在小型的移动设备中获得了广泛的应用。目前大多数作为采样数据的终端希望通过串口或红外接口与移动设备(如掌上电脑等)进行通信。和传统的遥控器中采用的红外相比较,红外数据传输的实现方式是不同的。在笔记本电脑,手机,PDA和数码相机上的红外传输均采用红外数据传输。本文介绍了红外数据通信实现的原理,标准和方法。以实现和PDA(奥克码—桑夏PPC2188型)的红外数据通信为例介绍了该模块的实现原理和方法。关键词:IrDA;红外通信;PDA
---传统的红外通信设备主要是指红外遥控器和早期的PDA中采用的38kHz红外调制和解调方式。这种方式实现简单,但是误码率较高,不适合进行数据传输,特别是数据量大的时候。为此,IrDA组织(InfraredDataAssociation)规定了红外数据传输的标准IrDA,它规定了通过红外设备进行无线传输的方法。1994年,第一个IrDA的红外数据通信标准发布,即IrDA1.0。IrDA规范包含两个设备之间通信的标准以及与其他设备进行通信的协议。IrDA标准包含设备之间通信数据的格式以及与其他设备进行通信的协议。目前符合IrDA的设备有:笔记本电脑,手机,掌上电脑,数码相机等。Linux操作系统支持IrDA。目前,很多公司根据该标准生产了各种用于红外数据传输的芯片,如HP公司生产的HSDL-1000、HSDL-4230、HSDL-4220和HSDL-7000,Zilog生产的ZHX1010、ZHX1210、ZHX1810、ZHX1820。在桑夏公司的奥克码—桑夏PPC2188型PDA上采用的就是ZHX1810芯片。下面分别介绍传统的红外通信和红外数据通信的实现原理和方法。
1传统的红外通信---1.1原理---传统的红外设备传输数据时,可以采用38kHz的载波进行调制和解调。采用调幅的方式对数据进行调制,通过发光二极管将数据发送出去;采用专门的解调芯片接受红外发送来的数据。---1.2实现方法---在终端上实现数据的红外通信中,采用了图1中的电路图。
其中IFR_CLK输出频率为38kHz的方波,TXD为待发送的数据,两个信号通过有MC9013组成的电路进行调制,通过TSAL6200调制过的信号发送出去;---SFH5110—38为载波为38kHz的解调芯片,接受外部来的信号,将解调后的数据送到RXD;---在终端中,采用了以上的电路和单片机进行连接,就可以实现传统的载波(38kHz)调制解调的红外通信。其中TXD和RXD分别接在单片机的串口的发送端和接受端,IFR_CLK接在一般的IO口上。---在单片机的软件实现中,最主要的是在需要发送数据的时候用定时器在IFR_CLK口线上产生38kHz的方波。在这里,串口的速率一般较低。
---1.3缺点---(1)采用调幅进行传输,抗干扰能力差;---(2)在发送数据时,输出的功率一定时,用于信号传输的功率小,接收到的数据的信噪比小,容易误判数据;---(3)受到输出功率的影响,数据传输的距离短,速度慢;---(4)受到传输速率的影响,传输的数据量不能太大;---(5)由于没有相应的协议支持,将接收到的所有数据(包括正常的数据和干扰引起的非正常数据)送到RXD。
2红外数据通信---2.1红外数据通信的速率和物理层的数据帧格式---在红外数据传输中,对串口发送的数据采用脉冲进行调制的方式。在IrDA标准1.0中,脉冲的宽度为3/16的BIT占空比或者为固定的1.63μs的脉冲宽度。IrDA1.0简称为SIR,以系统的异步通信收发器(UART)为依托,由于受到UART通信速率的限制,SIR的最高通信速率只有115.2Kbps,也就是大家熟知的电脑串行端口的最高速率。在图2中给出了脉冲调制前的异步串口UART的数据帧格式和进行脉冲调制后的红外IR帧格式,其中,红外脉冲调制中的没有脉冲代表UART中的“1”,红外脉冲调制中有脉冲代表UART中的“0”;在没有串口数据传送时,红外数据帧中没有脉冲。
---1996年,颁布了IrDA标准1.1,即快速红外通信,简称为FIR。与SIR相比,由于FIR不再依托UART,其最高通信速率有了质的飞跃,可达到4Mbps的水平。FIR采用了全新的4PPM调制解调(PulsePositionMolation),即通过分析脉冲的相位来辨别所传输的数据信息,其通信原理与SIR是截然不同的,但由于FIR在115.2Kbps以下的速率依旧采用SIR的那种编码解码过程,所以它仍可以与支持SIR的低速设备进行通信,只有在通信对方也支持FIR时,才将通信速率提升到更高水平。对4Mbps的速率,需要使用1/4的脉冲的相位进行调制(即所谓的4PPM调制),利用脉冲四个不同的相位(位置)的一个脉冲对两个BIT进行编码。因此,前面利用脉冲有无进行调制,这里利用脉冲及脉冲的位置确定调制和解调的信号。例如,两个BIT00调制为1000(一个BIT,其中第一个1/4BIT时间有脉冲,其他3/4时间无脉冲),两个BIT01调制为0100(一个BIT,其中第二个1/4BIT时间有脉冲,其他3/4时间无脉冲)。这样,用4个脉冲就可以传输一个字节的数据量。
在和终端进行通信的设备中,数据的传输通常以系统的异步通信收发器(UART)为依托,我们只需要采用符合IrDA标准1.0的红外器件。目前,红外数据传输芯片包括两种,一种以HP公司HSDL-1000芯片为代表,HSDL-1000的一端输入为符合IrDA1.0标准的红外数据,一端为异步通信(UART)数据,可以直接用在终端中作为UART和红外数据的转换器。另外一种以Zilog生产的ZHX1810为代表,只是将红外信号转换为电信号,或将电信号转换为红外信号的红外收发器件,这种芯片在终端设备中需要应用时,需要将脉冲转换为异步通信的数据,或将异步通信的数据转换为脉冲信号方可使用。---2.2采用脉冲进行调制的原因---红外接收器需要一种方式来区分周围的干扰,噪声和信号。为了这个目的,通常利用尽可能高的输出功率:高的功率表示在接收器中的大电流,有好的信噪比。然而,IR-LED(红外灯)不可能在全部的时间连续的以高功率进行数据的发送。因此,使用每个BIT只有3/16或1/4脉冲宽度的信号进行传输。这样,输出的功率可以达到IR-LED(红外灯)连续闪烁的最大功率的4~5倍。另外,传输的途径不会携带直流成分(由于接收器连续的适应周围的环境,只检测环境变化),这样必须利用脉冲调制。---2.3红外数据通信的协议---在红外数据通信中,很容易受到外界的干扰,只有符合一定格式的数据才是正确的数据。为此,IrDA标准指定三个基本的规范和协议,包括:物理层规范(),连接建立协议(LinkAccessProtocol:IrLAP)和连接管理协议(LinkManagementProtocol:IrLMP)。物理层规范制定了红外通信硬件设计上的目标和要求,IrLAP和IrLMP为两个软件层,负责对连接进行设置、管理和维护。在IrLAP和IrLMP基础上,针对一些特定的红外通信应用领域,IrDA还陆续发布了一些更高级别的红外协议,如TinyTP、IrOBEX、IrCOMM、IrLAN、IrTran-P等。它们之间的关系如图3所示。
---奥克码—桑夏PPC2188型PDA的操作系统为桑夏2000操作系统,该操作系统为嵌入式的中文操作系统,其中有支持红外通信的IrDA红外通信协议栈。终端需要和PDA进行红外通信的时候,也需要有支持红外通信的IrDA红外通信协议栈。有了支持红外通信的IrDA红外通信协议栈,终端不仅可以和PDA进行通信,也可以同带有红外通信口的笔记本电脑、手机、掌上电脑、数码相机等进行红外通信。
3实现终端与PDA的红外通信---在终端设备中,要实现和PDA的红外通信,除了要实现将红外数据转换为UART数据,还需要编制IrLAP和IrLMP层的协议。为了降低成本,我们直接采用了红外收发器件ZiLOG生产的红外收发器作为物理层的部分器件,而将脉冲和UART之间的数据转换用软件来实现。目前,实现了以下的硬件和软件的研制和测试,这种终端与PDA的红外通信是可靠的。---3.1ZHX1810
---ZiLOG为OEM客户和最终用户提供了完整的红外数据收发方案。ZiLOG的红外收发器被广泛的应用于各种PDA产品,移动电话以及相关领域中。---最新公布的几款红外收发器ZHX1403,ZHX3403,以及ZHX1203,他们都具有极小巧的外型尺寸,ZiLOG称之为Ultraslim结构。此外ZHX1403和ZHX3403还具有AlwaysOn技术,使得长时间的红外功能开启成为了可能,这无疑为红外设备的应用增加了更多的可能性。---在本系统的设计中,采用了ZiLOG的ZHX1810。由于红外收发器也可以接收到自己发出的数据,实现的红外数据通信是半双工的。---在图4中给出了ZHX1810的内部结构。---LEDA:通过一个外接的电阻接到电源上,给LED提供电流。---TXD:用来传输串行数据。通过一个电阻接到地上,当关闭模式时处于开路状态。---RXD:用来接收串行数据(在关闭模式时处于三态),不需要外接电阻。---SD:用来将内部的电路控制在关闭模式。---在Vcc和GND之间接一个0.33μF的电容。---3.2硬件组成---为了使终端的功能和红外通信之间相对独立,我们利用了单独的单片机AT89C2051实现红外协议栈中的相关协议。AT89C2051接收到TXD发来的数据,进行处理之后将UART数据转换为对应的脉冲数据,通过ZHX1810发送出去;AT89C2051接收到ZHX1810发送来的脉冲数据,根据IrDA的相关协议栈进行解释后,将数据通过RXD以UART数据形式发送出去。从而实现红外通信。---图5中的硬件电路是实现红外通信的最低硬件配置。如果需要适应不同的波特率,需要在硬件图中加跳线来识别。如果需要实现完整的IrDA协议栈,需要在电路中加上IIC总线的存储单元;或者采用带有数据总线和地址总线的单片机,加上RAM(如HM6116)来实现。---在这里,由于桑夏公司的奥克码—桑夏PPC2188型PDA可以跳过IrDA协议栈中的连接建立协议层和连接管理协议层,只需要实现物理层的部分功能,终端采用如下的电路图就可以实现和奥克码—桑夏系列的PDA之间的红外通信。
---3.3软件实现的功能和流程---软件实现的功能如下。---软件的编写是终端和PDA进行红外通信的重点,考虑到软件的可移植性和程序执行的速度,采用了C语言进行编写,主要需要实现的功能如下:---(1)根据跳线识别不同的波特率,支持的波特率的传输范围为1200bps~57600bps;---(2)由于设置红外默认的状态为接收状态;---(3)物理层判断红外口有无接收到脉冲数据,将接收到的脉冲进行解释后送到红外数据接收缓存区;---(4)实现连接建立协议层IrLAP,和PDA建立连接;注意,这种建立的连接是单工的,只有在该次通信完成时才建立下次的连接;---(5)实现连接管理协议层IrLMP的功能;---(6)将从红外接收的数据通过RXD送到终端的异步串口接收端;---(7)从终端的异步串口发送端接收数据,根据IrDA协议栈,和PDA建立连接后,将从终端接收到的数据通过红外发送到PDA;---在软件的实现中,对终端的数据传输而言,数据是进行半双工的透明的传输。---软件的流程如图6所示。
4总结---为了便于将这样的模块应用于各种带有红外的移动终端设备的红外数据通信,我们采用了单独的MCU来实现串口数据和红外数据之间的转换。由于波特率的传输范围为1200~57600bps,我们只实现了目前广泛使用的SIR标准通信。该模块已经应用在和PDA红外通信的电路中,性能稳定。
参考文献1何立民.MCS-51系列单片机应用系统设计.北京航空航天大学出版社,HX1810SlimLine(tm)SIRTransceiver
‘叁’ 红外通信协议的红外通信接口的硬件电路设计
单片机本身并不具备红外通信接口,但可以利用单片机的串行接口与片外的红外发射和接收电路,组成一个应用于单片机系统的红外串行通信接口,如图1所示。
‘肆’ 关于单片机红外遥控代码部分的几个问题: 1.Ircordpro函数中if(cord>7)是干什么用的
判断长短脉宽啊,宽脉冲才是逻辑1。
看程序之前先看红外协议的波形图,光看程序的话当然难以理解的。
‘伍’ 怎么利用单片机 红外遥控 实现小车向左转和向右转
你要先了解红外的通信协议啊
写出解码并用lcd显示的程序,因为每个遥控器的机器码都不一定一样的。
你再根据每个的码值设定单片机的动作就好了啊。
如果你要驱动小车。。貌似你还要加个电机的驱动模块。你靠单片机的板子是带不动的。
‘陆’ 51单片机的红外通信程序数据码是干什么的
系统码是用来识别不同的设备,用户码用来识别不同的按键,例如同一厂家生产的电视机和DVD,都有音量调节,它们的用户码是有可能相同,但系统码不同,所以不会相互干扰,同一设备不同按键,用户码是不相同的。
‘柒’ 单片机开发,如何获取家用空调(我的是海尔空调)遥控红外通信协议,码表
,空调器的遥控码比较长,达100多位,分析其规律比较难,但是先要会记录其主要代码,用定时器记录其高低电平的时间依次存入RAM中,待一帧数据结束后,再存入EEPROM中,可以发往上位机进行分析
也可以不加识别地再次调用,这样会占用较大的EEPROM空间
因此不能记录其所有的按键状态 同样是开机按键,制冷和制热状态下的遥控码是不同的
‘捌’ 咋么用单片机来实现红外检测
单片机系统中红外通信接口的设计
http://www.ecbbs.com/dispbbs.asp?BoardID=1010&ID=13621
‘玖’ 单片机中红外通信TXD和RXD怎么使用
是这样的,一般的红外通信模块使用38kHz的载频,所以你必须提供一个38kHz的信号。
根据你的描述,可以这样设计:555产生38kHz的载波信号;该载波信号和单片机的TXD输出信号经过一个与门;那么与门输出的就是经过调制的信号;最后通过红外二极管将此信号发射出去。
接收端就很简单了,直接把红外接收模块的输出脚接RXD即可。
‘拾’ 红外传感器和单片机之间怎么连接
红外传感器和单片机之间的连接方法:
红外传感器绝大部分都是通过测引脚电压换算成距离。所以一般红外都有三根引脚,VCC和GND肯定会接噻,然后信号线接到你开启单片机的ADC通道对应的引脚,读该引脚的电平换算成距离。
红外传感器如果是数据信号,有几个脚,就用单片机几个脚连接,然后根据输出信号的时序写程序读。如果是模拟信号,就得用到A/D转换电路。
(10)单片机红外通信扩展阅读:
红外传感器的相关要求规定:
1、红外线传感器利用远红外线范围的感度做为人体检出用,红外线的波长比可见光长而比电波短。红外线只由热的物体放射出来,凡是存在于自然界的物体,如人类、火、冰等等全部都会射出红外线,只是其波长因其物体的温度而有差异而已。
2、利用红外辐射的热效应,探测器的敏感元件吸收辐射能后引起温度升高,进而使某些有关物理参数发生变化,通过测量物理参数的变化来确定探测器所吸收的红外辐射。
3、红外传感器已经在现代化的生产实践中发挥着它的巨大作用,随着探测设备和其他部分的技术的提高,红外传感器能够拥有更多的性能和更好的灵敏度。