红外遥控

人机界面
当面操作的:按键、旋钮 / 触摸按键、触摸屏
遥控操作的:红外遥控、433M-2.4G无线通信、蓝牙-WIFI-Zigbee-4G-LoRa等无线网络

红外遥控是利用红外光进行通信的设备,由红外LED将调制后的信号发出,由专用的红外接收头进行解调输出。

通信方式:单工,异步;

红外LED波长:940nm;

通信协议标准:NEC标准(常用)

接收端原理图:

一体集成式接收头内部已经内置了红外载波解调功能,从IRD引脚出来的就是通信的二进制信号。所以单片机的IO可以直接接IRD引脚来读取红外信号中的通信信息。所以38KHz的载波的调制和解调过程对编程是透明的。
红外接收头内部本身是有个反相的,意思就是:平时发送方无发送信号时接收到的是1,发送方有发送载波时接收头IRD引脚输出的是0,这对我们写代码有影响,后面在看协议时序图时刚好是反的。

原理概述

红外通信由发送端和接收端两部分组成,发送端对数据进行编码,然后调制成一系列的脉冲信号,然后通过带有红外发射管的发射电路发送脉冲信号,即红外信号。接收端完成对脉冲信号的接收、放大、检波、整形,然后解调出编码信号,对其解码获取到发送的数据。具体的如下图所示:

NEC协议

NEC协议逻辑1与逻辑0的表示如下图所示:

– 逻辑1为2.25ms,脉冲时间560us。
– 逻辑0为1.12ms,脉冲时间560us。根据脉冲时间长短来解码。推荐载波占空比为1/3至1/4。

NEC协议格式如下图所示:

NEC协议中,首次是9ms的高电平脉冲,其后是4.5ms的低电平,接下来就是8bit的地址码(从低有效位开始发),而后是8bit的地址码的反码(主要是用于校验是否出错)。然后是8bit 的命令码(也是从低有效位开始发),而后也是8bit 的命令码的反码。

以上是一个指令码的序列,但当您长时间按住遥控按钮,在这这种情况下,使用NEC协议的红外遥控器将会发射一个以110ms为周期的重复码。也就是说,每一次用户按下遥控器按钮,遥控器在发送一次指令码后,就不会再发送指令码了,而是发送一段重复码。如下图:

重复码由9ms高电平和2.25ms的低电平以及560us的高电平组成,如下图所示:

需要注意的是:1838红外接收器为了提高接受灵敏度。输入高电平,其输出的是相反的低电平。

代码实现

#include "ir.h"// 全局变量在哪个C文件中用就在哪个C文件中定义
// 不能放在头文件中定义
// 如果在多个C文件中都要用到同一个全局变量,应该在一个主要的C文件中定义
// 然后其他C文件中extern声明即可
sbit IRIN = P3^2;
unsigned char IrValue[5];  // IrValue的0-3用来放原始数据,4用来放经过校验确认无误的键值
unsigned char Time;void DelayMs(unsigned int x)   //0.14ms误差 0us
{unsigned char i;while(x--){for (i = 0; i<13; i++){}}
}void IrInit(void)
{IT0=1;//下降沿触发EX0=1;//打开中断0允许EA=1;   //打开总中断IRIN=1;//初始化端口
}void ReadIr() interrupt 0
{unsigned char j,k;unsigned int err;Time = 0;                   DelayMs(40);           // 136us*40if (IRIN == 0)     //确认是否真的接收到正确的信号{           err = 1000;                //1000*10us=10ms,超过说明接收到错误的信号/*当两个条件都为真时循环,如果有一个条件为假的时候跳出循环,免得程序出错的时侯,程序死在这里*/    while ((IRIN==0) && (err>0))   //等待前面9ms的低电平过去         {           DelayMs(1);         // 136userr--;} if (IRIN == 1)            //如果正确等到9ms低电平{err = 500;while ((IRIN==1) && (err>0))      //等待4.5ms的起始高电平过去{DelayMs(1);err--;}for (k=0; k<4; k++)      //共有4组数据{           for (j=0; j<8; j++)   //接收一组数据{err = 60;     while ((IRIN==0) && (err>0))//等待信号前面的560us低电平过去{DelayMs(1);err--;}err = 500;while ((IRIN==1) && (err>0))  //计算高电平的时间长度。{DelayMs(1);//0.14msTime++;err--;if (Time > 30){EX0 = 1;return;}}IrValue[k] >>= 1;    //k表示第几组数据if (Time >= 8)           //如果高电平出现大于565us,那么是1{IrValue[k] |= 0x80;}Time = 0;        //用完时间要重新赋值                         }}}if (IrValue[2] == ~IrValue[3]){IrValue[4] = IrValue[2];return;}}
}

51单片机外设篇:红外通信相关推荐

  1. 51单片机学习篇-- --红外通信(PPM脉时)笔记

    开篇先说一句废话···· 本旺名字叫萨摩耶,,Please 叫我旺财,,,哈哈,招财进宝嘛! 开篇 从学完帮网友写完<倒计时数字钟–矩阵按键可调>然后在CSDN上总结完之后,学习了剩下的模 ...

  2. 51单片机外设篇:点阵式LCD

    什么是LCD LCD(Liquid Crystal Display)俗称液晶. 液晶是一种材料,液晶这种材料具有一种特点:可以在电信号的驱动下液晶分子进行旋转,旋转时会影响透光性,因此我们可以在整个液 ...

  3. 51单片机外设篇:蜂鸣器

    蜂鸣器 蜂鸣器是一种将电信号转换为声音信号的器件,常用来产生设备的按键音.报警音等提示信号. 蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器: 有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发 ...

  4. 51单片机外设篇:数码管

    数码管简介 LED数码管:数码管是一种简单.廉价的显示器,是由多个发光二极管封装在一起组成"8"字型的器件.比如红绿灯. 单个数码管: 多个数码管: 这些引脚由对应的寄存器控制着, ...

  5. 单片机与PC机一样都是计算机,51单片机与PC机通信资料

    <51单片机与PC机通信资料>由会员分享,可在线阅读,更多相关<51单片机与PC机通信资料(14页珍藏版)>请在人人文库网上搜索. 1.专业综合实习报告专 业: 电子信息工程 ...

  6. 51单片机tea5767收音机 红外遥控 自动搜台 存台 DIY

    转自:https://www.cnblogs.com/ningci/p/5464679.html 日向宁次 博客园 首页 新闻 新随笔 联系 管理 订阅 随笔- 55  文章- 0  评论- 1  5 ...

  7. 学习笔记之51单片机键盘篇(非编码键盘与编码键盘、非编码键盘的扫描方式、独立键盘、矩阵键盘)

    这篇博文主要记录51单片机键盘篇(非编码键盘与编码键盘.非编码键盘的扫描方式.独立键盘.矩阵键盘.键盘消抖等)包含原理图.代码等 (一)基础补充 1.键盘的任务 2.键盘的识别 3.如何消除按键的抖动 ...

  8. 51单片机 ENC28J60 TCP/IP通信

    51单片机 ENC28J60 TCP/IP通信 单片机:STC90C516RD+ ENC28J60模块:mini(3.3V供电) 设备:PC.开发板.两个网线.路由器 首先先介绍一下本文的移植针对于单 ...

  9. 红外报警c语言,基于51单片机的人体红外报警器程序设计

    //51单片机简人体红外报警器设计,手动按键控制实现紧急报警.布防.撤防.关闭报警)// #include #define uchar unsigned char #define uint  unsi ...

  10. 23、基于51单片机温控风扇红外遥控智能温度控制系统设计

    毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.PCB图 六.Proteus仿真 七.程序源码 八.资料包括 摘要 本设计为一种温控风 ...

最新文章

  1. Valve className=org.apache.catalina.valves.AccessLogValve directory=logs prefix=localhost_acce
  2. 2017-2018中国机器人创新Top100榜单深度分析
  3. Linux常用安全设置
  4. 前端开发中游览器的兼容问题总结
  5. webservice第一篇【介绍、Scoket、http调用、wsimport调用】
  6. 北上广深的请注意,阿里聚安全来找你玩啦~
  7. HDU1003:Max Sum(简单dp)
  8. agile java_《Agile Java》阅读笔记
  9. WIN10 VMWARE 虚拟机安装WIN10 64系统
  10. sklearn之PCA(主成分分析)
  11. 国二计算机考试office快捷键,全国计算机二级考试(Office)应试技巧
  12. jpg格式的矢量化arcgis_ArcGIS实践教程(11)图形的批量矢量化
  13. FPGA实现AM调制
  14. 小度总显示服务器连接失败,小度本地端口分配失败是什么意思
  15. 2021春深入理解计算机系统大作业---hello的一生
  16. html音乐播放心得体会,音乐欣赏心得体会
  17. 机器学习(十二):CS229ML课程笔记(8)——K-means,EM算法
  18. Whistle pc抓包,手机抓包,https抓包
  19. 区块链技术的安全价值与局限性解析
  20. 利用计算机实现对个别学习者,利用计算机实现对学习者进行个别指导的教学模式是基于( )理论。...

热门文章

  1. 量化投资学习——股票数据接口的汇总和整理
  2. asp.net网上订餐系统
  3. HD TUNE 下载使用
  4. 异步IO框架实现之完成端口(Completion Port)
  5. 为什么 BI 软件都搞不定关联分析?带你分析分析
  6. C语言项目实战—坦克大战
  7. 获取Dell,Lenovo电脑的保修期
  8. laypage ajax,laypage.js分页插件使用方法详解
  9. Ribbon 和 wowza 的集成开发
  10. 【模糊控制器】基于simulink的模糊控制器设计