基于单片机的智能家居控制系统设计_第1页
基于单片机的智能家居控制系统设计_第2页
基于单片机的智能家居控制系统设计_第3页
基于单片机的智能家居控制系统设计_第4页
基于单片机的智能家居控制系统设计_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

基于单片机的智能家居控制系统设计基于单片机的智能家居控制系统设计摘要“智能家居控制系统”是以单片机为控制核心,通过红外遥控模块遥控单片机实现室温实时测量、时间日期显示、以及控制家庭用电器开关通断来实现家用电器自动控制的功能。其中温度测量是通过DS18B20芯片实现,日期时间是通过DS1302实现,家用电器开关通断是通过继电器实现,各项数据通过LCD1602液晶显示屏显示。该系统可以远程方便地控制家用电器的工作状况,既可以提升家居安全性、便利性、舒适性,又能实现环保节能的居住环境。是未来家电控制发展的主要趋势。本文首先针对课题背景设计了一套总体的系统框图与方案,然后根据系统框图将系统分为控制、红外、时钟、温度、继电器和显示六个模块。分别针对后五个模块进行电路介绍、原理分析及软件设计,并用控制模块将这五个模块整理、整合到一个系统中成为最终的智能家居控制系统。本课题借助Proteus软件进行电路仿真,Keil软件进行程序设计编译,使用STC-ISP软件将程序烧录至单片机中,最终成果是使用MX-51开发板,外加SRD-05VDC型号继电器实现的。最终成果现象为开机后液晶显示屏上显示当前日期、时间、环境温度以及当前工作的继电器编号,遥控器按“1”、“2”、“3”键分别控制继电器1、2、3的通断,按奇数次为通电,按偶数次为断电,继电器之间工作独立。关键词:STC89C52单片机;继电器;DS18B20;DS1302;红外模块;LCD1602基于单片机的智能家居控制系统设计全文共58页,当前为第1页。基于单片机的智能家居控制系统设计全文共58页,当前为第1页。AbstractThekernelcontrolofIHCS(IntelligentHomeControlSystem)isSTC89C52.Itcanmeasurethecurrenttemperature,calculateDateandTime,controlelectricalcomponents’switchingtorealizelong-distancedominatingtheelectricalcomponentsbyusingtheinfraredmodulecontrollingtheSTC89C52.CurrenttemperaturemeasuringisrealizedbyDS18B20,whiledateandtimedisplayingisrealizedbyDS1302.Electricalcomponents’switchingisdecidedbyelectromagneticrelay,whenalloftheinformationanddataisdisplayedbyLCD1602.Thesystemmayhavealong-distancecontrolofelectricalcomponents.Itnotonlywillimprovethesafety,convenience,comfortofourlivingcondition,butalsocanitsavetheenergytobeanenvironmentalfriendlylivingstyle.Itisthemaintendencyofthefutureelectricitycontrol.ItwasfirstlyintroducedinthisessaythattheIHCSblockdiagramandprogram.Itdividingthesystemintocontrollingmodule,infrared,timing,temperature,electromagneticrelayanddisplaymodule.Andintroducingthecircuit,analyzingthetheory,designingthesoftwareofthemexceptcontrollingmoduleonebyone.Afterthat,controllingmoduleconnectsthisfivemodulesintoasystem,thenbirthstheIHCS.Inthisessay,itprojectbackgroundoftheproductionandtheconceptandsenseofIHCS.Intheessay,itissimulatedbyProteus,theprogramisdesignedbyusingKeil,thelastbutnottheleastisthatitdownloadsthesoftwarebySTC-ISPintoMX-51developmentboardanddebugs.Thefinalresultiswhenitisstartingup,theLCD1602displaysthecurrenttimedate,time,environmenttemperatureandthecurrentworkingelectromagneticrelays’number.Theremotecontrolbutton’1’,’2’,’3’separatelycontrolsnumber’1’,’2’,’3’electromagneticrelay.Whenpushingoddtimes,theelectromagneticrelayconnects,whenpushingeventimes,theelectromagneticrelaybreaks.Differentelectromagneticrelaysworkseparately.Thekeywords:STC89C52singlechip;Electromagneticrelay;DS18B20;DS1302;analyzemodule;LCD1602基于单片机的智能家居控制系统设计全文共58页,当前为第2页。基于单片机的智能家居控制系统设计全文共58页,当前为第2页。目录第1章 绪论 11.1课题背景与意义 11.2智能家居控制系统的定义分析及应用价值 21.2.1智能家居控制系统的定义及分析 21.2.2应用价值的SWOT分析 21.3本文的主要工作和内容 31.3.1本文主要工作归纳 31.3.2本文内容分布 4第2章 智能家居控制系统的总体设计 12.1系统的总体设计及系统框图 12.2方案选择 12.2.1智能家居控制模块方案选择 12.2.2红外模块方案选择 12.2.3时钟模块方案选择 22.2.4温度模块方案选择 22.2.5电磁继电模块方案选择 22.2.6显示模块方案选择 22.3本章小结 3第3章 智能家居控制系统的硬件电路设计 43.1红外模块电路设计 43.2时钟模块电路设计 53.3温度模块电路设计 73.4电磁继电模块电路设计 93.5液晶模块电路设计 103.6本章小结 12第4章 智能家居控制系统的软件设计 134.1系统整体设计思想及主程序流程图 134.2程序子模块说明 154.2.1红外模块程序 154.2.2DS1302时钟模块程序 184.2.3DS18B20温度模块程序 21基于单片机的智能家居控制系统设计全文共58页,当前为第3页。4.2.4LCD1602液晶模块程序 23基于单片机的智能家居控制系统设计全文共58页,当前为第3页。4.3本章小结 24第5章 系统的方案实现与调试 265.1程序编写与仿真 265.1.1程序编写软件Keil 265.1.2仿真软件Proteus 265.1.3仿真结果 275.2程序下载 275.2.1程序下载软件 275.2.2程序下载过程 275.3调试结果 29结论 32附录 35基于单片机的智能家居控制系统设计全文共58页,当前为第4页。基于单片机的智能家居控制系统设计全文共58页,当前为第4页。基于单片机的智能家居控制系统设计第1章 绪论1.1课题背景与意义现今社会,物联网是新一代信息技术的重要组成部分,是继互联网的又一大社会趋势,也是“信息化”时代的重要发展阶段,而顾名思义,物联网其实就是物物相连的互联网[1]。无论是在生活、工作还是学习中,物联网都在为人类生活的安全、便捷、舒适做出奉献。而智能家居是物联网中不可或缺的一部分,智能家居是在互联网的影响下物联化的体现。智能家居作为物联网最典型的一个实例,利用物联网理论基础,将家居中的各种设备,如安防系统(智能门禁防盗)、光线系统(智能照明遮阳)、温控系统(智能空调电暖)、影音系统(智能电视音箱)、厨房系统(智能烹饪消毒)、卫生间系统(智能淋雨洗衣)、环境监测(智能数据)等连接到一起,提供防盗报警、环境监测、温度控制、远程软件家电控制、远程电话控制、红外遥控转发以及可编程定时控制等多种功能和手段。与当下普通家居相比,智能家居不但具有普通家居的传统居住功能[2],还兼有互联网通信、设备自动化、家电信号化等功能,为信息一体化提供一个全面的交互平台,一方面可以为用户节约很多消耗资金成本,另一方面可以节约能源,为保护环境做出不菲贡献。智能家居从最开始的照明控制、家用电器远程控制和窗帘电动控制到中期可以安防报警、家庭背景音乐、可视对讲等,可控制的设备越来越多,范围也越来越广。最初智能家居的定位是高端消费人群,认为只有比尔·盖茨这样的大亨才可以享受这样的产品,因为智能家居的价格是十分昂贵的,但随着涉及此领域的厂商越来越多,相关技术在不断竞争中已经十分成熟,人们对它的研究已经不局限于功能的实现,而是产品的体验以及不断完善。智能家居产品也在不断的更新换代中由高端奢侈品行业逐渐转化为个体化,个性化,集安全、便利、舒适于一身的高迭代速率物联网产品。自人们在1994年智能家居雏形初诞生以来至今一直被教育市场,到现在人们的生活对互联网的依赖,我们可以预见人们对此类产品消费的未来前景。在不久的将来,智能家居将会占领整个家居市场作为年轻人的时尚主流消费产品,这将是继智能手机智能电视的兴盛后又一互联网行业与传统行业的完美结合。基于单片机的智能家居控制系统设计全文共58页,当前为第5页。基于单片机的智能家居控制系统设计全文共58页,当前为第5页。1.2智能家居控制系统的定义分析及应用价值1.2.1智能家居控制系统的定义及分析智能家居控制系统(简称SCS,smarthomecontrolsystems),是以智能家居系统作为交互平台,家用电器、设备等需人工调整的功能性家居作为主要控制的对象,利用安全防范技术、综合布线技术、网络通信技术、音视频技术、自动控制等技术将与家居生活相关的设备进行高效集成,构建方便快捷效率高的住宅设施与日常生活事务的控制管理系统,对于提升家居的智能、安全、便利、舒适方面有着杰出贡献,并实现环保控制系统平台[3]。智能家居控制系统是智能家居的核心,是智能家居控制模块功能实现的基础。由于国际上并无对智能家居特定的技术与协议,不同智能家居公司研发的技术与协议并不相同,智能家居系统中最不可或缺的技术是安全防范技术,在自家住宅中安装家庭防盗、防煤气或防火防电泄漏报警、家庭监控、公寓门禁处安装可视对讲、封闭小区采用一卡通等形式在此等领域均有广泛应用。综合布线方式是大多智能家居研发公司普遍采用的手段,也有少数系统可能并不是采用综合布线的技术[4],例如电力载波等无需布线的设施,无论采用什么传输方法,都会有与之对应的网络通信技术来实现该信号传输及转化处理,因此网络通信技术是维系智能家居信号传输的纽带,是信息交互中最关键的技术之一[4]。音视频技术是在互联网技术盛行的现今时代必不可少的一项功能,在小米、乐视、优酷等互联网运营商不断推出一代又一代新兴网络电视,音视频技术这类精神消费的娱乐项目更是每个家庭必不可少的产品。智能家居又称作智能住宅,它是集自控系统、计算机网络系统和网络通信技术于一体的网络智能家居控制系统[5]。自控技术主要用于智能家居的控制中心、家居设备自动控制模块中,对于家庭能源的节约以及家用电器的日常管理、延长用电器使用寿命都有十分重要的作用。智能家居将让用户对于家庭设备的管理更方便简洁,简单来说,如果有红外遥控器、电话操作或语音识别控制家用电器[3],又或者在手机上安装一个家庭监测软件可以直接控制家庭用电器的控制中心(例如手机发射信号家庭控制中心接收信号并控制用电器工作),即可对设备进行远程操控;另外,智能家居内的各种设备之间也可以进行信号交互,无需用户亲自操作,只需识别某一设备发出的信号即可控制另一设备的运作,以最便捷的方式给用户带来最高效、最便利的体验,以达到舒适与安全的效果。1.2.2应用价值的SWOT分析(1)优势(Strengths):基于单片机的智能家居控制系统设计全文共58页,当前为第6页。智能家居是基于传统家居结合互联网的物联网产物,相比传统家居有更智能、更安全、更便利、更舒适的优势;基于单片机的智能家居控制系统设计全文共58页,当前为第6页。今后的消费主流人群为年轻人,而智能家居更是适合年轻人使用的便捷产品,与年轻人较快的生活节奏相符。(2)缺点(Weakness):如今智能家居的发展才刚刚有所起步,并无很多厂商对它进行研发,也就导致技术不成熟,可能在成品真正运用到生活中不是很顺利,会有很多bug;对于中老年人来说,智能家居可能反而会给他们原本安稳的生活带来麻烦,他们会很难接受这种新事物;智能家居目前的价格还是十分昂贵的,目前普通大众仅限于使用低端智能家居,如智能灯光音响等,而高端智能家居如远程控制、防盗系统等的价格十分昂贵。(3)机遇(Opportunity):智能家居是物联网的其中一种,凌驾于互联网之上的新兴产业,目前涉及此领域的商家还不多,技术发展及完善空间非常大,前景十分广阔;随着时间的推移,懂得技术、快节奏生活的年龄层会逐渐增加,智能家居最终有可能占领、吞并整个家居市场,就像当年360抢占杀毒软件市场,小米手机抢占千元机市场一样,让传统独立的家居成为历史书上的内容。(4)挑战(Threats):“智能”无限好,只是价太高,如何做到缩小成本并能像当年的雷军周鸿祎一样站出来以卖服务为核心而不是卖产品,让人人都能体验到智能的乐趣,对厂商来说是个挑战;智能家居“华而不实”,很多人虽然买了但是不会用,教育市场并将用户教会这是个很大的挑战;黑客觊觎安全隐患多,还是需要一个发展阶段,智能家居产品需要固件软件不断更新才可以维持稳定发展,当产品运营完善到一定程度,能觊觎它的黑客自然没有能力破坏它的稳定性;缺乏标准,产品鱼龙混杂,需要国际化规范一下产品的各项指标,否则既能做安防保险,又同时可能存在安全隐患,同时也会有很多国外大牌产品“水土不服”;二次装修“智能化”要伤筋动骨,如何用最简捷方式进行升级是个很值得探讨的课题。1.3本文的主要工作和内容基于单片机的智能家居控制系统设计全文共58页,当前为第7页。1.3.1本文主要工作归纳基于单片机的智能家居控制系统设计全文共58页,当前为第7页。(1)通过观察现有智能家居简单设计一款小型智能家居控制系统;(2)确定研究方向后查阅资料,搜索网上资源,学习Proteus,Keil等工具的用法,动手制作这款小型智能家居控制系统;(3)通过小型智能家居控制系统了解产品的主要工作原理以及用技术和需求分析未来可能的发展方向趋势。1.3.2本文内容分布第1章主要介绍了智能家居控制系统的选题背景和应用价值,介绍了本文的主要工作和内容。第2章主要介绍了智能家居控制系统的整体设计思想,所分的六个模块以及每个模块的方案选择。第3章主要是分模块地介绍了智能家居控制系统的硬件基本结构,采用模块化的方式使电路分析起来更有条理,方便易懂。第4章主要是沿用硬件电路分析方法,分模块地介绍了本智能家居控制系统的软件程序结构,先将负责不同职能的各个软件模块通过主程序框图划分出来,然后逐一列程序框图介绍不同的模块的程序,最后再用主程序贯穿整个系统。基于单片机的智能家居控制系统设计全文共58页,当前为第8页。第5章主要介绍了实现本课题的几个软件以及各个软件输出的结果,最后描述了制作出的成品调试现象。基于单片机的智能家居控制系统设计全文共58页,当前为第8页。第2章 智能家居控制系统的总体设计2.1系统的总体设计及系统框图智能家居控制系统用到的是以下几个模块:①智能家居控制系统控制模块②红外模块③时钟模块④温度模块⑤电磁继电模块(外接)⑥显示模块红外控制模块智能家居控制系统控制模块时钟模块温度模块红外控制模块智能家居控制系统控制模块时钟模块温度模块电磁继电模块显示模块图2.1智能家居控制系统框图2.2方案选择2.2.1智能家居控制模块方案选择智能家居控制模块使用的是单片机控制,本课题使用的芯片是51系列芯片中的STC89C52RC,在STC89C51单片机的基础上多一个定时器;单片机的存储器RAM由128位增加到256位;ROM多了4k;中断多2个;增加一个看门狗;掉电、数据指针等方面也有改进。52单片机的最高外接晶振在24MHz的51单片机基础上扩增为33MHz。2.2.2红外模块方案选择基于单片机的智能家居控制系统设计全文共58页,当前为第9页。常见的适用于红外模块的芯片有TC6122D、BC7210A、PT2262、TC9012等,本课题使用的是功能适宜,较为常见,价格又便宜的TC9012。基于单片机的智能家居控制系统设计全文共58页,当前为第9页。2.2.3时钟模块方案选择可以使用自带电池的12C887芯片或控制起来相对简单的DS1302芯片。前者主要是时间可以一次设置成型,不必反复修改程序,因为有电池在关机时让芯片自动计时;后者需要持续的供电,若中间断电则再次通电开机需要重置时间,由于使用的MX-51开发板DS1302芯片是既有的,且我们只需要将所设计的智能家居系统的时间显示模块表达出即可。DS1302芯片是在DS1202芯片的基础上增加了双电源管脚、七字节存储器的特性。双电源管脚一方面用于主电源供电、另一方面用于备用电源供电,是可编程的涓流充电电源。在电话传真、便携式电池供电的时间日期显示设备(仪器仪表等)领域运用广泛。DS1302芯片与DS1202芯片功能对比如表2.1:表2.1DS1302与DS1202芯片功能对比优势及特点1.DS1302芯片在DS1202芯片的基础上,供电电源部分有可选择的涓流充电能力2.双电源管用于主电源和备份电源供应3.备份电源管脚可由电池或大容量电容输入4.附加的7字节暂存存储器(RAM)2.2.4温度模块方案选择温度传感器的种类繁多,例如DS18B20、TMP35、DS1620等。本次智能家居系统设计使用的是DS18B20温度传感器。DS1620与DS18B20的区别是可以脱离单片机或电脑自行温度控制,本课题的核心在于单片机控制,因此DS1620的功能不予考虑。DS18B20芯片体积很小,随之的硬件开消也很小,硬件结构简单。每次读取温度前都需要经过复杂精准的时序处理,读出的数据是直接的温度值不是模拟量,因而抗外届干扰能力很强,精度高。使用这个芯片对于智能家居系统的设计方便、合理。况且,我们将硬件成本转化为软件成本,节约了资源。2.2.5电磁继电模块方案选择本课题使用的是较为常见的SRD-05VDC型号电磁继电器,它有四路继电器,可扩展,每个继电器电路分别配有一个显示电路通断的指示灯,方便观测。2.2.6显示模块方案选择基于单片机的智能家居控制系统设计全文共58页,当前为第10页。显示屏可以选用LED液晶显示屏例如74HC245D,也可以选用LCD液晶显示屏例如LCD1602。但由于数码管显示的不稳定性以及本课题的功能如果实现起来所需的数码管数量很多,占用空间很大,所以采用LCD1602液晶显示屏。LCD1602是字符型液晶显示屏,显示字母和数字都很方便,控制简单,成本也很低。基于单片机的智能家居控制系统设计全文共58页,当前为第10页。2.3本章小结基于单片机的智能家居控制系统设计全文共58页,当前为第11页。综合本章2.1、2.2的描述,电路的元器件最终采用MX-51开发板,开发板的各模块元器件均为以上所述的控制芯片STC89C52、红外模块TC9012芯片、时钟模块DS1302芯片、温度模块DS18B20芯片、电磁继电模块SRD-05VDC芯片、显示模块LCD1602芯片。基于单片机的智能家居控制系统设计全文共58页,当前为第11页。第3章 智能家居控制系统的硬件电路设计3.1红外模块电路设计遥控器在家庭生活中用途十分广泛,电视机、空调等,而遥控器的购买也是比较方便,价格也在大多数人都可以接受的范围内。所以如果可以将遥控器的按键解码作为单片机系统的输入,一方面可以解决矩阵键盘布线复杂电路板体积过大占用I/O口过多的问题,另一方面也可以使智能家居的远程控制理论不只是纸上谈兵。该智能家居控制系统使用的是TC9012编码芯片的遥控器,遥控器中的发射器和接收器均使用开发板中已有的红外模块,需要解决的问题是接收器接收到的信号如何解码并作为单片机的输入。接收信号部分使用一体化红外接收头,它将解调、放大、整形以及红外接收二极管电路集合到一起,三个引脚分别为+5V电源、接地、信号输出引脚。一体化接收头的实物如图3.1所示,红外接收头输出的信号接到单片机的INT0或INT1脚[6],如图3.2所示,也可以在输出端接入一个PNP型三极管以放大输出信号。图3.1一体化接收头图3.2红外遥控接收电路基于单片机的智能家居控制系统设计全文共58页,当前为第12页。如图3.3所示,红外接收解码码形是由引导码、两部分地址码、数据码以及数据反码组成的[7],只要按照一定的算法将接收到的码形按不同码类分开,就可以轻松解码。基于单片机的智能家居控制系统设计全文共58页,当前为第12页。图3.3红外遥控接收解码码形当遥控无按键时,红外发射二极管无信号发出,一体化接收头给单片机输入信号为1;有按键时,0和1编码的高电平经遥控头倒相后会输出信号0,使单片机产生下降沿中断,同时,使用定时器开始计时[6]。当下一个脉冲到来时单片机会再次产生中断,此时将计时值取出并重置使之再次计时。接收信号通过判断两次中断的时间间隔,引导码、0、1的时间间隔有所不同。具体如表3.1所示:表3.1计时值与码形对应表计时值(ms)码形9引导码1.12编码02.25编码1由于晶振参数、发射接收时间的误差等原因,计时值应考虑误差值。以TC9012遥控器接收部分的编码为例,解码方法为:(1)假设下降沿触发外部中断(0/1),16位定时器(0/1),初始值设为零。(2)遥控器控制单片机触发第一次中断时开始计时。(3)当遥控器控制单片机触发第二次中断时,停止计时,保存计时值,然后重新计时[8]。若计时值与前导码时间相等,设置前导码标志,准备接收下一帧的遥控数据;若计时值与前导码值不相等,但之前收到了前导码,那么判断遥控数据是0或1即可[8]。(4)接收之后的数据码、地址码、数据反码。(5)如果接收的数据为32位,则已经接收完一帧数据。这时可以将定时器停止计时,且判定此次是否为有效接收,若两次有相同的地址码且都与本系统地址相同,数据反码与数据码的和为0FFH,则本次接收的这一帧数据码为有效数据码[8]。反之为无效数据,可以丢弃。(6)接收信号完毕后初始化数据,为下次接收遥控信号做准备[6]。3.2时钟模块电路设计基于单片机的智能家居控制系统设计全文共58页,当前为第13页。时钟模块相对比较容易,本系统的时间模块主要是以DS1302芯片为核心,芯片内有实时时钟/日历,通过一个31个字节的静态RAM与单片机互通数据通信,其中年、月、日、时、分、秒等各种时间信息由芯片内的实时时钟/日历电路提供[9],闰年的天数变化以及不同月份的天数变化均可通过芯片自行调整,在程序里通过设置AM或PM的指令来控制12或24小时制输出数据。DS1302芯片有三个引脚,一个RES复位引脚接到单片机的P2.7引脚、一个I/O数据线引脚接到单片机的P2.5引脚、一个是SCLK(串行时钟)引脚接到单片机的P2.4引脚,通过这三个引脚与单片机进行同步串行的通信方式。DS1302芯片工作时功率消耗很低,保持数据和时钟信息时功率小于1mW。基于单片机的智能家居控制系统设计全文共58页,当前为第13页。DS1302的管脚排列及描述如图3.4所示:图3.4DS1302芯片管脚排列及描述DS1302主要性能如表3.2所示:表3.2DS1302主要性能1.DS1302时钟芯片可计算2100年以前的年、月、日、周、时、分、秒等功能,可以自动调整不同月份的时间以及闰年时间的长度[10]2.31*8位缓存RAM3.串行I/O口传输数据,有最少管脚数量4.工作电压范围为2.0V-5.5V,范围广5.当工作电压<2.0V时,工作电流<3.0nA6.读(写)时钟、RAM缓存数据时,可使用两种方式传输字符组:单字节传输、多字节传输7.八引脚的DIP封装或可选性八引脚SOIC封装(根据表面装配)8.简单的3线接口9.电源电压VCC为5V,与TTL兼容10.可选择的工业级温度范围为-40℃-+85℃11.与DS1202芯片的兼容性较好基于单片机的智能家居控制系统设计全文共58页,当前为第14页。基于单片机的智能家居控制系统设计全文共58页,当前为第14页。DS1302芯片控制的时钟电路图3.5所示:图3.5DS1302芯片控制时钟电路3.3温度模块电路设计本课题使用的温度传感器芯片为DS18B20,主要特征如表3.3所示:表3.3DS18B20主要特征1.全数字温度转换及输出2.先进的单总线数据通信3.分辨率为最高12位,±0.5℃的精度4.分辨率达到最高(12位)时,最大工作周期为750ms[11]5.有可选择的寄生工作方式6.温度检测的范围为-55℃-+125℃(-67℉-+257℉)7.内置EEPROM,有温度限制报警的功能8.64位光刻ROM,出厂时内置产品序列号,方便多机挂接[11]9.封装形式多样化,适用于不同的硬件系统[11]DS18B20有四个引脚分别为:GND接地引脚;DQ单数据总线引脚;VCC电供电引脚;NC空引脚。DS18B20的工作原理与流程:DS18B20的工作周期有两部分工作,一个是温度检测,另一个是数据处理。由于温度检测与数据输出均集成于该芯片,则该芯片的抗干扰能力很强[11]。DS18B20的内部存储器资源分为三种形态:ROM只读存储器、RAM数据暂存器、EEPROM非易失性记忆体[12]。ROM只读存储器:用于储存DS18B20ID编码,该芯片的只读存储器共有64位,前8位为单线系列编码,中间48位为每个芯片唯一的序列号,最后8位为前五十六位的冗余校验码(CRC码)。只读存储器数据为出厂自动设置,不可用户更改[11]。基于单片机的智能家居控制系统设计全文共58页,当前为第15页。RAM数据暂存器:用于存取数据以及内部计算,只保留当次断电前数据,断电后消失[11]。该芯片的数据暂存器共有9个字节,每个字节有8位。具体功能如表3.4所示:基于单片机的智能家居控制系统设计全文共58页,当前为第15页。表3.4DS18B20的RAM不同字节功能对照表字节功能1、2温度转换后数据值信息3、4用户EEPROM(常用于温度报警值储存)的镜像,复位刷新[11]5第3个EEPROM的镜像6、7、8计数寄存器,更高温度分辨率,内部温度转换、计算的暂存单元[11]9前8字节的CRC码EEPROM非易失性记忆体:由于它硬件上的特性,常用于存放需长期保存的数据,温度上下限警告值以及校验数据[11]。该芯片的非易失性记忆体共有3位,并且均在RAM中存有镜像数据,方便用户操作[12]。单片机对DS18B20的控制流程:(1)复位:使用该DS18B20测温度功能前需对芯片进行复位,即由单片机给芯片的单总线提供不少于480us的低电平信号。若芯片接收到复位信号则在15—60us后回复一个“存在脉冲”证明芯片连接无恙[13]。(2)存在脉冲:复位后,单片机将数据单总线拉高来接收“存在脉冲”,“存在脉冲”是一个69—240us的低电平信号。此时双方协议已达成[13]。(3)单片机发送ROM指令:共有五条ROM指令,分别为:读ROM指令、指定匹配芯片指令、跳跃ROM指令、芯片搜索指令、报警芯片搜索指令。一个工作周期只可以发一条指令,每条指令长度为八位,操作片内64位光刻ROM。因为每个器件的ID不同,所以单总线可以同时挂接多个器件,若只挂接单个DS18B20芯片可用“跳跃ROM指令”[13]。(4)单片机发送RAM操作指令:RAM操作指令的发送在ROM指令之后,操作指令共有六条,每条指令长度为八位。操作指令分别为:写RAM数据指令、读RAM数据指令、复制RAM数据到EEPROM指令、温度转换指令、复制EEPROM报警值到RAM指令、切换工作方式指令。RAM操作指令是芯片控制的关键[13]。基于单片机的智能家居控制系统设计全文共58页,当前为第16页。(5)执行或数据读写:RAM操作指令之后跟的是RAM操作指令对应的数据读写或执行的指令。本课题中的温度转换指令后接的就是DS18B20的执行指令,延长转换时间到500us,执行完毕后进行下一步工作;而数据读写指令是根据芯片具体的读写时序操作的。读数据分为两个工作周期,第一周期控制的内容有:复位、“跳跃ROM指令”、执行读RAM操作指令、读具体数据(2-9字节,中途可停止)[13]。基于单片机的智能家居控制系统设计全文共58页,当前为第16页。DS18B20与系统连接电路图如图3.6所示:图3.6DS18B20温度传感器模块电路3.4电磁继电模块电路设计智能家居中,将家用电器连接在电磁继电器上,中心控制系统通过控制电磁继电器的通断来控制家用电器的工作。本设计使用的是SRD-05VDC型号电磁继电器,具体电路如图3.7所示。该继电器共有五个引脚,1、4引脚为线圈引脚,5(BT)引脚为公共端、2引脚为常开端、3引脚为常闭端。相当于一个单刀双掷开关,当1、4线圈不通电时,5(BT)与3闭合,5(BT)与2断开[14];当1、4线圈通电时,线圈吸合衔铁,5(BT)与3断开,5(BT)与2闭合。本设计中使用三个继电器来代表用电器的使用情况,分别连接在单片机的P1.0、P1.1、P1.2端口,使用遥控器的三个按键,分别控制单片机的三个端口,按其中一个键第一次,继电器开关闭合,按第二次,继电器开关断开,三个端口独立控制,互不影响。基于单片机的智能家居控制系统设计全文共58页,当前为第17页。图3.7电磁继电模块电路基于单片机的智能家居控制系统设计全文共58页,当前为第17页。3.5液晶模块电路设计当所有功能实现的部件都已就绪时,我们现在就需要一个能够把时间、温度以及工作继电器等参数显示的组件,即显示模块电路。表3.5为液晶模块显示的基本特性:表3.5液晶模块显示的基本特性表项目特性额定电压5V直流电源电压,功率消耗低、使用寿命长、可靠性高内置字符共192种:160个5*7点阵字符,32个5*10点阵字符RAM64个字节的自定义字符RAM:可自定义的8个5*8点阵字符或4个5*11点阵字符显示方式STN、半透、正显驱动方式1/16DUTY,1/5BIAS视角方向6点背光方式底部LED通讯方式4位或8位并口可选接口标准的接口特性,适配MC51单片机和M6800系列MPU操作时序液晶模块显示特性:(1)液晶显示模块的通讯方式为4位或8位MPU(微处理器,本课设用到的为MC51单片机)可选并联接口。E为使能端,控制接口,若使用双屏或多屏显示,每屏均有独立的使能信号E控制显示部分的结构;BF为状态标志位,表示模块内部工作状态,当MPU(微处理器)访问液晶模块时,首先判断BF状态标志位;在电源VDD=+5V时,模块与MPU(微处理器)通信速度可达2MHZ;(2)液晶显示屏幕为5*8点阵或5*7点阵、带光标结构的字符显示模式,可在编写程序时设置;(3)在液晶模块与单片机互通数据时,需将收到但未显示的数据赞存起来,显示数据缓存器DDRAM就起到了这个作用;本模块还有字符发生器CGRAM和字符发生器ROM,字符发生器CGRAM可存储至多8个5*8点阵的自定义图形字符字模数据;(4)每一字符在本模块LCD屏显位置与该字符的字符代码在DDRAM内存储地址相对应;基于单片机的智能家居控制系统设计全文共58页,当前为第18页。(5)液晶模块的占空比周期可通过编写程序设置,选择参数为:带光标单行5*8点阵字符显示,1/8;带光标单行5*10点阵字符显示,1/11;带光标双行5*8点阵字符显示,1/16;由于显示内容限制,本课程设计采用的是带光标双行5*8点阵字符显示(1/16)的占空比[16]。基于单片机的智能家居控制系统设计全文共58页,当前为第18页。(6)液晶模块的指令功能比较丰富全面:清屏;显示开/关;显示移位;光标开/关;光标移位;光标回到原点;字符闪烁等。通过后期程序编写,可个性化设置屏显样式。(7)自动初始化功能:当外加电压≥+4.5V时,本模块自动复位,即恢复默认显示工作状态[16];(8)液晶模块的设计采用低功率消耗的CMOS设计。需要构成显示模块的部件主要由以下几部分构成:LCD液晶显示屏、列驱动器、片内控制器、偏压产生电路,具体电路如图3.8所示。图3.8通用1602液晶显示屏电路连接图LCD显示屏:本课设使用的是通用1602液晶显示屏,该显示屏为COMMON与SEGMENT交叉形成的点阵,使用5*8点阵的字符显示结构,根据所显示的数据需求(时间、温度、继电器名称),选择单屏、2行显示数据。列驱动器:列驱动器是与控制器配合使用的。列驱动器接收单片机发出的串行、帧同步输出的数据,振荡、锁存、移位脉冲,产生出列SEGMENT交流扫描驱动信号。基于单片机的智能家居控制系统设计全文共58页,当前为第19页。控制器:接收来自单片机的命令和数据,控制模块的运作。本模块用到的部分有与单片机和列驱动器的I/O接口,CGROM、CGRAM、DDRAM等字符存储(缓存)器,译码机制,地址计数器,命令寄存器等部分组成。在单片机的控制下,显示模块的数据总线DB0-DB7与单片机互通数据的接口分别为P0.0-P0.7,另外E、R/W、RS三个输入控制端也分别对应单片机的接口,并按照既定的时序结构运作,使显示模块的数据总线接收到来自单片机的命令数据,找到CGROM中对应显示的字符码,将字符码送到DDRAM,之后就可将来自单片机命令数据转化为我们想看到的数据显示在LCD显示屏上。控制器可将单片机给的字符显示、闪烁、移位等显示效果展示出来。控制器电路的组成为IR(指令寄存器)、DR(数据寄存器)、BF(忙标志)、AC(地址计数器)、DDRAM(显示数据缓存器)、字符发生器CGRAM、字符发生器ROM、时序发生电路等。基于单片机的智能家居控制系统设计全文共58页,当前为第19页。3.6本章小结本章主要分模块描述了智能家居系统中硬件电路的设计思想。分别从红外远程控制模块、时间模块、温度测量模块、液晶显示模块以及电磁继电器模块的角度对硬件电路的布线、接口、控制流程、工作时序、各个芯片的特征、芯片对比效果以及信息传递的码形等方面进行了一系列阐释。基于单片机的智能家居控制系统设计全文共58页,当前为第20页。本设计用到的芯片有STC89C52、DS18B20、DS1302、TC1912、LCD1602等。从芯片角度出发,将各个模块的职能划分到一起,有助于后面软件编写的条理性和逻辑性。基于单片机的智能家居控制系统设计全文共58页,当前为第20页。第4章 智能家居控制系统的软件设计4.1系统整体设计思想及主程序流程图第二章中详细地、分模块化地阐述了智能家居控制系统的硬件电路的设计思想,以及每个模块分别的电路图和最终的电路图的整合。如果说智能家居的硬件设计是一个人的身体各个器官,那么智能家居的软件设计就是这个人的大脑、灵魂,身体构造及各部分职能梳理完毕后,智能家居的软件设计就显得尤为重要。软件设计是一个系统的核心,它具有复杂性强、灵活性高的特点,既有利也有弊。复杂性强是因为它需要设计者有很强的逻辑思维能力,能够将软硬件工作的每一步都梳理得非常有条理,才可以让一个系统运作起来;灵活性高表达了它的一切判断准则、限定条件、功能效果等都是可以通过软件来修改的,一个硬件系统如果经过100个人的思维逻辑编写软件系统,可能会实现100种不同的功能现象,如果规定好功能现象,一个硬件系统经过100个人编写软件系统,可能有100种编法,这就是软件系统设计的灵活性。对于智能家居而言,“智能”二字的表达还是需要软件设计才能实现。软件的设计理念可以效仿硬件电路的设计,采用分模块的方法,各个芯片作为一个模块,分别将其功能整理、编写成子程序并调试,每个模块调试成功后,再用一个整合的程序(主程序)将其逻辑性地连接、组合、调用,最终构成系统的软件。这样写出的软件职能明确,有利于在调试出问题时及时找到问题所在的模块,便于优化子程序的代码,对调试、维护升级和协作管理等后续工作有很大的帮助。智能家居控制系统的软件设计分为以下几部分:(1)红外模块软件设计;(2)温度模块软件设计;(3)时间模块软件设计;(4)液晶模块软件设计;红外模块软件设计主要是用于人与物联网交流输入端的接收控制,人机接口的功能是它主要的职能。它将所有电磁继电器相关单片机的I/O口能实现的功能,全部通过程序编写,转换为红外遥控器控制,通过不同波段的遥控器频道发射信号来控制对应的与单片机相连的红外接收芯片,再通过单片机中的一系列算法控制电磁继电器的工作。红外信号接收芯片是利用程序不停地扫描遥控信号实现的。基于单片机的智能家居控制系统设计全文共58页,当前为第21页。温度模块软件设计主要是用于底层驱动温度传感器DS18B20的程序,将DS18B20对环境监测得到的温度数据的输出,对应地转化为带有一位小数点的二进制数据,方便之后与液晶模块的对接,显示及其他部分的调用。基于单片机的智能家居控制系统设计全文共58页,当前为第21页。时间模块软件设计主要是用于底层驱动DS1302的程序,将在DS1302的时钟数据输出,并对应地转换为二进制数据方便之后与液晶模块的对接,显示及其他部分的调用。液晶模块软件设计主要是用于底层驱动LCD1602的操作过程以及当前状态的程序,一方面可以显示控制过程中的每个状态;另一方面,可以通过内部的符号表协议,将从单片机接收到的二进制数据转化为液晶屏显示的对应字符,让人方便、直观地看到各个芯片在单片机中的工作情况以及输出数据。开机时所有模块芯片均初始化,等待工作命令,当定时器0产生中断时,分别读取温度、时间、红外数值,并将对应字符通过LCD1602液晶显示屏显示在已经设置好命令的位置。开机STC89C51初始化DS1302开机STC89C51初始化DS1302初始化DS18B20初始化LCD1602初始化TC9012初始化定时器0是否产生中断NY读时间数值读温度数值读红外数值显示图4.1主程序框图基于单片机的智能家居控制系统设计全文共58页,当前为第22页。基于单片机的智能家居控制系统设计全文共58页,当前为第22页。4.2程序子模块说明4.2.1红外模块程序初始化TC9012芯片开始初始化TC9012芯片开始遥控器按键扫描遥控器是否有按键信号识别所按键的编号,发送对应频率红外信号是否接收到红外信号红外接收芯片扫描NNYY给单片机发送信号,使单片机控制继电器和液晶显示模块图4.2红外模块程序框图基于单片机的智能家居控制系统设计全文共58页,当前为第23页。当主程序将智能家居系统进行初始化之后,继电器模块、显示模块均处于随时待命可正常工作的状态。在此系统中,红外模块分为发射电路及接收电路,程序主要由主程序和两个子程序构成,分别是外部中断0子程序和外部中断1子程序。主程序除了初始化整个系统外,还可以随时调用中断子程序,外部中断0服务子程序的职能主要是不断取反P3.2,以便随时给红外发射电路提供驱动脉冲。外部中断1服务子程序主要将红外信号的传播时间计数。基于单片机的智能家居控制系统设计全文共58页,当前为第23页。由于代码所占篇幅很长,只针对几个重点部分进行阐述。当遥控无按键时,红外发射二极管无信号发出,一体化接收头给单片机输入信号为1;有按键时,O和1编码的高电平经遥控头倒相后会输出信号O,使单片机产生下降沿中断,同时,使用定时器开始计时。开启外部中断0服务子程序,等待红外准备就绪的程序代码如下:voidex0_isr(void)interrupt0using0//外部中断0服务函数{ staticunsignedchari; staticbitstartflag; if(startflag) { if(irtime<63&&irtime>=33)//引导码TC9012的头码 i=0; irdata[i]=irtime; irtime=0; i++; if(i==33) { irok=1;//红外准备就绪 i=0; } } else{irtime=0;startflag=1;}}voidTIM0init(void)//定时器0初始化{ TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值 TH0=0x00;//reloadvalue TL0=0x00;//initialvalue ET0=1;//开中断 TR0=1;基于单片机的智能家居控制系统设计全文共58页,当前为第24页。}基于单片机的智能家居控制系统设计全文共58页,当前为第24页。红外接收码的码形由引导码、地址码、数据码、数据反码等构成,解码规则在第2章2.1节已经阐述过,具体处理接收码码形的代码编写如下:voidIrcordpro(void)//红外码值处理函数{ unsignedchari,j,k; unsignedcharcord,value; k=1; for(i=0;i<4;i++)//处理4个字节 { for(j=1;j<=8;j++)//处理1个字节8位 { cord=irdata[k]; if(cord>7){value=value|0x80;}//大于某值为1 else{value=value;} if(j<8){value=value>>1;} k++; } IRcord[i]=value; value=0; } irpro_ok=1;//处理完毕标志位置}红外遥控器的具体操作设置为,(本设计只接入三个继电器)三个继电器的工作互相独立。当按下按键“1”时,继电器0闭合产生通路,再次按下“1”时,继电器0电路断开;当按下按键“2”时,继电器1闭合产生通路,再次按下“2”时,继电器1电路断开;当按下按键“3”时,继电器2闭合产生通路,再次按下“3”时,继电器2电路断开。以下为实现该段功能的程序代码:voidIr_work(void)//红外键值散转程序,继电器执行语句也在此处{ irpro_ok=0; KeyValue[0]=Tab[IRcord[2]%16];//数据码 write_table(4,1,KeyValue);//显示键值 if(KeyValue[0]=='0'){JDQ0=~JDQ0;}//按遥控'1'一下,第0个继电器开,再按一下'1',继电器0关基于单片机的智能家居控制系统设计全文共58页,当前为第25页。 elseif(KeyValue[0]=='1'){JDQ1=~JDQ1;}//按遥控'2'一下,继电器1开,再按一下'2',继电器1关基于单片机的智能家居控制系统设计全文共58页,当前为第25页。 elseif(KeyValue[0]=='2'){JDQ2=~JDQ2;}//按遥控'3'一下,继电器2开,再按一下'3',继电器2关}4.2.2DS1302时钟模块程序本课设中,时间模块主要的功能是显示当前实时时间,需要进入计算的内容有:年、月、日、时、分、秒、周。下面针对时钟模块的程序进行逐一分析。开始初始化DS1302芯片使DS1302开始初始化DS1302芯片使DS1302不具备写保护复位端产生一个高电平写DS1302地址延时一段时间向该地址写数据地址增加数据是否写完写DS1302地址延时一段时间将该地址的数据读出地址增加数据是否读完单片机控制液晶模块显示数据复位端产生一个高电平NYYN基于单片机的智能家居控制系统设计全文共58页,当前为第26页。图4.3DS1302时钟模块程序框图基于单片机的智能家居控制系统设计全文共58页,当前为第26页。该模块的程序分为:DS1302初始化,向DS1302写一字节数据,从DS1302读一字节数据,向DS1302写入时钟数据,从DS1302读出时钟数据几个程序模块。RST信号是控制DS1302芯片工作的主要信号,置高位“1”有效,置零无效。DS1302与单片机互通数据的方式为串行输入,串行输出。写一个字节和读一个字节的时序不同。写一个字节是上升沿有效,读一个字节是是先上升沿后下降沿有效。写一个字节的程序为:voidDs1302_Write_Byte(unsignedcharaddr,unsignedchard){ unsignedchari; RST_SET; //写入目标地址:addr addr=addr&0xFE;//最低位置零 for(i=0;i<8;i++) { if(addr&0x01) {IO_SET;} else{IO_CLR;} SCK_SET; SCK_CLR; addr=addr>>1; }//写入数据:d for(i=0;i<8;i++) { if(d&0x01) {IO_SET;} else{IO_CLR;} SCK_SET; SCK_CLR; d=d>>1; } RST_CLR; //停止DS1302总线}读一个字节的程序为:unsignedcharDs1302_Read_Byte(unsignedcharaddr){基于单片机的智能家居控制系统设计全文共58页,当前为第27页。 unsignedchari;基于单片机的智能家居控制系统设计全文共58页,当前为第27页。 unsignedchartemp; RST_SET; //写入目标地址:addr addr=addr|0x01;//最低位置高 for(i=0;i<8;i++) { if(addr&0x01) {IO_SET;} else {IO_CLR;} SCK_SET; SCK_CLR; addr=addr>>1; }//输出数据:temp for(i=0;i<8;i++) { temp=temp>>1; if(IO_R) {temp|=0x80;} else {temp&=0x7F;} SCK_SET; SCK_CLR; } RST_CLR; //停止DS1302总线 _nop_(); //以下为DS1302复位的稳定时间 RST=0; SCK=0; _nop_(); SCK=1; _nop_(); SDA=0; _nop_(); SDA=1; _nop_(); returntemp;}(1)秒寄存器的相关功能:地址字节0x80基于单片机的智能家居控制系统设计全文共58页,当前为第28页。秒寄存器的功能除了记录“秒”这个数据之外,还有控制DS1302时钟开关的功能,即晶振工作的开始与停止。该寄存器第七位CH,写“1”时芯片停止工作,时间保留到最后一次计时,写“0”时芯片开始工作,时间从上一次暂停位置继续计时。秒寄存器是一个八位寄存器,bit4-bit6(高四位除bit7)记录秒钟的十位,bit0-bit3(低四位)记录秒钟的个位。秒针十进制最多59,转换成十六进制0x3B,用不到最高位。但初始化秒寄存器时,bit7又会自动变成0,即CH写“0”,芯片开始工作。基于单片机的智能家居控制系统设计全文共58页,当前为第28页。(2)分寄存器的相关功能:地址字节0x82与秒寄存器相似,有八位寄存器,高四位记录分钟的十位(除bit7),低四位记录分钟的个位。(3)时寄存器的相关功能:地址字节0x83有八位寄存器,第五、六位(bit4、bit5)记录时钟的十位,低四位记录时钟个位。时钟寄存器的最高位bit7决定小时制:CH=“1”是12小时制,CH=“0”是24小时制。因为初始化时钟寄存器时bit7会自动变为0,所以默认为24小时制。(4)日寄存器的相关功能:地址字节0x86有八位寄存器,第五、六位(bit4、bit5)记录十位,低四位记录个位。(5)月寄存器的相关功能:地址字节:0x88有八位寄存器,第五位(bit4)记录十位,低四位记录个位。(6)周寄存器的相关功能:地址字节:0x8A有八位寄存器,仅有低四位(bit0-bit3)记录个位。(7)年寄存器的相关功能:地址字节:0x8C有八位寄存器,全部位数均会用到,高四位(bit4-bit7)记录十位,低四位(bit0-bit3)记录个位。(8)控制寄存器的相关功能:地址字节:0x8E有八位寄存器,只有第六位(bit7)有用,bit7为WP(WriteProtect)位。当写保护最高位是0时,数据时允许被写入寄存器的,通过命令“0x00”和“0x80”可以控制允许数据写入、读取寄存器和禁止数据写入、读取寄存器。写保护位在多模式传送下不可写入。以下为分别为写保护程序允许与禁止命令:Ds1302_Write_Byte(ds1302_control_add,0x00);//写保护允许写入、读取命令Ds1302_Write_Byte(ds1302_control_add,0x80);//写保护禁止写入、读取命令当写保护最高位是1时,数据将被禁止写入寄存器。4.2.3DS18B20温度模块程序首先DS18B20芯片初始化,芯片与单片机连接的端口定义为DQ,所连接的单片机引脚为P2.2,将芯片复位时,DQ置“1”,并给予初始化反馈,x=0时初始化成功,x=1时初始化失败。基于单片机的智能家居控制系统设计全文共58页,当前为第29页。基于单片机的智能家居控制系统设计全文共58页,当前为第29页。开始初始化DS18B20芯片读开始初始化DS18B20芯片读DS18B20序列号DS18B20是否存在发送跳过ROM指令温度转换复位DS18B20有无中断调用中断子程序单片机控制液晶模块显示数据YYNN图4.4DS18B20温度模块程序框图然后芯片读一个字节,写一个字节,最后读取温度。程序分别如下:unsignedcharReadOneChar(void)基于单片机的智能家居控制系统设计全文共58页,当前为第30页。{基于单片机的智能家居控制系统设计全文共58页,当前为第30页。 unsignedchari=0; unsignedchardat=0; for(i=8;i>0;i--) { DQ=0;//给脉冲信号 dat>>=1; DQ=1;//给脉冲信号 if(DQ) dat|=0x80; DelayUs2x(25); } return(dat);}//读一个字节 voidWriteOneChar(unsignedchardat){ unsignedchari=0; for(i=8;i>0;i--) { DQ=0; DQ=dat&0x01; DelayUs2x(25); DQ=1; dat>>=1; } DelayUs2x(25);}//写一个字节4.2.4LCD1602液晶模块程序首先将LCD1602初始化。初始化的过程如表4.1所示:表4.1LCD1602初始化过程1.延时15ms2.写指令0x38(不检测忙信号)[17]3.延时5ms4.写指令0x38(不检测忙信号)[17]5.延时5ms6.写指令0x38(不检测忙信号)[17]7.之后每次写指令、读/写数据操作前均需检测忙信号8.写指令0x38:显示模式设置9.写指令0x08:显示关闭10.写指令0x01:显示清屏11.写指令0x06:显示光标移动设置12.写指令0x0C:显示开及光标设置基于单片机的智能家居控制系统设计全文共58页,当前为第31页。基于单片机的智能家居控制系统设计全文共58页,当前为第31页。开始初始化功能设置:8位数据;开始初始化功能设置:8位数据;1/DUTY;5*8字体清屏输入方式设置:AC自动加一开显示设置CGRAM地址对CGRAM#00H-#3FH单元写字模数据屏显示计数指针:R5=#11H设置DDRAM地址对DDRAM#00H-#27H单元,即第1、3行写显示数据对DDRAM#40H-#67H单元,即第2、4行写显示数据设置DDRAM地址延时130毫秒R5-1R5=0?结束图4.5LCD1602液晶显示模块程序框图本课设中液晶设置为5*8点阵字符,分2行显示,一行显示16个字符,将温度、时间、继电器通断情况分别在液晶显示屏的相应位置显示出来。4.3本章小结基于单片机的智能家居控制系统设计全文共58页,当前为第32页。本章主要基于硬件电路的设计思想,将程序代码分模块地进行阐述。每个模块先阐述程序流程的基本原理并附上该模块的思路程序框图。然后根据每个模块核心的芯片各自的特性分别对芯片的时序、寄存器位功能等参数进行详解。最后统筹到一个主程序中,主程序将各个小模块、子程序按逻辑调用最终实现智能家居控制的完整系统。基于单片机的智能家居控制系统设计全文共58页,当前为第32页。基于单片机的智能家居控制系统设计全文共58页,当前为第33页。从酝酿整个程序框图到编写代码期间遇到很多难题,比如对代码的编写不是很熟练、有些逻辑性的问题思考不全等。开始是翻阅各种书籍材料,到后期编写代码越来越熟练也归功于善于总结工作方法。设计程序代码时要养成好的写代码习惯,格式和注释很重要,其次是命名,每个子程序的名称一定要与功能相关又不可以太冗长难记住,更不可以互相之间太像以致相互混淆,通常一个代码都不是一天写成的,如果中间断了几天在回顾想续写,如果格式不好又不加注释,代码名又十分相像,读代码都是件非常困难的事效率会是非常低的。基于单片机的智能家居控制系统设计全文共58页,当前为第33页。第5章 系统的方案实现与调试5.1程序编写与仿真5.1.1程序编写软件Keil本课题使用的程序编写软件为Keil,KeilC51是基于C语言系统针对51系列单片机开发的编译器软件。由KeilSoftware(美)公司出品。C语言是在最基层语言——汇编的基础上,新生的易读、易改、框架性良好的一种语言,因而方便易懂,上手快。Keil软件提供包括C语言编译器、链接器、宏汇编、库管理和有强大仿真调试器等功能的方案[18]。用μVision开发环境将上述内容结合到一起。Keil软件所需的操作系统Windows98、nt、Windows2000、WindowsXP、Windows7等。本课设使用的是较为简练的C语言编程,因而使用Keil这个软件是十分方便的。下图5.1为Keil对软件的编译结果:图4.2-1代码调试结果5.1.2仿真软件Proteus基于单片机的智能家居控制系统设计全文共58页,当前为第34页。本课题使用的仿真软件为Proteus,Proteus不仅具有普通软件仿真的功能[19],还具有仿真单片机或其他元器件的功能。该软件是LabCenterElectronics(英)公司出品的。它对于单片机及其他元器件的仿真效果尤为出众。深受国内外单片机发烧友、单片机方面从事者、教师、学生的喜爱。基于单片机的智能家居控制系统设计全文共58页,当前为第34页。在Proteus上进行的电路仿真,可以切换到PCB设计,为生成实物电路板省去了很多麻烦。目前是世界上唯一一个可以集虚拟仿真、PCB电路设计、电路仿真为一体的设计软件平台。它可以支持多种处理器型,本文用到的是STC89C52单片机,更可以与本文用到的Keil编译器联合使用。5.1.3仿真结果图5.2为本课题设计在软件上的仿真效果:5.2程序下载5.2.1程序下载软件程序下载软件使用的是,STC-ISP,STC-ISP是一款针对STC系列单片机使用的下载编程烧录的软件。可烧录12C5410系列、12C2052系列和STC89等系列的STC单片机,使用简单易懂,是电子发烧友及相关从业者普遍认可的软件之一[20]。5.2.2程序下载过程基于单片机的智能家居控制系统设计全文共58页,当前为第35页。如图5.3、5.4、5.5为程序烧录到芯片的过程:首先选择芯片类型STC89C/LE52RC,选择程序,点击“下载/编程”开始烧录程序。基于单片机的智能家居控制系统设计全文共58页,当前为第35页。图5.3程序烧录过程图5.4程序烧录单片机型号选择图5.5选择所烧路程序的工程文件基于单片机的智能家居控制系统设计全文共58页,当前为第36页。然后等待程序烧录成功,结果如图5.6显示提示:基于单片机的智能家居控制系统设计全文共58页,当前为第36页

温馨提示

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

评论

0/150

提交评论