【STC单片机学习】高级外设和项目篇二:红外遥控

【朱老师课程总结 侵删】

第一部分、章节目录

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怎么显示出来
 


 

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

本节课结束!

猜你喜欢

转载自blog.csdn.net/qq_27148893/article/details/110946144
今日推荐