红外遥控器解码程序 - 图文(6)

2019-03-15 14:38

if(date<=0x09) {

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

date=date-0x09; WriteData(0x40+date); }

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

/************************************************************ 函数功能:1602LCD显示

*************************************************************/ void Disp(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]); }

/************************************************************ 函数功能:主函数

*************************************************************/ void main() {

unsigned char i;

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

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

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

while(string[i] != '\\0') //'\\0'是数组结束标志 { // 显示字符 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); //等待红外信号产生的中断 }

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

*************************************************************/ void Int0(void) interrupt 0 {

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 }

9

红外线遥控是目前使用很广泛的一种通信和遥控技术。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩

具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。

红外线是太阳光线中众多不可见光线中的一种,由德国科学家霍胥尔于1800年发现,又称为红外热辐射,他将太阳光用三棱镜分解开,在各种不同颜色的色带位置上放置了温度计,试图测

量各种颜色的光的加热效应。结果发现,位于红光外侧的那支温度计升温最快。因此得到结论:太阳光谱中,红光的外侧必定存在看不见的光线,这就是红外线。也可以当作传输之媒界。 太

阳光谱上红外线的波长大于可见光线,波长为0.75~1000μm。红外线可分为三部分,即近红外线,波长为0.75~1.50μm之间;中红外线,波长为1.50~6.0μm之间;远红外线,波长为6.0~

l000μm 之间。

真正的红外线夜视仪是光电倍增管成像,与望远镜原理全完不同,白天不能使用,价格昂贵且需电源才能工作。

【红外遥控系统】

通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、

电转换放大器、解调、解码电路。

图1a《红外发射原理图》

图1b 《红外接受原理图》

【遥控发射器及其编码】

红外遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原

理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:

采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如

图2所示。

上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图3所示,连发波形

如图4所示。

UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01H;

后16位为8位操作码(功能码)及其反码。UPD6121G最多额128种不同组合的编码。

当遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45~63ms之间,图4为发

射波形图。

当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms),高8位地址码

(9ms~18ms),8位数据码(9ms~18ms)和这8位数据的反码(9ms~18ms)组成。如果键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)

组成。

代码格式(

以接收代码为准,接收代码与发射代码反向)

① 位定义

② 单发代码格式

③ 连发代码格式

注:代码宽度算法:

16位地址码的最短宽度:1.12×16=18ms 16位地址码的最长宽度:2.24ms×16=36ms

已知8位数据代码及其8位反代码的宽度和不变:(1.12ms+2.24ms)×8=27ms


红外遥控器解码程序 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:初三政治 4.4-5.2周测

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: