![整理红外数据传输_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/19/fd98e71a-64c6-4d7a-b21f-5e1a32642d47/fd98e71a-64c6-4d7a-b21f-5e1a32642d471.gif)
![整理红外数据传输_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/19/fd98e71a-64c6-4d7a-b21f-5e1a32642d47/fd98e71a-64c6-4d7a-b21f-5e1a32642d472.gif)
![整理红外数据传输_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/19/fd98e71a-64c6-4d7a-b21f-5e1a32642d47/fd98e71a-64c6-4d7a-b21f-5e1a32642d473.gif)
![整理红外数据传输_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/19/fd98e71a-64c6-4d7a-b21f-5e1a32642d47/fd98e71a-64c6-4d7a-b21f-5e1a32642d474.gif)
![整理红外数据传输_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/19/fd98e71a-64c6-4d7a-b21f-5e1a32642d47/fd98e71a-64c6-4d7a-b21f-5e1a32642d475.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精品文档红外数据传输一、红外通信原理红外遥控有发送和接收两个组成部分。发送端采用单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,通 过红外发射管发射红外信号。红外接收完成对红外信号的接收、放大、检波、整形,并解调出遥控编码脉冲。为了减少干扰,采用的是价格便宜性能可靠的一体化红外接收头(HS0038,它接收红外信号频率为 38kHz,周期约26卩s)接收红外信号,它同时对信号进行放大、检波、整形得到TTL电平的编码信号,再送给单片机,经单片机解码并执行去控制相关对象。如图1所示:单片机 出両制红夕卜发送解码红外发送部分由51单片机、键盘、红外发光二极管和7段数码管组成。键盘用于输入指令,
2、键的状态,并对红外信号进行调制,发光二极管产生红外线,数码管用来显示发送的键值。图51单片机检测键盘上按2红外发射电路+|4 7uHS00381002K红外接收部分由51单片机、一体化红外接收头HS0038和7段数码管组成。到的数据解码,通过数码管显示接收到的键值。图3红外接收电路二、编码、解码(1)二进制信号的调制 二进制信号的调制由单片机来完成,它把编码后的二进制信号调制成频率为51单片机检测 HS0038,并对HS0038接收38kHz的间断脉冲串,相当于用二进制信 4二进制号的编码乘以频率为 38kHz的脉冲信号得到的间断脉冲串,即是调制后用于红外发射二极管发送的信号如图码的调制所示I
3、LJiUiJlI图4二进制码的调制.icxlab,(2) 红外接收需先进行解调,解调的过程是通过红外接收管进行接收的。其基本工作过程为:当接收到调制信号时,输 出高电平,否则输出为低电平,是调制的逆过程(图5解调)。HS0038是一体化集成的红外接收器件,直接就可以输精品文档出解调后的高低电平信号;红外接收器HS0038的应用电路(图6)。(3) 红外遥控发射芯片采用PPM编码方式,当发射器按键按下后,将发射一组108ms的编码脉冲。遥控编码脉冲由组成。前导码、16位地址码(8位地址码、8位地址码的反码)和 16位操作码(8位操作码、8位操作码的反码)0.“1 ”。通过对用户码的检验,每个遥控
4、器只能控制一个设备动作,这样可以有效地防止多个设备之间的干扰。编码后面还要 有编码的反码,用来检验编码接收的正确性,防止误操作,增强系统的可靠性。前导码是一个遥控码的起始部分,由 一个9ms的高电平(起始码)和一个4. 5ms的低电平(结果码)组成,作为接受数据的准备脉冲。以脉宽为 56ms、周期为1. 12ms的组合表示二进制的“ 0”;以脉宽为1.68ms、周期为2. 24ms的组合表示二进制的(4) 单片机采用外部中断INT0管脚和红外接收头的信号线相连,中断方式为边沿触发方式。计算中断的间隔时间,来区分前导码、二进制的“1”、“0”码。并将8位操作码提取出来在数码管上显示。红外接收头输
5、出的原始遥控数据信号,正好和发射端倒向.也就是以前发射端原始信号是高电平,那接收头输出的就是低电平,反之.miLJOBrSAL62.*) recomiucTided to suppress power supply distiirbonces *) iqlffatsd supply voHage range ; 4 5V Vj 5 5V+J精品文档精品文档操作废玛操作玛地址码地址皮码图9发送一组完整的编码脉冲屮软件原理:9ms的低电平,和一个4.5ms的高电平,这个同步码头可以开始时发射一个特定的同步码头,对于接收端而言就是一个使程序知道从这个同步码头以后可以开始接收数据。采用脉宽调制的串行码
6、,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“ 0”以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“ 1 ”解码的关键是如何识别“ 0”和“ 1 ”,从位的定义我们可以发现“0”、“1 ”均以0.56ms的高电平开始,不同的是低电平的宽度不同,“0”为0.56ms, “ 1 ”为1.685ms,所以必须根据高电平的宽度区别“0”和“ 1”如果从0.56ms低电平过后,开始延时,0.56ms以后,若读到的电平为低,说明该位为“0”,反之则为“ 1 ”为了可靠起见,延时必须比0.56ms长些,但又不能超过1.12ms,否则如果
7、该位为“ 0”读到的已是下一位的高电平,因此取左右即可。根据红外编码的格式,程序应该等待9ms(1.12ms+0.56ms)/2=0.84ms最为可靠,一般取 0.84msDATA口和单片机的外部中断 0P3.2 口相连。当有红外信号时, 终止码的时间进行比较。从而检测红外的操作码。的起始码和4.5ms的结果码完成后才能读码。HS0038红外接收器,接收红外遥控器发射的信号,输出触发中断查询中断时间,并和红外起始码,“0” “ 1”整体流程图(1)发射部分:通过中断产生 38K的载波,TX端口产生发送的数据,然后经过与门放大经发射管发射数据: 38k载波第一列第二列第三列有效发送数据对管发射数
8、据精品文档Ba与门2)接受部分:HS0038A2接受到38k载波时,会输出低电平,否则 输出高电平。将HS0038A2产生的信号经过非门后得的原来的信号。HS0038A2产生信号 第一列经过非门后得到原来数据第二列经过与门(3)设计思想简介:1:对输入的数据进行编码。2:对编码进行脉冲调制。3:信号放大后,通过发射管发送 38khz信号。4:接收信号,进行解码。5:让51对信号进行处理(显示,统计,分析)。51可参考的程序(1)发送程序#in elude static bit OP; /红外发射管的亮灭static unsigned int count; / 延时计数器static unsig
9、ned int endcount; / 终止延时计数static unsigned int temp; / 按键static unsigned char flag; / 红外发送标志static unsigned char num;sbit ir_in=P 3M;char iraddr1; / 十六位地址的第一个字节char iraddr2; / 十六位地址的第二个字节unsigned char code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; / 共阳数码管
10、 0f void SendIRdata(char p_irdata);void delay(unsigned int);主函数 */void keyscan(); /* void main(void) num=0;P2=0x3f;count = 0;flag = 0;OP = 0;ir_in= 0;EA = 1; /允许CPU中断TMOD = 0x11; /设定时器 0和1为16位模式 1ET0 = 1; /定时器 0中断允许TH0 = 0xFF;TLO = 0xE6; 设定时值0为38K也就是每隔26us中断一次TR0 = 1 ;/开始计数 iraddr1=3;/00000011 iradd
11、r2=252;/11111100 dokeyscan();while(1);/*定时器 0中断处理 */void timeint(void) interrupt 1TH0=0xFF;TL0=0xE6; 设定时值为38K也就是每隔26us中断一次count+;if (flag=1)OP=OP;elseOP = 0;ir_in= OP;void SendIRdata(char p_irdata) int i;char irdata=p_irdata;/发送9ms的起始码endcount=223;flag=1;count=0;dowhile(countendcount);/*送 4 5ms 的纟结果
12、*/endcount=117;flag=0;count=0;dowhile(countendcount);/*发送十六位地址的前八位 */ irdata=iraddr1;for(i=0;i8;i+)/*先发送0.56ms的38KHZ红外波(即编码中0.56ms的低电平)*/ endcount=10;flag=1;count=0;dowhile(countendcount);*/* 停止发送红外信号(即编码中的高电平)if(irdata-(irdata/ 2)*2) / 判断二进制数个位为 1 还是 0endcount=41; /1 为宽的高电平elseendcount=15; / 0为窄的高电
13、平flag=0;count=0;dowhile(count1;发送十六位地址的后八位 */* irdata=iraddr2; for(i=0;i8;i+) endcount=10; flag=1;精品文档count=0;dowhile(countendcount); if(irdata-(irdata/ 2)*2)endcount=41;elseendcount=15;flag=0;count=0;dowhile(count1;发送八位数据 */ /* irdata=p_irdata; for(i=0;i8;i+)endcount=10;flag=1;count=0;dowhile(count
14、endcount); if(irdata-(irdata/ 2)*2)endcount=41; elseendcount=15;flag=0;count=0;dowhile(count1;发送八位数据的反码 */*irdata=p_irdata;for(i=0;i8;i+)endcount=10;flag=1;count=0;dowhile(countendcount);if(irdata-(irdata/ 2)*2)endcount=41;精品文档精品文档elseendcount=15;flag=0;count=0; dowhile(count1; endcount=10;flag=1;co
15、unt=0; dowhile(count0;x-) for(y=110;y0;y-);X 4键盘扫描按下按键发射数据*/*4 void keyscan()P1=0xfe; temp=P1; temp=temp&0xf0; while(temp!=0xf0) temp=P1; switch(temp) case 0xee:num=1; break;case 0xde:num=2; break;case 0xbe:num=3; break;case 0x7e:num=4; break; while(temp!=0xf0) temp=P1; temp=temp&0xf0;P2=tablenum-1;
16、SendIRdata(tablenum-1); P1=0xfd;temp=P1;temp=temp&0xf0;while(temp!=0xf0)temp=P1;switch(temp)case 0xed:num=5;break;case 0xdd:num=6;break;case 0xbd:num=7;break;case 0x7d:num=8;break;while(temp!=0xf0)temp=P1;temp=temp&0xf0;P2=tablenum-1;SendIRdata(tablenum-1); P1=0xfb;temp=P1;temp=temp&0xf0;while(temp!
17、=0xf0)temp=P1;switch(temp)case 0xeb:num=9;break;case 0xdb:num=10;break;case 0xbb:num=11;break;case 0x7b:num=12;break;精品文档精品文档while(temp!=0xf0)temp=P1;temp=temp&0xf0;P2=tablenum-1;SendIRdata(tablenum-1); P1=0xf7;temp=P1;temp=temp&0xf0;while(temp!=0xf0)temp=P1;switch(temp)case 0xe7:num=13;break;case 0
18、xd7:num=14;break;case 0xb7:num=15;break;case 0x77:num=16;break;while(temp!=0xf0)temp=P1;temp=temp&0xf0;P2=tablenum-1;SendIRdata(tablenum-1); (2)接收程序#includereg52.h#define uchar unsigned char#define uint unsigned int uchar dis_num,num,num1,num2,num3;sbit led=PUO;unsigned char code table= OxcO,Oxf9,Ox
19、a4,OxbO,精品文档0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; / 共阳数码管 0fsbit prem =P3人2; /定义遥控头的接收脚uchar ram4=0,0,0,0;/ 存放接受到的 4个数据 地址码 16位+按键码8位+按键码取反的 8位void delaytime(ui nt time) / 延迟 90uSuchar a,b;for(a=time;a0;a-)for(b=40;b0;b-);void rem()interrupt 0 / 中断函数uchar ramc=0; / 定义接收了 4个字节的
20、变量uchar count=0; / 定义现在接收第几位变量uint i=0; / 此处变量用来在下面配合连续监测 9MS 内是否有高电平prem=1;for(i=0;i1100;i+)/以下FOR语句执行时间为8MS左右if(prem) /进入遥控接收程序首先进入引导码的前半部判断,即:是否有9MS左右的低电平return; / 引导码错误则退出while(prem!=1); / 等待引导码的后半部 4.5 MS 高电平开始的到来。delaytime(50); /延时大于4.5MS时间,跨过引导码的后半部分,来到真正遥控数据32位中/第一位数据的0.56MS开始脉冲for(ramc=0;ra
21、mc4;ramc+)/ 循环 4次接收 4个字节 for(count=0;count8;count+) / 循环 8次接收 8位(一个字节)while(prem!=1); / 开始判断现在接收到的数据是0或者1 ,首先在这行本句话时,/ 保已经进入数据的 0.56MS 低电平阶段/ 等待本次接受数据的高电平的到来。delaytime(9);/高电平到来后,数据0高电平最多延续0.56MS,而数据1,高电平可 /延续1.66MS大于0.8MS后我们可以再判断遥控接收脚的电平,if(prem) / 如果这时高电平仍然在继续那么接收到的数据是 1的编码ramramc=(ramramc1)+1;/ 将目前接收到的数据位 1放到对应的字节中delaytime(ll); /如果本次接受到的数据是 1,那么要继续延迟1MS,这样才能跨入/下个位编码的低电平中(即是开始的 0.56MS 中)else / 否则目前接收到的是数据 0的编码ram
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度大数据分析技术顾问聘请协议
- 二零二五年度游乐园场地租赁与儿童游乐设施安全标准制定合同
- 二零二五年度房屋贷款房屋买卖合同范本(含家具)
- 施工现场管理制度化
- 施工方案对篮球场材料的要求与选择
- 高净值人群海外税务筹划与财富保护策略
- 现代办公楼的安全生产隐患识别与处理
- 食堂防火应急预案
- 临时仓储保管合同范本
- 2025年跨国资金借贷合同(五)
- Unit6AtthesnackbarStorytimeDiningwithdragons(课件)译林版英语四年级上册
- 2023年四川省公务员录用考试《行测》真题卷及答案解析
- 机电一体化系统设计-第5章-特性分析
- 2025年高考物理复习压轴题:电磁感应综合问题(原卷版)
- 雨棚钢结构施工组织设计正式版
- 医院重点监控药品管理制度
- 2024尼尔森IQ中国本土快消企业调研报告
- 2024年印度辣椒行业状况及未来发展趋势报告
- 骨科医院感染控制操作流程
- 铸铝焊接工艺
- (正式版)HGT 6313-2024 化工园区智慧化评价导则
评论
0/150
提交评论