基于51单片机控制红外通信_第1页
基于51单片机控制红外通信_第2页
基于51单片机控制红外通信_第3页
基于51单片机控制红外通信_第4页
基于51单片机控制红外通信_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、红外通信原理红外遥控有发送和接收两个组成部分。发送端采用单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号。红外接收完成对红外信号的接收、放大、检波、整形,并解调出遥控编码脉冲。为了减少干扰, 采用的是价格便宜性能可靠的一体化红外接收头(HS0038, 它接收红外信号频率为 38kHz,周期约26w s) 接收红外信号,它同时对信号进行放大、检波、整形得到TTL 电平的编码信号,再送给单片机,经单片机解码并执行去控制相关对象。具体实现 过程如下:(在这里特别强调:编码与解码是一对逆过程,不仅在原理上是一对逆过程,在码 的发收过程也是互反的,即以前发射端原始信号是

2、高电平,那接收头输出的就是低电平,反之亦然。因此为了保证解码过程简单方便,在编码时应该直接换算成其反码。) 1.红外发射部分:下图为红外发射部分的电路拟图:编码过程:(1)二进制信号的调制二进制信号的调制由单片机来完成,它把编码后的二进制信号调制成频率为 38kHz 的间断脉冲串(用定时器来完成),相当于用二进制信号的编码乘以频率为 38kHz的 脉冲信号得到的间断脉冲串,即是调制后用于红外发射二极管发送的信号。(2)PPM编码这种遥控编码具有以下特征:遥控编码脉冲由前导码、16位地址码(8位地址码、8位地址码的反码)和16位 操作码(8位操作码、8位操作码的反码)组成。 前导码:是一个遥控码

3、的起始部 分,由一个9ms的高电平(起始码)和一个4. 5ms的低电平(结果码)组成, 作为接受数据的准备脉冲。16位地址码:能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。16位操作码:用来执行不同的操作。采用脉宽调制的串行码,以脉宽为、间隔、周期为的组合表示二进制的“0” ;以脉宽为、间隔、周期为的组合表示二进制的“1 (3)发送程序#include <> static bit OP;外接收部分:玛脉冲。为红外接收完成对红外信号的接收、放大、检波、整形,并解调出遥控编038,它接收红外了减少干扰,采用的是价格便宜性能可靠的一体化红外接收头(HS0信号频率为38kHz,周期

4、约26us)接收红外信号,它同时对信号进行放大、检波、 整形得到TTL电平的编码信号,再送给单片机,经单片机解码并执行去控制相关对 象。接收部分的电路拟图为:HS0038的典型应用电路为:其应用程序为:#include"” #define uchar unsigned char #define uint unsigned int #include"” #define uchar unsigned char#define uint unsigned intuchar ram4=0,0,0,0;/ 存放接受到的4个数据 地址码16位+按键码8位+按键码取反的8位void del

5、aytime(uint time) / 延迟 90uS uchar a,b;for(a=time;a>0;a-) for(b=40;b>0;b-); void rem()interrupt 0 /中断函数uchar ramc=0;/定义接收了 4 个字节的变量uchar count=0;/定义现在接收第几位变量uint i=0;/此处变量用来在下面配合连续监测9MS 内是否有高电平prem=1;for(i=0;i<1100;i+)/以下FORRS句执行时间为8MS左右if(prem) / 进入遥控接收程序首先进入引导码的前半部判断 , 即: 是否有9MS&右的低电平r

6、eturn; / 引导码错误则退出 , 注意与 break 语句的区别while(prem!=1); / 等待引导码的后半部 MS 高电平开始的到来。delaytime(50); / 延时大于时间,跨过引导码的后半部分,来到真正遥控数据32 位中/ 第一位数据的开始脉冲for(ramc=0;ramc<4;ramc+)/ 循环 4 次接收 4 个字节 for(count=0;count<8;count+) /循环 8 次接收 8 位(一个字节)while(prem!=1); / 开始判断现在接收到的数据是0 或者 1 ,首先在这行本句话时,/ 保已经进入数据的 低电平阶段/ 等待本次

7、接受数据的高电平的到来。delaytime(9);/ 高电平到来后,数据0 高电平最多延续,而数据1,高电平可延续大于 后我们可以再判断遥控接收脚的电平。if(prem) / 如果这时高电平仍然在继续那么接收到的数据是1 的编码ramramc=(ramramc<<1)+1;将目前接收到的数据位 1放到对应的字节中delaytime(ll); 如果本次接受到的数据是1,那么要继续延迟1MS这样才能跨/ 下个位编码的低电平中(即是开始的中)else / 否则目前接收到的是数据0 的编码ramramc=ramramc<<1; / 将目前接收到的数据位0 放到对应的字节中 /

8、本次接收结束,进行下次位接收,此接收动作进行32 次,正好完成4 个字节的接收if(ram2!=(ram3&0x7f) /本次接收码的判断 for(i=0;i<4;i+) /没有此对应关系则表明接收失败,清除接受到的数据rami=0;returned ;main()IT0=1;/设定 INT0 为边沿触发EX0=1;/ 打开外部中断0EA=1;/全局中断开关打开while(1) switch(dis_num)case 0x81: num=0; break;case 0xcf: num=1; break;case 0x92: num=2; break;case 0x86: num=3; break;case 0xcc: num=4; break;case 0xa4: num=5; break;case 0xa0: num=6; break;case 0x8f: num=7; break;case 0x80: num=8; break;case 0x84: num=9; break;case 0x88: num=10;break;case 0xe0: num=11

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论