




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1、红外遥控系统通用红外遥控系统由发射和接收两人部分组成,应用编/解码专用集成电路芯片来进行控制 操作,如图1所示。发射部分包括键盘矩阵、编码调制、led红外发送器;接收部分包括光、电转换放人器、解调、解码电路。键盘f编码调制> led 遥控发射器遥控接收器图1红外遥控系统框图发射:红外遥控器接收:0038红外接收头另外,使用51单片机进行解码。2、原理图jp5irconwol-5t33pixpd111intot touch intpd遵ouch doutouch busypd51<lcd nvrpd6 16lcd nrdpd7 15rxpd01c20pex) (rxd)pd1 (
2、txd)pd2 (intoi pg (hsrri j pmpd5 (ocia)pd6 (wr)pd7 (rd)51单片机红外接收头与单片机连接原理图从原理图看出,ir的data脚与51的pd2(p32)相连。2、红外发射原理要对红外遥控器所发的信号进行解码,必须先理解这些信号。a)波形首先来看看,当我们按下遥控器吋,红外发射器是发送了一个什么样的信号波形,如下图:108ms位置g)由上图所示,当一个键按下超过22ms,振荡器使芯片激活,将发射一组108ms的编码脉冲 (由位置1所示)。如果键按下超过108ms仍未松开,接下来发射的代码(连发代码由位置3 所示)将仅由起始码(9ms)和结束码(2
3、.5ms)组成。下面把位置1的波形放人:由位置1的波形得知,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8 位地址码(川户编码)(9ms18ms),高8位地址码(用户编码)(9ms-18ms) ,8位数据码(键 值数据码)(9ms18ms)和这8位数据的反码(键值数据码反码)(9ms-18ms)组成。b)编码格式遥控器发射的信号由一串0和1的二进制代码组成.不同的芯片对0和1的编码有所不同。 通常冇曼彻斯特编码和脉冲宽度编码。xs-091遥控板的0和1采用pwm方法编码,即脉 冲宽度调制。下图为一个发射波形对应的编码方法:4.5ms n r1n一 _n n_yjns
4、4引导码001i放大0和1的波形如下图:bic “訂! 0.56m$2.25ms1.125ms遥控码的“0 "和r粹这种编码具有以下特征:以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进 制的“0";以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的t”。3、红外接收原理 a)波形红外接收头将38k载波信号过虑,接收到的波形刚好与发射波形相反:1 发射数据引导码起始码001101019ms4. 5ms125b32. 2smlrmj u ltli ltu38k载波 红外发射 接收解码放人,位定义()和位定义1波形如下:
5、遥控码的“0 ”和r ”4、解码原理及算法注:代码宽度算法:16位地址码的最短宽度:1.12xl6=18ms 16位地址码的最长宽度:2.24msx 16=36ms 可以得知8位数据代码及其8位反代码的宽度和不变:(1.12ms+2.24ms) x8=27ms 所有32位代码的宽度为(18ms+27ms) (36ms+27ms)对于红外线遥控对于很多电了爱好者来讲,都感觉到非常神奇,看不到,摸不着,但能实现 无线遥控,其实控制的关键就是我们要用单片机芯片来识别红外线遥控器发出红外光信号, 即我们通常所说的解码。单片机得知发过来的是什么信号,然后再做出相应的判断为控制, 如我们按电视机遥控器的频
6、道按钮,则单片机会控制更换电视频道,如按的是遥控器音量键, 则单片机会控制增减音量。解码的关键是如勺识别“0”和“1”!!从位的定义我们可以发现丫尸、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同!, “0”为0.56ms,t为1.68ms,所以必须根据高电平的宽度区别“0”和“厂。如果从0.56ms低电平过后,开始延时,0.56ms以后,若读到的电平为低,说明该位为“(t, 反之则为“1”,为了可靠起见,延时必须比0.56ms长些,但乂不能超过1.12ms,否则如果该 位为“0”,读到的已是下一位的高电平,因此取(12ms+0.56ms) /2=0.84ms最为可靠,一 般取0
7、.84ms左右均可。根据码的格式,应该等待9ms的起始码和4.5ms的结果码完成后才 能读码。5、实例代码:注意一下几点:1. 从上面“红外接收头与单片机连接原理图"來看,红外接收头的型号脚是与51的into和连, 所以需要使用into(外部中断0).2. 由于解码过程屮涉及到延时,为精确起见,我们选择使用定期时1来计时。实例代码:# include# include/函数原型void systemlnit(void);void delay_840us(void);void delay_2400us(void);void leddispo;unsigned char getcode(
8、void);/获得码 void delay(unsigned char loop);/位变量sbit irin = p3a2;sbit beep=p1a6;sbit swch = p1a7;机器码键值码;数码管显示缓冲/变量unsigned char kcyvaluc; unsigned char mavalue; unsigned char disbuf4j;unsigned char scan4=0x04,0x08,0x10,0x20; p2 位选择 unsigned char code tablc16= 共陰碼0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07
9、,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/*延时*/void dclay(unsigncd char loop)unsigned char i;for(i=0;i>8);tr1 = 1;whilc(!tfl);tf1=o;tr1=o;*延时9ms*/void delay_9000us(void) tl1 = 153.6;th 1 =223.6;tri = 1;while(!tfl);tf1 = 0;tri =0;*延时4.5ms*/void delay_4500us(void) th1 = 239.8;tl1 = 204.8;tri = 1;wh
10、ile(!tfl);tfi =0;tri =0;*系统初始化*/void systemlnit(void)irin = 1;ito = 1;tmod = 0x10;/into负跳变触发定时器1工作在方式1ea =exo-+*读码*/unsigned char getcode()unsigned char n;static temp = 0;for( n = 0; n v 8; n+ )while(!irin); /等待高电平,开始解码delay_840us(); / 延时 0.84msif(irin) 若仍然为高电平,则为1,否则为0 temp = (0x80l(tcmp» 1);
11、/ 1 while(irin);/等待跳变成低电平 else temp=()x()()l(temp» 1); / 0return temp;*数码管显示*/void leddispounsigned char i; for(i=0;iv4;i+)po=tabledisbufi;p2 = scani; delay(50); p0=0x00;void main(void)systemlnit();while(l)以卜是杳表显示disbufo=(keyvalue&0xf0)»4)&0x0f); disbuff l=kcy value &oxof; disb
12、uf2=(mavalue&0xf0)»4)&0x0f); disbuf3j=mavalue&oxof;leddispo;void inten_ir(void) interrupt 0*用户码和机器码*/unsigned char addrl,addrh,num 1 ,num2;ea = 0; 先关闭外部中断0delay_9000us(); / 检测 9ms 开始码讦(irin) ea= 1;return ;/检测是否为干扰信号/重新开启外部中断0/退出解码while(!irin); /等待跳为高电平delay_4500us(); / 检测 4.5ms 结果码i
13、f (irin) /检测是否为干扰信号ea=1;/重新开启外部中断0return ;退出解码/读码addrl=getcode(); /用户编码高位addrh=getcode(); /用户编码低位numl=getcode(); / 机器码num2=getcode(); / 机器码反码校验是否为错码if(numl !=num2)keyvalue=14;ea=1;return;keyvalue=num2;mavalue=addrh;ea=1;代码分析(只分析关键部位):1. 系统初始化systemlnit()系统初始化时,我们设置irin为高电平,同时把it0设置成1,即下降沿(负跳变)触发 中断。
14、这是用于接收波形的引导码是从低电平开始的(如上而接收波形所示)。这样,当按 下按键时,红外接收到信号,irin则发生从预先设置的高电平跳为低电平,从而产生中断。2. 解码冲断程序interr_ir(void)首先,第一步把ex0关中断,这步至关重要,因为一个接收波形许多的下降沿,这样会产 生干扰中断。接下来,使用定期时0延时9ms,跳过开始码。注意,延吋后,需要检测一下干扰信号。下一步,while(!ir!n);等待4.5ms高电平的到來,再延时4.5ms,跳过结果。引导码过后,开始读码,执行getcode():32位数据码,分4次读取,所以执行4次getcode(),读取一个字节数据过程如下: unsigned char getcode()unsigned char n;static temp = 0;for( n = 0; n < 8; n+ )whilc(!irin); /等待高电平,开始解码delay_840us(); / 延时 0.84msif(irin) 若仍然为高电平,则为1,否则为0temp = (0x80l(tcmp»l); /1while(irin); /等待跳变成低电平else temp=()x()()l(temp» 1); / 0return
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2019-2025年一级建造师之一建机电工程实务过关检测试卷A卷附答案
- 美食分享与社交媒体 炸鸡店的网络营销策略
- 悟空大圣的帅气妆容
- 保险公司插花活动方案
- 保险抽奖活动方案
- 保鲜膜亲子绘画活动方案
- 俱乐部创意活动方案
- 俱乐部策划活动策划方案
- 倡导自主活动方案
- 假日健康活动方案
- 健康风险的评估与管理策略试题及答案
- 车场日活动方案
- 炼化行业废弃物处理技术-全面剖析
- 煤矿事故、突发事件信息处理与报告制度
- 中医诊所管理规章制度
- 安徽省2024年普通高校招生普通高职(专科)提前批院校投档分数及名次
- 2025年准入性应知清单-站务员考试题库
- 2024北京东城区初一(下)期末英语试题和答案
- 肿瘤患者化疗的健康教育
- 核电站建设工程承包合同
- 产业创新生态协同机制-深度研究
评论
0/150
提交评论