单片机学习笔记---红外遥控(外部中断)

目录

红外遥控简介

硬件电路

基本发送与接收

NEC编码​​​​​​​

遥控器键码

复习外部中断和定时器


红外遥控简介

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

通信方式:单工,异步

红外LED波长:940nm

通信协议标准:NEC标准

上图第三种图就是红外接收头(可以拔下来的)

硬件电路

发送部分

以上是两种电路

我们先来看第一个电路

当两个三极管同时导通的时候,IN是低电平,LED是以38KHZ闪着亮的。

这样是为了抗干扰,因为自然界中有很多红外光(比如太阳会发出很强的红外光,如果这个LED直接发出连续的红外光,那这个红外光会淹没在太阳光之中。接收头就没办法判断了,这样的话接收头被太阳照一下就有键码值了,这样子肯定是不行的,所以我们让它以38KHZ这个频率闪着亮,和自然界中的红外光区分开来,我们接收头再把这38KHZ的频率提出来,用个滤波器把38KHZ的频率分量提出来,然后再进行一个放大,然后再把这个频率滤掉,就能够在自然界这个连续不断的红外光中传递这个38KHZ的通讯信号了,这就是调制的目的,就是为了和自然光中的红外光区分。调制过程就是将38KHZ和高低电平进行叠加。

再来看第二个电路

如果IN输入低电平,LED就亮,如果给高电平的话这个灯就不亮。发送的时候就需要程序来时序“以38KHZ闪着亮”的这样一个波形的功能。我们可以把这个IN端接在单片机的IO口上,但是要求这个IO口能直接输出这种波形,高电平1就是连续的1,低电平的话就是38KHZ的方波给这个LED,它也能实现“以38KHZ闪着亮”的功能,这就是高低电平调制的过程。

但是我们这个开发板上并没有发送部分的电路,所以只能用开发板配的遥控器进行发送

所以我们主要了解它的接收部分(这是个一体化的红外接收头)

我们把这个红外接收头输出的波形进行解码,然后读取里面的键码值,就可以完成本节的任务。

这个接收部分其中是有一个单独的一个红外接收LED的,这个LED是一个黑色的红外接收管,如果直接用红外接收管的话,那接收的信号就有很多成分了,比如说自然光和闪着亮的这种光都会进来,这样的话在后面还需要进行一个电路操作,比如说你要将自然光给滤掉,然后再对闪着亮的成分进行放大。

因为接收头肯定是不想要这个38KHZ,它只在传递的过程中需要,所以我们接收之后要设计一个滤波电路或者其他的操作把这个滤掉,使我们输出的信号和第一种电路中IN端的输入的信号是一样的,这样就做到把这个信号给发送过来的目的了。

由于信号发送是很快的,每次按键之后就会出现很多的高低电平,并且这高低电平会在几十毫秒内就跑完了。因此我们不能用单片机判断按键那样来个if循环扫描来判断,这样的就太慢了。

为了更快的处理,我们将OUT引脚接在外部中断引脚上(INT0(P32),INT1(P33)),一旦产生一个下降沿,就立马中断对它进行处理,这样的响应实时性很高。

原理图上就把这个OUT接在了P32这个引脚上:

基本发送与接收

空闲状态:红外LED不亮,接收头输出高电平

发送低电平:红外LED以38KHz频率闪烁发光(接收时高电平还是高电平,低电平滤掉),接收头输出低电平

发送高电平:红外LED不亮,接收头输出高电平

空闲状态和发送高电平状态是可以区分开的,我们红外发送的时候是以第一个下降沿为开始,之后在一段时间内都是波形,在这一个过程中如果没收到即认为是高电平,等这个波形完了之后,就进入空闲状态,这就是基本的发送和接收。

NEC编码

发送这个高电平和低电平之后,就可以传递信号了,这个时候需要一个企业来制定一个标准,就是怎么来表示这个高电平,以及高电平怎么组合去表示起始信号数据0和1.

这个标准就是NEC编码

这个NEC标准中不会出现38KHZ的调制。

38KHZ是底层通信时才会有,就当于底层做好了基本的发送高低电平,然后把它封装在一个模块中。

发送高低电平信号,先调制之后再接收,接收完之后解调输出

NEC标准是建立在输入信号和输出信号之后,所以NEC的时序图中并不会出现38KHZ。

首先来看一下这个波形,它是按键按下后,接收头OUT引脚输出的波形。

没按键按下时是,波形是高电平,代表空闲状态。

一旦按键按下后,OUT引脚就会输出一个Star信号(由9毫秒的低电平和4.5毫秒的高电平组成),这个信号相当于告诉单片机这些接触设备有按键过来了,要开始发送数据了,请准备一下。

Star信号发送完之后会有段长的数据区,表示地址码和控制码这一部分。DATA的格式总共是四个字节,一共是32位。第一个字节就是地址码,就是遥控器的一个标识符,防止不同品牌的遥控器互相用,就是标识遥控器的地址。

然后是一个地址码反码(按位取反),用来数据验证,接收完两个字节后,把第一个字节和第二个字节进行比较,看看是否相等,如果相等就说明接收对了。

再之后就是命令码,这就是我们的键码,按下哪个按键。同样命令码也需要一个反码来进行验证。

因此4个字节(低位在前,高位在后)其实携带的信号只有两个。

DATA的1和0是怎么表示的呢?

它是先来一个低电平560us,然后高电平560us,这样就表示逻辑0;

然后低电平560us,然后高电平1690us,这样就表示逻辑1。

这样发完32位数据之后,一帧数据就发完了

之后就采集OUT引脚的波形,然后对它的时间长度进行分析,就可以得到地址码和命令码了。

之后绿色的数据帧就表示如果你按着按键不放的时候,它先发一个带有数据的这样一个波形,然后还不放手,它就会每个100毫秒就发送一次repeat,就相当于连续按键这个功能。

如果按下立即放手的话就只有前面第一帧的蓝色部分波形。

而repeat的这段波形和Star部分的波形差不多。

这是示波器实际采样的图(将示波器直接接到接收头的OUT引脚上)

PS:一个格子表示2ms,我们的遥控器的地址码是0000 0000

下降沿是前一个数据位的开始也是后一个数据位的结束,所以发送完最后一位数据之后为了终止会多出来一个下降沿。

遥控器键码

接下来复习一下中断的知识。

复习外部中断和定时器

STC89C52有4个外部中断(传统的51单片机只有2个外部中断)

STC89C52的外部中断有两种触发方式:下降沿触发和低电平触发

本节将用到下降沿触发,我们只需要测一下两个下降沿之间的时间,就可以知道这个信号是起始/逻辑1/逻辑0。

中断号:

外部中断寄存器

上图红框里的才是外部中断的控制位

其实我之前已经详细些过中断系统和定时器的博客了,也写的比较全面的了,大家不懂的可以看看,看过后肯定能让你明白中断系统和定时器的工作原理!

单片机学习笔记---中断系统(含外部中断)-CSDN博客

单片机学习笔记---定时器/计数器(简述版!)_定时计数器ea-CSDN博客

单片机学习笔记---定时器和中断系统如何连起来工作-CSDN博客

以上就是本节的内容,下一篇开始代码演示!代码演示中会涉及定时器和中断系统!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/261032.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

消息中间件-面试题

MQ选择 一、Kafka 1、消息队列如何保证消息可靠性 消息不重复 生产者控制消费者幂等消息不丢失 生产者发送,要确认broker收到并持久化broker确认消费者消费完,再删除消息2、kafka是什么 Kafka是一种高吞吐量、分布式、基于发布/订阅的消息中间件,是Apache的开源项目。broke…

web组态软件

1、强大的画面显示web组态功能 2、良好的开放性。 开放性是指组态软件能与多种通信协议互联,支持多种硬件设备,向上能与管理层通信,实现上位机和下位机的双向通信。 3、丰富的功能模块。 web组态提供丰富的控制功能库,满足用户的测…

MySQL安装教程(详细版)

今天分享的是Win10系统下MySQL的安装教程,打开MySQL官网,按步骤走呀~ 宝们安装MySQL后,需要简单回顾一下关系型数据库的介绍与历史(History of DataBase) 和 常见关系型数据库产品介绍 呀,后面就会进入正式…

JVM常见问题笔记分享

文章目录 1 JVM组成1.1 JVM由那些部分组成,运行流程是什么?1.2 什么是程序计数器?1.3 你能给我详细的介绍Java堆吗?元空间(MetaSpace)介绍 1.4 什么是虚拟机栈1.5 堆和栈的区别1.6 能不能解释一下方法区?1.5.1 概述1.5.2 常量池1…

【实习】深信服防火墙网络安全生产实习

一、实习概况 1.1实习目的 1.掌握防火墙规则的作用2.掌握代理上网功能的作用3.掌握端口映射功能的作用 1.2实习任务 1.防火墙的WEB控制台 2.需要在防火墙上配置dnat …

Java 后端面试指南

面试指南 TMD,一个后端为什么要了解那么多的知识,真是服了。啥啥都得了解 MySQL MySQL索引可能在以下几种情况下失效: 不遵循最左匹配原则:在联合索引中,如果没有使用索引的最左前缀,即查询条件中没有包含…

使用Docker部署Docker-Compose-Ui工具并实现公网访问

文章目录 1. 安装Docker2. 检查本地docker环境3. 安装cpolar内网穿透4. 使用固定二级子域名地址远程访问 Docker Compose UI是Docker Compose的web界面。这个项目的目标是在Docker Compose之上提供一个最小的HTTP API,同时保持与Docker Compose CLI的完全互操作性。…

pandas/geopandas 笔记:判断地点在不在路网上 不在路网的点和路网的距离

0 导入库 import osimport pandas as pd pd.set_option(display.max_rows,5)import osmnx as oximport geopandas as gpd from shapely.geometry import Point 1 读取数据 假设我们有 如下的数据: 1.1 新加坡室外基站位置数据 cell_stationpd.read_csv(outdoor…

相机图像质量研究(40)常见问题总结:显示器对成像的影响--画面泛白

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

2024牛客寒假算法基础集训营4

D.守恒 阿宁有一个长度为 n 正整数数组 a。 可以进行任意次操作,每次操作选择数组 a 的两个元素,其中一个加 1,另一个减 1,要求每次操作后 a 的各元素仍然是正整数。 阿宁想知道操作结束后,数组的最大公约数可能有多少…

基于微信小程序的比赛赛程管理系统设计与实现

在全面健身的倡导下通过各级赛事的举办完成体育人才的选拔,当由于缺乏信息化的管理手段而只能通过人工完成比赛报名、赛程制定及成绩记录等流程的管理,因此常常因意外而导致比赛赛程管理不善、成绩不理想等问题出现。为了帮助比赛组织者优化赛程管理流程…

Java 那些诗一般的 数据类型 (1)

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

善于利用GPT确实可以解决许多难题

当我设计一个导出Word文档的功能时,我面临了一个挑战。在技术选型时,我选择了poi-tl这个模板引擎,因为在网上看到了很多关于它的推荐。poi-tl可以根据模板快速导出Word文档。虽然之前没有做过类似的功能,而且项目中也没有用过&…

基于Python的热点分析预警系统

项目:基于Python的热点分析预警系统 摘 要 基于网络爬虫的数据可视化服务系统是一种能自动从网络上收集信息的工具,可根据用户的需求定向采集特定数据信息的工具,本项目通过研究爬取微博网来实现微博热点分析数据信息可视化系统功能。对于采…

顺序表详解(SeqList)

本文使用C语言进行顺序表的代码实现。 博主将使用代码和相关知识相结合的方式进行讲解,简单易懂,懵懂的大学生一听就会~ 顺序表是一种线性表的存储结构,它将数据元素存储在一段连续的存储空间中,每个元素占据一个存储单元&#x…

Java入门-可重入锁

可重入锁 什么是可重入锁? 当线程获取某个锁后,还可以继续获取它,可以递归调用,而不会发生死锁; 可重入锁案例 程序可重入加锁 A.class,没有发生死锁。 sychronized锁 package com.wnhz.lock.reentrant;public class Sychroniz…

【Linux】git操作 - gitee

1.使用 git 命令行 安装 git yum install git 2.使用gitee 注册账户 工作台 - Gitee.com 进入gitee,根据提示注册并登录 新建仓库 仓库名称仓库简介初始换仓库 3.Linux-git操作 进入仓库,选择“克隆/下载” 复制下面的两行命令进行git配置 然后将仓库clo…

搜索中关于稀疏检索和稠密向量检索的召回效果比较

不同检索方式说明 最近在做搜索召回提升相关的研究工作。对比了稀疏检索和稠密向量检索的效果。其中使用的搜索引擎为elasticsearch8.x版本。稀疏检索包括BM25的检索方式,以及es官方在8.8之后版本提供的稀疏向量模型的方式。稠密向量检索,是指借助机器学…

基于springboot实现的音乐网站

一、系统架构 前端:html | js | css | bootstrap 后端:springboot | mybatis 环境:jdk1.8 | mysql | maven 二、 代码及数据库 三、功能介绍 01. 登录页 02. 用户注册 03. 首页 04. 喜欢 05. 查询

1902_野火FreeRTOS教程内核在STM32中用到的2个中断PENDSV和SYSTICK

1902_野火FreeRTOS教程内核在STM32中用到的2个中断PENDSV和SYSTICK 全部学习汇总: g_FreeRTOS: FreeRTOS学习笔记 (gitee.com) 上面是涉及到的源代码,而这次需要分析的就是78、79行的两个中断。首先,需要确认NVIC_SYSPRI2寄存器的作用。 进一…