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

目录

红外遥控简介

硬件电路

基本发送与接收

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.mzph.cn/news/693043.shtml

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

相关文章

WebGL中开发科学数据可视化应用

WebGL在科学数据可视化领域有广泛的应用,可以用于呈现和解释复杂的科学数据。以下是在WebGL中开发科学数据可视化应用时的一些建议,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.选择合…

2、电源管理入门之开机详解

目录 1. 硬件上电 2. ATF运行 3. Linux启动 3.1 内核启动start_kernel 3.2 平台启动setup_arch 3.4 DTS初始化psci_dt_init 3.5 系统rest创建kernel_init线程 3.6 SMP初始化smp_init 3.7 PSCI接口psci_cpu_on 3.8 SMC返回secondary_entry 系统开机牵扯到:“我是…

记录人工智能领域的人、事、社区

曾梦想执剑走天涯,我是程序猿【AK】 目录 简述概要关注人物OpenAI团队成员 关注事件2015年2016年2017年2018年2019年2020年2021年2022年2023年2024年 关注社区OpenAITensorFlowPyTorchMIT Technology ReviewReddit Machine LearningIEEE Transactions on Neural Net…

java 使用documents4j将XML转为pdf文件的方式

1.背景: 通过spire.doc.free将word转换成PDF时存在缺陷:只能获取前3页。获取全文另外需支付费用。 2.解决办法 使用documents4j,documents4j会保留原word文件中更多的样式,如修订模式下的差异化字体颜色、文档右侧修订记录等。 …

Android Studio基础(下载安装与简单使用)

1、搭建Android开发平台 1.1 Android Studio 下载地址及版本说明 Android 开发者官网: https://developer.android.com/index.html(全球,需科学上网) https://developer.android.google.cn/index.html(国内&#xff…

十三、集合进阶——单列集合 及 数据结构

单列集合 及 数据结构 13.1 集合体系结构13.1.2 单列集合1. Collection2.Collection 的遍历方式迭代器遍历增强for遍历Lambda表达式遍历 3.List集合List集合的特有方法List集合的遍历方式五种遍历方式对比 4.数据结构1).栈2).队列3)数组4)链表小结5&…

PyTorch – 逻辑回归

data 首先导入torch里面专门做图形处理的一个库,torchvision,根据官方安装指南,你在安装pytorch的时候torchvision也会安装。 我们需要使用的是torchvision.transforms和torchvision.datasets以及torch.utils.data.DataLoader 首先DataLoa…

营销系统黑名单优化:位图的应用解析 | 京东云技术团队

背景 营销系统中,客户投诉是业务发展的一大阻碍,一般会过滤掉黑名单高风险账号,并配合频控策略,来减少客诉,进而增加营销效率,减少营销成本,提升营销质量。 营销系统一般是通过大数据分析建模…

2024年了,如何从 0 搭建一个 Electron 应用

简介 Electron 是一个开源的跨平台桌面应用程序开发框架,它允许开发者使用 Web 技术(如 JavaScript、HTML 和 CSS)来构建桌面应用程序。Electron 嵌入了 Chromium(一个开源的 Web 浏览器引擎)和 Node.js(一…

游戏行业洞察:分布式开源爬虫项目在数据采集与分析中的应用案例介绍

前言 我在领导一个为游戏行业巨头提供数据采集服务的项目中,我们面临着实时数据需求和大规模数据处理的挑战。我们构建了一个基于开源分布式爬虫技术的自动化平台,实现了高效、准确的数据采集。通过自然语言处理技术,我们确保了数据的质量和…

【PostgreSQL实现psql连接时候提示用户的密码有效时间】

如下内容使用session_exec插件结合自定函数实现。类似于触发器的原理。 功能需要严格在测试环境测试后,才可在正式环境使用。没有相关要求,还是建议直接查询pg_roles/pg_authid/pg_user; 一、判断是否需要修改用户密码和有效期的检查SQL 首…

【Emgu CV教程】7.1、图像锐化之Laplacian(拉普拉斯)算子锐化

文章目录 一、介绍二、举例1.原始素材2.代码3.运行结果 一、介绍 前面几篇讲的是图像平滑,就是抑制或消除噪声,并使得图像亮度及颜色变化更平缓的操作。在图像处理领域,与平滑操作相对应的,叫图像锐化。 图像锐化就是增强图像的边…

python OpenCV:seamlessClone泊松融合

一、seamlessClone函数的用法 翻译 https://www.learnopencv.com/seamless-cloning-using-opencv-python-cpp/ def seamlessClone(src, dst, mask, p, flags, blendNone): # real signature unknown; restored from __doc__"""seamlessClone(src, dst, mask, …

【Hudi】Upsert原理

17张图带你彻底理解Hudi Upsert原理 1.开始提交:判断上次任务是否失败,如果失败会触发回滚操作。然后会根据当前时间生成一个事务开始的请求标识元数据。2.构造HoodieRecord Rdd对象:Hudi 会根据元数据信息构造HoodieRecord Rdd 对象&#xf…

2024年【起重机司机(限桥式起重机)】试题及解析及起重机司机(限桥式起重机)证考试

题库来源:安全生产模拟考试一点通公众号小程序 起重机司机(限桥式起重机)试题及解析考前必练!安全生产模拟考试一点通每个月更新起重机司机(限桥式起重机)证考试题目及答案!多做几遍,其实通过起重机司机(限桥式起重机)理论考试很…

linux ext3/ext4文件系统(part2 jbd2)

概述 jbd2(journal block device 2)是为块存储设计的 wal 机制,它为要写设备的buffer绑定了一个journal_head,这个journal_head与一个transaction绑定,随着事务状态的转移(运行,生成日志&#…

我为什么不喜欢关电脑?

程序员为什么不喜欢关电脑? 你是否注意到,程序员们似乎从不关电脑?别以为他们是电脑上瘾,实则是有他们自己的原因!让我们一起揭秘背后的原因,看看程序员们真正的“英雄”本色! 一、上大学时。 …

Backtrader 量化回测实践(1)—— 架构理解和MACD/KDJ混合指标

Backtrader 量化回测实践(1)—— 架构理解和MACD/KDJ混合指标 按Backtrader的架构组织,整理了一个代码,包括了Backtrader所有的功能点,原来总是使用SMA最简单的指标,现在稍微增加了复杂性,用MA…

k8s除了可以直接运行docker镜像之外,还可以运行什么? springboot项目打包成的压缩包可以直接运行在docker容器中吗?

Kubernetes(k8s)主要设计用于自动部署、扩展和管理容器化应用程序。虽然它与Docker容器最为密切相关,Kubernetes实际上是与容器运行时技术无关的,这意味着它不仅仅能够管理Docker容器。Kubernetes支持多种容器运行时,包…

[office] EXCEL表格不能使用键盘箭头切换单元格该怎么解决- #媒体#经验分享#知识分享

EXCEL表格不能使用键盘箭头切换单元格该怎么解决? EXCEL表格不能使用键盘箭头切换单元格该怎么解决? 1、入下图所示的键盘。 图中红色标记“1”的地方是Scroll Lock指示灯。Scroll Lock就是“滚动锁定”的意思。当该指示灯亮起来的时候,在excel表格中操…