【STC单片机学习】高级外设和项目篇二:红外遥控_搞IC的小冯的博客-程序员秘密

技术标签: 红外遥控  嵌入式学习  【单片机学习】  单片机学习  

【朱老师课程总结 侵删】

第一部分、章节目录

2.2.1.红外遥控背景知识

2.2.2.原理图电路分析

2.2.3.NEC协议讲解

2.2.4.官方示例代码解析

2.2.5.红外接收程序的移植和调试1

2.2.6.红外接收程序的移植和调试2


第二部分、章节介绍

2.2.1.红外遥控背景知识
    本节讲述人机界面的概念以及红外遥控相关的背景知识,目的是拓宽大家的视野和知识面,为进一步深入学习指点方向。
2.2.2.原理图电路分析
    本节分析红外接收部分的原理图和工作原理,同时拆解了红外遥控器并讲解其工作原理。
2.2.3.NEC协议讲解
    本节主要讲解NEC协议,重点是协议的理解和时序图的解析方法,理解了协议的时序图就可以接着去分析解码代码了。
2.2.4.官方示例代码解析1
    本节开始讲解官方示例代码,主要是通过软仿真方式确定精确延时的方法,以及从头到尾读一下官方示例代码。
2.2.5.红外接收程序的移植和调试1
    本节开始做程序移植和调试,主要是时间相关的部分需要注意。
2.2.6.红外接收程序的移植和调试2
    本节对移植中的问题进行总结,并且提出现有程序的漏洞和修复方法,在项目中会实际去做。 

    
第三部分、随堂记录

2.2.1.红外遥控背景知识

2.2.1.1、人机界面
(1)当面操作的:按键、旋钮 / 触摸按键、触摸屏
(2)遥控操作的:红外遥控、433M-2.4G无线通信、蓝牙-WIFI-Zigbee-4G-LoRa等无线网络

2.2.1.2、红外遥控相关知识
(1)红外线基本知识

  •   人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。其中红光的波长范围为 0.62~0.76μm;紫光的波长范围为 0.38~0.46μm。比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线。红外线遥控就是利用波长为 0.76~1.5μm 之间的近红外线来传送控制信号的。在空气中和电磁波一样,是由同相 且互相垂直的电场与磁场在空间中衍生发射的震荡粒子波,是以波动的形式传播的电磁场,具有波粒二象性
  • 和无线电不一样,红外线不能穿过障碍物去控制被控对象,而且每套红外设备(发送和接收器)要有不同的编码和频率,万能遥控就是有一个学习过程,可以匹配不同类产品的频率和编码


(2)红外发射和接收2部分

  • 红外遥控由发送和接收两个组成部分。
  • 发送端采用单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号。
  • 接收端将接收到的光脉转换成电信号(光电传感器),再经过放大、滤波、整形等处理后送给解调电路进行解调,还原为二进制数字信号后输出。


空调、电视遥控等等,红外遥控器和红外发光二极管如下图所示:

(3)38KHz载波、数字信号和调制

  • 载波:红外遥控器常用载波的方式传送二进制编码,常用的载波频率为 38kHz,这是由发射端所使用的 455kHz晶振来决定的。在发射端要对晶振进行整数分频,分频系数一般取 12,所以455kHz÷12≈37.9kHz≈38kHz
  • 编码:也就是二进制脉冲码的形式,这个就是红外遥控的通信协议,如果要开发红外接收设备,一定要知道红外遥控器的编码方式和载波频率,我们才可以选取一体化红外接收头和制定解码方案。

(4)红外遥控器通信协议
之前我们接触的协议有哪些?有什么特点?红外遥控通信协议和他们有什么不同?
红外遥控通信协议很多很多!比如NEC公司的NEC协议、Philips的RC5协议、Sony的SIRC协议等等,本节课程学习NEC协议!后面会详细介绍!


2.2.2.原理图电路分析

2.2.2.1、原理图和接线
(1)接收端原理图

主要是三个引脚:即电源正( VDD)、电源负(GND)和数据输出(VOUT)
VOUT就是把编码后的二进制脉冲信号通过引脚输出到微处理器

(2)外观图


(3)IR接收模块原理。

  • 一体集成式接收头内部已经内置了红外载波解调功能,从IR_IN引脚出来的就是通信的二进制信号。所以单片机的IO可以直接接IR_IN引脚来读取红外信号中的通信信息。所以38KHz的载波的调制和解调过程对编程是透明的。
  • 红外接收头内部本身是有个反相的,意思就是:对于接收器来说没有脉冲的时候为高电平,当收到脉冲的时候为低电平(和按键是一样的),这对我们写代码有影响,后面在看协议时序图时刚好是反的。
  • 分析下数据发送接收,肯定和之前一样,有底层时序(比如接收0/1)和高层时序(接收某个按键的健值)

(4)接线

  • 把IR_IN和单片机额P3.2连接
    sbit IRIN=P3^2

2.2.2.2、红外遥控器全解析
(1)功能演示
(2)拆解
查看源图像
(3)芯片Wire-Bonding工艺

2.2.2.3、红外遥控系统工作过程综述
(1)发射端—红外遥控器,不需要操作,里面已经做好处理了,按下之后,发出来的是红外信号
(2)传播:通过空气传播
(3)接收端:需要用协议解调,生成二进制信号,这里就需要学习NEC协议,看下一小节!


2.2.3.NEC协议讲解
链接

2.2.3.1、红外遥控协议原理
(1)红外遥控协议的作用:从二进制层面上定义了如何传输一帧数据
(2)解析协议的关键点:把握好时间—delay函数
(3)不同协议的差异:定义‘1’和‘0’的调制方式、帧的格式

2.2.3.2、NEC协议的关键点
(1)学会看图:载波和信号

  • 对于测试红外接收头的信号来说,有脉冲信号的地方就是高电平。
  • 通过脉冲串之间的时间间隔来实现信号的调制

(2)关键点:1和0分别是如何表示的

  • NEC协议逻辑1与逻辑0的表示如下图所示:

– 逻辑1为2.25ms,高电平0.56ms,低电平1.69ms
– 逻辑0为1.12ms,高电平0.56ms,低电平0.56ms
(3)数据是一帧一帧的整帧传递的

  • NEC协议格式如下图所示:

NEC协议中,

  • 首次是9ms的高电平脉冲,其后是4.5ms的低电平,
  • 接下来就是8bit的地址码(从低有效位开始发),而后是8bit的地址码的反码(主要是用于校验是否出错)
  • 然后是8bit 的命令码(也是从低有效位开始发),而后也是8bit 的命令码的反码。

以上是一个指令码的序列,但当长时间按住遥控按钮,在这这种情况下,使用NEC协议的红外遥控器将会发射一个以110ms为周期的重复码。也就是说,每一次用户按下遥控器按钮,遥控器在发送一次指令码后,就不会再发送指令码了,而是发送一段重复码。如下图:

重复码由9ms高电平和2.25ms的低电平以及560us的高电平组成,如下图所示:


(4)这是个串行协议

  • 一个个bit按照顺序,在不同时间发送出去

(5)写代码时时序中的时间仍然是关键点
 

2.2.4.官方示例代码解析
下载链接

(1)如何得到一段代码的精确延时时间?

  • 答案是用Keil进行软仿真。
  • 在涉及到延时时间的问题时,一定要先定下来晶振频率。

(2)利用keil的软仿真确定精确延时


2.2.5.红外接收程序的移植和调试1

遥控器上面的键值:
 

电源 0x45 Mode 0x46 静音 0x47
快进 0x44 上一曲 0x40 下一曲 0x43

EQ

0x07 VOL- 0x15 VOL+ 0x09
0 0x16 RPT 0x19 U/SD 0x0D
1 0x0C 2 0x18 3 0x5E
4 0x08 5 0x1C 6 0x5A
7 0x42 8 0x52 9 0x4A

2.2.6.红外接收程序的移植和调试2

(1)延时时间配合

(2)屏蔽无效数据的正确姿势

(3)程序缺陷和改良方案
ABCDEF怎么显示出来
 


 

本节课程序下载链接:红外遥控

本节课结束!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_27148893/article/details/110946144

智能推荐

Peewee 使用_xiaoming0018的博客-程序员秘密

Peewee是一个简单小巧的Python ORM,它非常容易学习,并且使用起来很直观。如果想快速入门,请参考官方的Quckstart。基本知识在官方的Quckstart中,Peewee中Model类、fields和model 实例与数据库的映射关系如下:也就是说,一个Model类代表一个数据库的表,一个Field字段代表数据库中的一个字段,而一个model类实例化对象则代...

jax_ws_带有JAX-RS和PrimeFaces的RESTful图表_cunfen8879的博客-程序员秘密

jax_ws 通常,利用图表提供数据的可视表示很有用。 PrimeFaces提供制图解决方案,使您可以轻松地将数据的可视表示形式添加到Web和移动应用程序中。 如果我们将PrimeFaces图表组件的使用与RESTful Web服务数据结合在一起,我们可以创建自定义图表,以适合台式机和移动设备。 在本文中,我将更新Java EE 7动手练习MoviePlex应用程序,以提供一个仪表板,我们可以...

深入理解Java虚拟机(类文件结构+类加载机制+字节码执行引擎)_weixin_34248849的博客-程序员秘密

目录 1.类文件结构 1.1 Class类文件结构 1.2 魔数与Class文件的版本 1.3 常量池 1.4 访问标志 1.5 类索引、父索引与接口索引集合 1.6 字段表集合 1.7 方法集合 1.8 属性表集 ...

HackTheBox - Vaccine_hackthebox vaccone_Briyney的博客-程序员秘密

Hack The Box :: Starting Point - Tier2 - Vaccine

AD18常用快捷键_小学徒666的博客-程序员秘密

目录Altium Designer(AD18)常用操作和快捷方式简单操作分层设计原理图库PCB库集成库PCB绘制覆铜 Altium Designer(AD18)常用操作和快捷方式 简单操作 方格与格点的切换:View-Grids-ToggleVisible Grid Kind 原点:Edit-Origin-Set 边界的定义:Keep Out Layer-Utility Tools-Place Line 按TAB可定义线宽

译(五十)-Pytorch转换Tensor至numpy数组_MWHLS的博客-程序员秘密

文章首发及后续更新:https://mwhls.top/3680.html新的更新内容请到mwhls.top查看。无图/无目录/格式错误/更多相关请到上方的文章首发页面查看。stackoverflow热门问题目录如有翻译问题欢迎评论指出,谢谢。 目录 1. Pytorch tensor 转为 numpy array 2. Pytorch tensor to numpy array Pytorch tensor 转为 numpy arrayDukeLover asked:对于一个大小为 torch

随便推点

iOS 定位和地图_FirstBloodFB的博客-程序员秘密

iOS中有三个定位服务组件:   Wifi定位,通过查询一个Wifi路由器的地理位置的信息。比较省电,iPod touch和iPad也可以采用。   蜂窝基站定位,通过移动运用商基站定位。也适合有3G版本的iPod touch和iPad。   GPS卫星定位,通过3-4颗GPS定位位置定位,最为准确,但是耗电量大,不能遮挡。Core LocationCore

python 数据库框架peewee_Python加peewee让数据库访问更简单_weixin_39629679的博客-程序员秘密

经常有人贬低ORM(Object Relational Mapping),说性能不好,麻烦。这种人要么是互联网企业的大牛,要么是根本没维护过大型代码。做为接地气的程序 员,多少还是要接触到Hibernate, ActiveRecords这样各种ORM框架的。不然你就要面对成千上万行的SQL代码无从下手。peewee是以简单为卖点的ORM, 我就喜欢这样的框架,类似的还有flask, sinatra...

javascript中常用属性和方法的笔记_羊阳洋丶的博客-程序员秘密

下面写了一些经常用的e.target //e.target是指向我们点击的对象,那个触发了事件,点那个li你们a.target就指向li //this是指向绑定的对象,绑定了ul那么this指向ul var ul=document.querySelector("ul"); ul.addEventListener("click",function(e){ console.log(e.target); co..

《Linux4.0设备驱动开发详解》笔记--第十一章:内存与I/O访问_zcj仲从建的博客-程序员秘密

由于Linux系统提供了复杂的内存管理功能,所以内存的概念在Linux系统中的相对复杂,有常规的内存、高端的内存、虚拟地址、逻辑地址、总线地址、物理地址、I/O内存、设备内存、预留内存等概念11.1 CPU与内存、I/O11.1.1 内存空间与I/O空间I/O空间:在X86处理器中存在着I/O空间的概念,I/O空间是相对于内存空间而言的它通过特定的指令in、out来访问指令格式:IN 累加器

数据库领域颠覆先行者虽难 但总有机会_cuanlielian4510的博客-程序员秘密

导语:去年双11支付宝核心交易流量完全不依赖Oracle数据库,100%由阿里巴巴自主研发的数据库产品OceanBase承载的消息,不仅让OceanBase名声大噪,也让项目负责人阳振坤被推到了前台。不少人惊呼国产数据库发...

java 异步 同步应用_piperzero的博客-程序员秘密

java 异步 同步应用概念性的东西总是忘记,记下来,有时间可以回味得看看java 异步同步应用所谓异步输入输出机制,是指在进行输入输出处理时,不必等到输入输出处理完毕才返回。所以异步的同义语是非阻塞(None Blocking)。网上有很多网友用很通俗的比喻把同步和异步讲解的很透彻转过来举个例子:普通B/S模式(同步)AJAX技术(异步)同步:提交...