红外 NEC编码
它是一种电磁波,可以实现数据的无线传输
它的波长范围为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编码的更多相关文章
- MicroPython TPYBoard v102 无线红外遥控舵机(基于红外解/编码模块)
转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇 红外解码/编码模块介绍 模块上搭载了红外接收头.红外 ...
- 红外NEC协议
注意: 用示波器在接收头抓的电平看起来和NEC协议刚好相反, 那是因为:HS0038B 这个红外一体化接收头,当收到有载波的信号的时候,会输出一个低电平,空闲的时候会输出高电平. 具体情况,具体分析. ...
- 红外解码编码学习----verilog
在设计中运用红外遥控器可以很好的解决按键缺少的问题,还可以方便的控制产品. 红外发射部分: 红外发射管: 判断红外发射管的好坏 : 电路原理图: 接收部分: 传输的NEC协议: 本实验电路: veri ...
- 蓝牙BLE实用教程
蓝牙BLE实用教程 Bluetooth BLE 欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过 设置 里的修改模板来改变新建文章的内容. 1.蓝牙BLE常见问答 Q: Smart Re ...
- 蓝牙BLE实用教程(转载)
欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过 设置 里的修改模板来改变新建文章的内容. 1.蓝牙BLE常见问答 Q: Smart Ready 和 Smart 以及传统蓝牙之间是什么关 ...
- 38KHz,NEC红外模拟发送和接收程序
/*************************************************************************************************/ ...
- 基于Arduino、STM32进行红外遥控信号接收
catalogue . 遥控器原理简介 . 红外遥控原理 . 常见红外遥控器红外线信号传输协议 . 遙控器的发展 . 实验过程 . 攻击面 . 基于STM32实现红外信号解码 1. 遥控器原理简介 0 ...
- Android使用AudioTrack发送红外信号
最近要做一个项目,利用手机的耳机口输出红外信号,从而把手机变成红外遥控器,信号处理的知识基本都还给老师了,刚开始真的挺头疼.找了不少资料研究了一下,总算有点心得,在这里做个备忘. 一.音频信号输出原理 ...
- 玩转X-CTR100 l STM32F4 l 红外遥控接收
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] X-CTR100控制器具有红外接收头,例程 ...
随机推荐
- cron表达式的用法 【比较全面靠谱】
转: cron表达式的用法 cron表达式通过特定的规则指定时间,用于定时任务,本文简单记录它的部分语法和实例,并不完全,能覆盖日常大部分需求. 1. 整体结构 cron表达式是一个字符串,分为6或7 ...
- JavaScript函数中的this四种绑定形式
this的默认绑定.隐式绑定.显示绑定.new绑定 <script> //全局变量obj_value ; //1.window调用 console.log(`*************** ...
- git_push报错
转自 https://blog.csdn.net/u010042585/article/details/79378726 将本地项目push到GitHub时遇到的问题 .$ git remote ad ...
- LODOP直接导出图片不弹框
之前有博文测试了导出图片的图片长度关系,是直接弹窗的选择保存路径的方式:Lodop导出图片,导出单页内容的图片最近测试下不弹窗保存图片是否可以,样例是保存的excel,测试了下图片,图片也是可以的,该 ...
- 前端如何避免bug的产生?
项目环境:react生态圈 界面功能基本和:增(新增一条数据).删(删除一条数据).查(展示列表).改(修改数据)挂钩. 一.展示数据列表相关[判空,控制显示距离,分页是否有效,搜索是否有效] 1.渲 ...
- SpringBoot: 12.异常处理方式2(使用@ExceptionHandle注解)(转)
1.编写controller package com.bjsxt.controller; import org.springframework.stereotype.Controller; impor ...
- C#实现自动刷新网页
需要的童鞋可以下载整个项目:http://pan.baidu.com/s/1geMADvP 运行效果图如下:
- Python报错:TypeError: data type not understood
K-Means聚类算法 def randCent(dataSet, k): m, n = dataSet.shape # numpy中的shape函数的返回一个矩阵的规模,即是几行几列 centrod ...
- 冲刺Noip2017模拟赛7 解题报告——五十岚芒果酱
1.二叉树(binary) .二叉树 (binary.cpp/c/pas) [问题描述] 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: ()若左子树不空,则左子树上所有结点的值均小于它的根结 ...
- [CF429E]Points ans Segments_欧拉回路
Points and Segments 题目链接:www.codeforces.com/contest/429/problem/E 注释:略. 题解: 先离散化. 发现每个位置如果被偶数条线段覆盖的话 ...