路由器论文红外遥控器论文_第1页
路由器论文红外遥控器论文_第2页
路由器论文红外遥控器论文_第3页
路由器论文红外遥控器论文_第4页
路由器论文红外遥控器论文_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

路由器论文红外遥控器论文自学习红外遥控器的设计与实现摘要:通过对红外遥控器发射编码的分析,提出了一种以单片机 AT89s52 为核心的自学习型红外遥控器的设计和实现方案。在方案中采用测量脉冲宽度的方法来学习红外遥控编码,采用索引存储的方法来保存学习到的红外编码,采用单片机定时器来产生红外编码发射所需要的 38khz 红外载波。大量的实验数据表明,文章提出的设计方案解决了红外学习效率不高,存储空间利用率低的问题。特别是索引存储的设计方法对编码的成功学习和存储起到了关键作用,值得推广。 关键词:自学习;AT89S52 红外遥控器;索引存储 中图分类号:TP368.1 文献标识码:B 文章编号:1009-3044(2008)24-1257-03 Design and Realization of a Learning Infrared Remote Controller LIN Ling, YU De-hai (Department of Computer Science and Technology, Changchun University of Technology,Changchun 130012, China) Abstract: Through the analysis of the infrared emission coding, This paper presents a kind of design scheme of infrared remote controller based on the MCU AT89s52.In this paper, the remote controller learns infrared code by pulse width measuring, saves code by index, outputs carrier wave by timer. A large number of experiments show that the design proposed in this paper has solved the issues infrared learning efficiency not high, a low utilization rate of storage space. In particular the method of index storage played a key role during coding learned and saved successfully, it should be promoted. Key words: self-learning; AT89S52 infrared controller;index storage 1 引言 人们生活水平的提高推动了家电业的快速发展,使越来越多的电器进入家庭,特别是实用方便的带红外遥控的电器在普通家庭中是随处可见。但是随之而来,新的问题出现了:家里遥控器太多,不能通用,在使用过程中容易产生混乱等等,这些问题给人们生活带来了诸多不便。为此,本文设计了以AT89s52 为核心的自学习型红外遥控器,实现一器多用,并能随时更新内容,适应每个用户的特殊需求。 2 学习型红外遥控器的设计思想 当红外遥控器的某个键被按下时,会发射出一组串行二进制遥控编码脉冲。该脉冲由引导码、系统码及其反码、功能码及其反码组成。在实际的遥控器生产厂家中,不同厂家通过设置这些编码以及码长区分不同厂家或不同型号的红外遥控器。因此想解码所有不同厂家的红外遥控器是不现实的。 本系统设计思想是不考虑红外编码方式,仅利用单片机 AT89s52 对红外遥控编码的脉冲宽度进行测量,并原封不动把发射信号中高低电平的时间宽度记录保存到 E2PROM 指定的地址中。当要发射红外信号时,从 E2PROM 中取出数据并还原出相应的红外遥控编码,并调制到 38kHz 的载波信号上。最后,通过三极管放大电路驱动红外发光二极管发射红外信号,达到学习和发射的目的,从而实现一个遥控器控制多种红外遥控设备。 图 1 硬件结构框 3 硬件电路设计 硬件结构框图如图 1 所示。 3.1 红外接收电路 红外接收电路选用市面上常用的一体化红外接收头 HS0038B。它的特点是集光电转换、解码和放大于一体,只需少量外接元件就能完成红外接收到输出TTL 电平信号。HS0038B 平时输出为高电平,当接收到遥控信号时,输出为低高电平组成的脉冲。也就是说,接收时 1 个码由 1 个低电平后跟 1 个高电平构成。经实验所得高低电平的长度通常为几毫秒到十几毫秒,一个遥控信号包括的码位从十几位到三十三位不等。另外,一般的遥控器编码在长按按键的时候,会连续的发数据,可能是同样的数据,也有可能是个特定的所谓重复帧,虽然帧间的间隔大小不等,但一般在 20-100ms 之间,而有效的 0 和 1 的编码时间却基本小于 10ms,就是说大致上 15ms 之内没有信号收到就表示当前的数据帧已经接收完毕。所以本遥控器红外接收电路设计成图 2 所示。 图 2 接收电路 图 3 红外发射电路 图 4 系统软件主流程 输出信号接单片机 INT0 端,同时该信号经过非门之后接 INT1 端,两个外部中断设置成下降沿触发,在 INT0 中断的时候开始记录低电平的宽度,在INT1 中断的时候记录高电平的宽度,同时判断计数值是否超过范围来确定是否接收完毕。这种方法的优点是软件反应较快,中断处理部分不占用太多的时间。 3.2 红外发射电路 红外发射电路如图 3 所示。当系统进入发射功能时,AT89s52 首先从HD7279A 读取用户按键码,然后从 E2PROM 中取出相应键值的遥控基带信号,即红外遥控编码的高、低电平持续时间,同时直接用定时器 T1 来产生 38KHz的载波信号。最后,将基带信号调制到载波上,经三极管放大驱动红外发射管辐射出 940nm 的红外脉冲信号。 3.3 存储电路 选择采用 I2C 总线的串行 E2PROM(AT24C256)作为片外存储器,其存储容量为 32768 字节,即 32KB,足够存储大量的数据。 3.4 键盘显示电路 选择串行接口的 HD7279A,该芯片可同时驱动 8 位共阴数码管或 64 只独立的智能显示驱动芯片,该芯片同时还可连接多达 64 键的键盘矩阵,单片即可完成 LED 显示、键盘接口的全部功能。在本系统中连接四个 LED 数码管(用于显示键码和状态信息等)和 49 个按键,其中 1 个学习键,14 个设备键,34个功能键。也就是说本遥控器最多可学习 14 种设备。 4 软件实现 本系统软件主流程如图 4 所示。 4.1 红外编码的学习 通常记录一个码需要 4 个字节,即 TH0、TL0、TH1、TL1,而对 AT24c256写一个字节至少需要 4ms,故不能一边接收一边存储,只能将学习到的计时值暂存在 RAM 中,待接收完毕再转存入 AT24c256 中。我们知道红外编码一帧信息通常为 33 个码(当然也有非标准的,不过很少见),这样就需要 132 个字节的 RAM,如果将这些编码不加处理的全部存放在 E2PROM 中,需要的空间就比较大。同时由于存在计时误差,对于同一种码,在接收到时不一定完全一样,其高低电平常常在一个很小的范围波动。基于以上原因,本设计采用下面方法来实现学习一个键。 第一步根据按下的设备按键键码读出存放在 E2PROM 公共键码区记录的公共键码。假设读出的公共键码存入 RAM 中数组 sharekey 。 第二步接收遥控信号(假设存入数组 remotedata ),并将其与读出的公共键码逐一比较,找出新码(一般不超过 10 个),也即差别较大的码。 然后将找到的新码添加到数组 sharekey 中。最后将所有的公共码存入 E2PROM。所谓差别较大就是指相比较的两个码的定时器 1、定时器 0 的高位相等,低位相差大于 20H(TH1 和 TH0 相等,TL1 或 TL0 的差值大于 20H)。 第三步采用索引的方式记录该帧信号中的所有码位,即将数组remotedata 中每一码位与 sharekey 中的码比较,如果相差不大(比如0x04 号码),就用该码号来记录此码位。这样一个码位只需要一个字节来记录,而原来需要二个字节,节省了一半的 E2PROM 资源。最后将索引存入 E2PROM 中功能键码对应的地址处。 具体学习子程序流程图如图 5 所示。在本系统中为了提高计时准确度,在设计中断处理函数时采用了如下方法:在进入 INT0 的中断时,关闭 T1,判断(判断计时值是否超过了 15ms,超过就清 EA,表示一帧数据接收完毕)并读入TH1 和 TL1 的值(该值为前一个高电平脉冲宽度值),然后开启 T0 开始记录低电平脉冲宽度;在进入 INT1 中断时,关闭 T0,判断并读入 TH0 和 TL0 的值(该值为前一个低电平脉冲宽度值),然后开启 T1 开始记录高电平脉冲宽度。 4.2 数据的存储 本系统将 E2PROM 划分为 M 个空间。相同设备的键码存放在一个空间中,然后再把每个设备指令的空间分成 N 份,每份空间存放一个功能键编码。按照这个思路,容量为 32KB 的 AT24c256,按存放 14 种设备计算,每种设备占空间为 2304 字节:设备公共键码区 32 字节,功能键码区 2244 字节(每个键占空间 66 字节,按 34 个键计算),留余量 28 字节(便于地址分配)。具体地址分配如表一所示。具体寻址计算方法如下:本系统中假定功能键键值范围为0x000x22,设备键键值范围为 0x300x3d(这里键值是根据按键与芯片HD7279A 连接来确定的,连接不同,按键返回的键值也不同。详情可参考芯片hd7972a 技术手册)。设备键公共码首址=(设备键键值-0x30)*2304,功能键码首址=公共码首址+0x20+(功能键键值*66)。这里 2304 是每个设备所占空间大小,0x20 是公共键码区大小,66 是每个功能键码索引所占空间大小。 表 1 设备地址分配表 图 5 学习子程序流程图 图 6 发射子程序流程图 4.3 红外编码的发射 发射流程图如图 6 所示。当进入发射状态时,先根据按下的设备键从相对应的设备公共键码区读出公共键码,然后根据按下的功能键寻址读入功能键编码索引,最后根据索引与公共键码转换出功能键实际编码,并按位取反送入发射口。这里要按位取反的原因得从接收原理分析起,当无遥控信号输入时,HS0038B 输出端保持高电平,有信号时才出现低电平。所以根据发射电路,需将信号取反,再从 P0.3 口输出。 5 结论 脉宽测量和索引存储的结合提高了学习效率、准确率、存储空间利用率。实际测试中,对市面上流行的各种红外遥控器编码的学习之后,都能控制相应的红外遥控设备。另外我们可以加上无线射频电路,实现无线到红外的转发达到穿墙遥控。还可以将学习到的编码通过串口上传到智能家居的网关,实现远程遥控家用电器,使传统家电在智能家居系统中占有一席之地,也为现代家庭从传统家电向智能家电过渡提供了一种择中的方案。 参考文献: 1 李光飞,李良儿.单片机 C 程序设计实例指导M.北京:北京航空航天大学出版社,2005. 2 张毅刚.单片机原理及应用M,北京:高等教育出版社,2003. 3 王为青,程国刚.单片机 Keil Cx51 应用开发技术M.北京:人民邮电出版社,2006. 4 何立民.MCS-51 系列单片机应用系统设计M.北京:北京航空航天大学出版社,1990. 5 李冬梅,高文焕.通用学习式红外遥控器中数据压缩与识别算法J.清华大学学报(自然科学版),2000,40(7):85-88. 6 凌志斌,邓超平,郑益慧,等.红外遥控技术及其解码方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论