• 3.81 MB
  • 2022-04-22 11:15:33 发布

基于AT89C51单片机红外遥控系统毕业设计.doc

  • 48页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'题目基于AT89C51单片机红外遥控系统设计专 业 班 级**学     号**姓 名**指导教师**(讲师)学院名称**2011年**月**日 毕业设计摘要作为传统的家用电器,随着空调的普及,电风扇的市场地位受到了巨大的冲击,传统的开/关、调速功能已经不能满足市场的需求。人们希望电风扇在体积小、作方便等的基础上能够拥有更多的功能,而红外遥控的广泛应用及单片机技术的成熟,则使得智能红外遥控系统成为了电风扇的发展趋势。本设计采用51单片机作为遥控发射接收芯片,HS0038作为红外一体化接收发射管,在此基础上设计了一个简易的智能红外遥控电风扇系统。系统包括接收和发射两大部分,本文设计实现了几项电风扇的基本功能:开/关功能、多级调速功能、0.5-7.5小时不同时间段的定时功能,以及自然、正常两种风类的选择功能。另外本系统有16个按键,可用于扩展控制其他电器。本设计方案基于市场的需求,结合红外遥控设计简单、作方便、成本低廉等特点。关键字:红外遥控;信号调制;编码;解码; 毕业设计AbstractWiththepopularityofairconditioners,themarketpositionoftheelectricfanswhicharethetraditionalhouseholdapplianceswillreceiveahugeimpact,thetraditionalon/offandspeedcontrolfunctionhavebeenunfitfortheneedsofthemarket.Itishopedthatthefansinsmall,easytooperate,andsoonthebasiscanhavemorefeatures.WhentheapplicationofinfraredremotecontrolbecomeswilderandtechnologiesofSCMbecomemature,theremotecontrolsystemisthetrend.Thedesignuseaspeciallaunchingandreceivingchipwhichdependsonremotecontrol.Onthebasisofthischipasystemofintelligentinfraredremote-controlwasdesignedforthefan.Thesystemconsistsofthelaunchingpartandthereceivingpart.Thissystemisdesignedtoachievesomebasicfunctionsoffans:on/offfunction,threekindsofspeed,thetimingfunctionwhichcanbechosenatdifferenttimesof0.5-7.5hours,andthefunctionoftwokindsofwindwhicharethenaturalwindandthenormalwind.Thedesignwasbasedontheneedsofthemarket.Consideringthatinfraredremotecontrolissimple,easytooperate,low-cost.Keywords:InfraredRemoteControl;SignalModulation;Encoding;Decoding。 毕业设计目录摘要1Abstract21绪论11.1课题设计目的及意义11.2红外遥控的设计思路22课题的方案设计与论证42.1红外编码方案42.2硬件系统设计架构42.3系统功能需求63系统的硬件结构设计83.1AT89C51系列单片机功能特点83.2红外发射电路113.3红外检测接收电路123.4光电耦合控制电路133.5电源电路设计143.6显示部分的设计153.7键盘设计184系统软件的设计204.1定时/计数器应用204.2遥控码的发射234.3红外接收254.4调速单元284.5按键抖动问题304.6系统的软硬件的调试32结论33参考文献34 毕业设计附录35附录1:发射程序35附录2:接收程序38附录3:红外发射电路图42附录4:红外接收电路图43致谢44 毕业设计1绪论1.1课题设计目的及意义随着科技的发展,人们生活的节奏也越来越快,随之人们对方便,快捷的要求也随之不断增高。遥控器的出现,在一定程度上满足了人们这个要求。遥控器是由高产的发明家RobertAdler在五十年代发明的[1]。而红外遥控是20世纪70年代才开始发展起来的一种远程控制技术,其原理是利用红外线来传递控制信号,实现对控制对象的远距离控制,具体来讲,就是有发射器发出红外线指令信号,有接收器接收下来并对信号进行处理,最后实现对控制对象的各种功能的远程控制。红外遥控具有独立性、物理特性与可见光相似性、无穿透障碍物的能力及较强的隐蔽性等特点。随着红外遥控技术的开发和迅速发展,很多电器都应用了红外遥控,而电风扇也不例外。从单纯的在电风扇面板上通过按钮控制,到短距离(10M以内)的遥控,虽然改变不大,但其带来的便利无疑是巨大的。而红外遥控技术的成熟,也使得遥控电风扇变得设计简单,价格低廉。作为一种老牌的电器,电风扇具有价格便宜、摆放方便、体积轻巧等特点。虽然现在空调在城市中已经相当普遍,并有替代电风扇的趋势,但由于大部分家庭消费水平的限制,电风扇作为一个成熟的家电行业的一员,尤其在中小城市,以及乡村将来一段时间内仍然会占有市场的大部分份额。市场的需求促使了电风扇的发展。随着“智能化”的兴起,电风扇的功能也越来越多,越来越贴进人们生活。因此,对于电风扇的开发和设计依然有着较大的实用价值。在现有市场上多功能遥控电风扇的基础上,人们提出了一种新型的智能电风扇,相对于过的电风扇,智能电风扇添加了很多人性化的设计,如安全保护,倾倒保护,智能照明等功能,使电风扇更加人性化,相信其丰富的功能,人性化的设计将会大大提高电风扇的市场竞争力[2]。而本设计就是以电风扇为对象,通过红外遥控实现电风扇的几种常用功能如开关、调速、定时等的控制,相对于传统的机械控制,体现出了更加方便快捷的优点。42 毕业设计1.2红外遥控的设计思路1.2.1红外线简介红外线又称红外光波,在电磁波谱中,光波的波长范围为0.01um~1000um。根据波长的不同可分为可见光和不可见光,波长为0.38um~0.76um的光波可为可见光,依次为红、橙、黄、绿、青、蓝、紫七种颜色。光波为0.01um~0.38um的光波为紫外光(线),波长为0.76um~1000um的光波为红外光(线)。红外光按波长范围分为近红外、中红外、远红外、极红外4类。红外线遥控是利用近红外光传送遥控指令的,波长为0.76um~1.5um。用近红外作为遥控光源,是因为目前红外发射器件(红外发光管)与红外接收器件(光敏二极管、三极管及光电池)的发光与受光峰值波长一般为0.8um~0.94um,在近红外光波段内,二者的光谱正好重合,能够很好地匹配,可以获得较高的传输效率及较高的可靠性。1.2.2红外遥控系统简介红外遥控系统主要由遥控发射器、一体化接收头、单片机、接口电路组成,如图一所示。遥控器用来产生遥控编码脉冲,驱动红外发射管输出红外遥控信号,遥控接收头完成对遥控信号的放大、检波、整形、解调出遥控编码脉冲。遥控编码脉冲是一组串行二进制码,对于一般的红外遥控系统,此串行码输入到微控制器,由其内部CPU完成对遥控指令解码,并执行相应的遥控功能。使用遥控器作为控制系统的输入,需要解决如下几个关键问题:如何接收红外遥控信号;如何识别红外遥控信号以及解码软件的设计、控制程序的设计。1.2.3红外遥控的现状目前家电中用的最多的遥控方式是红外遥控,红外遥控的特点是不影响周边环境的、不干扰其他电器设备。价格低廉,编码简单,近距离的遥控使用红外遥控非常有优势。由于红外一体化接收头的出现,大大降低了红外遥控的成本和技术难度,目前不仅在家电领域,在玩具、安防等领域也有广泛的应用。红外遥控系统主要由红外遥控发射装置、红外接收设备、遥控微处理机等组成。因此,遥控系统是一涉及单片机的数字系统。42 毕业设计目前国内红外遥控电子元器件的竞争很激烈,导致了价格的低廉,表面上有利于消费者,可是长期恶性竞争,互相压价格,必将导致产品质量的下降,最终损害的只能是消费者。红外遥控的前景依然看好,不过红外遥控的现状不容乐观。红外遥控是单工的红外通信方式,整个通信中,需要一个发射端和一个接收端。发送端采用单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号。红外接收端普遍采用价格便宜,性能可靠的一体化红外接收头接收红外信号,它同时对信号进行放大、检波、整形,得到TTL电平的编码信号,再送给单片机,经单片机解码并控制相关对象[3]。图1-1遥控器原理框图42 毕业设计2课题的方案设计与论证2.1红外编码方案红外编码有很多种方式,下面列举两种实现方案:方案一:脉宽调制的串行码。这种遥控码具有以下特征:以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”。其相关的波形图如图2-1所示:图2-1串行码编码电器0的遥控输出码电器1的遥控输出码方案二:码分制。采用脉冲个数编码,不同的脉冲个数代表不同的被控对象,最小为2个脉冲。为了使接收可靠,第一位码宽为3ms,其余为1ms,遥控码数据帧间隔大于10ms,如图2-2所示。图2-2码分制编码波形图本设计采用方案二,码分制编码编程简单,在按键较少的情况下优势明显。2.2硬件系统设计架构2.2.1手持段遥控器电路框图:单片机系统由显示电路、红外发射电路以及按键电路,稳压电路等组成。其42 毕业设计手持段遥控器电路设计原理图如图2-3所示:图2-3手持段遥控器方框图2.2.2红外接收端电路框图:单片机系统及显示电路、红外发射电路以及按键电路,电源电路,控制单元等组成。其红外接收端设计原理图如图2-4所示:图2-4红外接收端方框图42 毕业设计2.3系统功能需求本遥控系统要求用单片机作为控制芯片制作一个遥控器[4],另一个单片机控制系统能被遥控操作。本系统要求遥控器具有多级调速,开关,定时,以及自然风,睡眠风切换等功能。将单片机、控制、键盘组合在一起完成了人机对话。用AT89C51单片机来作主芯片控制,采用红外HS0038接收头,用双向可控硅MC97A6控制电机开关,具有红外遥控功能。自然风的处理流程:              图3-3自然风的循环图睡眠风的处理流程:图3-4睡眠风的循环图正常风的处理流程: 图3-5正常风循环42 毕业设计3系统的硬件结构设计3.1AT89C51系列单片机功能特点3.1.1主要特性·与MCS-51兼容·4K字节可编程闪烁存储器·寿命:1000写/擦循环·数据保留时间:10年·全静态工作:0Hz-24Hz·三级程序存储器锁定·128*8位内部RAM·32可编程I/O线·两个16位定时器/计数器·5个中断源·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路3.1.2管脚说明—VCC:供电电压。—GND:接地。—P0口:P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。当P1口的管脚写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部电位必须被拉高。—P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入“1”后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。—P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收输出4个TTL门电流,当P2口被写“1”42 毕业设计时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。—P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入时,由于外部下拉为低电平,P3口将输出电流(ILL),也是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下所示:P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。—RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。—:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。42 毕业设计—:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期两次有效。但在访问外部数据存储器时,这两次有效的信号将不出现。—:当保持低电平时,访问外部ROM;注意加密方式1时,将内部锁定为RESET;当端保持高电平时,访问内部ROM。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。—XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。—XTAL2:来自反向振荡器的输出[5]。内部结构框图如图3-6所示。图3-6AT89C51的内部结构框图3.1.3AT89C51的基本操作如图3-7所示,在X1和X2之间接一只石英振荡晶体构成了单片机的时钟电路,它还有另一种接法,是把外部振荡器的信号直接连接到XTAL1端,XTAL2端悬空不用。AT89C51复位引脚RST/VP通过片内一个施密特触发器(抑制噪声作用)与片内复位电路相连,施密特触发器的输出在每一个机器周期由复位电路采样一次。当振荡电路工作,并且在RST引脚上加一个至少保持2个机器周期的高电平时,就能使AT89C51完成一次复位。复位不影响RAM的内容。复位后,PC指向0000H单元,使单片机从起始地址0000H单元开始重新执行程序。所以,当单片机运行出错或进入死循环时,可按复位键重新启动。42 毕业设计MCS-51单片机通常采用上电自动复位和按钮复位两种复位方式。上电复位利用电容器充电来实现。按钮复位又分为按钮电平复位和按钮脉冲复位。前者将复位端通过电阻与Vcc相接;后者利用RC微分电路产生正脉冲来达到复位目的。复位电路参数的选择应能保证复位高电平持续时间大于2个机器周期。图3-7AT89C51基本操作电路3.2红外发射电路本遥控发射器采用码分制遥控方式,码分制红外遥控就是指令信号产生电路以不同的脉冲编码(不同的脉冲数目及组合)代表不同的控制指令。在确定选择AT89C51作为本设计发射电路核心芯片和点触式开关作为控制键后,加上一个简单红外发射电路和12M晶体震荡器便可实现红外发射。发射部分的主要元件为红外发光二极管。它实际上是一只特殊的发光二极管,由于其内部材料不同于普通发光二极管,因而在其两端施加一定电压时,它发出的便是红外线而不是可见光。目前大量使用的红外发光二极管发出的红外线波长为940nm左右,外形与普通Φ5发光二极管相同,只是颜色不同[6]。遥控发射通过键盘,每按下一个键,即产生具有不同的编码数字脉冲,这种代码指令信号调制在40KHz42 毕业设计的载波上,激励红外光二极管产生不同的脉冲,通过空间的传送到受控机的遥控接收器。P1口作为按键部分,P0.7口作为发射部分。电路图如图3-8所示图3-8红外发射电路3.3红外检测接收电路在接收过程中,脉冲通过光学滤波器和红外二极管转换为40KHZ的电信号,此信号经过放大,检波,整形,解调,送到解码与接口电路,从而完成相应的遥控功能,接收电路如图3-9所示。通常,红外遥控器将遥控信号(二进制脉冲码)调制在40KHz的载波上,经缓冲放大后送至红外发光二极管,产生红外信号发射出去。将上述的遥控编码脉冲对频率为40KHz(周期为26μs)的载波信号进行脉幅调制(PAM),再经缓冲放大后送到红外发光管,将遥控信号发射出去。根据遥控信号编码和发射过程,遥控信号的识别——即解码过程是去除40KHz载波信号后识别出二进制脉冲码中的0和1。由MCS—51系列单片机AT89C51、一体化红外接收头、还原调制与红外发光管驱动电路组成。接收部分主要元件是红外接收管,它是一种光敏二极管(实际上是三极管,基极为感光部分)。在实际应用中要给红外接收二极管加反向偏压,它才能正常工作,亦即红外接收二极管在电路中应用时是反向运用,这样才能获得较高的灵敏度。42 毕业设计图3-9红外接收电路3.4光电耦合控制电路在控制部分采用了隔离驱动电路,用光电器件作为隔离元件,利用光耦来隔离强电,以防止强电影响单片机的工作。光电隔离的目的是割断两个电路的电气联系,使之相互独立,从而也就割断了噪声从一个电路进入另一个电路的通路[8]。光电隔离是通过光电耦合器实现的。光耦又称光电隔离器或光电耦合器,它是以光为媒介来传输电信号的器件,通常把发光器与受光器封装在管壳内。当输入端加电信号时发光器发出光线,受光器接收后就产生光电流,从输出端流出,从而实现了“光—电—光”的转换。光电耦合器是把一个发光二极管和一个光敏三极管封装在一个外壳里的器件。外壳有金属的或塑料的两种。发光二极管和光敏三极管之间用透明绝缘体填充,并使发光管与光敏管对准,以提高其灵敏度,光电耦合器的电路符号如图3-10所示。对于数字量,当输入为低电平“0”时,光敏三极管截止,输出为高电平“1”;当输入为高电平“1”时,光敏三极管饱和导通,输出为低电平“0”。图3-10光电耦合器原理图42 毕业设计输入信号使用权发光二极管发光,其光线又使光敏三极管产生电信号输出,从而既完成了信号的传递又实现了电气上的隔离。光电耦合的响应时间一般不超过几个微秒。光电耦合器的输入端与输出端在电气上是绝缘的,且输出端对输入端也无反馈,因而具有隔离和抗干扰两方面的独特性能。通常使用光电耦合器是为实现以下两个主要功能:电平转换:TTL电路与电源电路之间不需另加匹配电路就可以传输信号,从而实现了电平转换。隔离:这时由于信号电路与接收电路之间被隔离,因此即使两个电路的接地电位不同,也不会形成干扰。光电耦合器中光敏三极管的基极有引出和不引出两种形式。基极引出通常是经一个电阻接地。通过接地电阻可以控制耦合的响应速度和灵敏度。总的来说,电阻越小,响应速度越高。其控制电路如图3-11所示。图3-11光电耦合控制电路3.5电源电路设计3.5.1稳压电路典型应用电路如图3-12所示。图中C5用于频率补偿,防止自激振荡和抑制高频干扰;C6采用电解电容,以减少电源引入的低频干扰对输出电压的影响;D442 毕业设计是保护二极管,当输入端短路时,给C4一个放电的通路,防止C4激穿[9]。图3-12稳压电路3.5.2直流稳压电源的设计直流稳压电源的主要由电源变压器、整流电路、滤波电路和稳压电路四部分组成。框图如图3-13所示。图3-13直流稳压电源3.6显示部分的设计由LED组成的7段发光管显示器是不太复杂的单片机应用系统常用外部设备之一。42 毕业设计①7段发光管显示器由7段发光线段组成,并按“日”字形排列,每一段都是一个发光二极管,如图3-15所示。图中将7个LED的阴极连在一起,称之为共阴极接法。反之为共阳极接法。②如果将公共阴极接地,而在a~g各段的阳极加上不同的电压,就会使各段的发光情况不同,形成不同的发光字符。加在7段阳极上的电压可以用数字量表示,如果某一段的阳极为数字量1,则这个段就发光;如为0,则不发光。数字量与段的对应关系如表3.1所示。数码管原理图如3-14所示。图3-14数码管原理图在本设计中使用了四个7段LED显示器,而多位显示器连用有两种方法。其一,每一位都用各自的8位输出口控制,在显示某字符时,相应的段恒定发光或不发光。这种显示方法属于静态显示。显然,静态显示需占用较多的I/O口线。其二,是动态显示。即将多个7段LED的段选端复接在一起,只用一个8位输出口控制段选,段选码同时加到各个7段LED显示器上,通过控制各个显示器公共阳极轮流接高电平的办法,逐一轮流地启动各个LED。在这种方法中,只要恰当地选择点亮时间和间隔时间,就会给人以这样一种假相:似乎各位LED是“同时”显示的。动态显示法是目前各种单片机采用的流行方法。其优点是硬件简单,“动态”由软件实现。因而我选用动态显示的方法。其显示格式如表3.2,其驱动电路如图3-15所示[10]。42 毕业设计表3-1七段LED字形码显示字符共阳极字符码共阴极字符码03FHC0H106HF9H25BHA4H34FHB0H466H99H56DH92H67DH82H707HF8H87FH80H96FH90H表3-2数码管显示格式数码管1数码管2风速D相应数字模式E相应数字定时A相应数字42 毕业设计图3-15AT89C51基本操作电路3.7键盘设计单片机系统所用的键盘有编码键盘和非编码键盘两种。①编码键盘本身除了按键之外,还包括产生键码的硬件电路。只要按下编码键盘的某一个键,它就能产生这个键的代码,并称为键码,与此同时还产生一个脉冲信号,以通知CPU接收键码,编码键盘的优点是使用比较方便,亦不需要编写太复杂的程序。其缺点是使用的硬件较复杂。②非编码键盘的按键是排列成行、列矩阵形式的。按键的作用只是简单地实现接点的接通或断开,因此必须有一套相应的程序与之配合,才能产生相应的键码,非编码键盘几乎不需要附加什么硬件电路。因此为了简洁电路,我使用非编码键盘。但使用非编码键盘需要通过软件来解决按键的识别、防抖动以及如何产生键码的问题。基于键数少的原因我采用独立式键盘接口与单片机相连接,因为它占用的I/O口不多。图中每个按键占用一个口,彼此独立,互不影响。上拉电阻保证按键没被按下时,I/O口输入高电平。42 毕业设计独立式键盘可工作在查询方式下,通过I/O口读入键状态,当有键被按下时I/O口变为低电平,而未被按下的键对应为高电平,这样通过读电平状态可判断是否有键按下和哪个键被按下[11]。a)b)图3-16按键原理图a)矩阵键盘b)独立按键发射端采用矩阵按键,其中0,1,2按键用于风扇的定时,模式,调速切换。其他按键用于扩展控制其他家用电器,如电脑等,也可以用于设置密码锁等功能,其具体事情由用户自己设定。而接收端采用独立按键,根据不同的电器,其具体功能各不相同。本设计中,P1.0用于定时切换,P1.1用于模式切换,P1.2用于调速切换。42 毕业设计4系统软件的设计该系统的控制软件主要可以分为测温和红外两个大的部分,其中具体有单片机初始化程序、定时服务程序、红外发射编码和红外接收解码程序等模块。4.1定时/计数器应用4.1.1定时/计数器功能简介AT89C51单片机内部设有两个16位可编程的定时/计数器,简称定时器0和定时器1,分别用T0和T1表示。其功能同一般定时计数器,主要作用是:第一,作为一段特定时间长短的定时;第二,可以计算由T1或T0引脚输入的脉冲数,前者在应用上可以产生正确的时间延迟及定时去执行中断服务程序,而后者则是计数器或者计频器的设计。在本设计中这两种作用都用到了[12]。这两个定时器本身有四种工作模式可供使用,如表4.1所示。表4-1四种工作模式M1MO工作方式功能说明00模式013位计数器01模式116位计数器10模式28位自动重装计数器11模式3定时器0:分成两个8位计数器定时器1:停止计数4.1.2定时器相关的控制寄存器TMOD为模式控制寄存器,主要用来设置定时/计数器的操作模式;TCON为控制寄存器,主要用来控制定时器的启动与停止。两个16位的定时/计数器T0和T1均可以分成2个独立的8位计数器即TH0、TL0、TH1、TL1,它们用于存定时或计数的初值。①模式控制寄存器--TMODTMOD是一个专用寄存器,用于控制T1和T0的操作模式及工作方式,其各位定义如下:42 毕业设计表4-2TMOD寄存器D7D6D5D4D3D2D1D0GATEC/M1M0GATEC/M1M0·GATE:门控位。当GATE=0,定时器只由软件控制位TR0或TR1来控制启停。位为1,定时器启动开始工作;为0时,定时器停止工作。当GATE=1时,定时器的启动要由外部中断引脚和位共同控制。只有当外部中断引脚或为高时,置1才能启动定时器工作。·C/:功能选择位。当C/=O时设置为定时器工作方式;计数脉冲由内部提供,计数周期等于机器周期。当C/=1时设置为计数器工作方式,计数脉冲为外部引脚T0或T1的引入的外部脉冲信号。·M1、M0:操作模式控制位,2位可形成4种编码,对应于4种操作模式。TMOD模式控制寄存器不能进行位寻址,只能用字节传送指令设置定时器的工作方式及操作模式,低4位用于定义定时器0,高4位用于定义定时器1。系统复位时TMOD所有位均为0。模式控制字的设置举例:若设置定时器1为定时器工作方式,由软件启动,选择操作模式2;定时器0为计数方式,由软件启动,选择操作模式1。则TMOD各位设置为:00l001Ol25H用MOVTMOD,#25H指令写入TMOD中。②控制寄存器--TCONTCON的作用是用于控制定时器的启动、停止及定时器的溢出标志和外部中断触发方式等。各位定义如下:表4-3TCON寄存器8FH8EH8DH8CH8BH8AH89H88HTF1TR1TF0TR0IE1IT1IE0IT0·42 毕业设计TF1和TF0;分别为定时器1和定时器0溢出标志。当定时器计满产生溢出时,由硬件自动置“1”,并可申请中断。进人中断服务程序后,由硬件自动清0。这两位也可作为程序查询的标志位,在查询方式下应由软件来清0。·TR1和TR0:为定时器1和定时器0的启动控制位。当由软件使TRi清0而停止定时器的工作。定时器启动时该位应置“1”。定时器的启动与门控位和外部中断引脚有关。当GATE设置为0,定时器的启动由TRi=1控制;而当GATE设置为1时,定时器启动除了TRi=1外,还要求外部中断引脚=1时定时器方可启动工作。·IE1和IE0:为外部中断1和外部0的中断请求标志位。当外部中断源有请求时其对应的中断标志位置“1”。其复位由触发方式来设置。·IT1和IT0:为外部中断1和外部中断0的触发方式选择位。ITi设置为“0”时为电平触发方式;设置为“1”时为边沿触发方式。TCON中低4位是与外部中断有关的位,高4位为定时器控制位。它是一个可以进行位寻址的寄存器。当系统复位时所有位均为0。若要启动定时器可以使用位操作指令SETBTRi来启动。4.1.3定时计数器的操作模式①模式1在模式1工作下,计数器最多可计数个数为M==65536,计时时间最长为1.085us*65536=72ms(4-1)而计数初值的加载方法为:TL0=(65536-C).MOD.256(4-2)TH0=(65536-C)/256(4-3)其中C为所要计数的值,计数时间长度为:1.085us*C(4-4)②模式2模式2有自动重新加载初值的功能,使定时器做更精确的计时。在模式2工作下,计数器最多可计数个数为M==256,计时时间最长为:42 毕业设计1.085us*256=0.28ms(4-5)而计数初值的加载方法为:TH0=256-C(4-6)其中C为所要计数的值,计数时间长度为:1.085us*C(4-7)本设计采用模式2.其具体程序如下:TMOD=0x22;//8位自动重装模式TH1=0xf3;//40KHZ初值TL1=0xf3;4.2遥控码的发射4.2.1遥控码的发射当某个操作按键按下时,单片机先读出键值,然后根据键值设定遥控码的脉冲个数,再调制成40kHz方波由红外线发光管发射出去[13]。通常,红外遥控是将遥控信号(二进制脉冲码)调制在40KHz的载波上,经缓冲放大后送至红外发光二极管,转化为红外信号发射出去的。为了提高抗干扰性能和降低电源消耗,将上述的遥控编码脉冲对频率为40KHz(周期为26us)的载波信号进行脉幅调制(PAM),再经缓冲放大后送到红外发光管,将遥控信号发射出去。红外信号发射过程:首先装入发射脉冲个数(发射时为3ms脉冲,停发时为1ms脉冲),此时若发射脉冲个数为1则返回主程序,若不为1则发1ms脉冲,然后停发1ms脉冲,这样便结束整个发射过程.在实践中,采用红外线遥控方式时,由于受遥控距离,角度等影响,使用效果不是很好,如采用调频或调幅发射接收码,可提高遥控距离,并且没有角度影响。4.2.2发射端程序流程图发射控制程序由主程序和键扫描程序、编码发送程序组成,在主程序中,采用键扫描子程序完成各个按键的功能,遥控发射主程序的流程图如图4-1所示:42 毕业设计图4-1遥控发射主程序流程图42 毕业设计图4-2遥控发射器遥控码发射程序流程图4.3红外接收42 毕业设计遥控接收部分的主程序及初始化及延时过程如下:首先初始化,然后判断是否有键按下,若有则数码管显示数据,并发送相应信号,;若无键按下,则返回。4.3.1数码帧的接收处理1ms第一位1ms10ms3ms10ms当红外线接收器输出脉冲帧数据时,第一位码的低电平将启动中断程序,实时接收数据帧。在数据帧接收时,将对第一位(起始位)码的码宽进行验证。若第一位低电平码的脉宽小于2ms,将作为错误码处理。当间隔位的高电平脉宽大于3ms时,结束接收,然后根据累加器A中的脉冲个数,执行相应输出口的操作。图4-3就是红外线接收器输出的一帧遥控码波形图⒁。图4-3红外线接收器输出的一帧遥控码波形图42 毕业设计4.3.2接收端程序流程图图4-4遥控接收器主程序流程图中断过程:首先判断低电平脉宽度是否大于2ms,若脉宽不到2ms,则中断返回;若低电平大于2ms,则接收并地低电平脉冲计数,接下来看判断高电平脉宽度冲是否大于3ms,若脉宽不到3ms,则返回上一接收计数过程;若高电平脉宽大于3ms,则按照脉冲个数至对应功能程序.此时中断返回.42 毕业设计图4-5遥控接收器中断程序流程图4.4调速单元本设计目的在于利用51单片机来实现对风扇的红外遥控,来达到对风扇的风速控制,以实现自然风、睡眠风和正常风的风速控制。4.4.1调速原理脉宽调制技术是利用数字输出对模拟电路进行控制的一种有效技术,尤其是在对电机的转速控制方面,可大大节省能量,PWM控制技术的理论基础为:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同,使输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替正弦波或其他所需42 毕业设计要的波形[14]。4.4.2调速方法图4-6为PWM降压斩波器的原理电路及输出电压波形。在图a中,假定晶体管V1先导通T1,秒(忽略V1的管压降,这期间电源电压Ud全部加到电枢上),然后关断T2秒(这期间电枢端电压为零)。如此反复,则电枢端电压波形如图b中所示。电动机电枢端电压Ua为其平均值[15]。图4-6PWM降压斩波器原理电路及输出电压波形原理图b)输出电压波形(4-8)式4-9中(4-9)为一个周期T中,晶体管V1导通时间的比率,称为负载率或占空比。使用下面三种方法中的任何一种,都可以改变的值,从而达到调压的目的:(1)定宽调频法:T1保持一定,使T2在0~∞范围内变化;(2)调宽调频法:T2保持一定,使T1在0~∞范围内变化(3)定频调宽法:T1+T2=T保持一定,使T,在0~T范围内变化。不管哪种方法,的变化范围均为0≤≤l,因而电枢电压平均值Ua的调节范围为0~Ud,均为正值,即电动机只能在某一方向调速,称为不可逆调速。本设计采用定频调宽法,AT89S52产生可控硅的移相脉冲,移相较的改变实现导通角的改变。T=50mS,将P0.4导通时间五等分,使T1在1—5之间变化,从而达到5级调速的目的,如图4-7和4-8所示。42 毕业设计图4-7调速示意图图4-8调速接线图4.5按键抖动问题42 毕业设计键盘一般是由一组机械按键按照一定的规律组合而成,通过按键的通、断作用输入开关电压信号。按键由断开到闭会及由闭合到断开时,由于机械触点的弹性作用,按键的动作不是立刻完成的,在闭合及打开的瞬间有机械抖动的发生,抖动时间一般为5—10ms,表现在输入电压信号上为输入信号是抖动的不稳定的电平信号,其信号波形见图4-9所示[16]。按键闭合稳态时间由我的按键时间决定,一般为零点几秒到几秒之间。为了消除键抖动的影响,保证在按键闭合稳定状态下读取键值,需要对键进行消抖处理。常用的消抖措施有硬件消抖和软件消抖两种。硬件消抖是采用硬件电路的方法对键盘的按下抖动及释放抖动进行消抖,经过消抖电路使按键的电平信号只有两种稳定状态。常用的消抖电路有触发器消抖电路、滤波消抖电路两种。硬件消抖电路见图4-10。图4-9按键抖动波形图4-10硬件消抖路硬件消抖电路解决了键抖动问题,但当所需按键比较多时,硬件消抖电路将变得复杂,成本也比较高。而这时就可以采用软件消抖的方法。软件消抖的基本原理是当第一次检测到有键按下时,根据键抖动时间的统计规律先采用软件延时的方法延时一段时间(一般可取10ms—20ms),然后再确认键是否仍保持闭合状态,如仍保持闭合状态则键真正被按下,此时可读取键值,否则可视为干扰,对其不予理睬。采用软件消抖方法可省去硬件消抖电路,可键盘的工作速度将被降低。在此设计中使用了软件消抖,采用软件延时的方法延时一段时间再确认键是否仍保持闭合状态。42 毕业设计4.6系统的软硬件的调试在完成系统硬件的检查后主要是对软件进行调试,对遥控器的调试主要是用示波器观察能否在遥控接收器中输出图4-3所示的波形,调整发射电阻的大小可以改变红外线发射的作用距离。其性能指标:调试后系统性能指标测试如下:最大遥控距离:10m发射接收角:水平最大90度 硬件电路制作完成并调试好后,便可将程序编译好下载到单片机试运行。软件的调试程序见附录一、二。42 毕业设计结论这次毕业设计历时至少3个月,从一开始的确定课题,到后来的资料查找、理论学习,再有就是近来的调试和测试过程,这一切都使我的理论知识和动手能力进一步提高。通过本次红外系统的设计,我大有收获。从得到题目到查找资料,从电路板的调试到失败后再一次全部重新开始……在这一个充满挑战伴随挫折,充满热情伴随打击的过程中,我感触颇深,它已不仅是一个对我四年学习知识情况和我的应用动手能力的检验,而且还是对我的钻研精神,面对困难的心态,做事的毅力和耐心的考验。我在这个过程中深刻的感受到了做毕业设计的意义所在。这个课题的根本技术就是单片机控制技术,加部分外围电路来实现一些复杂的功能。可以根据要求改变软件来实现功能的更新和扩展。本课题的重点、难点是:(1)初步接触弱电控制强电,要对光耦的原理、结构、应用等各方面从头开始琢磨;(2)考虑电路实现原理以及与单片机的接口;(3)红外发送与接收技术;通过完成本课题,我了解并掌握了传感器的基本理论知识,更深入的掌握单片机在实际电路中的开发和应用。为以后从事单片机软硬件产品的设计开发打下了一定的基础,培养了从事产品研发的信心。42 毕业设计参考文献[1]华成英,童诗白.模拟电子技术基础[M]北京:高等教育出版社,2006:12-31[2]杨路明.C语言程序设计教程[M]北京:北京邮电大学出版社,2005:23-100[3]胡骅,陈明.Protel99SE原理图与PCB设计[M]北京:机械工业出版社,2005:42-311[4]王振营,李满,杨君.ProtelDXP2004电路设计与制版实用教程[M].北京:中国铁道出版社,2006,(6):122-321[5]黄颖松,吴皓东.用“积木式”实验板学习51单片机[J].电子制作,2007,(08):1-221[6]罗政球.提高电子电路抗干扰能力经验谈[J].电子制作,2006,(10):1-15[7]胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,2006,3:1-12[10]陆东旭,甄钊博.自制简单的51开发板[J].电子制作,2008,(01):2-8[11]吴金戌.8051单片机实践与应用研究[M].北京:清华大学出版社,2002,(09):2-409[12]赵亮.单片机C语言编程与实例[M].北京:人民邮电出版社,2003.:3-432[13]陈燕春.学习型14路红外遥控开关[J].单片机开发与应用,2005,(6):22-25.[14]薄晶杰,潘卫华,韩璞.实时时钟芯片在智能氧量仪中的应用[J].微计算机信息,2009,(04):147-148,227[15]瞿贵荣.15通道红外遥控电路[J].实用电子制作,2005,(7):10.[16]蒋敏.从Proteus仿真设计到实际产品制作[J].科技创新导报,2009,(02):21,2342 毕业设计附录附录1:发射程序/*********************************************************************///send.c//遥控发射器//LRM2010.4.22/*********************************************************************///使用AT89C52单片机,12MHZ晶振,////#pragmasrc(E:remote.asm)#include"reg51.h"#include"intrins.h"//_nop_();延时函数用//#defineucharunsignedchar#defineuintunsignedint#definekey0P0//键列线#definekey1P1//键行线//sbitremoteout=P3^5;//遥控输出口////uinti,j,m,n,k,s;ucharkeyvol;//键值存放ucharcodekeyv[8]={1,2,4,8,16,32,64,128};///////*********1毫秒延时程序**********/delay1ms(uintt){for(i=0;i0;m--){delay1ms(1);//停1毫秒ET1=1;TR1=1;delay1ms(1);ET1=0;TR1=0;remoteout=0;//40KHZ发1毫秒}delay1ms(10);}//tx(){switch(keyvol){case0:keyvol=keyvol+1;sed();break;case1:keyvol=keyvol+1;sed();break;case2:keyvol=keyvol+1;sed();break;case3:keyvol=keyvol+1;sed();break;case4:keyvol=keyvol+1;sed();break;case5:keyvol=keyvol+1;sed();break;case6:keyvol=keyvol+1;sed();break;case7:keyvol=keyvol+1;sed();break;case8:keyvol=keyvol+1;sed();break;case9:keyvol=keyvol+1;sed();break;case10:keyvol=keyvol+1;sed();break;case11:keyvol=keyvol+1;sed();break;case12:keyvol=keyvol+1;sed();break;42 毕业设计case13:keyvol=keyvol+1;sed();break;case14:keyvol=keyvol+1;sed();break;case15:keyvol=keyvol+1;sed();break;default:break;}}/////**********键功能函数************/keywork(){keyvol=0x00;key1=0xf0;if(key0!=0xff){delay1ms(20);if(key0!=0xff){while(key0!=0xff);key1=0xfe;if(key0!=0xff){for(i=0;i<8;i++){if(~key0==keyv[i]){keyvol=i;tx();}}}else{key1=0xfd;if(key0!=0xff){for(i=0;i<8;i++){if(~key0==keyv[i]){keyvol=i+8;tx();}}}}//key1=0xfb;if(key0!=0xff){for(i=0;i<8;i++){if(~key0==keyv[i]){keyvol=i+16;tx();}}}//key1=0xf7;if(key0!=0xff){for(i=0;i<8;i++){if(~key0==keyv[i]){keyvol=i+24;tx();}}}}}}/////***********主函数***************/main(){clearmen();//初始化while(1){keywork();//按键扫描}}////42 毕业设计/*********40KHZ发生器***********///定时中断T1voidtime_intt1(void)interrupt3{remoteout=~remoteout;}//////*********************结束**************************//附录2:接收程序/*********************************************************************///incept.c//遥控接收处理器//LRM2010.4.22/*********************************************************************///使用AT89C52单片机,12MHZ晶振,////#pragmasrc(E:remote.asm)#include"reg51.h"#include"intrins.h"#defineucharunsignedchar#defineuintunsignedint#definedisoutP1sbitremotein=P3^1;//遥控输入sbitsin=P3^0;//基准正弦波相位输入sbitAA=P0^0;sbitBB=P0^1;sbitCC=P0^2;sbitDD=P0^3;sbitEE=P0^4;sbitFF=P0^5;sbitGG=P0^6;sbitHH=P0^7;sbitII=P2^0;sbitJJ=P2^1;sbitKK=P2^2;sbitLL=P2^3;sbitMM=P2^4;sbitNN=P2^5;sbitPP=P2^6;42 毕业设计sbitQQQ=P2^7;////uinti,j,m,n,k,s=1;uintkeyvol;//值存放///////*********1毫秒延时程序**********/delay1ms(uintt){for(i=0;i2){gotoOOUUTT;};}}OOUUTT:switch(keyvol){case2:{AA=~AA;break;}case3:{BB=~BB;break;}case4:{CC=~CC;break;}case5:{DD=~DD;break;}case6:{EE=~EE;break;}case7:{FF=~FF;break;}case8:{GG=~GG;break;}case9:{HH=~HH;break;}case10:{PP=~PP;break;}case11:{NN=~NN;break;}case12:{MM=~MM;break;}case13:{LL=~LL;break;}case14:{KK=~KK;break;}case15:{JJ=~JJ;break;}case16:{II=~II;break;}42 毕业设计case17:{if(disout==0x00){disout=0xff;}else{disout--;}loop();break;}default:break;}}}EX0=1;}////*********************结束**************************//42 毕业设计附录3:红外发射电路图42 毕业设计附录4:红外接收电路图42 毕业设计致谢首先,我要感谢我的导师**老师在毕业设计中对我给予的悉心指导和严格要求,同时也感谢本校的一些老师在毕业设计期间所给予我得帮助。在我毕业论文写作期间,各位老师给我提供了种种专业知识上的指导和日常生活上的关怀,没有您们这样的帮助和关怀,我不会这么顺利的完成毕业设计,借此机会,向您们表示由衷的感激。接着,我要感谢和我一起做毕业设计的同学。在毕业设计的短短3个月里,你们给我提出很多宝贵的意见,给了我不少帮助还有工作上的支持,在此也真诚的谢谢你们。同时,我还要感谢我的寝室同学和身边的朋友,正是在这样一个团结友爱,相互促进的环境中,在和他们的相互帮助和启发中,才有我今天的小小收获。最后我要深深地感谢我的家人,正是他们含辛茹苦地把我养育成人,在生活和学习上给予我无尽的爱、理解和支持,才使我时刻充满信心和勇气,克服成长路上的种种困难,顺利的完成大学学习。还有许许多多给予我学业上鼓励和帮助的朋友,在此无法一一列举,此也一并表示忠心地感谢!42'