【朱老师课程总结 侵删】
第一部分,章节目录
第二部分,章节介绍
本节讲述人机界面的概念以及红外遥控相关的背景知识,目的是拓宽大家的视野和知识面,为进一步深入学习指点方向。 本节分析了红外接收部分的原理图和工作原理,拆卸了红外遥控器,并解释了其工作原理。 本节主要讲解NEC协议的重点是协议的理解和时序图的分析方法。理解协议的时序图后,可以分析解码代码。 本节开始讲解官方示例代码,主要是通过软仿真确定精确延迟,从头到尾阅读官方示例代码。 本节开始进行程序移植和调试,主要与时间相关。 本节总结了移植中的问题,并提出了现有程序的漏洞和修复方法,实际上将在项目中进行。
第三部分,随堂记录
2.2.1.红外遥控背景知识
(1)面对面操作:按钮和旋钮 / 触摸按钮,触摸屏 (2)遥控操作:红外遥控,433M-2.4G无线通信,蓝牙-WIFI-Zigbee-4G-LoRa等无线网络 (1)红外线基本知识
- 根据波长从长到短排列人眼可见光,依次为红、橙、黄、绿、青、蓝、紫。红光的波长范围为 0.62~0.76μm;紫光的波长范围为 0.38~0.46μm。比紫光波长短的光叫紫外线,比红光波长长的光叫红外线。红外遥控器采用波长 0.76~1.5μm 控制信号通过近红外传输。就像空气中的电磁波一样,它是由相同的而且垂直电场和磁场在空间中衍生发射的振荡粒子波是以波动形式传播的电磁场,具有波粒二象性。
- 与无线电不同,红外线不能通过障碍物控制被控对象,每套红外设备(发送和接收器)应具有不同的编码和频率。通用遥控器是一个可以匹配不同类型产品频率和编码的学习过程
(2)红外发射和接收两部分
- 红外遥控由发送和接收两部分组成。
- 发送端通过红外发射管将待发送的二进制信号编码调制成一系列脉冲串信号。
- 接收端将接收到的光脉转换为电信号(),放大、滤波、整形等处理后,送解调电路解调,还原为二进制数字信号后输出。
红外遥控器、红外发光二极管如下图所示:
(3)38KHz载波、数字信号和调制
- 载波:红外遥控器常用载波传输二进制编码,常用载波频率为 38kHz,这是由发射机使用的 455kHz晶体振动决定。晶体振动应在发射端分频,分频系数一般取 12,所以455kHz÷12≈37.9kHz≈38kHz
- 编码:即二进制脉冲代码的形式,即红外遥控器的通信协议。如果我们想开发红外接收设备,我们必须知道红外遥控器的编码方法和载波频率,然后我们可以选择集成的红外接收头并制定解码方案。
(4)红外遥控通信协议 我们之前接触过哪些协议?特点是什么?红外遥控通信协议和他们有什么区别? 有很多红外遥控通信协议!NEC公司的NEC协议、Philips的RC5协议、Sony的SIRC协议等等,
2.2.2.原理图电路分析
(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
(1)功能演示 (2)拆解 (3)芯片Wire-Bonding工艺 (1)发射端—红外遥控器,不需要操作,里面已经做好处理了,按下之后,发出来的是红外信号 (2)传播:通过空气传播 (3)接收端:需要用协议解调,生成二进制信号,这里就需要学习NEC协议,看下一小节!
2.2.3.NEC协议讲解链接
(1)红外遥控协议的作用:从二进制层面上定义了如何传输一帧数据 (2)解析协议的关键点:把握好时间—delay函数 (3)不同协议的差异:定义‘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按照顺序,在不同时间发送出去
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怎么显示出来