导航:首页 > 操作系统 > 单片机红外通信原理

单片机红外通信原理

发布时间:2022-12-14 12:39:16

1. 用51单片机制作学习型红外遥控器的原理

以下是程序,调试成功,LCD1602显示

//本解码程序适用于NEC的upd6121及其兼容芯片的解码,支持大多数遥控器实验板采用11.0592MHZ晶振

#include<reg52.h>//包含单片机寄存器的头文件

#include<intrins.h>//包含_nop_()函数定义的头文件

sbitIR=P3^2;//将IR位定义为P3.2引脚

sbitRS=P2^0;//寄存器选择位,将RS位定义为P2.0引脚

sbitRW=P2^1;//读写选择位,将RW位定义为P2.1引脚

sbitE=P2^2;//使能信号位,将E位定义为P2.2引脚

sbitBF=P0^7;//忙碌标志位,,将BF位定义为P0.7引脚

sbitBEEP=P3^6;//蜂鸣器控制端口P36

unsignedcharflag;

unsignedcharcodestring[]={"1602IR-CODETEST"};

unsignedchara[4];//储存用户码、用户反码与键数据码、键数据反码

unsignedintLowTime,HighTime;//储存高、低电平的宽度

/*****************************************************

函数功能:延时1ms

***************************************************/

voiddelay1ms()

{

unsignedchari,j;

for(i=0;i<10;i++)

for(j=0;j<33;j++)

;

}

/*****************************************************

函数功能:延时若干毫秒

入口参数:n

***************************************************/

voiddelay(unsignedcharn)

{

unsignedchari;

for(i=0;i<n;i++)

delay1ms();

}

/*********************************************************/

voidbeep()//蜂鸣器响一声函数

{

unsignedchari;

for(i=0;i<100;i++)

{

delay1ms();

BEEP=!BEEP;//BEEP取反

}

BEEP=1;//关闭蜂鸣器

delay(250);//延时

}

/*****************************************************

函数功能:判断液晶模块的忙碌状态

返回值:result。result=1,忙碌;result=0,不忙

***************************************************/

unsignedcharBusyTest(void)

{

bitresult;

RS=0;//根据规定,RS为低电平,RW为高电平时,可以读状态

RW=1;

E=1;//E=1,才允许读写

_nop_();//空操作

_nop_();

_nop_();

_nop_();//空操作四个机器周期,给硬件反应时间

result=BF;//将忙碌标志电平赋给result

E=0;

returnresult;

}

/*****************************************************

函数功能:将模式设置指令或显示地址写入液晶模块

入口参数:dictate

***************************************************/

voidWriteInstruction(unsignedchardictate)

{

while(BusyTest()==1);//如果忙就等待

RS=0;//根据规定,RS和R/W同时为低电平时,可以写入指令

RW=0;

E=0;//E置低电平(根据表8-6,写指令时,E为高脉冲,

//就是让E从0到1发生正跳变,所以应先置"0"

_nop_();

_nop_();//空操作两个机器周期,给硬件反应时间

P0=dictate;//将数据送入P0口,即写入指令或地址

_nop_();

_nop_();

_nop_();

_nop_();//空操作四个机器周期,给硬件反应时间

E=1;//E置高电平

_nop_();

_nop_();

_nop_();

_nop_();//空操作四个机器周期,给硬件反应时间

E=0;//当E由高电平跳变成低电平时,液晶模块开始执行命令

}

/*****************************************************

函数功能:指定字符显示的实际地址

入口参数:x

***************************************************/

voidWriteAddress(unsignedcharx)

{

WriteInstruction(x|0x80);//显示位置的确定方法规定为"80H+地址码x"

}

/*****************************************************

函数功能:将数据(字符的标准ASCII码)写入液晶模块

入口参数:y(为字符常量)

***************************************************/

voidWriteData(unsignedchary)

{

while(BusyTest()==1);

RS=1;//RS为高电平,RW为低电平时,可以写入数据

RW=0;

E=0;//E置低电平(根据表8-6,写指令时,E为高脉冲,

//就是让E从0到1发生正跳变,所以应先置"0"

P0=y;//将数据送入P0口,即将数据写入液晶模块

_nop_();

_nop_();

_nop_();

_nop_();//空操作四个机器周期,给硬件反应时间

E=1;//E置高电平

_nop_();

_nop_();

_nop_();

_nop_();//空操作四个机器周期,给硬件反应时间

E=0;//当E由高电平跳变成低电平时,液晶模块开始执行命令

}

/*****************************************************

函数功能:对LCD的显示模式进行初始化设置

***************************************************/

voidLcdInitiate(void)

{

delay(15);//延时15ms,首次写指令时应给LCD一段较长的反应时间

WriteInstruction(0x38);//显示模式设置:16×2显示,5×7点阵,8位数据接口

delay(5);//延时5ms

WriteInstruction(0x38);

delay(5);

WriteInstruction(0x38);

delay(5);

WriteInstruction(0x0C);//显示模式设置:显示开,有光标,光标闪烁

delay(5);

WriteInstruction(0x06);//显示模式设置:光标右移,字符不移

delay(5);

WriteInstruction(0x01);//清屏幕指令,将以前的显示内容清除

delay(5);

}

/************************************************************

函数功能:对4个字节的用户码和键数据码进行解码

说明:解码正确,返回1,否则返回0

出口参数:dat

*************************************************************/

bitDeCode(void)

{

unsignedchari,j;

unsignedchartemp;//储存解码出的数据

for(i=0;i<4;i++)//连续读取4个用户码和键数据码

{

for(j=0;j<8;j++)//每个码有8位数字

{

temp=temp>>1;//temp中的各数据位右移一位,因为先读出的是高位数据

TH0=0;//定时器清0

TL0=0;//定时器清0

TR0=1;//开启定时器T0

while(IR==0)//如果是低电平就等待

;//低电平计时

TR0=0;//关闭定时器T0

LowTime=TH0*256+TL0;//保存低电平宽度

TH0=0;//定时器清0

TL0=0;//定时器清0

TR0=1;//开启定时器T0

while(IR==1)//如果是高电平就等待

;

TR0=0;//关闭定时器T0

HighTime=TH0*256+TL0;//保存高电平宽度

if((LowTime<370)||(LowTime>640))

return0;//如果低电平长度不在合理范围,则认为出错,停止解码

if((HighTime>420)&&(HighTime<620))//如果高电平时间在560微秒左右,即计数560/1.085=516次

temp=temp&0x7f;//(520-100=420,520+100=620),则该位是0

if((HighTime>1300)&&(HighTime<1800))//如果高电平时间在1680微秒左右,即计数1680/1.085=1548次

temp=temp|0x80;//(1550-250=1300,1550+250=1800),则该位是1

}

a[i]=temp;//将解码出的字节值储存在a[i]

}

if(a[2]=~a[3])//验证键数据码和其反码是否相等,一般情况下不必验证用户码

return1;//解码正确,返回1

}

/*------------------二进制码转换为压缩型BCD码,并显示---------------*/

voidtwo_2_bcd(unsignedchardate)

{

unsignedchartemp;

temp=date;

date&=0xf0;

date>>=4;//右移四位得到高四位码

date&=0x0f;//与0x0f想与确保高四位为0

if(date<=0x09)

{

WriteData(0x30+date);//lcd显示键值高四位

}

else

{

date=date-0x09;

WriteData(0x40+date);

}

date=temp;

date&=0x0f;

if(date<=0x09)

{

WriteData(0x30+date);//lcd显示低四位值

}

else

{

date=date-0x09;

WriteData(0x40+date);

}

WriteData(0x48);//显示字符'H'

}

/************************************************************

函数功能:1602LCD显示

*************************************************************/

voidDisp(void)

{

WriteAddress(0x40);//设置显示位置为第一行的第1个字

two_2_bcd(a[0]);

WriteData(0x20);

two_2_bcd(a[1]);

WriteData(0x20);

two_2_bcd(a[2]);

WriteData(0x20);

two_2_bcd(a[3]);

}

/************************************************************

函数功能:主函数

*************************************************************/

voidmain()

{

unsignedchari;

LcdInitiate();//调用LCD初始化函数

delay(10);

WriteInstruction(0x01);//清显示:清屏幕指令

WriteAddress(0x00);//设置显示位置为第一行的第1个字

i=0;

while(string[i]!='')//''是数组结束标志

{//显示字符WWW.RICHMCU.COM

WriteData(string[i]);

i++;

}

EA=1;//开启总中断

EX0=1;//开外中断0

ET0=1;//定时器T0中断允许

IT0=1;//外中断的下降沿触发

TMOD=0x01;//使用定时器T0的模式1

TR0=0;//定时器T0关闭

while(1);//等待红外信号产生的中断

}

/************************************************************

函数功能:红外线触发的外中断处理函数

*************************************************************/

voidInt0(void)interrupt0

{

EX0=0;//关闭外中断0,不再接收二次红外信号的中断,只解码当前红外信号

TH0=0;//定时器T0的高8位清0

TL0=0;//定时器T0的低8位清0

TR0=1;//开启定时器T0

while(IR==0);//如果是低电平就等待,给引导码低电平计时

TR0=0;//关闭定时器T0

LowTime=TH0*256+TL0;//保存低电平时间

TH0=0;//定时器T0的高8位清0

TL0=0;//定时器T0的低8位清0

TR0=1;//开启定时器T0

while(IR==1);//如果是高电平就等待,给引导码高电平计时

TR0=0;//关闭定时器T0

HighTime=TH0*256+TL0;//保存引导码的高电平长度

if((LowTime>7800)&&(LowTime<8800)&&(HighTime>3600)&&(HighTime<4700))

{

//如果是引导码,就开始解码,否则放弃,引导码的低电平计时

//次数=9000us/1.085=8294,判断区间:8300-500=7800,8300+500=8800.

if(DeCode()==1)//执行遥控解码功能

{

Disp();//调用1602LCD显示函数

beep();//蜂鸣器响一声提示解码成功

}

}

EX0=1;//开启外中断EX0

}

2. 红外发射与接收的工作原理是什么

按一定的振荡频率供电红外光发射管,接收红外光管的振荡频率与发射的频率相同,在有效发射、接收角度及无障碍距离就能接收到红外光工作。

3. 红外接收头的基本原理

红外接收头一般是接收、放大、解调一体头,一般红外信号经接收头解调后,数据
“0”和“1”的区别通常体现在高低电平的时间长短或信号周期上,单片机解码时,通常将接收头输出脚连接到单片机的外部中断,结合定时器判断外部中断间隔的时间从而获取数据。重点是找到数据“0”和“1”间的波形差别。
3条腿的红外接收头一般是接收、放大、解调一体头,接收头输出的是解调后的数据信号(具体的信号格式,搜“红外
信号
格式”,一大把),单片机里面需要相应的读取程序。
红外通信是利用红外技术实现两点间的近距离保密通信和信息转发。它一般由红外发射和接收系统两部分组成。发射系统对一个红外辐射源进行调制后发射红外信号,而接收系统用光学装置和红外探测器进行接收,就构成红外通信系统。
先讲一讲什么是红外线。我们知道,人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。其中红光的波长范围为0.62~0.76μm;紫光的波长范围为0.38~0.46μm。比紫光波长还短的光叫紫外线,比红光波长

4. 红外通信协议的基本原理

红外通信是利用950nm近红外波段的红外线作为传递信息的媒体,即通信信道。发送端采用脉时调制(PPM)方式,将二进制数字信号调制成某一频率的脉冲序列,并驱动红外发射管以光脉冲的形式发送出去;接收端将接收到的光脉转换成电信号,再经过放大、滤波等处理后送给解调电路进行解调,还原为二进制数字信号后输出。
简而言之,红外通信的实质就是对二进制数字信号进行调制与解调,以便利用红外信道进行传输;红外通信接口就是针对红外信道的调制解调器。

5. 红外线通信的原理

大气对红外线辐射的吸收,主要是由大气中的水蒸汽、二氧化碳和高层大气中的臭氧分子造成的。这些大气分子的强烈吸收使大气对红外线辐射的大部分区域是不透明的,只有在某些特定的波长区,红外线辐射才能透过。这些特定的波长区称为红外线辐射的“大气窗口”,它们几乎都集中在25μm以下的近红外和中红外区域,即1.15~1.35,1.45~1.8,1.9~2.5,3.05~4.1,4.5~5.5,7.9~13.2、17~28μm。另外,在波长为300、600μm附近区域,大气也呈现出某些透过特性。
散射是大气对红外线辐射的另一种重要作用。散射有两种不同的类型,即瑞利散射和弥散射。瑞利散射是由大气分子引起的,它对红外线辐射的影响并不特别重要,对于波长大于lμm的辐射的影响常可被忽略。弥散射是由大气中的悬浮粒子如雨、雪、雾、云、灰尘和烟的微粒造成的,这对红外线传输过程中的衰减有重要作用。
红外通信是利用950nm近红外波段的红外线作为传递信息的媒体,即通信信道。发送端将基带二进制信号调制为一系列的脉冲串信号,通过红外发射管发射红外信号。接收端将接收到的光脉转换成电信号,再经过放大、滤波等处理后送给解调电路进行解调,还原为二进制数字信号后输出。常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法。
简而言之,红外通信的实质就是对二进制数字信号进行调制与解调,以便利用红外信道进行传输;红外通信接口就是针对红外信道的调制解调器。
红外线通信可用于沿海岛屿间的辅助通信,室内通信,近距离遥控,飞机内广播和航天飞机内宇航员间的通信等。
特点
红外线具有容量大,保密性强,抗电磁干扰性能好,设备结构简单、体积小、重量轻、价格低;但在大气信道中传输时易受气候影响的特点。红外线波长范围为0.70μm~lmm,其中300μm~lmm区域的波也称为亚毫米波。大气对红外线辐射传输的影响主要是吸收和散射。
红外线通信系统
红外线通信系统一般由红外线发射系统和接收系统组成。对于客机内的红外线通信系统,采用低功率的近红外线(波长为0.72~1.5μm)传送信号,对人体健康尤其对人的眼睛无任何伤害作用,也不会干扰飞机与陆地之间的无线电通信。其工作过程是:音频信号先被转换成数字信号,再调制在红外线上,通过特制的红外线发射器,使载有音频信号的红外线充满机舱内的每一个角落。每个座位上备有的一副“耳机”,实际上是一只红外线接收机,它能将红外线信号变为电信号,再进而还原成声音;用电池工作,不需要任何外部连线。旅客只要载上这副“耳机”,开启电源,拨动相应的选择开关,就可收听到各种不同的节目。
技术标准
红外线通讯技术包含下列规格:IrPHY、IrLAP、IrLMP、IrCOMM、TinyTP、IrOBEX、IrLAN以及IrSimple。
IrDA1.0标准简称SIR(SerialInfrared,串行红外协议),它是基于HP-SIR开发出来的一种异步的、半双工的红外通信方式,它以系统的异步通信收发器(UniversalAsynchronousReceiver/Transmitter,UART))依托,通过对串行数据脉冲的波形压缩和对所接收的光信号电脉冲的波形扩展这一编解码过程(3/16EnDec)实现红外数据传输。SIR的最高数据速率只有115.2kbps。在1996年,发布了IrDA1.1协议,简称FIR(FastInfrared,快速红外协议),采用4PPM(PulsePositionMolation,脉冲相位调制)编译码机制,最高数据传输速率可达到4Mbps,同时在低速时保留1.0标准的规定。之后,IrDA又推出了最高通信速率在16Mbps的VFIR(VeryFastInfrared)技术,并将其作为补充纳入IrDA1.1标准之中。
IrDA标准都包括三个基本的规范和协议:红外物理层连接规范IrPHY()、红外连接访问协议IrLAP(InfraredLinkAccessProtoco1)和红外连接管理协议IrLMP()。IrPHY规范制订了红外通信硬件设计上的目标和要求;IrLAP和IrLMP为两个软件层,负责对连接进行设置、管理和维护。在IrLAP和IrLMP基础上,针对一些特定的红外通信应用领域,IrDA还陆续发布了一些更高级别的红外协议,如TinyTP、IrOBEX、IrCOMM、IrLAN、IrTran-P和IrBus等等。
IrPHY:是指红外线通信的最低层,物理层。其中重要的规格如下:
距离(标准:1米,低功率传输至低功率:0.2米,标准至低功率:0.3米)
角度(最小圆锥状+-15°)
速度(2.4千位元/秒至16百万位元/秒)
调变(基频带,无载波)
红外线过滤视窗
红外线通信收发器借由一束圆锥状光束范围内的红外线脉波传输,其圆锥状光束自中心算起最小有15度的范围。
红外线通信物理层规范需要至少在一米外还能辨识的光信号的最小光量。
同时,规范中也定义两通讯装置接近时不会过量的最大光量。
在实用阶段,市场上有些装置没有做到一米的传输距离。
同时也有些装置没有预留非常接近时的容忍值。
红外线通信的典型甜区为距离收发器5厘米至60厘米范围之中,在圆锥状光束的中心点处。
红外线通信的资料通讯作动在半双工模式,这是因为装置在发射时会被自己的接收器接收到,因此全双工变得不可行。
两装置间借由快速切换连接便可模拟全双工。
主要装置端控制着连接的时序,但双边可依照实际情况将传输速度切换至最高。
传输速率落在三大分类:SIR、MIR以及FIR。
SIR的速度范围包含了RS-232的速度定义(9600位元/秒,19.2千位元/秒,38.4千位元/秒,57.6千位元/秒,115.2千位元/秒)
装置最常见的传输速率为9600位元/秒,因此此一传输速率为所有在discovery状态与negotiation状态的速率。
MIR(中速率红外线)不是官方名词,有时用来表示0.576百万位元/秒至1.152百万位元/秒的速率范围。
FIR为IrDA物理层标准陈废的名词,虽然如此这个名词却也常用在表示4百万位元/秒速率。
FIR有时也用来表示所有大于SIR标定速率以上的速率。
然而,MIR与FIR使用不同的编码方式,与不同的封包架构。
因此,这两个非官方用词分别了两种不同的物理层实作方式。
未来有更快的传输速率(目前有VFIR),可支援到16百万位元/秒。
有VFIR的商品可用例如TFDU8108可操作在9.6千位元/秒至16百万位元/秒。
UFIR协定正在发展中。此一协定将可支援100百万位元/秒。

6. 红外遥控器原理 遥控器原理图

遥控器是一种用来远控机械的装置。现代的遥控器,主要是由集成电路电板和用来产生不同讯息的按钮所组成。下面一起来看看红外遥控器原理以及遥控器原理图吧。


红外遥控器原理


红外线遥控系统一般由发射器和接收器两部分组成。发射器由指令键、指令信号产生电路、调制电路、驱动电路及红外线发射器组成。当指令键被按下时,指令信号产生电路便产生所需要的控制信号,控制指令信号经调制电路调制后,最终由驱动电路驱动红外线发射器,发出红外线遥控指令信号。


接收器由红外线接收器件、前置放大电路、解调电路、指令信号检出电路、记忆及驱动电路、执行电路组成。当红外接收器件收到发射器的红外指令信号时,它将红外光信号变成电信号并送到前置放大电路进行放大,再经过解调器后,由信号检出电路将指令信号检出,最后由记忆电路和驱动电路驱动执行电路,实现各种操作。


控制信号一般以某些不同的特征来区分,常用的区分指令信号的特征是频率和码组特征,即用不同的频率或者编码的电信号代表不同的指令信号来实现遥控。所以红外遥控系统通常按照产生和区分控制指令信号的方式和特征分类,常分为频分制红外线遥控和码分制红外线遥控。



1红外遥控系统发射部分


红外遥控发射器由键盘矩阵、遥控专用集成电路、驱动电路和红外发光二极管三部分组成,结构如图1所示。

当有键按下时,系统延时一段时间防止干扰,然后启动振荡器,键编码器取得键码后从ROM中取得相应的指令代码(由0和1组成的代码),遥控器一般采用电池供电,为了节省电量和提高抗干扰能力,指令代码都是经32~56kHz范围内的载波调制后输出到放大电路,驱动红外发射管发射出940nm的红外光。当发送结束时振荡器也关闭,系统处于低功耗休眠状态。载波的频率、调制频率在不同的场合会有不同,不过家用电器多采用的是38kHz的,也就是用455kHz的振荡器经过12分频得到的。


遥控发射器的信号是由一串0和1的二进制代码组成的,不同的芯片对0和1的编码有所不同,现有的红外遥控包括两种方式:脉冲宽度调制(PWW)和脉冲位置调制(PPM或曼彻斯特编码)。两种形式编码的代表分别是NEC和PHILIPS的RC-5。


2红外遥控系统接收部分


接收部分是由放大器、限幅器、带通滤波器、解调器、积分器、比较器等组成的,比如采用较早的红外接收二极管加专用的红外处理电路的方法,如CXA20106,此种方法电路复杂,现在一般不采用。但是在实际应用中,以上所有的电路都集成在一个电路中,也就是我们常说的一体化红外接收头。一体化红外接收头按载波频率的不同,型号也不一样。由于与CPU的接口的问题,大部分接收电路都是反码输出,也就是说当没有红外信号时输出为1,有信号输出时为0,它只有三个引脚,分别是+5V电源、地、信号输出。



系统的设计


1单片机编码发射部分


①键盘部分

红外遥控器的发射器电路比较简单,由一个4×4矩形键盘、一个PNP驱动三极管、一个红外线发光二极管和两个限流电阻组成。要遥控哪台接收器由键盘输入,即由键盘输入要红外遥控的地址,地址经过编码、调制后通过红外发光二极管发射出去。

矩阵键盘部分由16个轻触按键按照4行4列排列,将行线所接的单片机的I/O口作为输出端,而列线所接的作为输入。当没有键被按下时,所有输出端都是高电平,代表没有键按下。有键按下时,则输入线就会被拉抵,这样,通过读入输入线的状态就可以知道是否有键被按下。

键盘的列线接到P1口的低4位,行线接到P1口的高4位,列线P1.0~P1.3设置为输入线,行线P1.4~P1.7设置为输出线。

检测当前是否有键被按下。检测的方法是使P1.4~P1.7输出为0,读取P1.0~P1.3的状态,若P1.0~P1.3为全1,则无键闭合,否则有键闭合。

去除键抖动。当检测到有键按下后,延时一段时间再做下一步检测判断。

若有键按下,应该识别出是哪一个键闭合。方法是对键盘的行线进行扫描。P1.4~P1.7按下面4种组合依次输出1110,1101,1011,0111,在每组行输出时读取P1.0~P1.3,若全为1,则表示0这行没有键输入,否则有键闭合。由此得到闭合键的行值和列值,然后采用计算的方法或者查表的方法将闭合键的行值和列值转换成所定义的值。

为了保证每闭合一次CPU仅作一次处理,必须去除键释放时的抖动。产生的键值放在发送数据库区,30H存放的是产生的键值,即要遥控的8位地址共1字节,31H放的是和30H中的相同的8位地址,地址码重发了一次,主要是加强遥控器的可靠性,如果两次地址码不相同,则说明本帧数据有错,应该丢弃。32H放的是00H(为了编程简单),33H放的是0FFH,一共32位数据。要发送数据时,只要到那里读取数据即可,然后调用发射子程序发送。



②载波部分


根据前面介绍的红外遥控的基本原理,红外遥控器编码调制的方法其实很简单,只要生成一定时间长的电平就可以。再通过一个38kHz载波调制便可以发射编码。载波的产生方法有多种,可以由CMOS门电路RC振荡器构成,或者由555时基电路构成等。

在此次设计中采用的是CPU延时,即用定时器中断完成,用单片机的T0定时产生38kHz载波。设定定时器为方式2,即自动恢复初值的8位计数器。TL0作为8位计数器,TH0作为计数初值寄存器,当TL0计数溢出时,一方面置1溢出标志位TF0,向CPU请求中断,同时将TH0内容送入TL0,使TL0从初值开始重新加1计数。因此,T0工作于方式2,定时精度比较高。根据计算,设定38KHz的定时初值,采用12kHz晶振的定时初值为0F3H,用11.0592kHz晶振时的初值为0F4H,设定好定时器中断,在中断程序中只写入取反P2.0(CPLP2.0),当要发送数据1时,前面560μs高电平发送时,先打开定时器中断,再启动定时器,允许定时器工作,延时560μs再关定时器,后面1690μs的低电平因为不发送信号,所以可以直接置P2.0高电平后,延时1690μs即可;数据0前面的560μs高电平和数据1的一样,后面560μs的低电平因为不发送信号,所以可以直接置P2.0高电平后,延时560μs即可。




2红外接收解码电路


红外遥控接收采用一体化红外接收头,它将红外接收二极管、放大器、解调、整形等电路安装在一起,只有三个引脚。红外接收头的信号输出端接单片机的INT0端,单片机中断INT0在红外脉冲下降沿时产生中断。电路如图3.3所示,图中增加一只PNP三极管对输出信号放大,R和C组成去耦电路抑制电源干扰。


3遥控信号的解码算法


平时,遥控器无键按下时,红外发射二极管不发出信号,遥控接收头输出信号1,有键按下时,0和1的编码的高电平经遥控接收头反相后会输出信号0,由于与单片机的中断脚相连,将会引起单片机中断(单片机预先设定为下降沿产生中断)。


遥控码发射时由9ms的高电平和4.5ms的低电平表示引导码,用560μs的高电平和560μs的低电平表示数据“0”,用560μs的高电平和1690μs的低电平表示数据“1”,引导码后面是4字节的数据。接收码是发射码的反向,所以判断数据中的高电平的长度是读出数据的要点,在这里用882μs(560~1690μs之间)作为标尺,如果882μs之后还是高电平则表示是数据1,将1写入寄存器即可(数据为1时还需要再延时一段时间使电平变低,用来检测下一个低电平的开始)。882μs后电平为低电平则表示是数据0,则将0写入寄存器中,之后再等待下一个低电平的到来。


继续接收下面的数据,当接收到32位数据时,说明一帧数据接收完毕,然后判断本次接收是否有效,如果两次地址码相同并且等于本系统的地址码,数据码和数据反码之和等于0FFH,则接收的本帧数据有效,点亮一只发光二极管,否则丢弃本次接收到的数据。


接收完毕后,初始化本次接收到的数据,准备下次遥控接收。


以上就是小编为大家介绍的遥控器原理,希望能够帮助到您。更多关于遥控器原理的相关资讯,请继续关注土巴兔学装修。

7. 红外接收头原理求高手

红外接收头原理是红外监测二极管监测到红外信号,然后把信号送到放大器和限幅器,限幅器把脉冲幅度控制在一定的水平,而不论红外发射器和接收器的距离远近。交流信号进入带通滤波器,带通滤波器可以通过30khz到60khz的负载波,通过解调电路和积分电路进入比较器,比较器输出 高低电平,还原出发射端的信号波形。

红外接收头的种类很多,引脚定义也不相同,一般都有三个引脚,包括供电脚,接地和信号输出脚。根据发射端调制 载波的不同应选用相应解调频率的接收头。

红外接收头内部放大器的增益很大,很容易引起干扰,因此在接收头的VCC (电压)PIN脚与GND(地线)pin脚须加上滤波电容,经专家测试试验一般在47uf 陶瓷电容(注意:电容加到100uf或20UF电容会导致接收头接收距离拉短)。

另针对VCC(电压)PIN脚与Vout(输出)之间串入一个10K欧姆的上拉电阻,电压不稳定的时候进行上拉作用。

红外发射器可从遥控器厂家定制,也可以自己用单片机的PWM产生,家庭遥控推荐使用红外发射管(L5IR4-45)的可产生37.91KHz的PWM, PWM占空比设置为1/3, 通过简单的定时中断开关PWM, 即可产生发射波形。

(7)单片机红外通信原理扩展阅读

目前有很多种芯片可以实现红外发射,可以根据选择发出不同种类的编码。由于发射系统一般用电池供电,这就要求芯片 的功耗要很低,芯片大多都设计成可以处于休眠状态,当有按键按下时才工作,这样可以降低功耗。

芯片所用的晶振应该有足够的耐物理撞击能力,不能选用普通的石英晶体,一般是选用陶瓷共鸣器,陶瓷共鸣器准确性没有石英晶体高,但通常 一点误差可以忽略不计。

红外接收头广泛应用于:空调、风扇、暖风机、加湿器、电视、DVD、机顶盒、车载移动DVD、硬盘播放器、多媒体组合音响、数码相框、手机等家电产品 。

电脑及周边设备,感应洁具,仪表,工业自动化,遥控玩具,通讯器材,照相器材,事务机器,金融电子 ,汽车电子,灯饰照明等领域。

8. 求单片机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进制)

9. 单片机串口通信原理

异步通信
固定波特率下传送0,1信号
就是在规定的时间间隔内传送0.1数据

10. 红外通信协议的典型案例

针对便携产品应用的红外数据通信模块(图)
作者:解放军理工大学刘荣何敏日期: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

阅读全文

与单片机红外通信原理相关的资料

热点内容
公司法pdf下载 浏览:379
linuxmarkdown 浏览:347
华为手机怎么多选文件夹 浏览:679
如何取消命令方块指令 浏览:345
风翼app为什么进不去了 浏览:774
im4java压缩图片 浏览:358
数据查询网站源码 浏览:146
伊克塞尔文档怎么进行加密 浏览:886
app转账是什么 浏览:159
php的基本语法 浏览:792
对外汉语pdf 浏览:516
如何用mamp本地web服务器 浏览:869
如何加密自己js代码 浏览:627
排列组合a与c的算法 浏览:534
如何在文件夹中找到同名内容 浏览:786
有什么app文字转韩文配音 浏览:372
循环宏1命令 浏览:35
斐波那契数列矩阵算法 浏览:674
公式保护后加密不了 浏览:82
java跳转到jsp 浏览:819