它是一种电磁波,可以实现数据的无线传输

它的波长范围为760nm ~ 1mm,不为人眼所见

紫外光波长为10-400nm

红外与蓝牙

红外:对准、直接、0-10米,单对单

蓝牙:10米左右,加强信号后最高可达100米,可以绕弯,可以不对准,可以不在同一间房间,链接最大数目可达7个,同时区分硬件

红外线系统的组成

红外线系统一般由红外发射装置和红外接收设备两大部分组成

红外发射装置又可由键盘电路、红外编码芯片、电源和红外发射电路组成

红外接收设备可由红外接收电路、红外解码芯片、电源和应用电路组成

红外遥控器发射

红外遥控器是将遥控信号(二进制脉冲码)调制在38KHz的载波上,经缓冲放大后送至红外发光二极管,转化为红外信号发射出去的



开发红外接收设备,一定要知道红外遥控器的编码方式和载波频率

红外线接收

大多都采用成品红外接收头。均有三只引脚,即电源正(VDD)、电源负(GND)和数据输出(VOUT)



用时注意成品红外接收头的载波频率

数据格式

数据格式包括了引导码、用户码、数据码和数据码反码,编码总占32位

数据反码是数据码反相后的编码,编码时可用于对数据的纠错



第二段的用户码也可以在遥控应用电路中被设置成第一段用户码的反码

位定义

用户码或数据码中的每一个位可以是位‘1’ ,也可以是位‘0’

区分‘0’和‘1’是利用脉冲的时间间隔来区分,这种编码方式称为脉冲位置调制方式



时间间隔取一个中间值(高电平时间1秒)

举例

sbit IRIN = P3 ^ 2;

void IrInit()
{
IT0 = 1; //下降沿触发
EX0 = 1; //打开中断0允许
EA = 1; //打开总中断 IRIN = 1; //初始化端口
} void ReadIr() interrupt 0
{
u8 j, k;
u16 err;
Time = 0;
delay(700); //7ms
if(IRIN == 0) //确认是否真的接收到正确的信号
{
err = 1000; //1000 * 10us = 10ms, 超过说明接收到错误的信号
/*当两个条件都为真是循环,如果有一个条件为假的时候跳出循环,免得程序出错的时
侯,程序死在这里*/
while((IRIN == 0) && (err > 0)) //等待前面9ms的低电平过去
{
delay(1);
err--;
}
if(IRIN == 1) //如果正确等到9ms低电平
{
err = 500;
while((IRIN == 1) && (err > 0)) //等待4.5ms的起始高电平过去
{
delay(1);
err--;
} for(k = 0; k < 4; k++) //共有4组数据
{
for(j = 0; j < 8; j++) //接收一组数据
{
err = 60;
while((IRIN == 0) && (err > 0)) //等待信号前面的560us低电平过去
{
delay(1);
err--;
}
err=500;
while((IRIN == 1) && (err > 0)) //计算高电平的时间长度
{
delay(10); //0.1ms
Time++;
err--;
if(Time > 30)
{
return;
}
}
IrValue[k] >>= 1; //k表示第几组数据
if(Time >= 8) //如果高电平出现大于565us,那么是1
{
IrValue[k] |= 0x80;
}
Time = 0; //用完时间要重新赋值
}
}
} if(IrValue[2] != ~IrValue[3]) //用户码是否匹配
{
return;
}
}
}

使用逻辑分析仪分析遥控器协议



抓取的二进制值:0b00000000 – 0b11111111 – 0b00110000 – 0b11001111

因为红外接收是反相的,低位在前,高位在后。

所以解码完的数据应该是:0b00001100 = 0x0c

红外 NEC编码的更多相关文章

  1. MicroPython TPYBoard v102 无线红外遥控舵机(基于红外解/编码模块)

    转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇 红外解码/编码模块介绍 模块上搭载了红外接收头.红外 ...

  2. 红外NEC协议

    注意: 用示波器在接收头抓的电平看起来和NEC协议刚好相反, 那是因为:HS0038B 这个红外一体化接收头,当收到有载波的信号的时候,会输出一个低电平,空闲的时候会输出高电平. 具体情况,具体分析. ...

  3. 红外解码编码学习----verilog

    在设计中运用红外遥控器可以很好的解决按键缺少的问题,还可以方便的控制产品. 红外发射部分: 红外发射管: 判断红外发射管的好坏 : 电路原理图: 接收部分: 传输的NEC协议: 本实验电路: veri ...

  4. 蓝牙BLE实用教程

    蓝牙BLE实用教程 Bluetooth BLE 欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过 设置 里的修改模板来改变新建文章的内容. 1.蓝牙BLE常见问答 Q: Smart Re ...

  5. 蓝牙BLE实用教程(转载)

    欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过 设置 里的修改模板来改变新建文章的内容. 1.蓝牙BLE常见问答 Q: Smart Ready 和 Smart 以及传统蓝牙之间是什么关 ...

  6. 38KHz,NEC红外模拟发送和接收程序

    /*************************************************************************************************/ ...

  7. 基于Arduino、STM32进行红外遥控信号接收

    catalogue . 遥控器原理简介 . 红外遥控原理 . 常见红外遥控器红外线信号传输协议 . 遙控器的发展 . 实验过程 . 攻击面 . 基于STM32实现红外信号解码 1. 遥控器原理简介 0 ...

  8. Android使用AudioTrack发送红外信号

    最近要做一个项目,利用手机的耳机口输出红外信号,从而把手机变成红外遥控器,信号处理的知识基本都还给老师了,刚开始真的挺头疼.找了不少资料研究了一下,总算有点心得,在这里做个备忘. 一.音频信号输出原理 ...

  9. 玩转X-CTR100 l STM32F4 l 红外遥控接收

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      X-CTR100控制器具有红外接收头,例程 ...

随机推荐

  1. selenium历史版本下载

    python历史版本下载 https://pypi.org/project/selenium/#history java历史版本下载  http://selenium-release.storage. ...

  2. 【ARTS】01_28_左耳听风-201900520~201900526

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  3. CVPapers - Computer Vision Resource

    To add links (PDF, project,...) you can use the online tool. Computer Vision Paper Indexes ICCV:  20 ...

  4. Vue Cli3.0 使用jquery

    参考链接:https://blog.csdn.net/ai520587/article/details/84098601

  5. 你必须知道的495个c语言问题(笔记)

    1.1我该如何决定使用哪种整数类型? 用到较大的数用long:空间很重要(例如有很大的数组或很多的结构)用short:此外用int. win32: int 32bit    4byte char 8b ...

  6. Django边角料

    模型层表名自定义: class Record(models.Model): content=models.CharField(max_length=32,db_column='record_conte ...

  7. APUE ☞ 文件和目录

    粘着位(Sticky Bit) S_ISVTX位被称为粘着位.如果一个可执行程序文件的这一位被设置了,程序第一次运行完之后,程序的正文部分的一个副本仍被保存在交换区(程序的正文部分是机器指令).这使得 ...

  8. DB2 数据库权限

    以下内容转载:  http://blog.csdn.net/xiyuan1999/article/details/8135263 DB2中的权限 DB2 中有三种主要的安全机制,可以帮助 DBA 实现 ...

  9. Python 解leetcode:48. Rotate Image

    题目描述:把一个二维数组顺时针旋转90度: 思路: 对于数组每一圈进行旋转,使用m控制圈数: 每一圈的四个元素顺时针替换,可以直接使用Python的解包,使用k控制每一圈的具体元素: class So ...

  10. Kubernetes---Pod重启策略

    PodSpec中有一个restartPolicy 字段,可能的值为Always.OnFailure和Never.默认为Always.restartPolicy 适用于Pod 中的所有容器.restar ...