基于AT89S52的智能遥控设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第24卷第1期2009年2月液晶与显示ChineseJournalofLiquidCrystalsandDisplaysVol124,No11Feb.,2009:100722780(2009)0120087206基于AT89S52的智能遥控设计吴鹏,许雪梅*,黄帅,郭远威,李岸,王波,夏辉(中南大学物理科学与技术学院,湖南长沙410083,E2mail:wupeng_628@126.com):介绍了一款以AT89S52微处理器为核心的自学习型红外遥控器的设计与实现。该遥控器采用测量脉冲宽度的方法,可学习并存储其它遥控器的编码信息,利用存储的遥控编码信号控制相应的器件,达到用一个遥控器代替多个遥控器来控制不同家电的目的。文章对红外编码解码原理做了简要阐述,重点给出了遥控系统的硬件结构和软件流程,测试结果表明该智能遥控器具有操作方便、运行稳定和接收数据准确的优点。:红外;智能遥控;编码;解码;AT89S52:TP399:A:2008207208;:2008208217:国家自然科学基金资助项目(No.60507014);中国博士后基金资助项目(No.20070420825);中南大学大学生创新性实验计划资助项目(No.LB07090)*通讯联系人,E2mail:xuxuemei999@126.com1引言随着计算机技术、现代通信技术和自动控制技术的不断进步,智能化楼宇得到了迅速发展。智能家居系统也随着计算机、电话和传真机等信息工具以及一些新的技术和产品陆续进入各个家庭而不断升级,遥控器在其中的地位也显得越来越重要。红外遥控器[126]是一种用户可以在几米甚至十几米外就能对各种电器进行操作控制的装置,在家电产品中有着广泛应用。但现在各家电产品的遥控器不能相互兼容,使得生活中遥控器的数目随家电数量的增加而增多,使用时常常混淆。智能遥控器具有解码、记忆编码及模拟发射的功能,可对各个子系统进行信息存储和控制,从而可代替多个遥控器对多种电子器件进行控制。在现代智能家居系统中,遥控器可用于控制智能照明系统、家电控制系统及电动窗帘等。其中灯具的情况比较特殊,因为灯具发出的光线中含有大量的红外线,与其相比,遥控器所发出的红外信号显得非常微弱,遥控距离难以超过2m,所以对需遥控的灯具本身要有一定的特殊要求。另外在家电控制系统里,最为常见的是电视、DVD及空调的遥控,它们的编码方式较为相似,在下面的红外遥控编码原理中将着重介绍。而电动窗帘的控制较为简单,只需要2个不同的编码信号便能控制其拉开及关闭的状态,辅助一些其它功能键便能达到很好的控制效果。因此,智能遥控器的设计主要针对较为复杂的家电系统。目前的多合一遥控器主要有以下几种:(1)固定码遥控器:把各个生产商产品的码表收集起来写到不可更改的芯片中去控制那些采用同一核心技术的电器。(2)代码型遥控器:采用软件的方式对统一的编码进行解释,驱动各个命令码按指定设备码格式加以/封装0,形成所需要的遥控信号,达到控制家电的目的。(3)学习型遥控器:可以将各种不同类型的遥控器的编码波形记录在存储器中,而且存储器的内容是可以随时在/学习0中改写的,通用性大大提高[1,2]。本文以AT89S52微处理器为核心,设计并实现了一种自学习型红外遥控器,测试结果表明该智能遥控器具有操作方便、运行稳定以及接收数据准确的优点。2红外遥控编码原理2.1红外遥控是将遥控信号(二进制脉冲码)调制88液晶与显示第24卷在38kHz、40kHz或其它高频载波上,经缓冲放大后送至红外发光二极管,转化为红外信号发射出去。这样做的目的是提高抗干扰性能和降低电源消耗。二进制脉冲码的形式有多种,其中最为常用的是PWM码(脉冲宽度调制码)和PPM码(脉冲位置调制码),如图1所示。前者以宽脉冲表示1,窄脉冲表示0;后者脉冲宽度一样,但是码位宽度不一样,码位宽的代表1,码位窄的代表0。其余的编码方式都和这两种大同小异,一般都由引导码、用户码和键数据码组成。引导码的作用是/引导0接收器开始接收数据;用户码的作用是用来区分不同的编码方式,让接收器/知道0是哪种编码;键数据码是用来区分不同的按键。图1PWM脉冲宽度及PPM脉冲位置调制码Fig.1PulsewidthandpulselocationmodulationcodeofPWM2.2NECPHILIPS到目前为止,红外遥控的编码还没有统一的标准。很多半导体公司根据自己的功能需要推出各自的编码方式和其专用的遥控发射芯片,主要有PHILIPS码、SANYO码、TOSHIBA码和NEC码等。普通的万能遥控器只能对其中一种编码进行解码,而本文所设计的智能遥控器能对多种不同的编码进行解码,大幅增强了遥控器的适用性。NEC码的引导码由9ms高电平脉冲及4.5ms低电平脉冲组成,一帧数据中含有32位,用户码及其反码各8位,接着是键数据码及键数据码的反码各8位,发射时低位在前,高位在后。编码采用脉冲位置编码方式,脉冲宽度Tm=256/FOSC=256/455kHz=0.56ms。/10由0.56ms高电平加1.68ms低电平表示;/00由0.56ms高电平加0.56ms低电平表示。PHILIPS码由16位等待时间、2位扫描时间、1.5位起始码、5位用户码和1位控制码组成。编码采用双相位编码方式,每位占用时间Tb=3@256/455kHz=1.688ms,编码/10由0.844ms低电平加0.844ms高电平表示,/00由0.844ms高电平加0.844ms低电平表示。3系统硬件设计3.1系统硬件设计采用了模块化设计的思路,控制模块微处理器AT89S52通过接口电路与显示模块LCD1602、发送接收模块、存储模块E22PROM、电池供电模块以及(4@4+5)的键盘相连。其硬件框图如图2所示。图2智能遥控器硬件框图Fig.2Hardwarediagramforintelligentremotecontroller遥控器的工作模式可分为自学习模式和发射模式。自学习的过程即是解码记忆的过程,解码是指去除38kHz或其他高频载波信号后识别出二进制脉冲码中的0和1。当遇到新的遥控器时,系统在检测到K1键被按下后,将自动进入自学习模式,利用单片机的定时计数器及内部标准时钟对信号编码中的高低电平及其持续时间进行识别、测量并存储下来,此后就可以用存储的编码控制相对应的器件,达到取代原遥控器的目的。对遥控信号进行识别、存储、还原等操作的系统主要由MCS251系列单片机AT89S52、红外接收头、存储器、还原调制电路与红外发光管驱动电路组成。遥控器工作于发射模式时,通过读取存储器中的红外编码信号,利用硬件电路调制至高频载波放大发送出去的方式,达到控制器件的目的。遥控器对信息进行读取、放大等一系列的处理,主要是由MCS251系列单片机[7]AT89S52、存储器、4@4键盘矩阵、三极管放大电路与红外发射管组成。单片机不断扫描矩阵键盘,若有键按下,则从存储器中取出对应键值的存储数据,启用单片机的定时器,产生38kHz的载波信号,利用单片机的I/O端口输出载波信号,同时在定时器的作用第1期吴鹏,等:基于AT89S52的智能遥控设计89下,协调好下一个存储空间数据的调用,再经三极管两级放大来驱动红外发射管,这样就可以得到一个完整的红外遥控信号。3.2控制器AT89S52在系统中起核心作用,不管是在接收模块还是显示模块中都离不开它的作用,在系统的自学习功能中,微处理器对由红外接收头输入的信号进行判决、计时并将其存储到存储器。而在发送模块中,微处理器则负责按照输入的键值调用相应存储空间里的数据并输出。电路设计中处理器的P2.0作为信号的输入端与接收模块相连,P3.2连接的是红外发射模块。P1.0~P1.7以及P3.3与键盘矩阵相连,存储模块、显示模块等见原理图3所示。图3电路原理图Fig.3Circuitschematicforintelligentremotecontroller4系统软件设计4.1信号编码的接收是在自学习的模式下应用的,当遇到新的电器时,系统需要记录它的控制码型以实现控制作用。红外信号经过红外接收头后变为了高低电平信号,程序的主要作用就是计算高低电平的时间并转化为二进制代码,然后调用函数访问E2PROM将代码存储起来。这里以NEC码为例,首先通过中断进入,确认IR信号出现,等IR变为高电平,利用延时判断9ms的前导低电平信号和跳过4.5ms的前导高电平信号,然后通过计数器测量高电平的时间是0.56ms还是1.12ms来判定为0还是为1,最后对16位用户码的前8位和后8位是否相反以及16位数据码的前8位和后8位来判断解码的正确性,从而得出码值。编写PHILIPS码的解码程序时,同样要区分出PHILIPS码的高低电平。而PHILIPS码的高低电平时间相等,都是1.688ms,区别在于其编码的/10由0.844ms低电平加0.844ms高电平表示,而/00由0.844ms高电平加0.844ms低电平表示。所以解码时用到状态机的原理,利用计数器进行计时,根据时间长短及010,011,101等信号可能出现的状态来进行条件判断解码。4.2由于编码方式的不同,发射模块需要根据各种码型的要求进行不同的处理。如发射NEC类型的码,首先需要发送9ms的起始码,然后发送4.5ms低电平,再发送16位地址的前8位[先发送0.56ms的38kHz红外波(即编码中0.56ms的低电平),停止发送红外信号(即编码中的高电90液晶与显示第24卷平),判断二进制数个位为1还是0],16位地址的后8位,8位数据,最后是8位数据的反码。此时一个完整的红外遥控信号便已产生,其函数程序如下:voidIR_SEND(void){count=0;flag=0;//红外发送标志OP=0;//红外发射管的亮灭P2_0=0;//延时计数器EA=1;//允许CPU中断TMOD=0x11;//设定时器0和1的模式ET0=1;//定时器0中断允许TH0=0xFF;TL0=0xE6;//设定时值为38KTR0=1;//开始计数iraddr1=3;iraddr2=252;do{keydown();delay1(2);}while(1);}//IR_SEND函数结束其中,keydown()为按键函数,用于检测是否有键按下。delay1(2)是延迟程序,延迟时间为2@125Ls,程序主要是利用for循环语句产生。4.3系统通过用CHOOSE来选择对NEC码还是PHILIPS码进行解码,通过按键K1选择是对NEC码或PHILIPS码进行处理。选择解码方式的程序如程序清单1所示。对于其他的编码方式可采取相似的方法处理,一个完整的红外遥控信号代码由引导码、系统码、系统码的反码、数据码、数据码的反码等几个部分组成,系统可以将常见的编码形式保存下来以方便应用。另外可以利用定时计数器,测量编码信号高低电平的持续时间并进行编码,将所得数据记录下来并加上标志,再利用它去控制相应的器件,实现自学习功能。程序清单1选择解码方式的函数NEC(void)voidNEC(void){YkInit();//遥控接收初始化K1=1;//用于确定码型P2=0xff;//关闭P2口P0=0xff;//关闭P0口play();Pwhile(1){if(K1==0){delay(3);if(K1==0)CHOOSE=!CHOOSE;}play();}//while}//NEC图4总程序流程图Fig.4Flowchartofprogram采用LCD1602作为系统的显示模块。首先对LCD执行初始化指令,然后写入清除显示指令,将LCD清屏,再写入数据显示的地址,最后向模块写入待显示的数据,即可将数据在LCD1602的指定位置显示出来。实现函数为:lcd_wcmd(ucharcmd)写指令数据到LCD,lcd_clc(void)对LCD进行清屏,lcd_locate(ucharx,uchary)写地址数据到LCD,lcd_wdat(uchardat)写显示数据到LCD。存储模块采用I2C总线协议的芯片24C04,其通信协

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功