红外遥控解码系统
红外遥控解码实验报告(3篇)
第1篇一、实验目的本次实验旨在通过搭建红外遥控系统,了解红外遥控的基本原理,掌握红外遥控信号的编码和解码方法,并利用单片机实现对红外遥控信号的解码,实现对红外遥控器的控制。
二、实验原理红外遥控技术是一种无线通信技术,通过发射端发送特定编码的红外信号,接收端接收该信号并进行解码,从而实现对电器的控制。
红外遥控系统主要由发射端和接收端两部分组成。
1. 发射端:由按键矩阵、编码调制电路和红外发射器组成。
按键矩阵根据按键的不同产生不同的编码信号,编码调制电路将这些信号调制在38kHz的载波上,红外发射器将调制后的信号发射出去。
2. 接收端:由红外接收器、前置放大电路、解调电路和指令信号检出电路组成。
红外接收器接收发射端发射的红外信号,前置放大电路对信号进行放大,解调电路将38kHz的载波信号去除,指令信号检出电路从解调后的信号中提取出指令信号。
三、实验设备1. 红外遥控发射器2. 红外接收模块3. 单片机开发板4. 连接线5. 电源6. 红外遥控解码程序四、实验步骤1. 搭建红外遥控系统:将红外接收模块连接到单片机开发板的相应引脚上,确保连接正确无误。
2. 编写红外遥控解码程序:根据红外遥控协议,编写解码程序,实现对红外信号的解码。
3. 程序烧录与调试:将解码程序烧录到单片机中,连接电源,进行程序调试。
4. 测试与验证:使用红外遥控器对单片机进行控制,观察单片机是否能够正确解码红外信号,并实现相应的控制功能。
五、实验结果与分析1. 红外遥控系统搭建成功:通过连接红外接收模块和单片机开发板,成功搭建了红外遥控系统。
2. 解码程序编写与调试:根据红外遥控协议,编写解码程序,实现对红外信号的解码。
在调试过程中,通过观察单片机的输出,验证了程序的正确性。
3. 测试与验证:使用红外遥控器对单片机进行控制,观察单片机是否能够正确解码红外信号,并实现相应的控制功能。
实验结果表明,单片机能够成功解码红外信号,并实现红外遥控器的控制功能。
任务5.4红外遥控解码.
* 函数名称: InfraredInit()
* 功能 :定时器测量脉宽功能初始化 * 入口参数:无
* 出口参数:无
* 说明 : ***************************************************************************/
void InfraredInit()
{
uint PulseWidth=0;
//
uchar OriginalCode=0;
//
脉宽 操作码原码
6
5.4 红外遥控器解码
uchar AntiCode=0;
//
按键码反码
static bit FlagStart=0;
//
捕获结果码标志位
static uchar IntrNum=0;
//
中断次数
IntrNum++;
}
if(IntrNum>=32)
//
{
IntrNum=0;
AntiCode=InfraredDecode&0xff; // OriginalCode=(InfraredDecode>>8)&0xff;//
if(AntiCode+ OriginalCode==0xff) //
{
FlagInfraredGet=1;
5.4.3 任务实施
图 5.4.8 是本程序的工程结构图:
图 5.4.8 工程结构框图
4
5.4 红外遥控器解码
( 1)主函数 main.c:
#include<reg52.h>
#include"Infrered.h"
红外遥控原理及解码程序
红外遥控系统原理及单片机红外线遥控是目前使用最广泛的一种通信和遥控手段。
由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。
工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。
1红外遥控系统通用红外遥控系统由发射和接收两大部分组成。
应用编/解码专用集成电路芯片来进行控制操作,如图1所示。
发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。
图1红外线遥控系统框图2遥控发射器及其编码遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC 的UPD6121G组成发射电路为例说明编码原理(一般家庭用的DVD VCD 音响都使用这种编码方式)。
当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。
这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms 的组合表示二进制的0” 以脉宽为0.565ms 、间隔1.685ms 、周期为2.25ms 的组合表示二进制的1 ”,其波形如图2所示。
图2遥控码的0”和1 ” (注:所有波形为接收端的与发射相反)上述0”和1 ”组成的32位二进制码经38kHz 的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。
然后再通过红外发射二极 管产生红外线向空间发射,如图3示。
图3遥控信号编码波形图UPD6121G 产生的遥控编 码是连续 的32位二进制 码组,其中前16 位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干 扰。
该芯片的用户识别码固定为十六进制01H ;后16位为8位操作码(功 能码)及 其反 码。
UPD6121G 最多额128种不同组 合的编码。
红外解码程序详解
红外遥控解码程序设计——————基于uPD6121红外编码制式红外传感系统是目前应用最为广泛的遥控系统,一个红外遥控系统可分为发射和接收两部分组成,发射端称之为红外遥控器,一般由矩阵键盘,红外编码调制芯片和红外发射管组成;接收端用一体化红外接收头即可,这个东东内置光电放大器和解调部分,信号接收之后一般很微弱须放大后才可解码,为有效发射出去得先托付在载波上所以需经历调制、解调的过程,其实对于发射部分主要工作在于编码,而对于编码方式只有几种主流方式,而目前国内大部分均为uPD6121编码方式(日本NEC公司搞出来的。
),所以我们只须弄清楚这种编码的时序,即可写出万能的红外解码程序,只要是基于这种编码方式的遥控器(家里的电视、空调、电扇遥控器)都可以用该程序来解码(这点也充分证明了C语言的高移植性啊。
)这种编码的格式其实很简单,开头是一个引导码,人家芯片在编码时将其设计成9ms的高电平和4.5ms的低电平,也就是说你必须跳过这段引导码之后才会接收到数据,第一个问题来了:为什么要加这段引导码?因为红外传感是非常容易受到干扰的,如果直接传送数据很可能并非发送端的信号,很可能来自其他辐射,后面设计程序时会遇到这个问题。
所以我们在写程序时在引导码时可以加入检测代码,如果是引导码则继续接收,否则跳出。
第二个问题就是:接收数据时我们用外部中断接收,这是考虑到CPU 的执行效率,如果你在主函数里接收数据,就好比CPU一直在问:你接收到数据没?你接收到没?..很明显不靠谱,和串口通信一样,接收数据用中断这是经验,有利于单片机的执行效率。
第三个要注意的就是红外接收端和编码发送的数据是反向的!这点很重要,我看很多资料没有写明这点,让很多童鞋疑惑不解,也就是说引导码编码时确实是9ms高电平和4.5ms 的低电平,但是到了接收端是9ms的低电平和4.5ms的高电平,所以我们在解码时就得注意引导码高电平出现的顺序。
对于编码格式,引导码后接了4个字节的数据,前两个字节为用户码和用户反码,简单点说就是器件地址;后两字节为操作码和操作反码,就是我们真正需要的数据。
单片机STM32F103C8T6的红外遥控器解码系统设计
单片机STM32F103C8T6的红外遥控器解码系统设计一、本文概述本文旨在详细阐述基于STM32F103C8T6单片机的红外遥控器解码系统的设计和实现过程。
随着科技的不断进步和智能化设备的普及,红外遥控器作为一种常见的遥控设备,已经广泛应用于家电、安防、玩具等多个领域。
然而,红外遥控器发出的红外信号往往需要通过解码器才能被设备正确识别和执行,因此,设计一款高效、稳定、可靠的红外遥控器解码系统具有重要意义。
本文将首先介绍红外遥控器的基本原理和信号特点,然后详细阐述STM32F103C8T6单片机的性能特点和在红外遥控器解码系统中的应用优势。
接着,将详细介绍红外遥控器解码系统的硬件设计,包括红外接收头的选择、电路设计和PCB制作等。
在软件设计部分,将详细阐述如何通过STM32F103C8T6单片机的编程实现红外信号的接收、解码和处理,以及如何将解码后的数据通过串口或其他通信方式发送给主控制器。
本文还将对红外遥控器解码系统的性能进行测试和分析,包括信号接收距离、解码速度和稳定性等方面的测试。
将总结本文的主要工作和创新点,并对未来的研究方向进行展望。
通过本文的研究和实现,旨在为红外遥控器解码系统的设计提供一种新的思路和方法,同时也为相关领域的研究人员提供有益的参考和借鉴。
二、红外遥控器基础知识红外遥控器是一种常见的无线遥控设备,它利用红外光作为信息载体,通过发射和接收红外光信号实现对设备的远程控制。
这种遥控方式因其简单、低成本和无需视线连接等优点,在各类消费电子产品中得到了广泛应用,如电视机、空调、音响等。
红外遥控器的工作原理主要基于红外辐射和光电器件的检测。
遥控器内部通常包含一个或多个红外发射管,当按下按键时,发射管会发射出特定频率和编码的红外光信号。
接收端则配备有红外接收头,该接收头内部有一个光敏元件(如硅光敏三极管或光敏二极管),用于检测红外光信号并将其转换为电信号。
为了区分不同的按键操作,红外遥控器通常采用特定的编码方式对按键信号进行编码。
红外遥控器软件解码及其应用
红外遥控器软件解码及其应用随着现代科技的不断发展,红外遥控器已经成为人们日常生活中的必备工具之一。
不过,很多人并不了解红外遥控器的工作原理以及它是如何通过软件解码来实现遥控效果的。
本文将详细介绍红外遥控器软件解码的相关知识,以及其在实际应用中的作用。
一、红外遥控器的工作原理首先,我们需要了解红外遥控器的工作原理。
简单来说,红外遥控器是一种利用红外线光谱来传输指令的设备,通过在发射端发送编码的红外信号,再在接收端解码后执行相应的指令。
通常,红外遥控器由发射部分与接收部分两个部分组成。
发射部分由红外LED发射器构成,它会通过红外发射现象来发送编码的红外信号。
在接收端,红外接收器则会接收到这些信号,并将其转换成电信号进行解码。
之后,解码器会解析出信号的编码含义,然后执行相应的指令。
这就是红外遥控器的基本工作原理。
二、红外遥控器软件解码的实现在红外遥控器的工作中,软件解码起到了重要的作用。
所谓软件解码,就是在终端设备中运行的一种程序,能够将遥控器发射的红外编码转换成可读的指令。
而这些指令就可以用于控制各种家电、设备等。
软件解码的实现主要有两种方式。
第一种是使用硬件解码器,这需要在终端设备上安装一个专门的硬件解码器,用于解析红外信号,并输出相应的指令。
第二种方法则是使用软件解码器,这需要在终端设备上安装一个软件程序,用于解析红外信号并输出指令。
在软件解码的实现中,最常见的是使用赛贝尔红外编解码库。
这个库已经成为了广泛使用的一种红外编解码方案。
它可以用于各种嵌入式设备、物联网设备、手机、电视机顶盒等多种应用场景中。
三、红外遥控器软件解码的应用目前,红外遥控器软件解码已广泛应用于各种智能家居、物联网设备、工控设备等领域。
下面列举一些具体的应用案例:1、智能家居:通过使用红外遥控器软件解码,可以实现对家中的各种电器、设备的遥控控制。
如电视、空调、照明设备等。
2、物联网设备:红外遥控器软件解码还可以用于物联网设备中,如智能家居中的智能门锁、智能家电等。
红外遥控解码完全资料LCD1602
红外遥控解码完全资料(LCD1602显示)本帖被一线工人执行置顶操作(2009-06-18)红外遥控解码实验一.实验目的1. 了解红外遥控编码并用单片机捕捉信号及解码2. 熟悉LCD1602的驱动二.红外遥控器编码遥控器编码分好几种,常见的32位编码码和42位编码码,目前我手中遥控器就是42位编码,如图1所示,当有按键时就会产一个9.12ms低电平和4.5ms高电平的起始码,紧接着是26位系统码,此系统码能区别不同的电器设备,防止不同机种遥控码互相干扰,接下来是8位数据码和8位数据反码,间隔23ms的高电平后,再发一个与启始码完全一样的结束码以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图2所示。
图2再回头看图1,大家不难看出,图1是遥控器按键1的一串编码三.硬件连接接收电咱我们使用一化红外接红外接收管1838,不需要任何外接无件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,实物如图所示电路图如下:四.解码以上我们了解了红外遥控的编码及硬件连接,现在就对其进行解码,所谓解码就是能用单片机把以不同宽度的脉冲区别开来,一种比较好思路就是计算两次下降沿间隔时间,当单片机外部中断1口有下降沿时中断一次,并启动定时器,定时器定50us,当下次下降沿到来时我们计算定时器中断的次数,这样我们就能很好的区分不同宽度的脉冲了。
大家可能已经迫不急待的要开始解码了,别急,我们先把注意事项先讲一下,实际上,我们红外接收头收到的信号的是有毛刺的,放大后就如下图,所以在下降沿中断触发后,要做延时去抖处理*************************************以下是完整解码程序********************************/***********************************************项目:红外遥控解码(EE01学习板演示程序)**作者:一线工人**网站:电子工程师之家**本程序适合42位码遥控器,即26位系统码,16位数据码,如:57L5,55K2,54B4,KD-29,55K8,5Z26A,等型号的遥控器,转贴请保持代码的完整性*********************************************/#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit ir=P3^3;//红外端口sbit dm=P1^4;//数码管段码控制位sbit wm=P1^5;//数码管位码控制位sbit led_cs=P1^6;//LED控制位sbit rs=P3^5;//1602数据命令选择端sbit en=P3^4;//1602使能信号uchar num;uchar key_code=0;//遥控键值uchar new_code=0;//有无新按键uint buf_key_code=0;//键值暂存uchar key_bit_count=0;//键编码脉冲计数uint count=0;//定时中断次数计数uint buf_count=0;//定时中断计数暂存uchar common_code_count=0;//前导码脉冲计数uchar ir_status=0;//脉冲接收器所处的状态,0:无信号,1:系统码接收区,2:数据编码接收区uchar code table[]="EE01 DEMO:IR";uchar code table1[]="code:";uchar code table2[]={'0','1','2','3','4','5','6','7','8','9',};void delay_10us(unsigned char y)///延时子程序10us{unsigned char x;for(x=y;x>0;x--);}void delay_ms(uint z)//延时子程序1ms{uint x,y;for(x=z;x>0;x--)for(y=113;y>0;y--);}void init(void)/////初始化{ir=1; //红外端口写1led_cs=0; //关闭LEDEA=1; //开总中断TMOD=0x02; //定时器0,模式2,8位自动装载模式TH0=0Xd1; //定时50usTL0=0Xd1;IT1=1; //INT1下降沿触发ET0=1; //允许定时器中断EX1=1; //允许外部中断}/***********************************************定时器中断***********************************************/void time0() interrupt 1///定时器中断{count++;//定时器中断次数累加}/**********************************************外部中断,红外解码程序**********************************************/void int1() interrupt 2///外部中断{TR0=1;//开定时器中断if(count>12&&count<270)//如果信号合法,则放入buf_count,count清0,对下一个脉冲信号计时{buf_count=count;count=0;}delay_10us(10);//延时100us以消除下降沿跳变抖动if(ir==0)//INT1引脚稳定为低电平,则表法确实是信号,count重新计时,因上面延时了50us,故要补偿1次TO中断{count=2;}if(buf_count>12&&buf_count<270)//若收到的信号合法,则再进行信号分析{if(ir_status==0)//如果之前未收到引导码{if(buf_count>210&&buf_count<270)//判断是否引导码13.5ms{ir_status=1;//系统标记buf_count=0;//}}else if(ir_status==1)///收到引导码{if(common_code_count>=25)//若收完26个脉冲{ir_status=2;//数据解码标记common_code_count=0;//系统码计算清零buf_count=0;//中断计数暂存清0}else if((buf_count>40&&buf_count<70)||(buf_count>12&&buf_count<32)){buf_count=0;common_code_count++;//每收到一个信号自加1}}else if(ir_status==2)//进入数据编码接收{if(key_bit_count<8)//收到数据少于8位,则将收到的数据写入buf_key_code {if(buf_count>40&&buf_count<70){buf_count=0;buf_key_code>>=1;buf_key_code|=0x80;//收到1key_bit_count++;//数据脉冲累加}else if(buf_count>12&&buf_count<32)//收到0{buf_count=0;buf_key_code>>=1;//收到0key_bit_count++;}}else //若收完8位数据则做以下处理{ir_status=0;//接收状态返回到空闲key_code=buf_key_code;key_bit_count=0;buf_key_code=0;buf_count=0;TR0=0;new_code=1;}}}}/**********************************************1062驱动程序**********************************************/void wirte_cmd(uchar cmd)//写命令{rs=0;P0=cmd;en=1;delay_ms(5);en=0;}void wirte_data(uchar dat)//写数据{rs=1;P0=dat;en=1;delay_ms(5);en=0;}void wirte_string(const unsigned char *s)//在第二行第5个字开始写字符串{wirte_cmd(0x80+0x40+0x05);while(*s){wirte_data(*s);s++;}}void init_1602()///1602初始化{dm=0;wm=0;led_cs=0;wirte_cmd(0x38);delay_ms(5);wirte_cmd(0x0c);delay_ms(5);wirte_cmd(0x06);}/*************************************主程序*************************************/void main(){init(); ///初始化init_1602(); //1602初始化while(!new_code);//判断是否有新按键,如果有则执行下面程序,没有则一直循环wirte_cmd(0x01);//1602清屏delay_ms(5);wirte_cmd(0x80);//在第一行写入EE01 DEMO:IRfor(num=0;num<12;num++){wirte_data(table[num]);delay_ms(1);}wirte_cmd(0x80+0x40);//在第二行写入code:for(num=0;num<5;num++){wirte_data(table1[num]);delay_ms(1);}if(key_code<10)//如果按鍵小于10则写入相应的数字{wirte_data(table2[key_code]);delay_ms(2);}else if(key_code<50)//大于10则写入字符,与遥控器对应{switch(key_code){case 21:wirte_string("mute");break;case 28:wirte_string("power");break;case 10:wirte_string("-/--");break;case 14:wirte_cmd(0x80+0x40+0x05);wirte_data(0x7f);wirte_data(0x7e);break;//先写字符位置,然后写字符,case 25:wirte_string("SLEEP");break;case 19:wirte_string("P.P");break;case 15:wirte_string("TV/A V");break;case 30:wirte_string("VOL-");break;case 31:wirte_string("VOL+");break;case 27:wirte_string("P+");break;case 26:wirte_string("P-");break;case 16:wirte_string("MENU");break;case 24:wirte_string("A-MODE");break;case 13:wirte_string("SYS");break;case 12:wirte_string("GAME");break;case 20:wirte_string("DISP");break;delay_ms(2);}new_code=0;}}。
红外线遥控编码解码控制
红外遥控具有结构简单,制作方便,成本低廉,抗干扰能力强,工作可靠性高等一系列优点。
同时,由于红外遥控器件,工作电压低,功耗小,外围电路简单,因此,在日常生活中广泛应用,如彩电,录像机,音响空调,风扇,即其它的小型电器上。
遥控距离在几米到十几米。
波长在0.76um~1000um的光波为红外光(线),红外光为不可见光。
红外光按波长范围分为近红外、中红外、远红外、极红外4类。
红外线遥控是利用近红外光传送遥控指令的,波长为0.76um~1.5um。
用近红外作为遥控光源,是因为目前红外发射器件(红外发光管)与红外接收器件(光敏二极管、三极管及光电池)的发光与受光峰值波长一般为0.8um~0.94um,在近红外光波段内,二者的光谱正好重合,能够很好地匹配,可以获得较高的传输效率及较高的可靠性。
一、红外遥控系统的构成:主要由两大部分构成: 红外编码发射部分,红外解码接收部分。
红外发射部分主要由,键盘,红外编码芯片(sc6122/ht6122),电源,红外发射管组成。
红外解码部分:由红外接收电路、红外解码、电源和应用电路组成。
红外遥控接收器的主要作用是将遥控发射器发来的红外光信好转换成电信号,再放大、限幅、检波、整形,形成遥控指令脉冲,输出至遥控微处理器。
其中红外接收电路主要是接收部分的红外接收管是一种光敏二极管(现在常用一体化红外接收头)。
三、红外遥控的编码与解码常用的编码芯片HT6122,遥控器的按键信息由编码芯片编码后,以38KHZ的载频,经红外发射管,向外发射。
有引导码,16为用户编码,按键编码,按键反码构成。
引导码:引导码,也称引导脉冲,一般由高电平1和低电平0的脉冲组成,高电平9ms,低电平4.5ms用来标志遥控编码脉冲信号的开始,使遥控接收器能由此判断出所接收的信号是干扰还是系统的遥控代码。
用户码:通常由8位原码和8位反码组成。
它用来指示遥控系统的种类,以区别其它遥控系统,防止各遥控系统的误动作。
单片机STM32F103C8T6的红外遥控器解码系统设计
78M i c r o c o n t r o l l e r s &E m b e d d e d S ys t e m s 2019年第10期w w w .m e s n e t .c o m .c n单片机S T M 32F 103C 8T 6的红外遥控器解码系统设计胡进德(仙桃职业学院科研处,仙桃433000)摘要:设计了一种适用于N E C 红外传输协议的解码系统㊂系统以单片机S TM 32F 103C 8T 6为核心,采用外部中断和定时器进行软件解码,解码结果通过串口调试软件在P C 机上进行了验证㊂详细介绍了N E C 红外传输协议和解码方法,包括系统软硬件设计㊁软件设计流程图㊁核心功能函数和程序代码㊂关键词:S TM 32F 103C 8T 6;N E C 红外传输协议;红外解码;外部中断;定时器中图分类号:T P 31 文献标识码:AD e s i g n o f D e c o d i n g S ys t e m f o r I n f r a r e d R e m o t e C o n t r o l l e r B a s e d o n S T M 32F 103C 8T 6H u J i n d e(S c i e n t i f i c R e s e a r c h D e p a r t m e n t ,X i a n t a o V o c a t i o n a l C o l l e ge ,X i a n t a o 433000,C h i n a )A b s t r a c t :A d e c o d i n g s y s t e m of i n f r a r e d r e m o t e c o n t r o l l e r s u i t a b l e f o r N E C i n f r a r e d t r a n s p o r t p r o t o c o l i s d e s ig n e d .Th e s ys t e m t a k e s M C U S TM 32F 103C 8T 6a s t h e c o r e t o c o m p l e t e s o f t w a r e d e c o d i n g b y e x t e r n a l i n t e r r u p t a n d t i m e r ,a n d t h e d e c o d i n g re s u l t s a r e v e r if i e d o n P C b y s e r i a l d e b ug g i n g s o f t w a r e .N E C i n f r a r e d t r a n s p o r t p r o t o c o l a n d d e c o d i n g m e th o d a r ei n t r o d u c e d i n d e t a i l ,i n c l u d i n gt h e s o f t w a r e a n d h a r d w a r e d e s i g n ,t h e f l o w c h a r t o f s o f t w a r e d e s i g n ,c o r e f u n c t i o n s a n d p r o gr a m c o d e .K e y wo r d s :S TM 32F 103C 8T 6;N E C i n f r a r e d t r a n s p o r t p r o t o c o l ;i n f r a r e d d e c o d i n g ;e x t e r n a l i n t e r r u p t ;t i m e r 引 言红外遥控具有体积小㊁信息传输可靠㊁功耗低㊁成本低等显著特点,越来越多地应用于嵌入式系统㊂红外遥控系统一般由发射和接收两大部分组成,红外遥控器所发射的信号编码格式不同,其解码的方法也会随之发生变化㊂目图1 N E C 红外传输协议的帧数据格式前市场上所用红外遥控器广泛使用两种形式的编码格式,一种是采用N E C 红外传输协议的P WM (脉冲宽度调制)方式,一种是采用P h i l i ps 红外传输协议的P P M (脉冲位置调制)方式[1]㊂通过对市场上一种名为T E L E S K Y 的红外遥控器[2]所发射的信号进行测试,研究表明,其信号波形和脉冲间隔时间符合N E C 红外传输协议,无重复码㊂本文依项目需要针对T E L E S K Y 红外遥控器设计了基于单片机S TM 32F 103C 8T 6的解码系统㊂1 N E C 红外传输协议N E C 红外传输协议的主要特征是:一帧数据包含8位用户编码(地址码)和8位按键数据码(命令码);用户编码和按键数据码均传送两次,一次是原码,一次是反码,以确保可靠传送;采用P WM (脉冲宽度调制)方式,以发射红外载波的占空比代表比特 0 和比特 1;载波频率是38k H z ;一个数据位的传输时间是, 0 用时1.125m s, 1 用时2.25m s [1]㊂N E C 红外传输协议的帧数据格式如图1所示,其位定义如图2所示㊂图2 N E C 红外传输协议的位定义在图1中红外遥控器发射的每帧数据有32位,由16位用户编码(含低8位用户编码和高8位用户编码)㊁8位按键数据码和8位按键数据码的反码组成㊂每帧数据发敬请登录网站在线投稿 2019年第10期79送前有一个引导码(同步码),引导码由一个9m s 的高电平和一个4.5m s 的低电平组成㊂每帧数据按照低位在前㊁高位在后顺序发送[3]㊂帧数据中采用反码是为了增加传输的可靠性,因此,反码可用于解码时进行校验对比㊂需要注意的是,遵循N E C 红外传输协议的发射芯片可有两种用户编码方式,一种是8位用户码原码加8位用户码的反码,另一种是16位用户编码,通过改变红外发射芯片外部电路来选择不同的用户编码方式[1]㊂在图2中比特 1 由一个0.56m s 的脉冲和1.69m s的低电平构成,比特 0 由一个0.56m s 的脉冲和0.56m s 的低电平构成㊂一个0.56m s 的脉冲对应0.56m s 的连续载波[1]㊂2 解码系统硬件设计单片机解码红外遥控器常用的方法有查询法㊁外部中断法和定时器捕获法[4]㊂本系统采用外部中断法,即通过外部中断检测红外信号利用单片机定时器测量帧数据中每一位数据的传输时间,从而识别数据位是比特 1还是比特 0[3],解码系统硬件设计如图3所示㊂图3 红外信号接收与解码电路图3中U 1为S TM 32F 103C 8T 6处理器,这是一款以A R M C o r t e x M 3为内核的32位单片机,具有运行速度快㊁处理能力强㊁外设接口丰富㊁价格低廉等特点,专门应用于对性能要求较高㊁成本要求较低以及低功耗的场合,其最高工作频率为72MH z ,工作电压为2~3.6V ,64K B的闪存和20K B 的S R AM ,37个I /O ,与通用端口G P I O映射的外部中断E X T I 有16个,1个16位高级控制定时器,3个16位通用定时器,3个U S A R T 串口通信模块等[5]㊂本系统通过S TM 32F 103C 8T 6的P A 7引脚以外部中断方式检测红外信号,使用通用定时器T I M 2测量帧数据中每一位数据的传输时间,解码结果通过U S A R T 1(P A 9为发送引脚)和串口调试软件在P C 机上显示㊂图3中U 2为一体化红外接收头H S 0038B ,它负责将调制在38k H z 上的红外编码信号接收和解调后送给S TM 32F 103C 8T 6的P A 7引脚进行检测㊂H S 0038B 第1引脚为正电源引脚,工作电压为2.7~5.5V ,实际工作电压为3.3V ,与S TM 32F 103C 8T 6工作电压相同;第2引脚为负电源引脚,接地;第3引脚为输出端,连接S TM 32F 103C 8T 6的P A 7引脚㊂当H S 0038B 没有接收到红外遥控信号时,第3引脚输出保持高电平;当接收到红外遥控信号时,第3引脚输出从高电平变为低电平,其下降沿触发S TM 32F 103C 8T 6的外部中断[6-7]㊂需要注意的是,一体化红外接收头输出解调后的脉冲信号电平与红外遥控器发送的编码格式电平反相[8],即S TM 32F 103C 8T 6的P A 7引脚接收到的帧数据格式电平与图1反相,其数据位定义也与图2反相:比特 1 由一个0.56m s 的低电平和1.69m s 的高电平构成,传输比特 1 需要2.25m s ;比特 0 由一个0.56m s 的低电平和0.56m s 的高电平构成,传输比特 0 需要1.125m s [9]㊂因此,通过外部中断E X T I 和定时器T I M 2统计P A 7引脚接收到的帧数据中2个下降沿之间的间隔时间就可得到帧数据中每一位数据的传输时间,从而识别数据位是比特 1 还是比特 0㊂3 解码系统软件设计在A R M 嵌入式系统开发中,对处理器功能模块的操作既可以通过对芯片底层的寄存器,也可以使用S T 公司提供的标准函数库[10],本系统采用标准函数库操作S T M 32F 103C 8T 6相关寄存器㊂解码系统软件设计主要涉及5个方面㊂3.1 配置红外脉冲信号输入引脚P A 7为下降沿触发中断通过初始化通用端口G P I O ㊁外部中断E X T I 和嵌套向量中断控制器N V I C 的相关寄存器,配置P A 7为下降沿触发中断㊂3.1.1 初始化G P I O 的相关寄存器将P A 7配置为浮空输入[10],开启端口时钟和A F I O 时钟,相关初始化程序如下:G P I O _I n i t T y pe D ef G P I O _I n i t S t r u c t u r e ; //声明结构体变量以便初始化G P I O 相关寄存器R C C _A P B 2P e r i p h C l o c k C m d (R C C _A P B 2P e r i p h _G P I O A |R C C _A P B 2P e r i ph _A F I O ,E N A B L E );//开启G P I O 端口时钟,用到E X T I 必须开启A F I O 时钟G P I O _I n i t S t r u c t u r e .G P I O _P i n =G P I O _P i n _7;//选中当前端口的引脚7G P I O _I n i t S t r u c t u r e .G P I O _M o d e =G P I O _M o d e _I N _F L O A T -I N G ;//设定为浮空输入G P I O _I n i t (G P I O A ,&G P I O _I n i t S t r u c t u r e);//初始化G P I O A 相关寄存器80M i c r o c o n t r o l l e r s &E m b e d d e d S ys t e m s 2019年第10期w w w .m e s n e t .c o m .c n3.1.2 初始化E X T I 的相关寄存器应将P A 7与外部中断线连接[10],并配置为下降沿触发中断请求,相关初始化程序如下:E X T I _I n i t T y pe D ef E X T I _I n i t S t r u c t u r e ;//声明结构体变量以便初始化E X T I 相关寄存器G P I O _E X T I L i n e C o n f i g (G P I O _P o r t S o u r c e G P I O A ,G P I O _P i n -S o u r c e 7);//将P A 7与外部中断线连接E X T I _I n i t S t r u c t u r e .E X T I _L i n e =E X T I _L i n e 7; //使用外部中断输入线7E X T I _I n i t S t r u c t u r e .E X T I _M o d e =E X T I _M o d e _I n t e r r u pt ; //设置E X T I 线路为中断请求E X T I _I n i t S t r u c t u r e .E X T I _T r i g g e r =E X T I _T r i g g e r _F a l l i n g ;//设置E X T I 线路为下降沿触发中断请求E X T I _I n i t S t r u c t u r e .E X T I _L i n e C m d =E N A B L E ; //开放E X T I 线路中断请求E X T I _I n i t (&E X T I _I n i t S t r u c t u r e );//初始化E X T I 相关寄存器3.1.3 初始化N V I C 的相关寄存器程序中用到了2个中断源:来自P A 7引脚的E X T I 下降沿触发中断和定时器T I M 2计数溢出中断㊂设定E X T I 中断优先级高于T I M 2中断,使用v o i d N V I C _P r i o r i t y-G r o u p C o n f i g (u i n t 32_t N V I C _P r i o r i t y G r o u p )函数设定优先级分组为第1组,E X T I 中断抢占优先级为1,T I M 2中断抢占优先级为0,相关初始化程序如下:N V I C _I n i t T y pe D ef N V I C _I n i t S t r u c t u r e ;//声明结构体变量以便初始化N V I C 相关寄存器N V I C _P r i o r i t y G r o u p C o n f i g (N V I C _P r i o r i t y G r o u p_1);//选择第1组 N V I C _I n i t S t r u c t u r e .N V I C _I R Q C h a n n e l =E X T I 9_5_I R Q n ;//配置中断源N V I C _I n i t S t r u c t u r e .N V I C _I R Q C h a n n e l P r e e m p t i o n P r i o r i t y =1;//抢占优先级为1N V I C _I n i t S t r u c t u r e .N V I C _I R Q C h a n n e l S u b P r i o r i t y =1;//子优先级为1N V I C _I n i t S t r u c t u r e .N V I C _I R Q C h a n n e l C m d =E N A B L E ;//使能中断通道N V I C _I n i t (&N V I C _I n i t S t r u c t u r e );//初始化N V I C 相关寄存器3.2 配置定时器T I M 2每0.1m s 产生一次溢出中通过初始化定时器T I M 2和N V I C 的相关寄存器,配置T I M 2每0.1m s 产生一次溢出中断,以便在其中断处理程序中统计帧数据中每一位数据的传输时间㊂3.2.1 初始化T I M 2的相关寄存器设定系统时钟为72MH z ,预分频值P r e s c a l e r 为3600,计数器自动重装值P e r i o d 为2,此时定时器T I M 2每0.1m s 产生一次溢出中断[10]㊂相关初始化程序如下:S ys t e m I n i t (); //设置系统时钟为72MH z T I M _T i m e B a s e I n i t T y pe D ef T I M _S t r u c t I n i t ;//声明结构体变量以便初始化T I M 2寄存器R C C _A P B 1P e r i p h C l o c k C m d (R C C _A P B 1P e r i ph _T I M 2,E N A -B L E );//开启T I M 2时钟T I M _S t r u c t I n i t .T I M _P e r i o d =2;//设定计数器自动重装值T I M _S t r u c t I n i t .T I M _P r e s c a l e r =3600;//设定预分频值T I M _S t r u c t I n i t .T I M _C l o c k D i v i s i o n =T I M _C K D _D I V 1;//设置时钟分割T I M _S t r u c t I n i t .T I M _C o u n t e r M o d e =T I M _C o u n t e r M o d e _U p;//设置向上计数模式T I M _T i m e B a s e I n i t (T I M 2,&T I M _S t r u c t I n i t );//初始化T I M 2寄存器T I M _I T C o n f i g (T I M 2,T I M _I T _U p d a t e ,E N A B L E ); //使能T I M 2中断T I M _C m d (T I M 2,E N A B L E );//启动T I M 2T I M _C l e a r F l a g (T I M 2,T I M _F L A G _U pd a te ); //清除T I M 2的待处理标志位3.2.2 初始化N V I C 的相关寄存器配置定时器T I M 2为中断源,设置其优先级,相关初始化程序如下:N V I C _P r i o r i t y G r o u p C o n f i g (N V I C _P r i o r i t y G r o u p _1);//选择第1组N V I C _S t r u c t I n i t .N V I C _I R Q C h a n n e l =T I M 2_I R Q n;//配置中断源N V I C _S t r u c t I n i t .N V I C _I R Q C h a n n e l C m d =E N A B L E ;//使能中断通道N V I C _S t r u c t I n i t .N V I C _I R Q C h a n n e l P r e e m p t i o n P r i o r i t y=0;//抢占优先级为0N V I C _S t r u c t I n i t .N V I C _I R Q C h a n n e l S u b P r i o r i t y=1;//子优先级为1N V I C _I n i t (&N V I C _S t r u c t I n i t ); //初始化N V I C 相关寄存器3.3 统计帧数据中每一位脉冲的传输时间定时器T I M 2每0.1m s 产生一次溢出中断,在T I M 2中断服务程序中,全局变量i r _t i m e 每0.1m s 自动加1㊂通过i r _t i m e 可统计P A 7引脚接收的帧数据中相邻的2个下降沿之间的间隔时间,同时也获得帧数据中每一位脉冲的传输时间㊂程序如下:v o i d T I M 2_I R Q H a n d l e r (v o i d ) //T I M 2中断服务程序{T I M _C l e a r I T P e n d i n g B i t (T I M 2,T I M _I T _U pd a te );//清除T I M 2中断标志位以便下一个0.1m s 到来时触发T I M 2//中断i r _t i m e ++;//全局变量i r _t i m e 的计数值自动加1}3.4 存储从引导码开始的33个脉冲传输时间当H S 0038B 没有接收到红外信号时,系统默认处在敬请登录网站在线投稿 2019年第10期81图4 E X T I 中断服务流程图空闲 状态,P A 7引脚一直是高电平㊂当H S 0038B 接收到红外信号时,P A 7引脚由高电平变为低电平,此时将触发外部中断E X T I ,在E X T I 中断服务程序中先判断采集到的脉冲信号是否为引导码,如果i r _t i m e 计数值大于90(9m s )且小于150(15m s),则可视为引导码(引导码传输时间理论值为13.5m s,考虑到S TM 32F 103C 8T 6和红外遥控发射器的晶振频率与标称值会有一定的偏差,以及H S 0038B 红外接收头输出波形的轻微畸变,在程序设计时要留有一定的容限误差[4]),并将从引导码开始的33个脉冲传输时间(i r_t i m e 的计数值)保存到事先定义好的数组i r d a t a [33](全局变量)中㊂E X -T I 外部中断服务程序流程图如图4所示㊂3.5 从数组i r d a t a [33]中提取比特 1和比特 0并形成4个字节的按键码数组i r d a t a [33]存放了33个脉冲传输时间,其中数组元素i r d a t a [0]存放的是引导码传输时间,其他32个数组元素i r d a t a [1]~i r d a t a [32]存放了4个字节按键码的传输时间㊂比特 1 的传输时间为2.25m s,其对应的数组元素取值为22或23;比特 0 的传输时间为1.125m s,其对应的数组元素取值为11或12㊂在程序设计时同样要留有一定的容限误差,当数组元素i r d a t a [1]~i r d a t a [32]取值为20~25时,可认为接收到比特 1,否则认为接收到比特 0 ㊂因此从数组i r d a t a [33]中可提取4个字节按键码:i r -d a t a [1]~i r d a t a [16]提取16位用户编码,i r d a t a [17]~i r d a t a [24]提取8位按键数据码,i r d a t a [25]~i r d a t a [32]提取8位按键数据码的反码㊂提取4个字节按键码的函数流程图如图5所示㊂4 解码结果验证为了验证解码方案的正确性,通过串口调试软件将实验结果显示在P C 机上㊂图6是T E L E S K Y 遥控器外观和对应的按键数据码,图7是显示在P C 机上的实验结果㊂图7中有84个数据码,从左向右每4个数据码(对应4个字节共32位比特)一组对应一个按键,分别指示按键的用户码原码㊁用户码的反码㊁按键数据码和按键数据码的反码㊂如遥控器左上角第一个按键 C H- 的解码为00F F 45B A ,按键 C H图5 提取4个字节按键码的函数流程图图6 遥控器外观和按键数据码的解码为00F F 46B 9,其他按键的解码依此类推㊂从解码的实验结果可以看出,32位比特的前16位为用户码,后16位为8位按键数据码和按键数据码的反码,符合N E C 红外传输协议,且图7中21个按键数据码与图6中21个按键的数据码相同,相互依次对应,从而验证了解码方法的正确性㊂图7 串口调试软件显示的按键码结 语本文介绍的红外遥控器解码方法原理直观㊁简单可靠,已经应用于实际项目中,可为无线遥控嵌入式系统学习者提供一个应用范例㊂该方法不仅适用于N E C 红外传输协议,对于其他传输协议的解码同样有很好85敬请登录网站在线投稿2019年第10期85表4使用H M M在嘈杂环境下识别结果控制指令1号正确次数/总次数2号正确次数/总次数3号正确次数/总次数4号正确次数/总次数闭合拇指7/106/105/104/10伸开拇指6/107/105/106/10手腕逆时针7/106/107/108/10手腕归位6/104/104/105/10伸开手掌5/105/106/107/10握紧拳头6/104/105/106/10结语HMM算法实现的前提是需要大量的语音样本训练,不仅需要考虑到语音语调的差别,还要考虑非特定人性别年龄的差异,这样才能够适应实际语音中的不同情况,因此HMM算法具有良好的识别性和抗噪性㊂参考文献[1]周艳萍.机器人嵌入式语音识别系统设计与开发[D].广州:华南理工大学,2012.[2]周慧芳.基于HMM的嵌入式语音识别系统的研究[D].广州:广东工业大学,2011.[3]黄岗.马尔可夫及隐马尔可夫模型的应用[J].电子设计工程,2013,21(17):6062.[4]任昕.基于隐马尔可夫模型和卷积神经网络的W e b安全检测研究[D].长沙:湖南大学,2018.[5]王稚慧.基于HMM建模的语音识别算法的研究[D].西安:西安建筑科技大学,2005.[6]曹冠彬.基于HMM的连续语音识别技术研究[D].南京:南京理工大学,2018.[7]袁腾,李秋红,杨国斌,等.基于Z i g B e e和3G技术的W S N s 环境监控系统设计[J].传感器与微系统,2012,31(6):128129,133.[8]田泽,智爱娟,阎效莺,等.U D A1341T S在嵌入式语音系统中的应用[J].西北大学学报:自然科学版,2006(2):214220.[9]周夕良.嵌入式语音识别系统研究[J].电脑与信息技术,2014,22(1):5658.张起浩㊁蒋少国,主要研究方向为智能硬件设计;赵鹏(助理实验师),通讯作者,主要研究方向为智能硬件设计㊁语音识别㊂(责任编辑:薛士然收稿日期:2019-04-23)[5]U n d e r w o o d C,P e l l e g r i n o S,L a p p a s V J,e t a l.U s i n gC u b e S a t/m i c r o s a t e l l i t e t e c h n o l o g y t o d e m o n s t r a t e t h e A u-t o n o m o u s A s s e m b l y o f a R e c o n f i g u r a b l e S p a c e T e l e s c o p e(A A R e S T)[J].A c t a A s t r o n a u t i c a,2015(114):112122.[6]韩忠辉.基于G P I B的无线通信计量自动测试系统[J].自动化与仪器仪表,2016(6):110.[7]刘倩茜,王格芳.基于多总线结构的电路板测试系统设计研究[J].价值工程,2016,35(32):131133.[8]S h l a d o v e r S E.C o n n e c t e d a n d a u t o m a t e d v e h i c l e s y s t e m s:I n-t r o d u c t i o n a n d o v e r v i e w[J].J o u r n a l o f I n t e l l i g e n t T r a n s p o r-t a t i o n S y s t e m s,2018,22(3):190200.[9]张凯,李涵,姜静.基于A T E与B I T组合的N AM P自动测试与故障诊断系统设计[J].海军航空工程学院学报,2015,30(4):321325.[10]刘鹏飞,谢森,姚玉山,等.某型制导武器通用自动测试系统方案设计[J].计算机测量与控制,2017,25(6):9599.[11]曹兴冈,韩晨.基于P X I航电计算机测试设备的设计与实现[J].电子技术,2016(2):6.[12]刘新飞,李亚利,王东,等.通用航管二次雷达功放模块自动测试系统研制[J].计算机测量与控制,2016,24(9):4749.[13]L i u Y,P e n g Y,W a n g B,e t a l.R e v i e w o n c y b e r p h y s i c a ls y s t em s[J].I E E E/C A A J o u r n a l o f A u t o m a t i c a S i n i c a,2017,4(1):2740.[14]郭栋梁,刘新妹,殷俊龄,等.通用电路板自动故障诊断系统的设计与实现[J].中国测试,2016,42(7):112116.[15]宋丽涵,张琴.基于总线技术的仪器仪表自动检定系统设计[J].兰州文理学院学报:自然科学版,2016(2):5256.何进(讲师),主要从事电子技术㊁电力电子技术等教学研究㊂(责任编辑:薛士然收稿日期:2019-05-06)的参考价值㊂参考文献[1]李幸泽.基于W E B方式的智能家电控制网关的硏究[D].广州:广东工业大学,2012.[2]T E L E S K Y.红外线遥控器,2019.[3]李雪莹.基于单片机的空调红外线编解码系统的设计和实现[D].成都:电子科技大学,2014.[4]何乃味.单片机定时器捕获模式解码红外遥控器的方法[J].现代电子技术,2012(18):1113.[5]意法半导体(S T).S TM32F103x8d a t a s h e e t,2019.[6]圣狄豹.H S0038B红外线接收发射对管,2019.[7]管芳绍,徐志江,孟利民.基于嵌入式系统的抗干扰红外软解码方法[J].计算机技术与应用,2010(10):3033.[8]杨萍.基于F P G A的功放遥控控制系统的设计与实现[D].成都:电子科技大学,2015(3):2933.[9]胥加林,游安华,皮大伟.基于单片机的智能红外遥控开关[J].机械制造与自动化,2016(4):200201.[10]肖广兵,万茂松,羊玢.A RM嵌入式开发实例[M].北京:电子工业出版社,2013.胡进德(副教授),主要研究方向为嵌入式系统㊁机电一体化㊂(责任编辑:薛士然收稿日期:2019-05-27)。
红外遥控器软件解码原理和程序
void rs232(void) interrupt 4{ static unsigned char sbuf1,sbuf2,rsbuf1,rsbuf2; //sbuf1,sbuf2 用来接收 发送临时用,rsbuf1,rsbuf2 用来分别用来存放接收发送的半字节 EA=0; //禁止中断 if(RI){ RI=0; //清除接收中断标志位 sbuf1=SBUF; //将接收缓冲的字符复制到 sbuf1 if(sbuf1==HEAD){ //判断是否帧开头 state1=10; //是则把 state 赋值为 10 buf1=RECEIVE; //初始化接收地 址 } else{
void tf_2(void); void read_ir(void); void ir_jiema(void); void ir_init(void); void ir_exit(void); void store_ir(void); void read_key(void); void reset_iic(void); unsigned char read_byte_ack_iic(void); unsigned char read_byte_nack_iic(void); bit write_byte_iic(unsigned char a); void send_ack_iic(void); void send_nack_ic(void); bit receive_ack_iic(void); void start_iic(void); void stop_iic(void); void write_key_data(unsigned char a); unsigned int read_key_data(unsigned char a); void ie0(void) interrupt 0{ie_0();} void tf0(void) interrupt 1{tf_0();} void ie1(void) interrupt 2{ie_1();} void tf1(void) interrupt 3{tf_1();tf_2();} void tf2(void) interrupt 5{ //采用中断方式跟查询方式相结合的办法解 码 EA=0; //禁止中断 if(TF2){ //判断是否是溢出还是电平变化产生的中断 TF2=0; //如果是溢出产生的中断则清除溢出位,重 新开放中断退出 EA=1; goto end; } EXF2=0; //清除电平变化产生的中断位 *ir=RCAP2H; //把捕捉的数保存起来 ir++; *ir=RCAP2L; *ir++; F0=1; TR0=1; //开启计数器 0 loop: TL0=0; //将计数器 0 重新置为零 TH0=0; while(!EXF2){ //查询等待 EXF2 变为 1 if(TF0)goto exit; //检查有没超时,如果超时则退出 };
红外线遥控解码原理
红外线遥控解码原理一、引言红外线遥控解码是一种常见的电子技术应用,广泛用于电视、空调、音响等家电产品中。
通过红外线遥控解码技术,可以实现遥控器与设备之间的无线通信,方便人们对设备进行远程操控。
本文将介绍红外线遥控解码的原理和实现方式。
二、红外线遥控解码原理红外线遥控解码的原理是利用红外线信号的特点进行解码。
遥控器通过按键操作产生一系列的红外信号,这些信号被红外发射器发射出去,然后被接收器接收并解码。
下面将详细介绍红外线遥控解码的原理。
1. 红外线信号的特点红外线是一种电磁波,波长在0.75微米到1000微米之间。
在这个波长范围内,红外线具有较好的穿透性,能够穿透一些物体,比如空气、玻璃等。
同时,红外线的波长也决定了它能够被人眼所感知。
2. 红外线遥控信号的编码方式红外线遥控信号一般采用脉冲宽度编码(Pulse Width Encoding)的方式进行编码。
即通过调节红外线信号的脉冲宽度来表示不同的信息。
通常会将一个编码周期分为若干个时间单位,每个时间单位内的脉冲宽度决定了信号的状态,比如高电平表示1,低电平表示0。
3. 红外线遥控信号的解码方式红外线遥控信号的解码一般分为两个步骤:解调和解码。
解调是指将接收到的红外线信号转换为电信号,解码是指将解调后的电信号转换为对应的按键信息。
解调通常采用红外线接收头来完成,红外线接收头是一种能够感知红外线信号并将其转换为电信号的传感器。
红外线接收头内部含有一个光电二极管,当红外线信号照射到光电二极管上时,会产生一个电压信号。
通过对这个电压信号进行放大和滤波处理,可以得到解调后的电信号。
解码是将解调后的电信号转换为对应的按键信息。
解码一般采用红外线遥控解码芯片来完成,这些芯片内部包含了一系列的逻辑电路和存储器,能够根据输入的电信号解码出对应的按键信息。
不同的遥控器厂商和设备类型会使用不同的解码协议,因此解码芯片需要根据具体的解码协议来进行解码。
三、红外线遥控解码的实现方式红外线遥控解码可以通过硬件电路和软件算法两种方式来实现。
详细解析:红外遥控编码与解码
详细解析:红外遥控编码与解码随着家用电器、视听产品的普及,红外线遥控器已被广泛使用在各种类型的家电产品上(如遥控开关、智能开关等)。
其具有体积小、抗干扰能力强、功耗低、功能强、成本低等特点,在工业设备中也得到广泛应用。
一般而言,一个通用的红外遥控系统由发射和接收两大部分组成,如图1 所示:其中发射部分主要包括键盘矩阵、编码调制、红外发射管;接收部分包括光、电信号的转换以及放大、解调、解码电路。
举例来说,通常我们家电遥控器信号的发射,就是将相应按键所对应的控制指令和系统码( 由0 和1 组成的序列),调制在32~56kHz 范围内的载波上,然后经放大、驱动红外发射管将信号发射出去。
此外,现在流行的控制方法是应用编/ 解码专用集成电路芯片来实现。
不同公司的遥控芯片,采用的遥控码格式也不一样。
在此介绍目前广泛使用较普遍的两种,一种是NEC Protocol 的PWM( 脉冲宽度调制) 标准,一种是Philips RC-5 Protocol 的PPM( 脉冲位置调制) 标准。
NEC 标准(代表芯片WD6122):遥控载波的频率为38kHz( 占空比为1:3) ;当某个按键按下时,系统首先发射一个完整的全码,然后经延时再发射一系列简码,直到按键松开即停止发射。
简码重复为延时108ms,即两个引导脉冲上升沿之间的间隔都是108ms。
如图2所示即为完整的NTC编码。
对于NTC编码,由引导码、用户编码低位,用户编码高位、键数据编码、键数据编码五部分组成,引导码由一个9ms的载波波形和4.5ms的关断时间构成,它作为随后发射的码的引导,这样当接收系统是由微处理器构成的时候,能更有效地处理码的接收与检测及其它各项控制之间的时序关系。
编码采用脉冲位置调制方式(PPM)。
利用脉冲之间的时间间隔来区分“0”和“1”。
每次8位的码被传送之后,它们的反码也被传送,减少了系统的误码率。
数据0 可用“高电平0.56ms +低电平0.56ms”表示,数据1 可用“高电平0.56ms +低电平1.68ms”表示。
红外遥控解码原理
感谢观看
汇报人:XX
红外遥控解码技 术能够提高智能 家居系统的稳定 性和可靠性
红外遥控解码技 术能够实现智能 家居系统的自动 化控制
红外遥控解码技 术能够提高智能 家居系统的安全 性和隐私保护
04
红外遥控解码的发展趋势
提高解码的准确性和稳定性
采用更先进的 算法和编码技 术,提高解码 的准确性和稳
定性
增加抗干扰能 力,降低外界 因素对解码的
影响
优化硬件设计, 提高接收器的 灵敏度和稳定
性
结合人工智能 技术,实现自 适应学习和优
化解码效果
实现多通道解码和多协议兼容
红外遥控解码技术不断发展,未来将实现多通道解码,提高解码效率和稳定性。 随着不同品牌和型号的红外遥控器不断涌现,多协议兼容将成为解码技术的重要发展方向。 解码芯片厂商将不断推出支持更多协议和通道的解码芯片,以满足市场需求。 未来红外遥控解码技术将更加智能化和人性化,为用户带来更加便捷的使用体验。
灯光:红外遥控解码技术也可以 用于控制灯光,如调节亮度、色 温等,实现智能照明。
在工业控制中的应用
实现远程控制:通过红外遥控解码技术, 工业控制中可以实现设备的远程启动、 停止、调节等功能,提高生产效率。
自动化监控:红外遥控解码技术可以用 于工业控制中的自动化监控,例如对温 度、湿度、压力等参数的实时监测和调 节。
无线通信:红外遥控解码技术可以实现工 业控制中的无线通信,避免了布线的繁琐 和成本,提高了系统的灵活性和可靠性。
安全性:红外遥控解码技术可以用于工 业控制中的安全保护,例如对设备的锁 定、解锁等操作,保证生产过程的安全 可控。
在智能家居系统中的应用
红外遥控解码技 术能够实现智能 家居系统的远程 控制
红外解码原理
红外解码原理
红外解码是一种通过解析红外信号来识别和转换成可读信息的技术。
红外信号是由红外发射器产生的,可以在不可见的红外光谱范围内传输数据。
解码器是一种特殊的电子设备,它可以将收到的红外信号转换成可读的信号,例如二进制代码或其他形式的控制指令。
红外解码的原理是基于红外传输的工作原理。
在红外传输中,发送端的红外发射器会产生一个具有特定编码的红外信号,然后通过空气或其他介质传输到接收端。
接收端的红外接收器会接收到红外信号,并将其转换成电信号。
接下来,解码器会对这些电信号进行解析,以获得原始数据。
解码器的工作原理是通过识别红外信号的特征来解析数据。
红外信号通常以脉冲的形式传输,即通过发送一系列的脉冲信号来表示不同的信息。
解码器会根据脉冲信号的频率、持续时间和间隔等特征来解析数据。
这些特征被称为红外编码协议,不同的设备和厂商可能使用不同的编码协议。
一旦解码器成功解析了红外信号,并将其转换成原始数据,就可以根据需要进行进一步的处理。
例如,将数据转换成可读的文本、控制指令或其他形式的操作。
此外,解码器还可以与其他设备或系统进行通信,以实现各种功能,例如遥控器控制电视或空调等。
总的来说,红外解码是一种将红外信号转换成可读信息的过程,其原理是通过解析红外信号的特征来识别和转换数据。
它在许
多应用中起着关键的作用,例如智能家居、安防系统和无线通信等。
详解红外遥控器编码解码原理!
详解红外遥控器编码解码原理!红外遥控器原理介绍红外线遥控是目前使用最广泛的一种通信和遥控手段。
由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。
工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。
红外遥控系统:通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图1所示。
发射部分包括键盘矩阵、编码调制、 LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。
红外的简单发射接收原理:在发射端,输入信号经放大后送入红外发射管发射,在接收端,接收管收到红外信号后,由放大器放大处理后还原成信号,这就是红外的简单发射接收原理。
1、红外遥控系统结构红外遥控系统的主要部分为调制、发射和接收,如图1所示:打开今日头条,查看更多精彩图片红外遥控是以调制的方式发射数据,就是把数据和一定频率的载波进行“与”操作,这样既可以提高发射效率又可以降低电源功耗。
调制载波频率一般在30khz到60khz之间,大多数使用的是38kHz,占空比1/3的方波,如图2所示,这是由发射端所使用的455kHz晶振决定的。
在发射端要对晶振进行整数分频,分频系数一般取12,所以455kHz÷12≈37.9kHz≈38kHz。
目前有很多种芯片可以实现红外发射,可以根据选择发出不同种类的编码。
由于发射系统一般用电池供电,这就要求芯片的功耗要很低,芯片大多都设计成可以处于休眠状态,当有按键按下时才工作,这样可以降低功耗芯片所用的晶振应该有足够的耐物理撞击能力,不能选用普通的石英晶体,一般是选用陶瓷共鸣器,陶瓷共鸣器准确性没有石英晶体高,但通常一点误差可以忽略不计。
红外线通过红外发光二极管(LED)发射出去,红外发光二极管(红外发射管)内部构造与普通的发光二极管基本相同,材料和普通发光二极管不同,在红外发射管两端施加一定电压时,它发出的是红外线而不是可见光。
单片机的红外遥控器解码原理与实现
单片机的红外遥控器解码原理与实现红外遥控器是我们日常生活中常见的电子设备,它通过使用红外线信号与接收器进行通信。
而在这个过程中,单片机起到了解码的重要作用。
本文将介绍单片机解码红外遥控器的原理以及实现方法。
一、红外遥控器的工作原理红外遥控器是一种使用红外线进行通信的设备,它主要由发送器和接收器两部分组成。
发送器将指令数据转换为红外脉冲信号并发送出去,接收器通过接收红外线信号并将其转换为电信号,进而解码为可识别的指令。
而单片机则负责接收并解码红外信号,将其转化为具体的操作。
二、单片机解码红外信号的原理单片机解码红外信号主要分为两个步骤:红外信号的接收和信号的解码处理。
1. 红外信号的接收单片机通过外部的红外接收器接收红外信号。
红外接收器可以通过外部电路将接收到的红外信号转换为电压信号,然后通过单片机的IO 口输入。
2. 信号的解码处理接收到的红外信号经过IO口输入后,单片机需要对信号进行解码处理。
解码的过程涉及到红外信号的标准化和解析。
对于常见的红外遥控器协议,单片机需要能够识别其编码方式,确定其协议格式。
这些协议通常包含了引导码、地址码和指令码等信息。
在解析红外信号时,单片机首先需要识别引导码。
引导码是红外信号的起始标志,通常由高、低电平组成,表示编码的开始。
单片机通过判断引导码的时间长度来确定信号的开始。
接下来,单片机需要识别地址码和指令码。
地址码是用来区分不同的红外遥控器设备,指令码则表示具体的操作指令。
单片机通过判断地址码和指令码的高、低电平时间长度来确定具体的操作。
三、单片机解码红外信号的实现方法单片机解码红外信号有多种实现方法,以下是一种简单的实现示例。
首先,需要连接红外接收器到单片机的IO口,将接收到的信号输入到单片机。
接收到的信号可以通过外部中断的方式触发单片机的中断服务程序。
然后,在中断服务程序中,单片机需要根据红外协议的规则,判断引导码、地址码和指令码的时间长度。
利用计时器或延时函数可以实现对信号时间的测量。
红外遥控解码系统【共7页】
红外遥控解码系统----------专业最好文档,专业为你服务,急你所急,供你所需------------- 文档下载最佳的地方创新设计与实践课程设计题目: 红外遥控解码系统设计分析院系名称:电气工程学院专业班级:电气F0902 指导教师:设计时间:xx/12/17-xx/12/23 成绩:指导老师签名:日期:红外遥控解码系统设计分析一红外遥控解码的现状发展红外遥控器作为一种极其普及的家用电器的附件,全球每年的需求量在5亿只以上。
有众多的厂家在专业生产红外遥控器,也有众多的遥控器方案开发公司在专业开发各种红外遥控器集成电路。
红外线遥控是目前使用最广泛的一种通信和遥控手段。
由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。
工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。
通用红外遥控系统由发射和接收两大部分组成。
应用编/解码专用集成电路芯片来进行控制操作。
发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。
二红外遥控解码原理与设计思路整体设计思路为:经过上述方案的分析选择,得出系统硬件由以下几部分组成:电视红外遥控器,51单片机最小系统,接收放大于一体集成红外接收头,1602液晶显示驱动电路。
根据扫描到不同的按键值转至相对应的ROM表读取数据。
确认设备及菜单选择键后51单片机将从ROM读取出来的值,按照数据处理要求从输出控制脉冲与T0产生的38KHz的载波进行调制,经NPN三极管对信号放大驱动红外发光管将控制信号发送出去。
红外数据接收则是采用HS0038一体化红外接收头,内部集成红外接收、数据采集、解码的功能,只要在接收端INT0检测头信号低电平的到来,就可完成对整个串行的信号进行分析得出当前控制指令的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
创新设计与实践课程设计题目: 红外遥控解码系统设计分析院系名称:电气工程学院专业班级:电气F0902 指导教师:设计时间: 2012/12/17-2012/12/23 Array红外遥控解码系统设计分析一红外遥控解码的现状发展红外遥控器作为一种极其普及的家用电器的附件,全球每年的需求量在5亿只以上。
有众多的厂家在专业生产红外遥控器,也有众多的遥控器方案开发公司在专业开发各种红外遥控器集成电路。
红外线遥控是目前使用最广泛的一种通信和遥控手段。
由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。
工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。
通用红外遥控系统由发射和接收两大部分组成。
应用编/解码专用集成电路芯片来进行控制操作。
发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。
二红外遥控解码原理与设计思路整体设计思路为:经过上述方案的分析选择,得出系统硬件由以下几部分组成:电视红外遥控器,51单片机最小系统,接收放大于一体集成红外接收头,1602液晶显示驱动电路。
根据扫描到不同的按键值转至相对应的ROM表读取数据。
确认设备及菜单选择键后51单片机将从ROM读取出来的值,按照数据处理要求从输出控制脉冲与T0产生的38KHz的载波进行调制,经NPN三极管对信号放大驱动红外发光管将控制信号发送出去。
红外数据接收则是采用HS0038一体化红外接收头,内部集成红外接收、数据采集、解码的功能,只要在接收端INT0检测头信号低电平的到来,就可完成对整个串行的信号进行分析得出当前控制指令的功能。
然后根据所得的指令去操作相应的用电器件工作,如图1-1所示。
三红外解码硬件电路单片机介绍STC89S51是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。
使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89S51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
STC89S51具有以下标准功能:8K字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
时钟电路与RC复位电路STC89S51芯片内部有一高增益反相放大器,用于构成振荡器反相放大器的输入端为XTAL1,输出端为XTAL2。
在XTAL1、XTAL2(第19、18引脚)两端接一个石英晶体振荡器,和两个电容就构成了稳定自激谐振电路。
晶振频率为11.0592MHz,C12、C13是两个瓷片电容,与晶振Y2构成了自激谐振电路。
其电容的作用主要是对频率进行微调,一般取30~45pF左右。
使用该电路可产生稳定的11.0592MHz频率,受外界的环境的干扰影响非常小。
其接法如图2-2所示:复位是单片机初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元执行程序。
除了进入系统的正常初始化之外,当程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需要按复位键重新启动。
复位电路采用了按键与上电复位。
上电与按键均可以有效复位。
上电瞬间RST引脚获得高电平,单片机复位电路随着电容的C11的充电,RST引脚的高电平逐渐下降。
RST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。
按键复位是直接将高电平通过电阻R11、R10分压到达RESET引脚,实现复位操作。
四红外遥控电路WD6122芯片红外发射电路WD6122 芯片是通用红外遥控发射集成电路,采用CMOS 工艺制造,最多可外接64个按键,并有三组双重按键。
封装形式为SOP-24和SOP-20。
特点1 低压CMOS 工艺制造2 工作电压范围宽3 通过外部接法最多可产生65536种用户码4 可通过SEL管脚选择,最多可支持128+ 6条指令码5 SOP-24、SOP-20、COB封装形式可选应用范围VCD、DVD 播放机、电视机、组合音响设备、电视机顶盒结构框图管脚图与管教说明管脚图管教说明功能说明编码方式WD6122 所发射的一帧码含有一个引导码,16位的用户编码和8位的键数据码、键数据码的反码也同时被传送。
码型结构如下:引导码由一个9ms的载波波形和4.5ms的关断时间构成,它作为随后发射的码的引导,这样当接收系统是由微处理器构成的时候,能更有效地处理码的接收与检测及其它各项控制之间的时序关系。
编码采用脉冲位置调制方式(PPM)。
利用脉冲之间的时间间隔来区分“0”和“1”。
每次8位的码被传送之后,它们的反码也被传送,减少了系统的误码率。
键盘输入WD6122 在键扫描输入端KI0~KI7 和键扫描定时信号输入/输出端KI/O0~KI/O7构成的8×8 矩阵上共设置64 个按键。
只有第21#键与其它连在KI/O5 线上的键即22# 、23# 、24#键组合才能实现双重按键功能。
即只有下列按键的组合才能进行双重按键操作。
1) 21#键与22#键;2 )21#键与23#键;3 )21#键与24#键每个键输入端与电源负端VSS之间均接有下拉电阻。
当有超过一个以上的按键(除非双重按键的组合21#与22#键21#与23#键21#与24#键)同时按下时,码的发射输出将停止。
当一个键按下时先读取用户码和键数据码,22ms后遥控输出端(REM)启动输出,按键时间只有超过22ms才能输出一帧码,超过108ms后才能输出第二帧码。
红外接收电路HS0038是用于红外遥控接收的小型一体化接收头,集成红外线的接收、放大、解调,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,而体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输,中心频率38.0kHz。
接收器对外只有3个引脚:OUT、GND、VCC与单片机接口非常方便。
1脚接电源(+VCC),2脚GND是地线(0V),3脚脉冲信号输出,经非门U6缓冲与P24的判断信号进行逻辑与使得进入INT0的信号恰好是红外数据发射电路输出端P25的相反相信号,只要检测到INT0信号下降沿从而测出控制指令的功能。
HS0038接收原理:红外线接收是把遥控器发送的数据(已调信号)转换成一定格式的控制指令脉冲(调制信号、基带信号),是完成红外线的接收、放大、解调,还原成发射格式(高、低电位刚好相反)的脉冲信号。
这些工作通常由一体化的接收头来完成,输出TTL兼容电平。
最后通过解码把脉冲信号转换成数据,从而实现数据的传输。
图2-13是一个红外线接收电路框图。
Array五系统电路原理图六红外解码程序#include<reg52.h> //晶振选择12M的#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit ir=P3^3;sbit dula=P3^7;uchar ir_code[4];uchar ir_display[4];uchar code table[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x 71};uint temp;uchar x,y,count;void init(){TMOD=0x11;TH1=(65536-1000)/256; TL1=(65536-1000)%256; TH0=0;TL0=0;EA=1;ET0=1;ET1=1;TR0=0;TR1=1;}uint ir_low_check() {TH0=0;TL0=0;TR0=1;while(!ir);TR0=0;return TH0*256+TL0; }uint ir_high_check() {TH0=0;TL0=0;TR0=1;while(ir);TR0=0;return TH0*256+TL0; }void main(){init();dula=0;ir_code[0]=0;ir_code[1]=0;ir_code[2]=0;ir_code[3]=0;ir_display[0]=0;ir_display[1]=0;ir_display[2]=0;ir_display[3]=0;while(1){start:while(ir);temp=ir_low_check();if((temp<8500)||(temp>9500))continue;temp=ir_high_check();if((temp<4000)||(temp>5000))continue;for(x=0;x<4;x++){for(y=0;y<8;y++){temp=ir_low_check();if((temp<200)||(temp>800))goto start;temp=ir_high_check();if((temp<200)||(temp>2000))goto start;ir_code[x]=ir_code[x]>>1;if(temp>1120)ir_code[x]=ir_code[x]|0x80;}}ir_display[0]=(ir_code[2]/16)&0x0f;ir_display[1]=ir_code[2]&0x0f;ir_display[2]=(ir_code[3]/16)&0x0f;ir_display[3]=ir_code[3]&0x0f;}}void timer1() interrupt 3{TH1=(65536-1000)/256;TL1=(65536-1000)%256;count++;if(count>7)count=0;switch(count){case 0:P2=0;dula=1;P0=table[ir_display[0]];dula=0; break;case 1:dula=1;P0=0x00;dula=0;break;case 2:P2=1;dula=1; P0=table[ir_display[1]];dula=0; break;case 3:dula=1;P0=0x00;dula=0;break;case 4:P2=2;dula=1;P0=table[ir_display[2]];dula=0; break;case 5:dula=1;P0=0x00;dula=0;break;case 6:P2=3;dula=1;P0=table[ir_display[3]];dula=0;break;case 7:dula=1;P0=0x00;dula=0;break;}}心的体会这次课程设计主要是运用单片机的一些相关知识,在整个学习过程中,都离不开对课程知识的再学习。