用单片机解码红外遥控器
红外遥控解码实验报告(3篇)

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

毕业论文(设计)论文(设计)题目:基于单片机的红外遥控解码器设计所属系别信息工程系专业班级 10大专电子信息工程技术2班姓 名学 号指导教师撰写日期 2013 年 4月本设计是一种以单片机和一体化红外接收器为核心,由单片机最小系统、通信模块、红外接收模块和液晶显示模块组成。
通过红外遥控接收头HS0038将光信号转变成电信号,经放大、解调、滤波后,将遥控脉冲波形送入单片机AT89S52中,利用相应的硬件滤波功能和软件滤波算法,对的输出信号进行信号识别、解码的实时动态处理,得到红外遥控器相应按键键码,单片机将得到的数据送入显示驱动电路,再通过LCD1602更直观的显示出来,实现单片机的红外解码。
经过解码后,可以将多种遥控器进行合成,实现一个遥控器控制多台电器设备。
即减少了遥控器的数量,同时又增强了遥控器的功能。
通过对电路的设计和实际调试,可以在液晶显示模块显示出来红外源码,从而验证了本设计是可行的。
关键词:AT89S52,红外接收HS0038,红外解码The design is a microcontroller and integrated infrared receiver as the core, from the smallest single-chip system, the communication module, the infrared receiving module and liquid crystal display module. Receiving head HS0038 the light signal is converted into electric signal through the infrared remote control, after amplification, demodulation, filtering, remote control pulse waveform into the SCM AT89S52, using the corresponding hardware filter and software filtering algorithm, the output signal of the signal recognition, real-time dynamic processing of infrared remote control decoding, obtained the corresponding key code, SCM will get data into the display driving circuit, and then through the LCD1602 display, infrared decoder chip. After decoding, can be a variety of remote controller synthesis, the realization of a remote control a plurality of electric equipment. Namely, reducing the number of remote control, and strengthen the function of the remote controller. Through the circuit design and debugging, in the liquid crystal display module display infrared source, which verified the design is feasible. Keywords: AT89S52, infrared receiver HS0038, infrared decoder1 引言 (1)2 总体设计方案 (1)2.1 方案论证 (1)2.2 总体设计框图 (1)3硬件电路设计 (2)3.1 单片机及其硬件电路设计 (2)3.1.1 单片机的介绍 (2)3.1.2 时钟电路及RC复位电路 (3)3.2 红外遥控器电路设计 (4)3.2.1 TC9012芯片介绍 (4)3.2.2 红外发射电路 (5)3.2.3 红外接收电路的设计 (7)3.3 1602液晶显示电路 (8)3.3.1 引脚功能说明 (9)3.3.2 指令说明 (9)4程序设计 (10)4.1 红外接收电路主程序流程图 (10)4.2 红外接收电路子程序流程图 (10)5结果分析与讨论 (12)5.1 测试仪器 (12)5.2 硬件调试的方法和过程 (12)5.3 软件调试问题及解决方法 (12)6总结 (13)参考文献: (14)致谢 (15)附录1: 系统电路原理仿真图 (16)附录2: 系统电路实物图 (17)附录3: 程序 (18)1 引言随着电子技术的发展,红外遥控器越来越多的应用到电器设备中,比如电视机、DVD机、空调、机顶盒甚至音响、热水器等都用到遥控器,而这些红外遥控器都是针对各自产品所设计的,从而导致了一般家庭中拥有数个遥控器,那么,能否将这些遥控器的功能进行复用,进而减少遥控器的数量,使遥控器的功能更加强大,就显得十分必要了。
单片机定时器捕获模式解码红外遥控器的方法

单片机定时器捕获模式解码红外遥控器的方法何乃味【摘要】以单片机作为核心控制器的电子产品日益广泛使用,它们的操作方式主要还是由外接的键盘来完成.若在此类产品中增加红外遥控功能,将使它们的操作更加人性化.用单片机进行软件解码最普遍的方法有查询法和外部中断法,在此详细介绍一种用AT89S52单片机定时器T2捕获功能实现接收解码的新方法,给出了解码的程序流程图和相应的子程序.实践证明,该解码方法占用单片机资源少,程序代码运行稳定可靠,效率高.该解码方法可为单片机产品开发者提供一个非常实用的参考,也可为学习者提供一个典型的应用范例.%Microcontroller which is taken as a core controller in electronic products is widely used. Its operation mode is still performed by external keyboard. If the infrared remote control function is added in the electronic products, their operation will be more humanized. The most common methods for software decoding with MCU are the inquiry method and external interrupting method. A new method of realizing the receiving decoding by the capture function of AT89S52 MCU Timer2 is introduced in detail. The program flowchart of the decoding and its corresponding subroutine are given in this paper. The practice application proves that the decoding method occupies less resources of MCU, and is stable, reliable and efficient in the code operation. This decoding method can provide a very useful reference for MCU developers, and a typical application example for the learners.【期刊名称】《现代电子技术》【年(卷),期】2012(035)018【总页数】3页(P11-13)【关键词】AT89S52;红外遥控;编码;解码【作者】何乃味【作者单位】柳州职业技术学院,广西柳州 545005【正文语种】中文【中图分类】TN911-340 引言红外遥控器技术早已广泛应用于各类家用电器中,目前许多以单片机作为核心控制器的电气设备和电子产品也逐渐采用该技术,使用户的操作更加灵活方便。
单片机如何通过捕获来实现对红外遥控器解码

单片机如何通过捕获来实现对红外遥控器解码一、内容提要上讲介绍并应用了单片机动态扫描驱动数码管,并给出了实例。
这一讲将重点介绍单片机如何通过捕获来实现对红外遥控器解码。
通过该讲,读者可以掌握红外遥控器的编码原理以及如何通过单片机对遥控器进行解码。
二、原理简介随着家用电器、视听产品的普及,红外线遥控器已被广泛使用在各种类型的家电产品上(如遥控开关、智能开关等)。
其具有体积小、抗干扰能力强、功耗低、功能强、成本低等特点,在工业设备中也得到广泛应用。
一般而言,一个通用的红外遥控系统由发射和接收两大部分组成,如图1 所示:图1 红外遥控系统框图其中发射部分主要包括键盘矩阵、编码调制、红外发射管;接收部分包括光、电信号的转换以及放大、解调、解码电路。
举例来说,通常我们家电遥控器信号的发射,就是将相应按键所对应的控制指令和系统码(由0 和1 组成的序列),调制在32~56kHz 范围内的载波上,然后经放大、驱动红外发射管将信号发射出去。
此外,现在流行的控制方法是应用编/ 解码专用集成电路芯片来实现(如下文提到的SAA3010 红外编码芯片和HS0038 红外接收头)。
不同公司的遥控芯片,采用的遥控码格式也不一样。
在此介绍目前广泛使用较普遍的两种,一种是NEC Protocol 的PWM(脉冲宽度调制)标准,一种是Philips RC-5 Protocol 的PPM(脉冲位置调制)标准。
NEC 标准:遥控载波的频率为38kHz(占空比为1:3);当某个按键按下时,系统首先发射一个完整的全码,然后经延时再发射一系列简码,直到按键松开即停止发射。
简码重复为延时108ms,即两个引导脉冲上升沿之间的间隔都是108ms。
一个完整的全码如图2所示。
单片机STM32F103C8T6的红外遥控器解码系统设计

单片机STM32F103C8T6的红外遥控器解码系统设计一、本文概述本文旨在详细阐述基于STM32F103C8T6单片机的红外遥控器解码系统的设计和实现过程。
随着科技的不断进步和智能化设备的普及,红外遥控器作为一种常见的遥控设备,已经广泛应用于家电、安防、玩具等多个领域。
然而,红外遥控器发出的红外信号往往需要通过解码器才能被设备正确识别和执行,因此,设计一款高效、稳定、可靠的红外遥控器解码系统具有重要意义。
本文将首先介绍红外遥控器的基本原理和信号特点,然后详细阐述STM32F103C8T6单片机的性能特点和在红外遥控器解码系统中的应用优势。
接着,将详细介绍红外遥控器解码系统的硬件设计,包括红外接收头的选择、电路设计和PCB制作等。
在软件设计部分,将详细阐述如何通过STM32F103C8T6单片机的编程实现红外信号的接收、解码和处理,以及如何将解码后的数据通过串口或其他通信方式发送给主控制器。
本文还将对红外遥控器解码系统的性能进行测试和分析,包括信号接收距离、解码速度和稳定性等方面的测试。
将总结本文的主要工作和创新点,并对未来的研究方向进行展望。
通过本文的研究和实现,旨在为红外遥控器解码系统的设计提供一种新的思路和方法,同时也为相关领域的研究人员提供有益的参考和借鉴。
二、红外遥控器基础知识红外遥控器是一种常见的无线遥控设备,它利用红外光作为信息载体,通过发射和接收红外光信号实现对设备的远程控制。
这种遥控方式因其简单、低成本和无需视线连接等优点,在各类消费电子产品中得到了广泛应用,如电视机、空调、音响等。
红外遥控器的工作原理主要基于红外辐射和光电器件的检测。
遥控器内部通常包含一个或多个红外发射管,当按下按键时,发射管会发射出特定频率和编码的红外光信号。
接收端则配备有红外接收头,该接收头内部有一个光敏元件(如硅光敏三极管或光敏二极管),用于检测红外光信号并将其转换为电信号。
为了区分不同的按键操作,红外遥控器通常采用特定的编码方式对按键信号进行编码。
51单片机红外遥控解码程序

51单片机红外遥控解码程序类别:单片机/DSP 阅读:2975编者按:以下是网友编写的遥控解码程序!一种用延时等待的解码方法,比较容易理解,但缺点是占用CPU运行时间,第二种方法用定时器和外中断的解码方法,初学不易理解,但优点也很明显,第二种方法如果能解决连发解码就比较完美,更完善的红外遥控解码程序,请参考本站TOPA V-2008,TOP51-2005所配程序。
解码方法一;//单片机接收红外解读程序\\;硬件结构:8951,P0口数码管段码,P2.0-P2.3为位,P1为8个LED;P3.2为红外接收头,P2.7蜂鸣器,晶振12M;适用UPD6121 6122芯片接收;---------------------------------------------------------ORG 0000HAJMP MAIN ;转入主程序ORG 0003H ;外部中断P3.2脚INT0入口地址AJMP INT ;转入外部中断服务子程序(解码程序);以下为主程序进行CPU中断方式设置MAIN: SETB EA ;打开CPU总中断请求SETB IT0 ;设定INT0的触发方式为脉冲下降沿触发SETB EX0 ;打开INT0中断请求AJMP $;以下为进入P3.2脚外部中断子程序,也就是解码程序INT: CLR EA ;暂时关闭CPU的所有中断请求MOV R6,#10SB: ACALL YS1 ;调用882微秒延时子程序JB P3.2,EXIT ;延时882微秒后判断P3.2脚是否出现高; 电平如果有就退出解码程序DJNZ R6, SB ;重复10次,目的是检测在8820微秒内;如果出现高电平就退出解码程序;以上完成对遥控信号的9000微秒的初始低电平信号的识别。
JNB P3.2, $ ;等待高电平避开9毫秒低电平引导脉冲ACALL YS2 ;延时4.74毫秒避开4.5毫秒的结果码MOV R1,#1AH ;设定1AH为起始RAM区MOV R2,#4;PP: MOV R3,#8JJJJ: JNB P3.2,$ ;等待地址码第一位的高电平信号LCALL YS1 ;高电平开始后用882微秒的时间尺去判断信;号此时的高低电平状态MOV C,P3.2 ;将P3.2引脚此时的电平状态0或1存入C中JNC UUU ;如果为0就跳转到UUULCALL YS3;UUU: MOV A,@R1 ;将R1中地址的给ARRC A ;将C中的值0或1移入A中的最低位MOV @R1,A ;将A中的数暂时存放在R1中DJNZ R3,JJJJ ;接收地址码的高8位INC R1 ;对R1中的值加1,换下一个RAMDJNZ R2,PP ;接收完16位地址码和8位数据码和8位数据反; 码,存放在1AH/1BH/1CH/1DH的RAM中MOV A,1CH ;比较数据码和数据反码是否正确?CPL AXRL A,1DH ;将1CH的值取反后和1DH比较不同则无效丢弃,核对数据是否准确JNZ EXITMOV DPTR,#TAB ;表头地址送指针MOV A,1DHANL A,#0FH ;相与,得到低四位码MOVC A,@A+DPTRMOV 1EH,A ;查表得表码存入1EHMOV A,1DHSWAP AANL A,#0FHMOVC A,@A+DPTRMOV 1FH,A ;查表得高四位码存入1FMOV R7,#20HDISP:MOV P0,1FH ;送数码管显示CLR P2.1ACALL YS2SETB P2.1MOV P0,1EHCLR P2.2ACALL YS2SETB P2.2MOV P1,1DH ;将按键的键值通过P1口的8个LED显示出来!CLR P2.7 ;蜂鸣器鸣响-嘀嘀嘀-的声音,表示解码成功LCALL YS2SETB P2.7 ;蜂鸣器停止DJNZ R7,DISPEXIT: SETB EA ;允许中断RETI ;退出解码子程序YS1: MOV R4,#20 ;延时子程序1,精确延时882微秒D1: MOV R5,#20DJNZ R5,$DJNZ R4,D1RETYS2: MOV R4,#10 ;延时子程序2,精确延时4740微秒D2: MOV R5,#235DJNZ R5,$DJNZ R4,D2RETYS3: MOV R4,#2 ;延时程序3,精确延时1000微秒D3:MOV R5,#248DJNZ R5,$DJNZ R4,D3RETTAB: DB 0C0H,0DEH,0A2H,8AH,9CH,89H,81H,0DAH,80H,88H,90H,85H,0E1H,86H,0A1H,0B1H;数据表,0-9-A-FEND解码方法二你的解码程序和我现在用的解码程序大体是一样的,我自己实际做了一下,发现按下遥控器,接收到红外信号后,数码管闪的厉害。
基于单片机的红外遥控器解码器的设计
}—一 16如,—叫4‰或1 w=u叫’刚,c9
图4 第二以后连续发送的遥控信号的编码脉冲
由图2和图3可以看出,遥控编码脉冲波形的输出时 间为192瓦,或224 Tc,,以为用户码(8位)的输出时间。当 口≥26 Tc,时,遥控编码脉冲波形输出时间为224Tc,。另 外,对于连续发送的编码脉冲中用户码第一位的相反码的 脉冲问隔时间,当SO一“1”时,则So一“0”,该时间为
3单片机程序设计
单片机程序主要解决的问题就是如何对接收到的 9021型红外遥控器所发射的信号进行解码,编码脉冲信 号是由引导码、用户码、和功能码等部分组成,我们只对获 取其功能码过程进行分析。在单片机设置中,将单片机 AT89C5l内部定时器/计数器To设为定时方式1,定时时 间为1 ms;设外部中断INTo为下降沿中断触发方式,由
116622)
摘 要:9012型红外遥控器被广泛用在家用电器和仪器仪表中,在了解了其发射的编码脉冲信号波形后,设计了基于单
片机AT89C51的红外遥控器解码器,对解码器硬件和相应软件进行分析并给出程序流程图。将红外遥控器用在生产即时
显示系统中,作为参数设置和系统控制用红外遥控器,既操作灵活方便,又能提高系统抗干扰能力,在实际中收到了良好
图3 Matlab中滤波前后结果
4结 语
一般DSP芯片实现FIR滤波器时,常是先在Matlab 中设计要求的滤波器,得到滤波器系数,在目标DSP汇编 程序中,对系数进行相应的Q格式转换,再用相关汇编指 令实现FIR滤波器算法。但在调试时,每改变一次滤波器
参数,相关系数也改变,目标DSP中的程序也要做相应改 变,给调试仿真带来很大麻烦,使滤波器设计效率很低。 Matlab具有强大的数值分析、计算、信号处理及图形显示 功能,并为用户提供了强大的信号处理工具箱和友好方便 的交互式图形用户界面,用Matlab辅助DSP实现FIR,在 滤波器系数改变时可以不必改变DSP中程序,大大提高 了滤波器设计效率。本文只是利用Matlab辅助DSP实现 了一个简单的FIR低通滤波器,并在TMS320C6713 DSK 上成功运行。还可以利用Matlab辅助DSP来实现比较复 杂的诸如语音处理、通信、图像处理等方面的程序开发,可 以大大缩短DsP应用程序的开发时间,提高设计效率,这 也是以后DSP设计的一个趋势。
【精品】用单片机解码红外遥控器
用单片机解码红外遥控器用单片机解码红外遥控器遥控器使用方便,功能多.目前已广泛应用在电视机、VCD、DVD、空调等各种家用电器中,且价格便宜,市场上非常容易买到。
如果能将遥控器上许多的按键解码出来.用作单片机系统的输入.则解决了常规矩阵键盘线路板过大、布线复杂、占用I/O口过多的弊病。
而且通过使用遥控器,操作时可实现人与设备的分离,从而更加方便使用.下面以TC9012编码芯片的遥控器为例.谈谈如何用常用的51系统单片机进行遥控的解码。
一、编码格式1、0和1的编码遥控器发射的信号由一串O和1的二进制代码组成.不同的芯片对0和1的编码有所不同.通常有曼彻斯特编码和脉冲宽度编码.TC9012的O和1采用PWM方法编码,即脉冲宽度调制,其O码和1码如图1所示(以遥控接收输出的波形为例)。
O码由O.56ms低电平和0.56ms高电平组合而成.脉冲宽度为1.12ms.1码由0.56ms低电平和1.69ms高电平组合而成.脉冲宽度为2.25ms。
在编写解码程序时.通过判断脉冲的宽度,即可得到0或1。
2、按键的编码当我们按下遥控器的按键时,遥控器将发出如图2的一串二进制代码,我们称它为一帧数据。
根据各部分的功能。
可将它们分为5部分,分别为引导码、地址码、地址码、数据码、数据反码。
遥控器发射代码时.均是低位在前。
高位在后。
由图2分析可以得到.引导码高电平为4.5ms,低电平为4.5ms.当接收到此码时.表示一帧数据的开始.单片机可以准备接收下面的数据。
地址码由8位二进制组成,共256种.图中地址码重发了一次.主要是加强遥控器的可靠性.如果两次地址码不相同.则说明本帧数据有错.应丢弃。
不同的设备可以拥有不同的地址码.因此。
同种编码的遥控器只要设置地址码不同,也不会相互干扰。
图中的地址码为十六进制的0EH(注意低位在前)。
在同一个遥控器中.所有按键发出的地址码都是相同的。
数据码为8位,可编码256种状态,代表实际所按下的键。
单片机做红外遥控解码器
单片机做红外遥控解码器你家里是否有一个电视机遥控器或者空调机遥控器呢?你是否也想让它遥控其他的电器甚至让它遥控您的电脑呢?那好,跟我一起做这个“遥控”。
该小制作所需要的元件很少:TA89C2051一只,RS232接口电平与TTL 电平转换心片MAX232CPE一只,红外接收管一只,晶振11.0592MHz,电解10uF4只,10uF一只,1K1个,300欧姆左右1个,瓷片电容30P2个。
发光8个。
价钱不足20元。
原理介绍:主控制单元是单片机AT89C2051,中断口INT0跟红外接受管U1相连,接收红外信号的脉冲,8个作为显示解码输出(也可以用来扩展接其他控制电路),U3是跟电脑串行口RS232相连时的电平转换心片,9、10脚分离与单片机的1、2脚相连,(1脚为串行接收,2脚为串行发送),MAX232CPE的7、8脚分离接电脑串行口的2(接收)脚、3(发送脚)。
晶振采纳11.0592MHz,这样才干使得通讯的波特率达到9600b/s,电脑普通默认值是9600b/s、8位数据位、1位停止位、无校验位。
电路就这么容易了,现在分析详细的编程过程吧。
开头位是以3.6ms低电平然后是3.6ms高电平,然后数据表示形式是0.9ms低电平0.9ms高电平周期为1.8ms表示“0”,0.9ms低电平2.4ms 高电平周期为3.3ms表示“1”,编写程序时,以大于3.4ms小于3.8ms 高电平为起始位,以大于2.2ms小于2.7ms高电平表示“1”,大于0.84ms小于1.11ms高电平表示“0”。
因此,我们主要用单片机测量高电平的长短来确定是“1”还是“0”即可。
定时器0的工作方式设置为方式1:movtmod,09h,这样设置定时器0即是把GATE置1,16位计数器,最大计数值为2的16次方个机器周期,此方式由外中断INT0控制,即INT0为高时才允许计数器计数。
比如:jnbp3.2,$jbp3.2,$clrtr0这3条命令就可以测量一个高电平,接下来读取计数值TH0,TL0就可以辨别是起始位还是“1”或“0”。
51单片机红外遥控解码,很详细(汇编语言,C语言等)
//i++;
if(TH0<3)
b=1;
else b=0;
TH0=0;
TL0=0;
}
uchar hw_key()
{
uchar j,m;
//i=0;
hw_start(); //等待低电平到来
hw_pulse();
for(j=0;j<24;j++) //测试用户码脉冲宽度
{
hw_pulse();
}
for(j=0;j<8;j++) //测试键码脉冲宽度
{
hw_pulse();
if(b==1)
m=(m<<1)|1;
else
m<<=1;
}
return m; //键码
}
while(in==0); //高电平到了,
TR0=0; //关闭定+;
TH0=0;
TL0=0;
TR0=1; //高电平到了,启动定时器1,测试高电平宽度
while(in==1); //低电平到了,
TR0=0; //关闭定时器1,高电平宽度测试完
请注意甄别内容中的联系方式诱导购买等信息谨防诈骗
51单片机红外遥控解码,很详细(汇编语言,C语言等)
单片机源程序如下:
#include
#define hw_hs0038_ENTITY
#include "hw_hs0038.h"
sbit in=P3^2;
//uchar i=0;
//uchar k[2];
bit bdata b=0;
/*
void timer0(void) interrupt 1 using 1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用单片机解码红外遥控器
此主题相关图片如下:01.gif
此主题相关图片如下:02.gif
此主题相关图片如下:03.gif
此主题相关图片如下:04.gif
用单片机解码红外遥控器
遥控器使用方便,功能多.目前已广泛应用在电视机、VCD、DVD、空调等各种家用电器中,且价格便宜,市场上非常容易买到。
如果能将遥控器上许多的按键解码出来.用作单片机系统的输入.则解决了常规矩
阵键盘线路板过大、布线复杂、占用I/O口过多的弊病。
而且通过使用遥控器,操作时可实现人与设备的分离,从而更加方便使用。
下面以TC9012编码芯片的遥控器为例。
谈谈如何用常用的51系统单片机进行遥控的解码。
一、编码格式
1、0和1的编码
遥控器发射的信号由一串O和1的二进制代码组成.不同的芯片对0和1的编码有所不同。
通常有曼彻斯特编码和脉冲宽度编码。
TC9012的O和1采用PWM方法编码,即脉冲宽度调制,其O码和1码如图1所示(以遥控接收输出的波形为例)。
O码由O.56ms低电平和0.56ms高电平组合而成.脉冲宽度为1.1 2ms.1码由0.56ms低电平和1.69ms高电平组合而成.脉冲宽度为2.25ms。
在编写解码程序时.通过判断脉冲的宽度,即可得到0或1。
2、按键的编码
当我们按下遥控器的按键时,遥控器将发出如图2的一串二进制代码,我们称它为一帧数据。
根据各部分的功能。
可将它们分为5部分,分别为引导码、地址码、地址码、数据码、数据反码。
遥控器发射代码时.均是低位在前。
高位在后。
由图2分析可以得到.引导码高电平为4.5ms,低电平为4.5ms。
当
接收到此码时.表示一帧数据的开始。
单片机可以准备接收下面的数据。
地址码由8位二进制组成,共25 6种.图中地址码重发了一次。
主要是加强遥控器的可靠性.如果两次地址码不相同.则说明本帧数据有错.应丢弃。
不同的设备可以拥有不同的地址码.因此。
同种编码的遥控器只要设置地址码不同,也不会相互干扰。
图中的地址码为十六进制的0EH(注意低位在前)。
在同一个遥控器中.所有按键发出的地址码都是相同的。
数据码为8位,可编码256种状态,代表实际所按下的键。
数据反码是数据码的各位求反,通过比较数据码与数据反码.可判断接收到的数据是否正确。
如果数据码与数据反码之间的关系不满足相反的关系.则本次遥控接收有误.数据应丢弃。
在同一个遥控器上.所有按键的数据码均不相同。
在图2中,数据码为十六进制的0CH,数据反码为十六进制的0F3H(注意低位在前).两者之和应为0FFH。
二、单片机遥控接收电路
红外遥控接收可采用较早的红外接收二极管加专用的红外处理电路的方法。
如CXA20106,此种方法电路复杂,现在一般不采用。
较好的接收方法是用一体化红外接收头,它将红外接收二极管、放大、解调、整形等电路做在一起,只有三个引脚.分别是+5V电源、地、信号输出。
常用的一体化接收头的外形及引脚见图3和图4。
红外接收头的信号输
出接单片机的INTO或INTl脚.典型电路如图5所示.图中增加了一只PNP型三极管对输出信号进行放大。
三、遥控信号的解码算法及程序编制
平时。
遥控器无键按下。
红外发射二极管不发出信号,遥控接收头输出信号1。
有键按下时.O和1编码的高电平经遥控头倒相后会输出信号O.由于与单片机的中断脚相连,将会引起单片机中断(单片机预先设定为下降沿产生中断)。
单片机在中断时使用定时器0或定时器1开始计时.到下一个脉冲到来时,即再次产生中断时,先将计时值取出。
清零计时值后再开始计时.通过判断每次中断与上一次中断之间的时间间隔。
便可知接收到的是引导码还是O和1。
如果计时值为9ms。
接收到的是引导码,如果计时值等于1.1 2ms,接收到的是编码O。
如果计时值等于2 25ms.接收到的是编码1。
在判断时间时,应考虑一定的误差值。
因为不同的遥控器由于晶振参数等原因,发射及接收到的时间也会有很小的误差。
以接收TC9012遥控器编码为例,解码方法如下:
(1)设外部中断0(或者1)为下降沿中断,定时器0(或者1)为16位计时器.初始值均为O。
(2)第一次进入遥控中断后,开始计时。
(3)从第二次进入遥控中断起,先停止计时。
并将计时值保存后,再重新计时。
如果计时值等于前导码的时间,设立前导码标志。
准备接收下面的一帧遥控数据,如果计时值不等于前导码的时间,但前面已接收到前导码,则判断是遥控数据的O还是1。
(4)继续接收下面的地址码、数据码、数据反码。
(5)当接收到32位数据时,说明一帧数据接收完毕。
此时可停止定时器的计时,并判断本次接收是否有
效.如果两次地址码相同且等于本系统的地址,数据码与数据反码之和等于0FFH,则接收的本帧数据码有效。
否则丢弃本次接收到的数据。
(6)接收完毕,初始化本次接收的数据,准备下一次遥控接收。
示例程序如下:E1INT:
PUSHACC
PUSH PSW
CLRTR1
MOV RM—TLEN,TH1 、
MOVTH1,#00H
MOV TL1,#00H
SETBTR1
MOV A,RMJLEN
JNZ LBL—RM—DAT—BIT
MOV RM—ADDR.#00H
MOV RM—RADDR,#00H
MOV RM—DAT,#00H
MOV RM—RDAT,#00H
MOV RM—BIT_CNT,#00H
CLR RM—OK
CLR RM—GUIDE
POPPSW
POPACC
RET1 I BI RM DAT BIT:
MOV A,RM_TLEN
CJNE A,#23H,LBL—RM_ADDR_DAT
SETB RM—GUIDE
SJMP LBLE1 INT-RET
LBLRM_ADDR_DAT;
JNB RM—GUIDE,LBL—RM—ERROR
CJNE A,#04H,LBL_RM_ONE
CLR C
SJMP LBL_RM—SHIFT
LBLRM—ONE:
CJNE A。
#08H。
LBL—RM—ERROR
SETB C
LBL_RM_SHIFT:
MOV A,RM—RDAT
RRC A
MOV RM—RDAT.A
MOV A,RM—DAT
RRC A
MOV RM—DAT,A
MOV A,RM—RADDR
RRC A
MOV RM RADDR.A
MOV A。
RM—-ADDR
RRC A
MOV RM—.ADDR.A
LBL—RM—END:
INC RM—BIT—CNT
MOV A,RM_BIT_CNT
CJNE A,#32,LBLE1 INT_RET
CLRTR1
MOV TH1,#00H
MOVTL1,#00H
MOV HOUR.RM—ADDR
MOV MINUTE,RM—DAT
MOV RM—_ADDR,#00H
MOV RM—RADDR,#00H
MOV RM—DAT,#00H
MOV RM—RDAT,#00H
MOV RM一8IT_CNT,#00H
CLR RM—GUIDE
SEITB RM—OK
SJMP LBL—E1 INT—RET LBL—RM—ERROR:
CLRTR1
MOV TH1,#0OH
MOVTL1,#00H
MOV RM—_ADDR,#00H
MOV RM—RADDR,#00H
MOV RM—DAT,#00H
MOV RM—RDAT,#00H
MOV RM—B1T—CNT,#00H
CLR RM—GUIDE
LBL—E1 INT—RET:
POPPSW
POPACC
RETI
四、遥控代码与键盘码的转换
在应用系统中,带遥控器的仪器设备一般都带按键。
而且二者功能相同。
将遥控键值转换成标准的按键值后。
遥控按键散转表格可以与键盘散转表格复用。
转换方法可用查表法。
通过查表。
使遥控的按键值转换成本机键盘的值。
这样既可以使用按键操作,也可以使用遥控操作,而且相应的处理程序非常简单。
以上以Tc9012编码格式为例,说明了解码的原理与方法。
只要注意一帧数据的格式及引导码、O码和1码的时间长度.其它编码芯片如HT6121、M50560、LC7461等也非常容易解码。
文章引用自:
此主题相关图片如下:05.gif。