红外遥控系统原理及解码程序
红外遥控解码实验报告(3篇)

第1篇一、实验目的本次实验旨在通过搭建红外遥控系统,了解红外遥控的基本原理,掌握红外遥控信号的编码和解码方法,并利用单片机实现对红外遥控信号的解码,实现对红外遥控器的控制。
二、实验原理红外遥控技术是一种无线通信技术,通过发射端发送特定编码的红外信号,接收端接收该信号并进行解码,从而实现对电器的控制。
红外遥控系统主要由发射端和接收端两部分组成。
1. 发射端:由按键矩阵、编码调制电路和红外发射器组成。
按键矩阵根据按键的不同产生不同的编码信号,编码调制电路将这些信号调制在38kHz的载波上,红外发射器将调制后的信号发射出去。
2. 接收端:由红外接收器、前置放大电路、解调电路和指令信号检出电路组成。
红外接收器接收发射端发射的红外信号,前置放大电路对信号进行放大,解调电路将38kHz的载波信号去除,指令信号检出电路从解调后的信号中提取出指令信号。
三、实验设备1. 红外遥控发射器2. 红外接收模块3. 单片机开发板4. 连接线5. 电源6. 红外遥控解码程序四、实验步骤1. 搭建红外遥控系统:将红外接收模块连接到单片机开发板的相应引脚上,确保连接正确无误。
2. 编写红外遥控解码程序:根据红外遥控协议,编写解码程序,实现对红外信号的解码。
3. 程序烧录与调试:将解码程序烧录到单片机中,连接电源,进行程序调试。
4. 测试与验证:使用红外遥控器对单片机进行控制,观察单片机是否能够正确解码红外信号,并实现相应的控制功能。
五、实验结果与分析1. 红外遥控系统搭建成功:通过连接红外接收模块和单片机开发板,成功搭建了红外遥控系统。
2. 解码程序编写与调试:根据红外遥控协议,编写解码程序,实现对红外信号的解码。
在调试过程中,通过观察单片机的输出,验证了程序的正确性。
3. 测试与验证:使用红外遥控器对单片机进行控制,观察单片机是否能够正确解码红外信号,并实现相应的控制功能。
实验结果表明,单片机能够成功解码红外信号,并实现红外遥控器的控制功能。
红外遥控原理和制作方法

红外遥控原理和制作方法一、引言红外遥控技术是一种常见的无线通信技术,广泛应用于家电、电子设备等领域。
本文将介绍红外遥控的原理和制作方法。
二、红外遥控原理红外遥控原理基于红外线的发射和接收。
遥控器发射器中的红外发射二极管会产生红外光信号,信号经过编码后发送给接收器。
接收器中的红外接收二极管会接收到红外光信号,并进行解码。
解码后的信号通过微处理器进行处理,最终转化为对应的控制信号,控制设备的操作。
三、红外遥控制作方法1. 硬件设计制作红外遥控器的第一步是设计硬件。
需要准备的材料有红外发射二极管、红外接收二极管、编码解码芯片、微处理器等。
在电路设计中,需要根据具体的遥控器功能,选择合适的编码解码芯片和微处理器,并按照电路原理图进行连接。
2. 程序编写制作红外遥控器的第二步是编写程序。
根据遥控器功能需求,编写相应的程序代码。
程序代码可以使用C、C++、Python等编程语言进行编写,通过对按键的扫描和编码解码的处理,将控制信号转化为红外光信号。
3. 硬件连接将硬件电路和程序进行连接。
将编写好的程序通过编程器下载到微处理器中,将红外发射二极管和红外接收二极管连接到电路中的相应位置。
确保电路连接正确无误。
4. 测试与调试完成硬件连接后,进行测试与调试。
使用万用表等工具检查电路连接是否正常,确保红外发射和接收二极管工作正常。
通过按下遥控器按键,检查接收器是否可以正确解码,并将信号转化为对应的控制信号。
四、红外遥控的应用红外遥控技术广泛应用于各种家电和电子设备中,例如电视、空调、DVD播放器等。
通过红外遥控器,用户可以方便地控制设备的开关、音量、频道等功能。
五、红外遥控技术的发展趋势随着科技的不断进步,红外遥控技术也在不断发展。
目前,一些新型的红外遥控技术已经出现,例如基于无线网络的红外遥控技术,可以通过手机等设备进行远程控制。
此外,一些智能家居系统也开始使用红外遥控技术,实现对家中各种设备的集中管理。
六、结论红外遥控技术是一种常见且实用的无线通信技术,通过红外线的发射和接收,可以实现对各种设备的远程控制。
红外遥控器软件解码及其应用

红外遥控器软件解码及其应用随着现代科技的不断发展,红外遥控器已经成为人们日常生活中的必备工具之一。
不过,很多人并不了解红外遥控器的工作原理以及它是如何通过软件解码来实现遥控效果的。
本文将详细介绍红外遥控器软件解码的相关知识,以及其在实际应用中的作用。
一、红外遥控器的工作原理首先,我们需要了解红外遥控器的工作原理。
简单来说,红外遥控器是一种利用红外线光谱来传输指令的设备,通过在发射端发送编码的红外信号,再在接收端解码后执行相应的指令。
通常,红外遥控器由发射部分与接收部分两个部分组成。
发射部分由红外LED发射器构成,它会通过红外发射现象来发送编码的红外信号。
在接收端,红外接收器则会接收到这些信号,并将其转换成电信号进行解码。
之后,解码器会解析出信号的编码含义,然后执行相应的指令。
这就是红外遥控器的基本工作原理。
二、红外遥控器软件解码的实现在红外遥控器的工作中,软件解码起到了重要的作用。
所谓软件解码,就是在终端设备中运行的一种程序,能够将遥控器发射的红外编码转换成可读的指令。
而这些指令就可以用于控制各种家电、设备等。
软件解码的实现主要有两种方式。
第一种是使用硬件解码器,这需要在终端设备上安装一个专门的硬件解码器,用于解析红外信号,并输出相应的指令。
第二种方法则是使用软件解码器,这需要在终端设备上安装一个软件程序,用于解析红外信号并输出指令。
在软件解码的实现中,最常见的是使用赛贝尔红外编解码库。
这个库已经成为了广泛使用的一种红外编解码方案。
它可以用于各种嵌入式设备、物联网设备、手机、电视机顶盒等多种应用场景中。
三、红外遥控器软件解码的应用目前,红外遥控器软件解码已广泛应用于各种智能家居、物联网设备、工控设备等领域。
下面列举一些具体的应用案例:1、智能家居:通过使用红外遥控器软件解码,可以实现对家中的各种电器、设备的遥控控制。
如电视、空调、照明设备等。
2、物联网设备:红外遥控器软件解码还可以用于物联网设备中,如智能家居中的智能门锁、智能家电等。
红外遥控器程序及原理、程序

Data=0;//收到数据 0 }
if(Ok==1) {
hw_jsm<<=1; hw_jsm+=Data;
if(Num>=32)
{ hw_jsbz=1; break }
EXTI_ClearITPendingBit(EXTI_Line15); }
printf_init(); //printf 初始化
while(1)
{
if(hw_jsbz==1) //如果红外接收到
{
hw_jsbz=0;
//清零
printf("红外接收码 %0.8X\r\n",hw_jsm); //打印
hw_jsm=0;
//接收码清零
}
}
}
1.1 红外遥控简介简介 红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低, 成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用 到计算机系统中。 由于红外线遥控不具有像无线电遥控那样穿过障碍物去控制被控对象的能力,所以,在 设计红外线遥控器时,不必要像无线电遥控器那样,每套(发射器和接收器)要有不同的遥控 频率或编码(否则,就会隔墙控制或干扰邻居的家用电器),所以同类产品的红外线遥控器, 可以有相同的遥控频率或编码,而不会出现遥控信号“串门”的情况。这对于大批量生产以 及在家用电器上普及红外线遥控提供了极大的方面。由于红外线为不可见光,因此对环境影 响很小,再由红外光波动波长远小于无线电波的波长,所以红外线遥控不会影响其他家用电 器,也不会影响临近的无线电设备。 红外遥控的编码目前广泛使用的是: NEC Protocol 的 PWM(脉冲宽度调制)和 Philips RC-5 Protocol 的 PPM(脉冲位置调制)。 普中科技 STM32 开发板配套的遥控器使用的是 NEC 协议,其特征如下: 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 位数据格式。按照低位在前,高位在后的顺序发送。采用反码是为了增加传输的 可靠性(可 用于校验)。 2.数据码格式 数据格式包括了引导码、用户码、数据码和数据码反码,编码总占 32 位。数据反码是数据 码反相后的编码,编码时可用于对数据的纠错。注意:第二段的用户码也可以在遥控应用电 路中被设置成第一段用户码的反码。
红外控制系统的原理及应用

红外控制系统的原理及应用1. 引言红外控制系统是一种通过红外线信号实现电器设备远程控制的技术。
它在日常生活中广泛应用于智能家居、遥控器、安防监控等领域。
本文将详细介绍红外控制系统的原理和应用。
2. 红外控制系统的原理红外控制系统是基于红外线通信原理实现的。
其工作原理简要如下:•红外发射:红外发射器将电信号转化为红外光信号,并通过红外发射管发射出去。
红外光信号通常以脉冲信号的形式传输。
•红外接收:红外接收器用于接收来自红外发射器发射的信号。
它由红外接收头和信号解码电路组成,能够将接收到的红外信号转化为电信号。
•信号解码:红外接收器接收到的红外信号经过信号解码电路解码后,得到与之对应的控制指令。
•控制执行:根据解码得到的控制指令,红外控制系统会执行相应的操作,例如开关电器、调节设备亮度等。
3. 红外控制系统的应用红外控制系统在各个领域都有广泛的应用,下面列举了几个常见的应用场景:3.1 智能家居红外控制系统在智能家居领域中起着重要的作用。
通过红外线信号,可以实现对家中电器设备的遥控,例如电视、空调、音响等。
用户可以通过智能手机或遥控器发送红外信号,从而实现对设备的开关、调节等控制。
3.2 遥控器红外控制系统是常见遥控器的核心技术。
遥控器通过发送特定的红外信号,与电视、机顶盒、音响等设备进行通信,实现对这些设备的远程控制。
3.3 安防监控系统红外控制系统在安防监控系统中广泛应用。
例如,红外感应器可以通过红外线探测到人体的热能,从而判断是否有人进入了安全区域。
同时,红外摄像头也是常见的安防监控设备之一。
3.4 医疗设备红外控制系统在医疗设备中也有应用。
例如,一些医疗设备可以通过红外控制系统实现对设备的操作,如灯光的调节、仪器的开关等。
这种远程控制方式能够提高医疗人员的工作效率和操作便捷性。
3.5 汽车电子红外控制系统在汽车电子领域也有一定的应用。
例如,一些高端汽车配备了红外遥控功能,可以通过红外信号控制车内音响、空调等设备。
电路工作原理揭秘遥控器的红外发射与信号解码

电路工作原理揭秘遥控器的红外发射与信号解码红外发射技术是现代电子产品中常见的一种通信方式,广泛应用于各种遥控器中。
它的工作原理是通过红外光发射器将信号转换成红外光信号,然后通过红外接收器接收并解码,实现远程控制设备的操作。
本文将揭秘遥控器的红外发射与信号解码的工作原理及其应用。
一、红外发射器的工作原理红外发射器是遥控器中的核心部件,它能将电信号转换成红外光信号,并通过空气传输到接收器。
红外发射器工作原理如下:1.1 发光二极管红外发射器通常采用发光二极管(Light Emitting Diode,简称LED)进行红外光的发射。
LED是一种能够发出可见光和红外光的二极管,当通电时,LED会发出特定频率的光信号。
1.2 调制技术为了确保遥控器发出的红外信号能够被接收器正确解码,通常会采用调制技术。
调制技术是通过改变信号的频率、幅度或脉冲来表示信息,常见的调制方式有脉冲宽度调制(PWM)和脉冲位置调制(PPM)。
1.3 码型遥控器发射的红外信号通常是经过编码的,不同的信号对应不同的功能。
常见的红外码型有NEC码、RC-5码、RC-6码等,不同的遥控器使用不同的码型。
二、红外信号解码技术接收器是红外发射信号的接收和解码装置,它能将接收到的红外信号转换成电信号,并进行解码还原为原始信号,从而控制相应的设备。
红外信号解码技术主要包括以下几个方面:2.1 红外接收器红外接收器是用于接收红外信号的装置,它通常由红外接收模块和解码电路组成。
红外接收模块能够接收并转换传输过来的红外光信号,解码电路则负责解析接收到的信号。
2.2 滤波和放大由于环境中存在多种光源,为了确保只接收到有效的红外信号,红外接收器通常会设置滤波器来屏蔽其他频率的光信号。
同时,接收到的红外信号经过放大,以增强信号的强度和稳定性。
2.3 解码和译码接收到的红外信号经过解码电路的处理,通过特定的解码算法还原为原始信号,这样就可以实现对设备的控制。
解码算法通常根据不同的码型进行设计,以确保正确地解析红外信号。
红外解码程序
红外解码程序本篇介绍红外解码的原理和程序的写法。
下面来看一下,红外线是如何编码的。
下面来具体说一下,解码的原理,每按一下遥控器的一个按键,遥控器就会发出32个“0”“1”代码(当然是通过高低电平的占空比来判断是0还是1的),具体是0,1是如何编码的上面图片中有介绍,和一个引导码,引导码的作用是告诉处理器,接下来将要开始发送代码,我们在编写程序时,当检测到引导码时,就应该准备接受数据了。
32位代码中的前16位是用户识别码,不同的遥控器不相同,防止互相干扰的,后16是8为数据码,和8位数据反码。
接下来开始介绍如何解码程序的编写。
程序中用到了两个中断,一个是定时器中断,一个是外部中断。
定时器中断用来准确计时,判断接受的代码是0还是1,外部中断用来准确确定定电平到来的时刻,然后开始计时。
/*********************************************************函数功能:红外解码,用八位数码管显示红外线的按键码,便于红外控制测试环境:hot 51学习板编译环境:keil4整理人:张家越QQ:435835181整理时间:2011-04-03************************************************************/#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar code seg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0 x6f,0x77,0x7c,0x39,0x5E,0x79,0x71 };//0-f的段选码unsigned char code seg_we[]={0,1,2,3,4,5,6,7};uchar irtime,startflag,bitnum,irreceok;uchar irdata[33];uchar irprosok;uchar display[8];uchar ircode[8] ;sbit led1=P0^1;sbit led2=P0^2;/******************************************************************** ****函数功能:延时函数,在数码管显示时使用,不需要很精确********************************************************************* ****/void delay_50us(uint t){uchar j;for(;t>0;t--)for(j=19;j>0;j--);}/******************************************************************** ******函数的功能:定时器0的初始化********************************************************************* *****/void timer0init(){TMOD=0x02; //设置定时器工作在方式2TH0=0x00; //TL0=0x00; //设置定时器的初值ET0=1; //开定时器中断TR0=1; // 打开定时器EA=1; //开总中断}/******************************************************************** ****外部中断1的初始化********************************************************************* **/void int1init(){IT1=1; //设置触发方式为上升沿EX1=1; //开外部中断1EA=1; //开总中断}/******************************************************************** **定时器0的功能函数,每中断一次irtime++,用于计时********************************************************************* **/void timer0() interrupt 1{irtime++; //定时器中断一次irtime++,用于计时}/******************************************************************** ***外部中断0的处理函数,每当有低电平数据过来时,中断一次,(使用次中断的前提是,信号线必需接在外部中断0上面,也就是P3^2口),函数功能是,把信号从高低电平变成时间的代码放入irdata【】中********************************************************************* ***/void int1() interrupt 2{if(startflag){if(irtime>32) //一组代码检测完毕{bitnum=0;}irdata[bitnum]=irtime; //把检测到的时间送到数组irdata【】中去irtime=0;bitnum++;if(bitnum==33) //如果检测到bitnum=33,说明32位用户码已经检测完毕{bitnum=0; //将bitnum清零以便重新计数irreceok=1; //接收完毕标志位置一}}else //(此函数先进入else语句,跳过引导码的检测){startflag=1; //将开始标志位置一irtime=0; //设置时间初值为零irreceok=1; //接收完毕标志位置一}}/******************************************************************** *****函数功能:把irdata【】中的时间代码转换成二进制代码存放在ircode【】中********************************************************************* *****/void irpros(){uchar k=1,value,j,i;for(j=0;j<4;j++){for(i=0;i<8;i++){value=value>>1; //右移7次(第一次是00,相当于没有移位)if(irdata[k]>6) //循环8次{value=value|0x80;}k++;}ircode[j]=value;}irprosok=1;}/******************************************************************** ********函数的功能是:将ircode【】中的二进制代码转换成为16进制代码便于在数码管上显示******************************************************************* ********/void irwork(){display[0]=ircode[0]/16;display[1]=ircode[0]%16;display[2]=ircode[1]/16;display[3]=ircode[1]%16;display[4]=ircode[2]/16;display[5]=ircode[2]%16;display[6]=ircode[3]/16;display[7]=ircode[3]%16;}/******************************************************************** ****函数功能:用数码管显示解码结果********************************************************************* ***/void display1(){uchar i;for(i=0;i<8;i++){P2=seg_we[i];P0=seg_du[display[i]];delay_50us(40);}}void main(){timer0init(); //定时器初始化int1init(); //外部中断初始化while(1){if(irreceok) //判断数据接收完毕(数组中存储的是高低电平的时间){irpros(); //执行处理函数,将高低电平时间转化成16进制的0,1代码,存放在数组中irreceok=0; //标志清零}if(irprosok) //处理函数执行完毕,{irwork(); //将存储的16进制代码分离,便于数码管显示irprosok=0; //标志清零}display1();}}//在最后我再分析一下程序的编写思路,便于大家理解,一旦有按键按下,接受管接收到引导码,进入外部中断,并将高低电平的时间放入irdata【】数组中,接受完毕标志位置一,判断接受标志位,为1,进行处理函数,将高低电平转换成16进制数,处理标志位置一,判断处理标志位,为1,执行分离函数,将16进制数分离,便于数码管显示,分离完毕后显示。
红外解码说明文档
红外解码说明文档作者:ruihuan_vb@时间:2013-12-71、红外遥控的基本原理红外遥控器发出的红外光信号,所以只能产生1 0 信号。
但是,为防止自然光的干扰,同时为了增大红外管的发射功率,正真发出的“1”信号是:38K的载波信号。
(而0 1 信号的区分就在于对发射管的关闭时间)。
红外一体化接收头接收到信号后会对信号进行滤波,所以一体化接收头输出的信号是经过滤波放大后的电平信号,并且对对电平信号进行了反相输出。
2、一般电平编码的结构红外遥控的数据编码是多种多样的,但是一般都会一这这种情况出现:引导码加数据。
引导码由9ms(可能有时候要设置到9.1ms)的低电平和4.5ms的高电平构成。
“0”信号由0.6ms的低电平和0.6ms的高电平组成;“1”信号由0.6的低低电平和1.2ms的高电平组成。
(注:这里说的电平是说的是红外一体化接收头的输出电平)。
红外一体化接收头的输出波形,示波器保存的图片3、红外遥控的电路设计1)发射电路红外遥控的发射电路比较简单,但是要想做的比较好还是有要注意的地方的。
NPN 三极管直接拉红外发射头就可以构成一个红外发射电路了。
但是,要注意的是:驱动红外发射管要加隔离电阻,并且这个隔离电阻不能太大,因这个隔离电阻决定了红外发射的功率。
发射电路的关键就在这里了,这个发射管的隔离电阻的阻值不要超过10欧姆,否则发射距离会非常近的,并且还有注意发射信号的载波的占空比不要设为1/2 最好是1/3 (这个好像是跟一体化接收头的原理有关的,而且将占空白降低方便增大发射功率)。
2)红外接收电路红外接收电路比较简单,一般用一个一体化接收头接到单片机的引脚就可以了。
我们这用过的型号是:HS0038B。
4、如何利用单片机的外设来实现对应的功能红外解码功能:因为红外解码的第一步骤是对电平长度的检测,因而最好是利用单片机的捕获功能来检测电平的长度,然后再根据电平长度来判断其意义(建议:不要检测双边沿,最好是检测一个周期的电平,例如下降沿的时间间隔)。
红外调制与解调原理
4 功能模块设计4.1 红外的发射和接收红外线波长在750nm至1um之间的电磁波,它的频率低于可见光,是一种人的眼睛看不到的光线。
红外遥控具有抗干扰能力强,信息传输可靠,功耗低,成本低,易于实现等显著优点。
红外遥控由发送和接收两部分组成,发送端采用单片机将待发送的二进制信号编码调制为一系列的脉冲信号,通过红外发射管发射红外信号。
红外接收采用性能可靠的一体化红外接收头接收红外信号,它同时对信号进行放大,检波,整形,得到TTL电平的编码信号,再送给单片机,经单片机解码并进行相关操作。
发送与接收示意图如下所示:图4 发送与接收示意图由上所述可知,遥控系统分为编码,调制,解调和解码如图5所示四大部分:图5 遥控与接收系统4.1.1 编码如图4,二进制信号中的‘1’的高低电平均等于0.26ms,相当于10个26us的宽度;二进制信号中的‘0’的低电平宽0.52ms,高电平宽0.26ms。
图6 编码示意图4.1.2 调制红外信号的调制有脉冲宽度调制(PWM),脉冲位置调制(PPM)等方法,本设计采用脉宽调制。
二进制的调制由单片机来完成,它把编码后的二进制信号调制成频率为38khz 的间断脉冲串,此脉冲串即是用于红外发射二极管发送的信号。
如图7,A是二进制信号的编码波形,B是频率为38khz(周期约为26us)的连续脉冲串,C是经调制后的间断脉冲串,即是用于发送的信号。
图7中,待发的二进制数据为101。
图7 信号调制示意图4.1.3 解调二进制信号的解调由一体化红外接收头来完成,它把接收到的信号(图8中的波形D 也是图7中的波形C)经内部处理并解调复原,输出图8中的波形E(正好是图7中A的取反)。
接收头的解调可理解为:在输入脉冲串时输出低电平,否则输出高电平。
二进制的解码由单片机来完成,它把红外接收头送来的二进制编码波形通过解码,还原成发送端发送的数据。
如图8,把波形E解码还原成数据信息101。
图8 信号解调示意图4.1.4 解码在发送字节的开始先通过单片机发送20个脉冲宽度(每个脉冲周期26us)的高电平作为传输的开始(同步帧),接着发送8位二进制数据(高位在前,低位在后),最后发送10个脉冲宽度的低电平作为传输的结束,如图9所示:图9 字节传输当接收到同步帧后,进入解码部分。
单片机的红外遥控器编码原理与实现
单片机的红外遥控器编码原理与实现红外遥控器是我们日常生活中常见的一种设备,用于控制电器设备的开关、音量调节等操作。
而单片机作为一种重要的电子元器件,可以通过编程来实现红外遥控器的功能。
本文将介绍单片机的红外遥控器编码原理和实现过程。
一、红外编码原理红外遥控器通过发送红外信号来控制电器设备的开关。
而红外编码原理是指在红外遥控器中,将按键的信息编码成红外信号发送出去。
在遥控器中,每个按键对应一个特定的红外编码。
当按下某个按键时,遥控器会将该按键的特定编码发送出去。
接收器设备会解码接收到的红外信号,并根据解码结果来执行相应的操作。
二、红外编码实现步骤1. 硬件准备实现红外遥控器编码,首先需要准备以下硬件设备:- 单片机模块- 红外发射模块- 按键模块- 电源供应模块2. 硬件连接将单片机模块、红外发射模块、按键模块和电源供应模块按照电路图进行连接。
确保连接正确并固定好各个模块。
3. 软件编程使用单片机的编程语言(如C语言)进行编程,实现红外遥控器的功能。
具体的编程步骤如下:- 初始化相关的引脚和中断,包括红外发射引脚和按键引脚。
- 设置红外编码的格式和协议,如NEC编码、SONY编码等。
- 通过按键模块检测按键是否被按下,如果按键被按下,则执行相应的红外编码发送操作。
- 根据按键的不同,发送不同的红外编码信号。
4. 红外编码发送编写代码实现红外编码信号的发送。
根据选择的编码协议和格式,在编程中设置相应的红外编码参数,并通过红外发射模块将编码信号发送出去。
5. 测试和调试完成编程后,进行测试和调试。
将红外编码器面对接收器设备,按下遥控器的按键,观察接收器设备是否成功接收到信号并执行相应的操作。
通过以上步骤,就可以实现单片机的红外遥控器编码功能。
三、红外编码的应用红外遥控器的编码原理可以应用于各种控制场景,例如家电控制、智能家居系统、工业自动化等。
通过编程,可以实现不同按键对应不同设备的控制,提高生活和工作的便利性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
红外遥控系统原理及单片机
红外线遥控是目前使用最广泛的一种通信和遥控手段。
由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。
工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。
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种不同组合的编码。
遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。
一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45~63ms之间,图4为发射波形图。
图4 遥控连发信号波形
当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个引导码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms)
高8位地址码(9ms~18ms),8位数据码(9ms~18ms)和这8位数据的反码(9ms~18ms)组成。
如果键按下超过108ms仍未松开,接下来发射的代码(连发码)将仅由起始码(9ms)和结束码(2.25ms)组成。
图5 引导码图6连发码
3 遥控信号接收
接收电路可以使用一种集红外线接收和放大于一体的一体化红外线接收器,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,而体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输。
接收器对外只有3个引脚:Out、GND、Vcc与单片机接口非常方便,如图7所示。
图7
①脉冲信号输出接,直接接单片机的IO 口。
②GND接系统的地线(0V);
③Vcc接系统的电源正极(+5V);
4 遥控信号的解码
红外线遥控器的解码程序,它可以把红外遥控器每一个按键的键值读出来,并且通过实验板上P1口的8个LED显示出来,在解码成功的同时并且能发出“嘀嘀嘀”的提示音。
; 红外遥控接收
MAIN:
JNB P2.2,IR ;遥控扫描
LJMP MAIN ;在正常无遥控信号时,一体化红外接收头输出是高电平,程序一直在循环。
; 解码程序
IR:
;以下对遥控信号的9000微秒的初始低电平信号的识别,波形见图5。
MOV R6,#10
IR_SB:
ACALL DELAY882 ;调用882微秒延时子程序
JB P2.2,IR_ERROR ;延时882微秒后判断P2.2脚是否出现高电平如果有就退出解码程序
DJNZ R6,IR_SB ;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序
;识别连发码,和跳过4.5ma的高电平。
JNB P2.2, $ ;等待高电平避开9毫秒低电平引导脉冲
ACALL DELAY2400
JNB P2.2,IR_Rp ;这里为低电平,认为是连发码信号,见图6。
ACALL DELAY2400 ;延时4.74毫秒避开4.5毫秒的结果码
;以下32数据码的读取,0和1的识别请看图2
MOV R1,#1AH ;设定1AH为起始RAM区
MOV R2,#4
IR_4BYTE:
MOV R3,#8
IR_8BIT:
JNB P2.2,$ ;等待地址码第一位的高电平信号
LCALL DELAY882 ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
MOV C,P2.2 ;将P2.2引脚此时的电平状态0或1存入C中
JNC IR_8BIT_0 ;如果为0就跳转到IR_8BIT_0
LCALL DELAY1000
IR_8BIT_0:
MOV A,@R1 ;将R1中地址的给A
RRC A ;将C中的值0或1移入A中的最低位
MOV @R1,A ;将A中的数暂时存放在R1中
DJNZ R3,IR_8BIT ;接收地址码的高8位
INC R1 ;对R1中的值加1,换下一个RAM
DJNZ R2,IR_4BYTE ;接收完16位地址码和8位数据码和8位数据,
;存放在1AH/1BH/1CH/1DH的RAM中
;解码成功
JMP IR_GOTO
IR_Rp:
;重复码执行处
;按住遥控按键时,每过108ms就到这里来
JMP IR_GOTO
IR_ERROR:
;错语退出
LJMP MAIN ;退出解码子程序
;遥控执行部份
IR_GOTO:
;这里还要判断1AH和1BH两个系统码或用户码,用于识别不同的遥控器;MOV A,1AH
;CJNE A,#xxH,IR_ERROR ;用户码1不对则退出
;MOV A,1BH
;CJNE A,#xxH,IR_ERROR ;用户码2不对则退出
;判断两个数据码是否相反
MOV A,1CH
CPL A
CJNE A,1DH,IR_ERROR ;两个数据码不相反则退出
;遥控执行部份
;MOV A,1DH ;判断对应按键
;CJNE A,#xxH,$+6
;LJMP -à跳到对应按键执行处
;CJNE A,#xxH,$+6
;LJMP -à跳到对应按键执行处
MOV P1,1DH ;将按键的键值通过P1口的8个LED显示出来!
CLR P2.3 ;蜂鸣器鸣响-嘀嘀嘀-的声音,表示解码成功
LCALL DELAY2400
LCALL DELAY2400
LCALL DELAY2400
SETB P2.3 ;蜂鸣器停止
;清除遥控值使连按失效
MOV 1AH,#00H
MOV 1BH,#00H
MOV 1CH,#00H
MOV 1DH,#00H
LJMP MAIN
延时子程序
DELAY882: ;1.085x ((202x4)+5)=882 MOV R7,#202
DELAY882_A:
NOP
NOP
DJNZ R7,DELAY882_A
RET
; 1000
DELAY1000: ;1.085x ((229x4)+5)=999.285 MOV R7,#229
DELAY1000_A:
NOP
NOP
DJNZ R7,DELAY1000_A
RET
; 2400
DELAY2400: ;1.085x ((245x9)+5)=2397.85 MOV R7,#245
DELAY2400_A:
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R7,DELAY2400_A RET
END。