当前位置: 首页 > article >正文

江科大51单片机笔记【17】红外遥控(外部中断)

写在前言


  此为博主自学江科大51单片机(B站)的笔记,方便后续重温知识

  在后面的章节中,为了防止篇幅过长和易于查找,我把一个小节分成两部分来发,上章节主要是关于本节课的硬件介绍、电路图、原理图等理论知识,主要是为下章节的代码部分打基础。

  我的单片机是24年12月在tb普中买的,型号是STC89C52,在原视频中引脚或接口不对应的我都会改正,保证在我的机子上能运行才发上来的,还有一些文字部分是我的理解,并非照搬,所以可能有理解不到位的现象。

  如有误或交流,敬请指点提问

红外遥控有一个小拨片把电池隔开,用的时候要拿出来

课程目标:

1.LCD显示遥控的地址码,遥控码和+-控制自定义数字

2.红外遥控电机调速

课程总览:

红外遥控介绍,硬件电路,发送和接收,NEC编码,遥控器键码,51单片机的外部中断,寄存器

一、红外遥控简介

  • 红外遥控是利用红外光进行通信的设备,由红外LED将调制后的信号发出,由专用的红外接收头进行解调输出
  • 通信方式:单工、异步
  • 红外LED波长:940nm(人眼看不到)还有一种850nm可以看到
  • 通信协议标准:NEC标准

二、硬件电路 

我们的开发板上并没有发送部分,只能通过遥控器发送

我们主要是做接收部分

首先是发送部分,上面是两个串联的三极管开关,下面是一个红外LED和一个限流电阻,而两个三极管分别接入38KHz的方波以及我们给的波形,这个电路的功能是当高电平时灭,当低电平时红外以38KHz的频率亮,目的是抗干扰

第二个电路简单,如果给低电平就亮,高电平就灭,如果要输出波形就需要程序来实现,并且IO口要支持输出波形

接收部分,是一个一体化红外接收头,含有滤波抗干扰等功能,我们的代码就是解码这个波形,又因为按键按下的判断太慢了,不能像之前一样用if循环扫描按键,所以我们就把输出OUT放到外部中断上,这样实时性就很高

三、基本发送与接收

  • 空闲状态:红外LED不亮,接收头输出高电平
  • 发送低电平:红外LED以38KHz频率闪烁发光,接收头输出低电平
  • 发送高电平:红外LED不亮,接收头输出高电平

虽然空闲状态跟发送高电平看起来是一样的,但还是可以区分的,红外发送的时候是以第一个下降沿开始,往后都是发送来的波形,此时接收到高电平就是发送高电平状态,等波形结束,再接收到高电平就是空闲状态

顺带一提,这个38KHz是在实际的底层通信时出现的,但在编码时不会涉及,因为已经在底层功能给调制解调了 

 四、NEC编码

此时又需要一个标准,怎么表示高低电平,以及怎么组成0和1,这就是NEC编码的作用

这是时序波形,这个波形就是遥控器按键按下时接收头OUT输出的波形,

首先是高电平,然后是Start信号

接着是DATA数据区,data的格式如下,地址码+地址码反码(验证)+命令+命令反码

在这里不是平时那样高电平表示1,低电平表示0,而是像下面这样,高电平的时间比低电平的时间稍长一点

然后就是重复的波形,这个是连续按键的功能,如果你一直按着按键不动,就隔110ms就发送一个Repeat的波形

下面是示波器实际采样得到的图

五、遥控器键码

六、51单片机的外部中断

  • STC89C52只有4个外部中断,但实际上我们这给开发板只引出了两个外部中断,即0和1
  • 有两种触发方式:下降沿触发和低电平触发
  • 中断号:

七、外部中断寄存器

 

之前定时器也讲过这部分

我们在这里只讲外部中断0和1,直接接到P32和P33引脚,然后是触发方式ITO和IT1,当=1时是下降沿触发,=0是低电平触发,IE是中断标志位,EX0是使能中断,EA是所有中断,PX可以选优先级


http://www.kler.cn/a/584760.html

相关文章:

  • 第八节:红黑树(初阶)
  • T2.小牛架炮 - 美团机试真题题解
  • 【vscode-01】vscode不同项目不同语言扩展插件隔离方案
  • Mermaid 子图 + 拖拽缩放:让流程图支持无限细节展示
  • 边缘计算(Edge Computing)
  • 伽马函数相关知识点及其与概率论知识的结合
  • WPF 制作机械手动画
  • 个性化音乐推荐系统
  • 面向联邦学习隐私保护的同态加密库优化算法研究
  • tcpdump 基础参数解析与简单示例
  • 【每日学点HarmonyOS Next知识】页面引用问题、Json三方库、路由表使用、下拉刷新问题、视频播放错误
  • 【QT】-解析打包json
  • 并行计算编程模型的发展方向与RISC-V的机遇
  • BUG修复 | 一次钉钉工作台应用远程调试实战(开发者工具)
  • laravel项目中使用FFMPeg 剪裁视频
  • Pytortch深度学习网络框架库 torch.no_grad方法 核心原理与使用场景
  • 重生之我在学Vue--第11天 Vue 3 高级特性
  • 版本控制泄露源码 .git
  • Vue.js 3 的设计思路:从声明式UI到高效渲染机制
  • LINUX 指令大全