NEC协议——红外遥控的使用

news/2024/11/8 15:12:08/

NEC协议是众多红外遥控协议的其中一种,下面以蓝桥杯的单片机开发板实现红外解码。

相关芯片与元器件介绍

在这里插入图片描述
此图为跳线帽的解法,在做红外通信时应接3,5;4,6。
在这里插入图片描述
此图左为红外发射装置和HX1838集成芯片,放大与接受于一体,可实现对红外线的解调。
此图右为一简单的红外发射装置,发出的红外线信号易受干扰,且无法实现与HX1838的通信,若要实现红外发射,必须加上高频载波(38KHz),可以用555定时器产生高频载波。(通信原理相关知识,我只了解皮毛……)
在这里插入图片描述

NEC协议的格式

首先来看NEC协议的典型脉冲链:
主要分为:
引导码----用户码(区分不同遥控器)----用户码反码----键码(键值)----键码反码
框图:
在这里插入图片描述
具体形式:
在这里插入图片描述
注意:由于在HX1838芯片解码时,输出管脚接受到的编码是红外线的编码的反码。
在这里插入图片描述
而具体的引导码形式和逻辑位的形式如下图所示:
在这里插入图片描述
按照上图,就可以写代码了!

代码实现及流程图

首先搬运流程图(来自https://blog.csdn.net/jiabao817/article/details/80568610)
在这里插入图片描述
注意读取一次数据的过程全部在一次外部中断中进行,P1.1口在接收到引导码的低位时拉低(与外部中断用杜邦线接上),便进入了外部中断,然后进行一系列的读数据操作。读高电平的时间和读低电平的时间分别用两个函数去实现,类似于超声波测距的方法,这里还需注意遇到异常情况要跳出中断。

//读取高电平时间
uint GetHighTime()
{TH1=0;TL1=0;TR1=1;while(IR_input){if(TH1>=0x40)break;}TR1=0;return (TH1*256+TL1);
}//读取低电平时间
uint GetLowTime()
{TH1=0;TL1=0;TR1=1;while(!IR_input){if(TH1>=0x40)break;}TR1=0;return (TH1*256+TL1);
}//外部中断的服务函数
void Int1_Service() interrupt 1
{uint time;uchar i,j;uchar byte=0;time=GetLowTime();if((time<7833)||(time>8755)){IE1=0;					//清除外部中断,防止其再进入return;}time=GetHighTime();if((time<3686)||(time>4608)){IE1=0;return;}//连续读取四个字节的数据for(i=0;i<4;i++){for(j=0;j<8;j++){time=GetLowTime();if((time<313)||(time>718)){IE1=0;return;}time=GetHighTime();if((time>313)&&(time<718)){byte=byte>>1;}else if((time>1345)&&(time<1751)){byte>>=1;byte|=0x80;}else{IE1=0;return;}}Buf[i]=byte;byte=0;}}

(还有两个礼拜就要比赛了,然而我才刚开始准备……
最近事情是真的多,国赛题目都不一定能做完,蓝桥杯真的要随缘了……
这日子过得是真的迷茫,有苦却没法说……)

References:
https://blog.csdn.net/weixin_43444989/article/details/89302008
https://wenku.baidu.com/view/62e1bd7a02768e9951e738f3.html
https://blog.csdn.net/yannanxiu/article/details/26171705
https://www.cnblogs.com/openusb/archive/2010/01/07/1641357.html


http://www.ppmy.cn/news/468871.html

相关文章

NEC红外遥控解码

单片机AVR atmel16,将事件和键值通过串口发送出去,注意熔丝位配置时钟。 #include <iom16v.h> #include <macros.h>#define KEY_CUSTOM_CODE 0x22f5 /* 遥控器用户识别码 */ #define KEY_PRESS_EVENT 0x1 /* PRESS按键事件 */ #define KEY_REPEAT_EVEN…

NEC900C服务器系统,nec gdc学习nec900c结构图2018 3 3 nec900c放映机安装.pdf

目录 ▐ 安装前须知 ▐ 如何选择合适的放映机 ▐ 拆箱前检查及准备 ▐ NC900C的安装 ▐ NC900C的维护使用 Page 2 © NEC Corpo at o 2010 NEC Confidential 安装前须知 Page 3 © NEC Corporation 2010 EC Confidential 1 安装前须知 放映机安装前须知 1. 在操作之前应…

NEC协议红外解码

载波Carrier 占空比1/3 频率38kHz(由445kHz产生37.91kHz) Lead code Custom code Custom code Data code Data code Stop Bit 引导码 用户码 用户码 数据码 数据反码 停止位 Lead code引导码 : 载波9ms 没有…

NEC格式红外解码程序

好久没折腾过单片机的东西了&#xff0c;最近在折腾着自己DIY一个APE播放机&#xff0c;要用到红外控制&#xff0c;复习了下51的东西&#xff0c;用AT89C2051写了个红外解码程序&#xff0c;丢在这里吧&#xff0c;供以后参考&#xff1b; #ifndef _IR_H#define _IR_H#define …

CentOS 7远程登录jupyter lab

使用cat /etc/redhat-release看到操作系统是CentOS Linux 7.6&#xff0c;使用uname -r看到内核是3.10.0-957.el7.x86_64。 python3 --version看一下python的版本&#xff0c;pip3 --version看一下pip的版本&#xff0c;这是我CentOS 7默认安装好的。 pip3 install jupyterla…

一次完整的Loadrunner基本流程操作

目录 一.生成脚本&#xff1a; 二.回放脚本&#xff1a; 三.创建场景&#xff1a; 四.生成报告&#xff1a; Loadrunner基本流程操作 准备条件&#xff1a; 一.安装loadrunner 二.破解loadrunner &#xff08;注&#xff1a;本次使用lr11版本可以兼容的IE浏览器版本为I…

智能照明控制系统助力某商业综合体实现“双碳”

摘要&#xff1a;智能照明是当前非常普及的一种照明控制方式。广泛使用于建筑物,景观&#xff0c;公共场所。本文以智能照明在商业综合体中的应用为基础&#xff0c;主要介绍了智能照明系统的功能与特点&#xff0c;系统运用的效果&#xff0c;在建筑自动化系统中的地位及优势等…

2023最新acme自动申请ssl证书-HTTPS证书

安装acme.sh curl https://get.acme.sh | sh 把 acme.sh 安装到你的 home 目录下:~/.acme.sh/并创建 一个 bash 的 alias, 方便你的使用: alias acme.sh~/.acme.sh/acme.sh echo alias acme.sh~/.acme.sh/acme.sh >>/etc/profile 安装过程中会自动为你创建 cronjob,…