智能窗帘控制器设计_第1页
智能窗帘控制器设计_第2页
智能窗帘控制器设计_第3页
智能窗帘控制器设计_第4页
智能窗帘控制器设计_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

摘要窗帘是人类自定居开始就存在的家居用具,用以保护人的隐私及改变屋内光线。随着时代的开展,传统的窗帘已不能满足人们需求,为此提出一个多功能智能窗帘控制器的研究。多功能智能窗帘控制器使用STC12系列单片机作为核心,通过利用光敏电阻在光照下变化的电阻经过分压电路及模数转换后,将转换数据送往单片机,单片机控制液晶显示器显示光照强度,并根据光照强度大小自动判断当前光照是否强烈,从而控制电机转动带动窗帘,实现自动调光功能;同时,运用红外遥控技术,实现无线遥控功能。电机电路由L298N外加续流二极管的电路提供驱动。所完成的控制器能实现开闭、自动、定时多模式的选择功能。文中介绍了系统总体的设计方案,及系统工作原理,详细阐述系统硬件的设计和软件程序的设计流程。文章提供有关数据,并作出相应分析,总结系统所实现的功能,分析缺乏,为此提出展望。关键字:STC单片机、红外遥控、自动调光、光敏电阻AbstractCurtainiswhichtheexistenceofahouseappliancesincethebeginningofthehumansettlement,itwasusedtoprotectpeople'sprivacyandtochangethehouselight.Withthedevelopmentofthetimes,thetraditionalcurtaincannotsatisfypeople'sneeds,foraproposedstudyofmulti-applicationsmartcurtaincontroller.MultifunctionalsmartcurtaincontrollerusesSTC12SeriesMCUasthecore,throughtheuseoflight-sensitiveresistorschangeresistorinthelight.Thenthevoltagewhichischangedbythelight-sensitiveresistorssendtothevoltagedividercircuitandanalog-digitalconversion,andthentheconvertedofdatasenttothemicrocontroller.TheMCUwillcontroltheLCDtodisplaythelightintensity,andinaccordancewiththelightintensityautomaticallydeterminethecurrentsizeofthelightintensityoflightisstrongorweak,alsodrivenbyrotationofthemotortocontrolthecurtainstomakeoutautomaticdimmingfunction;Atthesametime,theuseofinfraredremotecontroltechnologycanworkoutthewirelessremotecontrolfunction.ThemotorcircuitisdrivenbythechipwhichthemodelnumberisL298Nandaddexternalfreewheelingdiodecircuit.Thecontrollercanselectmultiplemodes,suchasopening,closing,automatic,andtiming.Thispaperdescribestheoverallsystemdesign,andthesystemhowtowork.Itelaboratesthesystemhardwaredesignandsoftwaredesignprocesses.Thisarticlesprovidetherelevantdata,andmaketheappropriateanalysis,thensummarizedthesystemfunctionswhicharerealizedandinadequateanalysis.Finallyweproposedtheprospect.Keywords:STCsinglechipmicrocomputer,Infraredremotecontrol,automaticchange-lightfunction,photoresistors目录TOC\o"1-2"\h\u引言21系统方案设计21.1设计要求21.2系统框图21.3系统方案设计22硬件设计22.1最小系统设计22.2红外信号接收设计22.3显示模块设计22.4光采集模块设计22.5电机驱动模块设计22.6窗帘结构设计23软件设计23.1主程序设计23.2红外信号接收子程序设计23.3光采集A/D子程序设计23.4电机驱动子程序设计23.5显示子程序设计23.6定时模式子程序设计24系统调试24.1单片机最小系统的调试24.2LCD5110显示的调试24.3红外信号发射接收的调试24.4A/D转换的调试24.5电机驱动的调试24.6系统整机的调试24.7数据测试与分析25总结与展望2谢辞2参考文献2附录2引言窗帘作为现代家居用品中的必需品,具有遮阳隔热和调节室内光线的功能,是与外界隔绝,保持居室私密性的家居用品。冬季,拉上幔帐式的窗帘将室内外分隔成两个世界,给屋里增加了温馨的暖意[1]。随着单片机的使用越来越广泛,其制作本钱不断下降,而性能却不断提高科技创造便捷生活,我们使用最简单的材料和程序,利用红外线实现了短距离无线通讯,可以控制各种负载的工作,应用到生活和农业生产中,只用一个遥控器就可以控制微波炉、窗帘和电灯等等[2]。基于测控仪器的方便使用与快速处理,智能家居首当其冲,智能家居作为一个新生产业,处于一个导入期与成长期的临界点,市场消费观念还未形成,但随着智能家居市场推广普及的进一步落实,培育起消费者的使用习惯,智能家居市场的消费潜力必然是巨大的,产业前景光明。正因为如此,国内优秀的智能家居用品生产企业愈来愈重视对行业市场的研究,特别是对企业开展环境和客户需求趋势变化的深入研究,一大批国内优秀的智能家居品牌迅速崛起,逐渐成为智能家居产业中的翘楚!在产品调查中发现,现阶段的智能窗帘所实现的功能为可手动及电动一体控制。其中,窗帘并不具有什么智能性,外配的遥控器只可以实现窗帘的翻开和关闭的遥控功能,相对于智能来说,这些相去甚远。另外此类电动窗帘,仅仅具有上下控制模式,并无很好的人机交互功能。针对这个状况,在以此现状的窗帘的根底上增加额外的技术,在此提出一个较低本钱的研究设计。利用STC12系列单片机与外围红外发射、接收电路,光照强度采集电路,电机驱动控制电路,以及人机交互界面所构建的一个系统,其自动调光功能是根据人眼的舒适度进行调节的。此系统不仅所低本钱,而且实用,适合大多数家庭的日常使用。1系统方案设计1.1设计要求要求设计一个具有自动调光功能的红外遥控窗帘。系统包括主控电路、遥控电路、光控电路、键盘等局部。设计检测电路,实现根据环境亮度控制窗帘开度;设计红外遥控器,实现特殊要求下遥控器控制;设计键盘电路,实现定时控制,以到达控制房间亮度的目的。本课题内容的具体要求及主要技术指标如下:1、实时显示当前光照强度;2、支持多种控制模式:光强自动控制、红外遥控控制、定时控制调节窗帘开度;3、设计闭环系统,方便检测系统是否正常工作;1.2系统框图系统的构成如图1.1所示,系统所用的微控制器为STC12C5A60S2,提供各种信息的处理及采集。红外遥控器采用通用型遥控器〔市场上大多数遥控器都为此类型,兼容性高〕,采集按键直接通过编码电路,进而与38Khz的脉冲波进行调制,抗干扰性高,可在光照充足的条件下使用。光控模块,使用光敏电阻进行采集,光敏电阻具有随光照强度大小变化,其电阻值随之变化的特点。利用这个,可从光强,到电阻,继而至电压变化,从而对相应电压电阻进行数模转化为数字量,方便微控制器的处理。外加的显示模块,能更好的进行人机交互。〔具体说明请浏览方案设计章节〕如图1.1。图1.1系统框图1.3系统方案设计单片机的选择:从时代看,传统的单片机已无法满足科技日益开展的今天。就Atmel公司的AT89S51型单片机而言,32个准双向口的IO口,4KB的Flash大小,以及128字节的运行存储器RAM,已无法满足由于多功能所带来的对IO口的占用数量,以及更大的程序的装载空间。因此,我在这里选择使用由宏晶公司所提供的STC12C5A60S2型单片机。该单片机为新一代增强型单片机,不仅可使用像经典的32个IO口,必要时还可以扩展P4口;而且增加PWM、PCA的定时器,同时可对其编程直接输出;另外新型的内部振荡器,双UART模块,以及8路A/D转换器。这些外围设备都集成于单片机一体,从工艺看,就已极大的缩小了本钱。值得一提的是,此单片机的flash高达60K,可满足各种程序所需空间大小的需要,同时1280字节的RAM也为该单片机增色不少。从日常家居角度来看,该单片机已是最正确选择。图1.2STC12C5A60S2内部设备显示器的选择:第一种选择是数码管,显然显示内容有限,在人机交互方面,已大大不能满足人们对界面的要求;第二种选择是例如LCD12864集成字符生成器一体的显示器,显示内容丰富,不仅可显示字符,而且可已显示汉字及二进制的图像,但本钱过高,同时占用IO口数过多。假设使用串行通信方式,速度较慢;第三种选择,使用由诺基亚公司所提供的LCD5110,该LCD由84x48的点阵组成,采用串行界面与处理器进行通信,支持多种串行通信协议〔诸如SPI、UART、I2C等〕,相比LCD23864的串行传输速度而言,其高达4Mbps的串行传输速度更是遥遥领先,可全速写入显示数据,无需等待时间。同时体积更小、本钱更低,显示内容同样丰富。如图1.3为Nokia5110封装及管脚功能图。图1.3Nokia5110光强采集电路方案:第一种方案,使用光敏二极管,其实光敏二极管可相当于一个光敏电阻。但由于半导体的单相导通特性在采集方面并不适宜,因此不予考虑。第二种方案,使用光敏电阻,由于光敏电阻有随光照强度变化而其电阻变化的特点,在输入点处的变化是连续的,同时其光照-伏安特性可在一定范围内线性,因此对于光敏电阻予以使用。图1.4光敏电阻电机的选择:相对于驱动的选择,我们应先从电机的选择开始,电机的类型可分为直流电机和步进电机,两者都各有特点。直流电机有拥噪音小,本钱低,驱动简单等特点;而步进电机具有可控制转角角度功能,可以精确的控制所需转过的角度或者圈数,同时扭力较大,但本钱较高。因此选择更贴阖家居生活的直流电机,原因是噪音小,本钱低。另外直流电机又分为有刷电机与无刷电机,从性能比拟上,无刷电机故障率低,维护简单,动态性能优良。而有刷电机优点在于控制简单。通过比拟,无刷电机虽然性能优越,但无法与有刷电机一样具有良好的机械性能易于控制,因此选用有刷电机作为电机的选择。电机驱动电路的选择:第一种方案,直接接口引入,特点简单方便,缺点驱动电流缺乏,线圈反向电流会引入电路造成干扰或者损害,因此不予考虑。第二种方案,使用由MOSFET所搭建的H桥驱动电路,此电路属于可逆性电路,可控制电机的正转和反转,同时所加信号假设为脉冲信号,通过调制脉冲的占空比,可对电机进行调速。以上,应选择第二种方案。图1.5H桥电路原理图2硬件设计2.1最小系统设计单片机的最小系统可使单片机作为一个能正常工作,处理各种信息的单元。如今的最小系统可简化为单片机、复位电路、振荡电路三个局部。在上一个章节已说明单片机使用STC12C5A60S2型单片机。如图2.1为所使用单片机的最小系统。图2.1STC12C5A60S2型的最小系统其中,旁路的LED灯为系统工作的指示灯,电阻R1为限流电阻,以防浪涌电流将LED烧坏,增长其寿命。复位电路:单片机在每个机器周期的S5P2采样一次,并且在RST引脚保持至少两个机器周期的高电平,才能使单片机完成复位。另外,使用按键复位电路可方便在调试时,对复位的需要,因此使用按键复位形式的电路。如图2.2为复位电路的原理图。图2.2按键复位电路原理图当按键被按下,在RESET处出现一个高电平。当按键被放开时,电容C4会通过R5放电,继续保持放点时间的高电平。R4作用是缓冲。电容放电时间:〔2-1〕其中,v1为充电饱和电压〔5V〕,v2为初始电压〔0V〕,v0为t时刻电容上的电压〔3V〕。那么所计算时间为0.04s,符合要求。振荡电路:由于内置R/C时钟发生器,外部振荡电路只需增加起振晶体和电容即可。如图2.3为振荡电路原理图。图2.3振荡电路原理图其中,Y2为11.0592M晶振,C3、C5提供起振条件。2.2红外信号接收设计电视遥控器使用的是专用集成发射芯片来实现遥控码的发射,如东芝、飞利浦、NEC等,相互之间采用的遥控编码格式互不兼容,所以各机型的遥控器通常只能针对各自的遥控对象而无法通用。为了使信号能更好的被传输,发送端将基带二进制信号调制为脉冲串信号,通过红外发射管发射。常用的有通过脉冲宽度来实现信号调制的脉宽调制〔PWM〕和通过脉冲串之间的时间间隔来实现信号调制的脉时调制〔PPM〕两种方式。不同的遥控器有着不同的编码标准,在这里我选择的标准是主流平台上的一种——NEC标准来进行编码,其中使用的调制方式为PPM方式。另外调制更进一步增强抗干扰能力,可以增加遥控距离。〔详细编码形式在软件设计章节说明〕在发射处,选择常规的红外发光二极管,为进一步增强发射能力,使用5mm的封装。同时,在接受处使用的是VS1838B型集成红外接收器。之所以选择这个接收器,是由于它拥有以下特性:图2.5为红外接收电路原理图,其中VS1838B的OUT的输出脚处连接至单片机的外部中断接口INT1处。图2.4红外接收器连接原理图2.3显示模块设计由于所选用LCD5110连线界面少,电路简单。所以无需任何外加电路,假设是需要提高数据传输的正确率可在每个IO口处添加上拉电阻。在这里不加上拉电阻的原因是考虑到居室不是一个恶劣的环境,因此无需上拉电阻可能有很高的数据正确性。如图2.6为显示模块原理图。图2.5显示模块原理图2.4光采集模块设计此模块由光敏电阻、A/D转换器和限流电阻组成。由于A/D转换器已集成于微控制器内,因此无需额外增加。光敏电阻在选用时,应考虑其光谱峰值以及电阻值在光照与黑暗情况下的差值。根据表2.1可知,由于光谱峰值相差不大,从而在此无需过多考虑。在亮电阻与暗电阻差值比拟中,我们找到PGM5506及PGM5516两种型号的光敏电阻特性较为适合,原因是所使用的分压限流电阻为100KΩ,不宜使用亮电阻较大的光敏电阻。同时由于PGM5516的亮暗电阻差值较大,因此选择PGM5516型光敏电阻。表2.15mmPGM5系列光敏电阻特性表型号最大电压〔VDC〕最大功率〔mW〕环境温度〔℃〕光谱峰值〔nm〕亮电阻〔10lx〕〔kΩ〕暗电阻〔MΩ〕PGM550610090-30~+705402~60.15PGM551610090-30~+705405~100.2PGM5526150100-30~+705408~201.0PGM5537150100-30~+7054016~502.0PGM5539150100-30~+7054030~905.0PGM5549150100-30~+7054045~14010.0PGM5616D150100-30~+705605~101.0PGM5626D150100-30~+705608~202.0PGM5637D150100-30~+7056016~505.0如图2.7所示硬件电路原理图。至ADC1至ADC2至ADC1至ADC2图2.6光采集电路原理图利用两路光强采集,可更加贴近的测量该时刻的光强,可减小由于干扰所带来的误差。由分压的效果可见,当光敏电阻处于黑暗时,阻值为200K,有〔2-2〕此时UO=2.5V。当光敏电阻处于光照情况下,此时UO=0.23~0.045V。相差较大,能更容易的从中处理光强→电阻→电压→光强的关系。2.5电机驱动模块设计该模块核心芯片的选择在于芯片的输出驱动电流、输入电压范围、功耗等。选用L298N型专用集成驱动芯片作为电机的驱动芯片正是基于以上考虑。L298N是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。主要特点是:工作电压高,供电电压范围宽,最高工作电压可达46V,无论是选择由锂电池或者简易的供电器都同样适用;更重要的是,内含两个H桥的高电压大电流全桥式驱动器,可以用来控制直流电机、步进电机、继电器线圈等感性负载,同时输出电流大,瞬间电流可达3A,持续工作电流为2A,额定功率为25W可满足一般电机的驱动要求;另外,该芯片采用标准逻辑电平信号〔即TTL电平〕控制,具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路局部在低电压下工作,因此该芯片可有效降低由于闲置MOSFET所带来的多余的功耗。使用该芯片可以控制一台两相步进电机或四相步进电机,更可以控制2台直流电机。如图2.8所示电机驱动硬件电路原理图。图2.7电机驱动电路原理图其中,运用8个二极管为每一路输出提供续流效果,以防电机线圈组的回流损害芯片。两个电容缓冲回流确保电机的正常工作。2.6窗帘结构设计窗帘由帘体、支架、配件三大局部组成。帘体是窗帘的遮掩局部,为窗帘的主体,一般是各种类型的布制物料。支架是窗帘的支撑及活动的局部,也是窗帘的重要局部,一般为左右互拉式的导轨。配件是帘体与支架间的连接、固定局部。考虑到方案所表达的低本钱,设计结构支架如图2.9所示,此结构只用一个电机便可实现窗帘的开闭,同时,可以实现两种控制的窗帘的开闭方式:上下升降的卷帘式,左右卷动开合。卷帘式结构简单,对空间的占用小,类似百叶窗悬挂方法,折叠升高,可根据光线的强弱而上下升降。但考虑到人类的生活习惯及习性,在这我选择类似左右卷动形式,常用于有窗盒的窗户,可配帘眉,不显露轨道。所以该类型结构在美观方面增色不少。图2.8窗帘结构示意图由结构图可看出,在结构上与升降帘相差无几,一样的简单而方便。3软件设计3.1主程序设计软件是系统的灵魂。一个系统如果仅有硬件,那么就象是一个植物人,不能实现系统的智能。那么对软件的编写就是告诉系统该做什么,怎么做。C语言不仅特点全,而运用上特别之灵活多变,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。而这正是我所选择C语言的原因。但C语言不是真正的机器语言,系统不可能直接执行C语言,因此我们需要一个编译器,而编程环境是集编译器,调试,仿真器等于一体的开发工具。在众多开发编程环境中,keil4是一个不错的选择。Keil4是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境〔uVision〕将这些局部组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。假设使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令研究事半功倍。主程序所现实的是对所需硬件功能初始化以及对各子程序的调用。在这里,程序对界面及功能初始化后,通过等待红外信号的中断,回应中断,进入中断效劳程序中进行红外信号的译码处理,中断返回。对获得的译码与各功能码进行比对,匹配相同将进入相应的子程序。如图3.1所示主程序流程图。图3.1主程序流程图程序在系统初始化后,进行采集光敏电阻所提供的电压并等待红外信号的接收中断。在接收到红外信号时,进入中断效劳程序进行解码,解码完成后返回主程序。其中,解析编码为40H是翻开窗帘指令;解析编码为44H是关闭窗帘指令;解析编码为09H是自动调节窗帘指令;解析编码为46H是定时管理窗帘指令;如假设解析编码与上诉不符,继续等待。3.2红外信号接收子程序设计如假设要编写接收的子程序,首先要明白发射端的编码设计方式。根据NEC标准,所使用红外信号的调制方式为PPM〔脉冲时间调制方式〕。NEC标准:遥控载波的频率为38KHz(占空比为1:3);当某个按键按下时,系统首先发射一个完整的全码,然后经延时再发射一系列简码,直到按键松开即停止发射。简码重复延时108ms,每两个引导脉冲上升沿之间的间隔都是108ms。其中,引导码高电平9ms,低电平4.5ms;地址码16位,数据码16位,共32位;数据“0”用“高电平0.56ms+低电平0.565ms”表示,数据“1”用“高电平0.56ms+低电平1.6875ms”表示,一个简码=引导码+地址码位0的反码+结束位(0.5625ms)高电平。各局部码的作用:引导码用来通知接收器其后为遥控数据。地址码用来区分是哪一机型的数据,接收端依此来判断后续的数据是否为须执行的指令。数据码用来区分是哪一个键被按下,接收端根据数据码做出应该执行什么动作的判断。简码是在持续按键时发送的码。它告知接收端,某键是在被连续地按着。遥控数据传输系统的关键是数据传输的可靠性。为了提高编码的可靠性,NEC标准规定地址码、数据码后分别接着传送一个同样的码或者反码,供误码校验用。1、载波波形:信号被调制在37.91KHZ,占空比是1/3。图3.2载波波形2、数据格式:数据格式包括引导码、用户码、数据码和数据反码,编码总占32位。数据反码是数据码反相后的编码,编码时可用于对数据的纠错。注意:第二个用户码也可以在遥控应用电路中被设置成第一个用户码的反码。图3.3编码格式如图3.5所示各段代码所占用的时间。图3.4编码对应时间位定义:用户码和数据码中的每一个位可以是位“1”,也可以是位“0”。区分0、1是利用脉冲的时间间隔来区分,这种编码方式称为脉冲位置调制方式〔ppm〕。图3.5“1”和“0”所对应的时间图3.6红外信号接收程序流程图如上图3.6所示,使用中断方式进行接收红外信号。在收到中断信号时,进入中断效劳程序。首先关闭外部中断1的中断,以防不会因为后来的下降沿对程序的干扰,进而判断信号送来的引导时序,当引导时序正确后对所发过来的32位“地址码+数据码”进行解析。当解析完成后,对16位的数据码分为上下8位,假设互为反码,说明数据正确并保存高位的正码数据,否那么视为数据传输错误返回主函数。3.3光采集A/D子程序设计光采集程序就是启动A/D转换器对电路电压进行采集的程序,然后将转换的值进行滤波,求平均值以减少干扰和误差,最后处理为能显示的电压值或者光强值。首先,需对所使用模拟量输入接口初始化,设置A/D转换器的控制存放器,设置为使能上电,参考电压大小,选用输入通道多少,以及完成方式〔中断方式或者查询方式〕,最后将转换值储存并处理。如图3.7A/D子程序流程图。图3.7A/D子程序流程图在初始化中对A/D转换器的控制存放器进行设置A/D的上电,采样速度,及选择的采样通道。假设需要进行采样时,启动A/D转换。假设转换结束,那么可以取ADC_RES存放器里的转换结果数据保存。这里需要进行数据相加,是因为在此子程序中运用了平均值滤波,通过二十组数据求平均值,可有效地减少误差及数据的平稳性。最后,保存该平均值并返回。3.4电机驱动子程序设计电机的驱动分为正转和反转,这个电机驱动子程序就是用来控制电机的正反转的。通过设置I/O口的电平不同,可到达不同的控制,工作状态可参考下表。表3.1电机状态控制表控制状态控制端IN1控制端IN2控制端IN3控制端IN4使能段ENA正转高低//高反转低高//高停止低低//高停止////低如图3.8所示显示子程序流程图。图3.8电机驱动子程流程图当主程序中对发送来的红外信号判定为翻开窗帘或关闭窗帘的命令代码时,主程序那么跳转到该子程序中。左图为是电机调整为正转状态的流程图,通过根据上表3.1来相应管脚的输出电平调整;同理,右图为电机调整为反转状态的流程图。3.5显示子程序设计LCD5110控制命令字的传输由串行通信完成。因此该子程序的设计主要围绕串行口的时序设计。由于LCD5110的速度快,所以无需对延时的控制。图3.9LCD5110时序图如图3.10所示子程序流程。图3.10显示子程序流程图LCD5110与单片机之间为串行通信,通过接口模拟的UART可到达一位一位的传输。子函数中先判断所写的数据是命令还是显示数据,然后使相应的D/C口为“0”或者“1”,再进行数据的传输。传输时,先写一位数据,然后CLK端拉高为高电平,此时可形成一个上升沿,从而触发数据写入LCD中。当8位数据都写入时,返回主程序。3.6定时模式子程序设计定时模式的设计有助于我们人类更方便安排生活作息。定时模式可实现在这之后设定时间的窗帘的开闭。通过检测红外控制信号,进行该模式。系统可根据控制信号的变化来加减所需的定时时间。如图3.11为定时模式子程序流程图。图3.11定时模式子程序流程图在接收到进入该模式的红外信号后,设定所需要的定时时间,在定时时间设定好之后,可设定定时结束时需要窗帘进行翻开或关闭。在确定按键按下后,会去除屏幕上显示的设定选项并出现已设定定时模式的标志。同时将TR0置“1”启动定时器0进行定时,当定时结束时,电机根据设定翻开或关闭窗帘。4系统调试在系统调试之前,需对各电路进行电气连接性检查,检查电路的通断,使用检查仪器为数字万用表BESTDT-9205M型。通过测试,电路连接正常。这电路的调试提供很大的保证,当电路运行不正常时,有首先排除电路断路、短路的问题。系统的各个电路调试主要包括单片机最小系统的调试,LCD5110显示调试,红外信号发射接收调试,A/D转换的调试,电机驱动电路的调试等。该章节首先对各个电路在调试过程中出现的问题及解决方法进行说明,进而对整个系统的运行进行调整。4.1单片机最小系统的调试单片机最小系统包含时钟振荡电路、复位电路等。最小系统的运行正常尤为关键,直接决定系统的功能能否实现。在经过上面电气连接检查后,在不插上微控制器芯片的情况下,上电测试。通电后,背部贴片的蓝光LED光亮正常,通电一段时间后,无异常产生,可接插单片机芯片。芯片接上后,接上电,蓝光LED放光正常,用数字万用表测试STC12C5A60S2单片机的40管脚〔VCC〕和地之间的电压,电压显示4.88V,单片机供电正常。再测试其他的管脚,电压都在允许值内,说明单片机工作正常。调试程序写入单片机最小系统的方法:用keil4编写一段小程序〔如控制发光二极管的亮灭〕,在小程序编译完成生成.HEX文件后,使用下载器通过USB下载线将程序烧入单片机内。第一次烧入程序时,注意要先把下载器的驱动程序安装进电脑方可实现烧录程序的功能。完成后,USB在电脑的设备管理器一栏中显示为COM4,因此在翻开电脑的烧录应用程序时,应选择的串口号那么为COM4。PCB上带有自锁开关,很方便下载程序时所需的上下电要求。单片机在下载完程序后,上电后LED亮灭正常。单片机可完整的工作,最小系统调试结束。4.2LCD5110显示的调试上述中,已说明的LCD5110的程序设计。根据相关命令字编写一段简单的显示软件并将其烧入单片机。下载完后,发现液晶屏显示漆黑的一片,用强光照射后,看到液晶屏还是有内容显示出来的。后来找到原因是背光没亮,有一定压降。认真检查软件程序后发现,在控制背光一端管脚没有置“0”,所以背光没亮。同时短接了LCDGND端的下拉电阻。重新上电,显示正常。最后,再修改显示程序,将数据布满在液晶屏上显示,以检查液晶屏的完整性。4.3红外信号发射接收的调试红外遥控的功能在整个系统中是非常重要的,首先检查信号发射是否正常。由于红外线在我们人类视网膜感光范围之外,所以我们是看不见红外二极管是否发光正常。在浏览资料时发现,COMS的传感器对红外线具有敏感性,因此我们可用其作为一个媒介。的摄像头就是该类器件,所以可以用摄像功能来测试红外二极管的工作状态。在遥控器端按下一个键,在端可看见红外二极管在发淡红光闪烁,说明红外二极管发光正常。第二测试接收编码,可在万用板上用接收头〔VS1838b〕焊接一个简单的接受电路。接收头输出端接数字示波器显示。测试发现,编码正常。最后,测试系统的红外信号发射接收并在LCD上显示相应的编码。在测试时,发现意想的中显示编码没有出现。这让我想到电路可能出了问题,将一个LED阳极接电源“+”,阴极接单片机INT1管脚。当在遥控器端按下按键时,发现LED能亮灭,这排除了硬件问题的可能性。剩下的就是软件程序问题了,在检查中断效劳程序时,发现原来是我的延时没有处理好,STC12C5A60S2这个单片机处理指令速度过快,原来的延时过长,导致下一个下降沿没有到来,程序就认为错误编码自动退出解码局部。因此,要重新调整延时函数。修改程序,重新下载程序后,开机发现显示屏能显示编码,而且编码正确,调试结束。4.4A/D转换的调试在A/D转换的调试中,根据STC12C5A60S2的存放器设置,设定好存放器相应控制的功能,进而编写一段测试程序,其功能是将光敏电阻变化所变化的模拟量通过A/D转换为数字量,并将其数据送至串口在电脑上显示。将程序下载好后,观察液晶屏所显示的数据是否正确。其中,约定值通过数字万用表测量该通道的电压,经换算后所的数据为与其相匹配。串口调试中,发现数字一直显示为“00”,那么首先检查程序的正确性,发现选通的输入通道没有设置正确,修改并重新下载后,上电调试,数据发生变化而且与约定值的误差允许范围内。另外,为进一步检测系统功能性,将程序修改让转换数据能在液晶屏上显示。重新下载后显示正常,数据在误差范围内。因此,单片机可控制内部A/D进行模拟量至数字量的转换。4.5电机驱动的调试电机驱动电路的调试比拟简单,对IN1和IN2分别给予一个高电平与一个低电平,给予ENA一个高电平,电机的两端分别接OUT1和OUT2。同样地,对于反转的调试,对IN1和IN2分别给予一个低电平与一个高电平,给予ENA一个高电平。同理地,电机驱动电路第二路输出调试与上述一样。第二,在输入引脚处可用数字万用表做输出电流的测试。首先设置驱动电路的输出状态〔比方IN1设置“0”,IN2设置“1”〕,然后启动输出〔ENA设置“1”〕,将万用表档位转动为测量电流档,用红色表笔接触OUT1,黑色表笔接触OUT2。最后读数,完成测试。结果反映的是,电机驱动电路工作正常。4.6系统整机的调试通过以上各个模块电路的调试后,最后将各个电路整合于一个完整的系统,对整个系统功能进行调试。在系统整机调试中,实现了红外遥控窗帘的开闭,在设定值下的自动调整功能以及定时控制窗帘的开闭。系统根本实现了多功能智能窗帘控制器的目的。4.7数据测试与分析对A/D采集电压的误差分析,将光敏电阻更换为固定电阻2.3K欧,方便测试,首先测量供电电压〔参考电压〕为5.06V。电压数据记录表如表4.1所示。表4.1A/D采集电压数据次数采集数据〔十六进制〕换算电压(V)实测电压(V)1FA4.945.042FA4.944.043FA4.945.044FB4.965.045FA4.945.046FA4.945.047FA4.945.048FA4.945.049FA4.945.0410FA4.945.04由上表可得该测量为等精度测量。采集的电压平均值为:4.942V,那么相对误差为:误差分析:由于A/D存在最低的量化误差而,量化误差=参考电压/256≈0.0198V。所以该误差在范围允许内。同时参考电压的些许变动也会影响电压的采集,如第四组数据。5总结与展望在整个设计、调试与安装的过程中根本实现了所要求的功能与任务,可通过红外遥控器来控制整个系统的运作。选中自动调光模式,可以通过控制窗帘的开度实现自动调光效果;选中定时模式,可通过设定所需的时间和开闭,来控制到预定时间的窗帘状态。虽然如此,但该系统还存在一些缺乏,比方定时时间不够灵活,不够人性化;另外,光强的采集与算法处理比拟简单,不能做到更大的范围和精确度。这些都是系统的缺乏,希望在以后的研究设计中考虑得更加充分和细致。毕业设计已经接近尾声了,经过几个月的努力与汗水终于完成了整个毕业设计所要求的任务。在这些日子里,自资料的查阅、揣摩思考到设计方案,从原理图设计到PCB的制作,直至整个系统的调试,在这整个过程中,我不断成长,不断磨练,从中发现当出现问题时,我的反响与应对是很重要的——也就是分析问题,解决问题能力。这才是我在大学所真正需要锻炼的能力。作为一个即将步入社会的新人,面对着社会这么一个复杂的大环境,随时可以发生任何事情与问题,对此分析问题是我们能够做出应对的根本,而解决问题的方法有很多种,但从中能选择适合我们,适合当时条件的方法就是我们解决问题能力的表达,但这些的前提是我们的知识面够丰富。在毕业设计中,我学会使用我从没用过的STC系列单片机,并掌握了对其增强局部A/D的使用。而且了解了测量光强传感器的选取方法和使用方法,进一步熟练已掌握的C语言编程方法。在实践中,不仅提升的动手能力积累了大量实践经验,而且稳固了已学习的知识,使得自己在电路设计方面增强了信心。最后,这次毕业设计让我看到自己的很多缺乏之处,比方粗心大意。今后我会在工作学习中不断丰富自己,提升自己。谢辞参考文献[1]百度.窗帘[EB/OL]..2014-06-11.[2]李小魁,韩大伟.智能遥控窗帘系统设计与实现[J].河南:河南财政税务高等专科学校学报,2013,27〔4〕:92~94.[3]赵健等.基于单片机的光敏窗帘及声控灯系统的设计[J].泰山学院学报.2013,35〔3〕:101~103.[4]瞿贵荣.电动窗帘红外遥控电路[J].家庭电子.2005〔2〕:2~3.[5]郭成林.智能遥控窗帘系统设计[J].山西电子技术.2006〔6〕:32~33.[6]姜灵芝,余健.C语言课程设计案例精编[M].北京:清华大学出版社,2008.[7]阎石.数字电子技术根底[M].北京:高等教育出版社,2006:524-548.[8]康华光.电子技术根底〔模拟局部〕[M].北京:高等教育出版社,2006:54-97.[9]李瀚荪.电路分析根底〔第四版〕[M].北京:高等教育出版社,2006.[10]黄冰,覃伟年,黄知超.微机原理及应用[M].重庆:重庆大学出版社,2003:175-320.[11]李玉惠,晋帆,向凤红.自动控制原理[M].北京:清华大学出版社,2008:4-40.[12]苏长赞.红外线与超声波遥控[M].北京:人民邮电出版社,1993.[13]科学出版社编辑部.英汉激光与红外技术词汇[M].北京:科学出版社,1978.[14]陈永甫.红外探测与控制电路[M].北京:人民邮电出版社,2004.[15]范林霄等.基于单片机的自动窗帘装置的设计[J].中国科技信息.2013〔21〕:132~133.[16]ReetamMondal,ArumayMukhopadhyay,DebdootBasak,etal.EmbeddedSystemofDCMotorClosedLoopSpeedControlbasedon8051Microcontroller[J].ProcediaTechnology,2013,Volume10,Pages840–848.附录图为系统原理图图为系统PCB图图为L298N电机驱动PCB图以下为所写软件程序源代码。#include<STC12C5A60S2.h>#include<intrins.h>#include<stdio.h>#include<ADconver.h>//#include"DS1302.h"#defineucharunsignedchar#defineuintunsignedintsbitzheng=P2^1;sbitfan=P2^0;sbitENA=P2^2;sbitIRIN=P3^3;//红外接收器数据线sbitsce=P0^1;//片选sbitres=P0^0;//复位,0复位sbitdc=P0^2;//1写数据,0写指令sbitsdin=P0^3;//数据sbitsclk=P0^4;//时钟voidLCD_clear(void);voidDisplay_num(unsignedcharx,unsignedchary,chars);voidDisplay_char(unsignedcharx,unsignedchary,char*s);uchardataIRCOM[7];//定义一个4字节的数组ucharCodeTemp;//编码字节缓存变量voiddelay14(unsignedcharx);voiddelay1(intms);uintsettime=0; //定时参数ucharch=5;unsignedintntemp=0;/****************************5110字模************************** 用于调用****************************************************************/unsignedcharcodeasc2tab[][6]={{0x00,0x00,0x00,0x00,0x00,0x00},//sp 空格{0x00,0x00,0x00,0x2f,0x00,0x00},//!{0x00,0x00,0x07,0x00,0x07,0x00},//"{0x00,0x14,0x7f,0x14,0x7f,0x14},//#{0x00,0x24,0x2a,0x7f,0x2a,0x12},//$ {0x00,0x23,0x13,0x08,0x64,0x62},//% {0x00,0x36,0x49,0x55,0x22,0x50},//& {0x00,0x00,0x05,0x03,0x00,0x00},//' {0x00,0x00,0x1c,0x22,0x41,0x00},//( {0x00,0x00,0x41,0x22,0x1c,0x00},//) {0x00,0x14,0x08,0x3E,0x08,0x14},//* {0x00,0x08,0x08,0x3E,0x08,0x08},//+ {0x00,0x00,0x00,0xA0,0x60,0x00},//, {0x00,0x08,0x08,0x08,0x08,0x08},//- {0x00,0x00,0x60,0x60,0x00,0x00},//. {0x00,0x20,0x10,0x08,0x04,0x02},/// {0x00,0x3E,0x51,0x49,0x45,0x3E},//0 {0x00,0x00,0x42,0x7F,0x40,0x00},//1 {0x00,0x42,0x61,0x51,0x49,0x46},//2 {0x00,0x21,0x41,0x45,0x4B,0x31},//3 {0x00,0x18,0x14,0x12,0x7F,0x10},//4 {0x00,0x27,0x45,0x45,0x45,0x39},//5 {0x00,0x3C,0x4A,0x49,0x49,0x30},//6 {0x00,0x01,0x71,0x09,0x05,0x03},//7 {0x00,0x36,0x49,0x49,0x49,0x36},//8 {0x00,0x06,0x49,0x49,0x29,0x1E},//9 {0x00,0x00,0x36,0x36,0x00,0x00},//: {0x00,0x00,0x56,0x36,0x00,0x00},// {0x00,0x08,0x14,0x22,0x41,0x00},//< {0x00,0x14,0x14,0x14,0x14,0x14},//= {0x00,0x00,0x41,0x22,0x14,0x08},//> {0x00,0x02,0x01,0x51,0x09,0x06},// {0x00,0x32,0x49,0x59,0x51,0x3E},//@ {0x00,0x7C,0x12,0x11,0x12,0x7C},//A {0x00,0x7F,0x49,0x49,0x49,0x36},//B {0x00,0x3E,0x41,0x41,0x41,0x22},//C {0x00,0x7F,0x41,0x41,0x22,0x1C},//D {0x00,0x7F,0x49,0x49,0x49,0x41},//E {0x00,0x7F,0x09,0x09,0x09,0x01},//F {0x00,0x3E,0x41,0x49,0x49,0x7A},//G {0x00,0x7F,0x08,0x08,0x08,0x7F},//H {0x00,0x00,0x41,0x7F,0x41,0x00},//I {0x00,0x20,0x40,0x41,0x3F,0x01},//J {0x00,0x7F,0x08,0x14,0x22,0x41},//K {0x00,0x7F,0x40,0x40,0x40,0x40},//L {0x00,0x7F,0x02,0x0C,0x02,0x7F},//M {0x00,0x7F,0x04,0x08,0x10,0x7F},//N {0x00,0x31,0x41,0x41,0x41,0x31},//O {0x00,0x3E,0x41,0x41,0x41,0x06},//P {0x00,0x3E,0x41,0x51,0x21,0x5E},//Q {0x00,0x7F,0x09,0x19,0x29,0x46},//R {0x00,0x46,0x49,0x49,0x49,0x31},//S {0x00,0x01,0x01,0x7F,0x01,0x01},//T {0x00,0x3F,0x40,0x40,0x40,0x3F},//U {0x00,0x1F,0x20,0x40,0x20,0x1F},//V {0x00,0x3F,0x40,0x38,0x40,0x3F},//W {0x00,0x63,0x14,0x08,0x14,0x63},//X {0x00,0x07,0x08,0x70,0x08,0x07},//Y {0x00,0x61,0x51,0x49,0x45,0x43},//Z {0x00,0x00,0x7F,0x41,0x41,0x00},//[ {0x00,0x55,0x2A,0x55,0x2A,0x55},//55 {0x00,0x00,0x41,0x41,0x7F,0x00},//] {0x00,0x04,0x02,0x01,0x02,0x04},//^ {0x00,0x40,0x40,0x40,0x40,0x40},//_ {0x00,0x00,0x01,0x02,0x04,0x00},//' {0x00,0x20,0x54,0x54,0x54,0x78},//a {0x00,0x7F,0x48,0x44,0x44,0x38},//b {0x00,0x38,0x44,0x44,0x44,0x20},//c {0x00,0x38,0x44,0x44,0x48,0x7F},//d {0x00,0x38,0x54,0x54,0x54,0x18},//e {0x00,0x08,0x7E,0x09,0x01,0x02},//f {0x00,0x18,0xA4,0xA4,0xA4,0x7C},//g {0x00,0x7F,0x08,0x04,0x04,0x78},//h {0x00,0x00,0x44,0x7D,0x40,0x00},//i {0x00,0x40,0x80,0x84,0x7D,0x00},//j {0x00,0x7F,0x10,0x28,0x44,0x00},//k {0x00,0x00,0x41,0x7F,0x40,0x00},//l {0x00,0x7C,0x04,0x18,0x04,0x78},//m {0x00,0x7C,0x08,0x04,0x04,0x78},//n {0x00,0x38,0x44,0x44,0x44,0x38},//o {0x00,0xFC,0x24,0x24,0x24,0x18},//p {0x00,0x18,0x24,0x24,0x18,0xFC},//q {0x00,0x7C,0x08,0x04,0x04,0x08},//r {0x00,0x48,0x54,0x54,0x54,0x20},//s {0x00,0x04,0x3F,0x44,0x40,0x20},//t {0x00,0x3C,0x40,0x40,0x20,0x7C},//u {0x00,0x1C,0x20,0x40,0x20,0x1C},//v {0x00,0x3C,0x40,0x30,0x40,0x3C},//w {0x00,0x44,0x28,0x10,0x28,0x44},//x {0x00,0x1C,0xA0,0xA0,0xA0,0x7C},//y {0x00,0x44,0x64,0x54,0x4C,0x44},//z {0x14,0x14,0x14,0x14,0x14,0x14} }; /*LCD_write_byte:使用SPI接口写数据到LCD输入参数:dt:写入的数据;command:写数据/命令选择;编写日期:20080918*/voidLCD_write_byte(uchardt,ucharcommand){ uchari; sce=0; dc=command; for(i=0;i<8;i++) { if(dt&0x80) sdin=1; else sdin=0; dt=dt<<1; sclk=0; sclk=1; } dc=1; sce=1; sdin=1;}/*LCD_init:5110LCD初始化编写日期:20080918*/voidLCD_init(void){ res=0; delay(2); res=1; sce=0; delay(2); sce =1;LCD_write_byte(0x21,0);//使用扩展命令设置LCD模式LCD_write_byte(0xc8,0);LCD_write_byte(0xc8,0);//设置液晶偏置电压LCD_write_byte(0x06,0);//温度校正LCD_write_byte(0x13,0);//1:48LCD_write_byte(0x20,0);//使用根本命令,V=0,水平寻址LCD_clear();//清屏LCD_clear();LCD_write_byte(0x0c,0);//设定显示模式,正常显示sce=0;//关闭LCD}/*LCD_set_XY:设置LCD坐标函数输入参数:X:0-83Y:0-5编写日期:20080918*/voidLCD_set_XY(ucharX,ucharY){ LCD_write_byte(0x40|Y,0);//column LCD_write_byte(0x80|X,0);//row}/*LCD_clear:LCD清屏函数编写日期:20080918*/voidLCD_clear(void){ uchart; uchark; LCD_set_XY(0,0); for(t=0;t<6;t++) { for(k=0;k<84;k++) { LCD_write_byte(0x00,1); } }}/****************************Nokia5110写数字函数*********************//*函数原型:voidDisplay_num(unsignedcharx,unsignedchary,chars)/*函数功能:Nokia5110写数字/*输入参数:x设置显示字符的X位置;y设置显示字符的Y位置s显示数字/*输出参数:无/**********************************************************************/voidDisplay_num(unsignedcharx,unsignedchary,chars){unsignedcharline;LCD_set_XY(x,y);dc=1;for(line=0;line<6;line++){LCD_write_byte(asc2tab[s+16][line],dc);}sce=1;}/*************************Nokia5110写字符函数*************************模块名称:Display_char(unsignedcharx,unsignedchary,char*s);功能:写字符;参数说明:x设置显示字符的X位置;y设置显示字符的Y位置*s显示字符的首地址*******************************************************************/voidDisplay_char(unsignedcharx,unsignedchary,char*s){unsignedcharline;LCD_set_XY(x,y);dc=1;while(*s){for(line=0;line<6;line++){dc=1;LCD_write_byte(asc2tab[*s-32][line],dc); } s++;}sce=1;}/**********************************************************/voiddelay14(ucharn)//误差-0.026041666667us 0.14ms{unsignedchara,b,c;for(;n>0;n--){for(c=96;c>0;c--)for(b=1;b>0;b--)for(a=1;a>0;a--);}}/**********************************************************/voiddelay1(intms){unsignedchary;while(ms--){for(y=0;y<250;y++){_nop_();_nop_();_nop_();_nop_();}}}/***********************解码中断程序***********************************/voidIR_IN()interrupt2using2{unsignedcharj,k,N=0;EX1=0; delay14(15); if(IRIN==1){EX1=1; return; }//确认IR信号出现while(!IRIN)//等IR变为高电平,跳过9ms的前导低电平信号。{delay14(1);}for(j=0;j<4;j++)//收集四组数据{for(k=0;k<8;k++)//每组数据有8位{while(IRIN)//等IR变为低电平{delay14(1);}while(!IRIN)//等IR变为高电平{delay14(1);}while(IRIN)//计算IR高电平时长{delay14(1);N++;if(N>=30) {EX1=1; return;}//0.14ms计数过长自动离开。}//高电平计数完毕IRCOM[j]=IRCOM[j]>>1;//数据最高位补“0”if(N>=8){IRCOM[j]=IRCOM[j]|0x80;}//数据最高位补“1”N=0;}//endfork}//endforjif(IRCOM[2]!=~IRCOM[3]){EX1=1;return;} CodeTemp=IRCOM[2];IRCOM[5]=IRCOM[2]&0x0F;//取键码的低四位IRCOM[6]=IRCOM[2]>>4;//右移4次,高四位变为低四位if(IRCOM[5]>9){IRCOM[5]=IRCOM[5]+0x08;}else IRCOM[5]=IRCOM[5];if(IRCOM[6]>9){IRCOM[6]=IRCOM[6]+0x08;}else IRCOM[6]=IRCOM[6];////////////////////////////Display_num(0,3,IRCOM[5]);//Display_num(0,2,IRCOM[6]);EX1=1;}voidTimer0Init(void) //50毫秒@11.0592MHz{ AUXR&=0x7F; //定时器时钟12T模式 TMOD&=0xF0; //设置定时器模式 TMOD|=0x01; //设置定时器模式 TL0=0x00; //设置定时初值 TH0=0x4C; //设置定时初值 TF0=0; //去除TF0标志 TR0=1; //定时器0开始计时 ET0=1;}voidT

温馨提示

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

评论

0/150

提交评论