零基础学习GD32 红外遥控器原理

发布者:MindfulCreator最新更新时间:2024-11-07 来源: elecfans关键字:GD32  红外遥控器 手机看文章 扫描二维码
随时随地手机看文章

第一节 红外遥控实验

遥控器是一种无线发射装置,通过现代的数字编码技术,将按键信息进行编码,通过红外线二极管发射光波,光波经接收机的红外线接收器将收到的红外信号转变成电信号,由处理器进行解码,解调出相应的指令来达到控制机顶盒等设备完成所需的操作要求。

一、红外遥控器原理

很多电器都采用红外线遥控,那么红外线遥控的工作原理是什么呢?首先我们来看看什么是红外线。

人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。其中红光的波长范围为0.62~0.76μm;紫光的波长范围为0.38~0.46μm。比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线。

红外线遥控就是利用波长为0.76~1.5μm之间的近红外线来传送控制信号的。

常用的红外线遥控系统一般分发射和接收两个部分。

发射部分的主要元件为红外发光二极管。它实际上是一只特殊的发光二极管,由于其内部材料不同于普通发光二极管,因而在其两端施加一定电压时,它便发出的是红外线而不是可见光。

大量使用的红外发光二极管发出的红外线波长为940nm左右,外形与普通发光二极管相同,只是颜色不同。

红外发光二极管一般有黑色、深蓝、透明三种颜色。

判断红外发光二极管好坏的办法与判断普通二极管一样:用万用表电阻挡量一下红外发光二极管的正、反向电阻即可。

红外发光二极管的发光效率要用专门的仪器才能精确测定,而业余条件下只能用拉距法来粗略判定。接收部分的红外接收管是一种光敏二极管。

在实际应用中要给红外接收二极管加反向偏压,它才能正常工作,亦即红外接收二极管在电路中应用时是反向运用,这样才能获得较高的灵敏度。

红外接收二极管一般有圆形和方形两种。

由于红外发光二极管的发射功率一般都较小(15mW左右),所以红外接收二极管接收到的信号比较微弱,因此就要增加高增益放大电路。

前些年常用μPC1373H、CX20106A等红外接收专用放大电路。最近几年不论是业余制作还是正式产品,大多都采用成品红外接收头。

成品红外接收头的封装大致有两种:一种采用铁皮屏蔽;一种是塑料封装。均有三只引脚,即电源正(VDD)、电源负 (GND)和数据输出(VO或OUT)。红外接收头的引脚排列因型号不同而不尽相同,可参考厂家的使用说明。成品红外接收头的优点是不需要复杂的调试和外 壳屏蔽,使用起来如同一只三极管,非常方便。但在使用时注意成品红外接收头的载波频率。

红外遥控常用的载波频率为38kHz,这是由发射端所使用的455kHz陶振来决定的。

在发射端要对晶振进行整数分频,分频系数一般取12,所以455kHz÷12≈37.9 kHz≈38kHz。也有一些遥控系统采用36kHz、40kHz、56kHz等,一般由发射端晶振的振荡频率来决定。

二、红外遥控编码

常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法。

我的遥控器使用的是NEC协议,即PWM方法,其特点如下:

1、8位地址和8位指令长度;

2、地址和命令2次传输(确保可靠性)

3、PWM脉冲位置调制,以发射红外载波的占空比代表“0”和“1”;

4、载波频率为38Khz;

5、位时间为1.125ms或2.25ms;

NEC码的位定义:一个脉冲对应560us的连续载波,一个逻辑1传输需要2.25ms(560us脉冲+1680us低电平),一个逻辑0的传输需要1.125ms(560us脉冲+560us低电平)。而遥控接收头在收到脉冲的时候为低电平,在没有脉冲的时候为高电平,这样,我们在接收头端收到的信号为:逻辑1应该是560us低+1680us高,逻辑0应该是560us低+560us高。

NEC遥控指令的数据格式为:同步码头、地址码、地址反码、控制码、控制反码。同步码由一个9ms的低电平和一个4.5ms的高电平组成,地址码、地址反码、控制码、控制反码均是8位数据格式。按照低位在前,高位在后的顺序发送。采用反码是为了增加传输的可靠性(可用于校验)。

三、解码过程


从图中可以看到,其地址码为0,控制码为168。可以看到在100ms之后,我们还受到了几个脉冲,这是NEC码规定的连发码(由9ms低电平+2.5m高电平+0.56ms低电平+97.94ms高电平组成),如果在一帧数据发送完毕之后,按键仍然没有放开,则发射重复码,即连发码,可以通过统计连发码的次数来标记按键按下的长短/次数。

四、实验操作

基于GD32 实验21 红外遥控实验基础上,在remote.h文件中添加以下宏定义:

#defineBUTTON_1 218

#defineBUTTON_2 242

#defineBUTTON_3 202

#defineBUTTON_4 90

#defineBUTTON_5 240

#defineBUTTON_6 122

#defineBUTTON_7 106

#defineBUTTON_8 114

#defineBUTTON_9 74

#defineBUTTON_0 170

#define BUTTON_POWER 234

作为遥控器的新键值。

main.c文件中的switch函数也进行了如下修改:

switch(key)

{

caseBUTTON_POWER:

LCD_ShowString(86,150,'POWER');

break;

caseBUTTON_1:

LCD_ShowString(86,150,'1 ');

break;

caseBUTTON_2:

LCD_ShowString(86,150,'2 ');

break;

caseBUTTON_3:

LCD_ShowString(86,150,'3 ');

break;

caseBUTTON_4:

LCD_ShowString(86,150,'4 ');

break;

caseBUTTON_5:

LCD_ShowString(86,150,'5 ');

break;

caseBUTTON_6:

LCD_ShowString(86,150,'6 ');

break;

caseBUTTON_7:

LCD_ShowString(86,150,'7 ');

break;

caseBUTTON_8:

LCD_ShowString(86,150,'8 ');

break;

caseBUTTON_9:

LCD_ShowString(86,150,'9 ');

break;

caseBUTTON_0:

LCD_ShowString(86,150,'0 ');

break;

default:

break;

}

最后,测试一切正常!


关键字:GD32  红外遥控器 引用地址:零基础学习GD32 红外遥控器原理

上一篇:如何查看GD32 Keil和IAR工程的map文件
下一篇:GD32开发实战指南(基础篇) 第6章 按键

推荐阅读最新更新时间:2026-03-25 10:53

STM32如何接收红外遥控器的信号?详解接收流程
经过几天早晨的学习,终于把遥控器的红外信号给搞通了,特此记录一下;其实说白了,红外遥控就是高低电平的信号,用时间来区分是二进制的0还是1;然后把这些0或1,在组装成一个32位的数基本就算是完事了,最后程序里判断你按下的这个遥控按键的值是不是你预先设定的值就好了,执行自己想要的动作就OK了。 下面是NEC红外码的编码时序: NEC 码的位定义: 一个脉冲对应 560us 的连续载波, 一个逻辑 1 传输需要2.25ms(560us 脉冲+1680us 低电平) , 一个逻辑 0 的传输需要 1.125ms(560us脉冲+560us 低电平) 。 而红外接收头在收到脉冲的时候为低电平, 在没有脉冲的时候为高电平, 这样, 我们在
[单片机]
STM32如何接收<font color='red'>红外遥控器</font>的信号?详解接收流程
C51编程22-应用篇(解码红外遥控器
在使用家电过程中,必不可少的就是遥控器了。 常用的红外遥控系统一般分发射和接收两个部分。应用编/解码专用集成电路芯片来进行控制操作,如下图所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。 发射部分的主要元件为红外发光二极管。它实际上是一只特殊的发光二极管;由于其内部材料不同于普通发光二极管,因而在其两端施加一定电压时,它便发出的是红外线而不是可见光。目前大量的使用的红外发光二极管发出的红外线波长为940nm左右。 由于我们目的不是制作遥控器,而是利用遥控器控制单片机的功能,我们将会重点在于红外接收到信号部分。红外接收头通常使 HS003
[单片机]
C51编程22-应用篇(解码<font color='red'>红外遥控器</font>)
用示波器测量电视红外遥控器
家里用的电视机或者数字接收机、DVD等都离不开红外遥控器,这些遥控器是我们生活娱乐中必不可少的工具, 遥控器难免因为外界条件而损坏,常见的故障为455晶振容易受外界振动等因素而损坏。 如下图所示是我翻出来的一个比较老旧的遥控器。 当遥控器出现故障时, 就需要拆开遥控器外壳来观察。 在实际使用遥控器中,455晶振是最常见的,当使用的遥控器发现不能正常使用的情况下,就要考虑以下几点。 ①用万用表看看电池是否还有电,电压过低需要换新电池。 ②用随身携带的手机摄像头(其他摄像头也行)对遥控器的红外发光二极管照射,同时在任意按遥控器上的一个按键,看看摄像屏幕上是否出现白色光源,出现代表正常,不出现就要考虑内部电路问题。 ③红外发射二极管
[测试测量]
用示波器测量电视<font color='red'>红外遥控器</font>
示波器测量电视机红外遥控器
家里用的电视机或者数字接收机、DVD等都离不开红外遥控器,这些遥控器是我们生活娱乐中必不可少的工具, 遥控器难免因为外界条件而损坏,常见的故障为455晶振容易受外界振动等因素而损坏。 如下图所示是我翻出来的一个比较老旧的遥控器。 当遥控器出现故障时, 就需要拆开遥控器外壳来观察。 在实际使用遥控器中,455晶振是最常见的,当使用的遥控器发现不能正常使用的情况下,就要考虑以下几点。 ①用万用表看看电池是否还有电,电压过低需要换新电池。 ②用随身携带的手机摄像头(其他摄像头也行)对遥控器的红外发光二极管照射,同时在任意按遥控器上的一个按键,看看摄像屏幕上是否出现白色光源,出现代表正常,不出现就要考虑内部电路问题。 ③
[测试测量]
红外遥控器测试仪原理图
本电路用于检查一个红外遥控器的基本操作的理想选择。该电路是基于压电蜂鸣器直接连接到一个红外线接收器IC精辟简单的想法。红外遥控器测试仪原理图:
[测试测量]
<font color='red'>红外遥控器</font>测试仪原理图
基于STM32F407的万能红外遥控器
利用stm32f407的PA8引脚的复用功能输入捕获功能,将遥控器每个按键所对应的波形记录下来,再通过红外发射头发射出去,进而来控制电器。 由于要对所有遥控器适用,这就要求程序要能够在不知道红外编码方式的前提下学习,所以我决定将遥控器发出来的所有波形都记录下来,用的时候再按这个波形发射就能够实现遥控,中间不需要解码出相应的键值码。 编程学习波形的大致思路: 将遥控器每一个按键所对应的波形学习下来(即储存高低电平的时间 参考nec编码协议部分内容)每一位信息应该对应两个时间,所以要存储200多个时间信息,建立二维数组进行存储,利用输入捕获捕获到下降沿的时候开始计时,并立即设置为上升沿捕获,上升沿时来时读取低电平时间存到数
[单片机]
单片机解码万能红外遥控器的C51程序
使用方法:打开串口调试助手,设置为9600 bps 单片机 这边用11.0592M Hz 的 晶振 ,使用sm0038或者其他型号的红外接收头按下面的 电路 连接好,其中out直接与单片机的p3.2脚相连.按下 遥控器 ,串口调试助手便会出现 解码 值. /******************************************************************/ /* 本程序的蓝本从网上搜集,经修改并注释,万能遥控器解码成功 */ /* 晶振:11.0592MHz */ /************************* 说 明 ***********************
[单片机]
单片机解码万能<font color='red'>红外遥控器</font>的C51程序
用AT89S51制作的红外遥控器
 一般红外电视遥控器的输出都是用编码后串行数据对38~40kHz的方波进行脉冲幅度调制而产生的。   当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:   采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”。   上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制,然后再通过红外发射二极管产生红外线向空间发射。一般电视遥控器的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved