智能家居软件毕业设计_第1页
智能家居软件毕业设计_第2页
智能家居软件毕业设计_第3页
智能家居软件毕业设计_第4页
智能家居软件毕业设计_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

PAGE福建船政交通职业学院毕业论文(设计)题目:智能家居软件设计系部:信息工程系姓名:学号:专业:计算机控制技术年级班级:计算机控制技术指导教师(职称):二0年一月目录引言 21、绪论 31.1研究智能家居的意义 31.2国内外智能家居的现状与发展趋势 31.2.1国内外智能家居的发展现状 31.2.2智能家居的发展趋势 41.3智能家居的实验应用 52、软件简介 62.1VisualBasic软件简介 62.2Proteus仿真软件简介 72.3keiluvision2编程软件简介 83、系统总体方案设计 93.1总体方案设计 93.2软件界面设计 93.2.1总体系统软件界面 93.2.2空调软件界面 103.3程序总体设计 113.3.1总体程序流程图 123.3.2空调流程图 133.3.3空调通讯设置 134、系统软件仿真 174.1系统软件仿真设计 174.1.1串口仿真与方法 174.1.2软件虚拟串口 174.1.3单片机串口 184.2串口参数设置 194.3空调的仿真情况 21结论 24谢辞 25主要参考文献 26附录一:系统源程序 28智能家居软件设计摘要:在科技飞速发展的当今社会,普通家居设备已经不能满足生活的需求。也是由于随着科技的发展和人民生活水平的提高,以及一浪高过一浪的房地产热潮,智能家居设备取得了迅猛的发展并日益渗透到平常百姓的生活当中。本系统设计就是利用VB的通信模块实现在PC机上控制家居设备。此设计可以实现三个基本功能,一为控制三个房间家居灯的开/关与亮度调节,二是控制空调的开/关与温度调节,三为控制热水器的开/关与加热上限温度,并控制加热时间段。在控制的同时还能实时传送家居设备的状态,如家居的的亮度级别、外界温度以及热水的温度。这些功能都由一个切换按钮控制,以此完成家居设备的切换。本文重点介绍空调智能控制系统。关键词:智能家居;VisualBasic6.0;联合仿真Abstract:Intoday'ssociety,scienceandtechnologyrapiddevelopment.Thecommonhouseholddevicescannolongermeetthedemandsoflife.Itisalsowiththedevelopmentofscienceandtechnologyandtheimprovementoflivingstandardsofthepeople,aswellasthewaveheightofawaveofrealestateboom,intelligenthomedeviceshaveachievedrapiddevelopmentandincreasingpenetrationintopeople'slives.ThesystemdesignofcommunicationmoduleinPCmachineisusingVBtocontrolthehomedevices.Thisdesigncanachievethreebasicfunctions.First,inordertocontrolthreeroomsofthehouseholdlightsturnon/offandbrightnesstoadjust.Second,inordertocontrolon/offoftheairconditioningandtemperaturecontrol.Third,inordertocontrolon/offofthewaterheaterandheatingmaximumtemperatureandcontrolstheheatingperiod.Whilereal-timetransmissionofcontrolofhomedevices,suchasthebrightnessofthehouseholdlevel,theoutsidetemperatureandthetemperatureofhotwater.Thesefunctionsarecontrolledbyatogglebutton;thereforecompletethehouseholddevicesofswitching.Thisarticlefocusesonintelligentcontrolsystemofairconditioning.Keywords:Intelligenthomedevices;VisualBasic6.0;Unionsimulation引言随着智能家居的迅猛发展,越来越多的家居开始引进智能化系统和设备。智能化系统涵盖的内容也从单纯的方式向多种方式相结合的方向发展。本设计就是利用VB的通信模块,在此基础上实现在PC机上控制家居设备。实现系统设计需要解决两方面问题,一是关于系统软件与设备实物之间的结合。对此我们利用PC机模拟控制设备,单片机模拟家居设备。PC机通过串口实现和pt6000无线收发模块的通讯,从而实现与家居设备的通讯。二是关于PC机上的模拟控制设备。对此我们利用可视化软件VB的通讯控件,实现与pt6000无线收发模块的通讯控制家居设备。建立在这两方面基础上,就容易实现模拟对家电的控制,分别控制家居灯、热水器和空调。如今,安全、舒适、便利的生活环境已经不再是一个遥远的梦想。由于智能家居系统能够为人们提供更加轻松、有序、高效的现代生活环境,因此已经成为房地产商追逐的热点。在未来,没有智能家居系统的住宅将像今天不能上网的住宅那样不合潮流。相信不远的将来,智能家居一定会更好地造福人类。1、绪论1.1研究智能家居的意义进入20世纪90年代后期以来,数字化技术取得了更加迅猛的发展并日益渗透到各个领域。随着Internet网向普通家庭生活不断扩展,消费电子、计算机、通讯一体化趋势日趋明显,智能化信息家电产品已经开始步入社会和家庭。智能信息家电由于其安全、方便、高效、快捷、智能化等特点在21世纪将成为现代社会和家庭的新时尚。当家庭综合服务器(IntegratedHomeServer)将家庭中各种各样的智能信息家电通过家庭总线技术连接在一起时,就构成了功能强大、高度智能化的现代智能家居系统。随着人们生活水平的不断提高,人们不断地对居住环境提出更高的要求,越来越注重家庭生活中每个成员的舒适、安全与便利。因此从市场需求的角度看,智能家居必然是前景广阔。未来几十年的蓬勃发展,将使智能化家居系统的应用越来越广泛。对于智能化家居的研究,将在理论上推动智能化技术在家居领域的纵深发展,并为各类智能化家居新产品的设计与开发提供一定理论依据,产生一定的经济效益和社会效益,大大丰富并充实了家居系统理论。因此以此作为主要研究内容具有现实指导意义。1.2国内外智能家居的现状与发展趋势1.2.1国内外智能家居的发展现状进入二十一世纪,日新月异的现代科技的力量,打破了传统的时空界限,计算机网络和层出不穷的信息技术,改变了人类的生产、生活方式,科技正以超乎想象的速度深刻地影响着人类的思维模式和生存状态。住宅作为人类生存的物质基础,必将受到信息技术的冲击和影响,传统住宅己不能满足现代社会对其使用功能及其所能提供的环境的更高要求,未来住宅应是高科技与传统技术的有机融合体:不仅功能齐全、居住舒适、使用方便,而且安全节能,有益人类健康和自然生态环境。目前,智能技术在家居行业中已经得到初步应用,一些智能化家居的雏形或前期产品己经出现。国外,如爱尔兰的兰开斯特大学与苏黎世、德国、瑞典及芬兰等学府合作开发了一系列“智能家具”。用“智能沙发”可以开启电视机、激活电话录音机,还可以认出是谁坐在沙发上,懂得说欢迎辞,甚至根据输入的程序自动唤醒躺在特定位置的病人。“智能书架”会在负荷过重时做出投诉。“智能药品柜”会在药物过期时发出警告。我国在智能化家具方面也作了一些初步探索,有些先进家具企业也开发了一些简单的智能化家具产品。智能化家居必然是世纪发展的趋势。我国的家居智能化水平还处在起步和尝试阶段,具体表现在基础比较薄弱、技术含量低等方面。国内家居智能化的研究仅仅停留在概要性论述和一些简单产品开发的层面上,缺乏系统的理论研究,有待于进一步开发设计。1.2.2智能家居的发展趋势智能家居怎样做到实用、易用、人性化,真正提高人们的生活品质,才是智能家居的发展方向。智能家居的发展趋势有以下几个方向:1、智能化、人性化。随着人工智能的不断发展和机器人的出现,使得智能化不再是一个神话。智能化是智能控制发展的必然趋势。因此,家居的智能化也必然向智能化方向发展。智能化应服务于人们的生活,所以应更全面、更富有人性化,这是智能家居未来的一个发展方向。2、节能环保。智能化的本质之一是降低成本和提高效率,节能是降低成本的关键技术。绿色、环保、节能将成为未来家居的重要考核指标,甚至是首要考虑因素。在住宅实现了基本智能化后,绿色生态住宅成为必然的追求目标。提高生活环境的质量,这些也是其未来发展必须考虑的因素。3、一体化。家居智能化需满足自动化管理、安全防范监控、火灾报警、对讲呼叫、设备监控等内容,把它们智能化功能集成,从而降低成本,也是未来发展的一个方向。4、规范化、标准化。由于智能家居发展较晚,新技术、新产品层出不穷,标准和规范还在制定之中,规范化、标准化是智能家居快速发展,走入国际市场的必由之路。致力于智能家居产品的应用接轨,很多问题并不在于技术水平的高低,而在于怎样去做到实用、易用、人性化,只有更加贴近实用、易用和人性化的智能家居概念,才能真正提高人们的生活品质,才能真正体现智能家居的价值,这也是现代科技价值的核心所在。1.3智能家居的实验应用智能家居作为家庭信息化的实现方式,已经成为社会信息化发展的重要组成部分,物联网因其巨大的应用前景,将是智能家居产业发展过程中一个比较现实的突破口,对智能家居的产业发展具有重大意义。我国的家具智能化水平还处在起步和尝试阶段,具体表现在基础比较薄弱、技术含量低等方面。需要加大对智能家居的研究开发和实验应用,仅仅停留在概要性论述和一些简单产品开发的层面上,缺乏系统的理论研究,应进一步开发设计。本次系统设计基于容易实现,方便操作,贴近使用的实验理念,采用VB为控制核心,为控制终端,利用VB编写相应的代码,并采用单片机等在内的多个控制源来控制家用电器。重点研究电源电路、按键电路、DA转换电路、放大电路、稳压调节电路、电压电源采样电路和AD转换电路和显示电路的使用等关键问题和理论。通过简易的系统设计,才能更加深入地了解智能家居的应用。2、软件简介2.1VisualBasic软件简介VisualBasic是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。VisualBasic源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。图2-1VisualBasic6.0启动界面2.2Proteus仿真软件简介图2-2Proteus启动界面Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。使用Proteus软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用。2.3keiluvision2编程软件简介图2-3keiluvision2启动界面KeilSoftware是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。uVision2IDE可为它们提供单一而灵活的开发环境。3、系统总体方案设计3.1总体方案设计智能家居控制系统主要是在家庭便捷、舒适方面起到智能控制的目的。本系统设计主要模拟控制家居灯、空调、热水器,可分为三个模块:一为软件系统,用VB串口通信控件实现功能代码的发送;二为利用pt6000无线收发器无线实现无线发送与接收;三为利用单片机模拟家居设备。本组成员负责软件系统,根据现实情况设计各个模块要实现那些功能。并用VB串口通信控件实现功能代码的发送,以及接收家居设备的实时状态。首先要根据系统要实现的控制要求设计VB的模块和软件界面,然后编写代码和功能子程序,接着利用虚拟串口在PC机上实现与Proteus仿真软件相连,实现仿真系统功能。在此过程中,要发现错误和不足,经过不断修改来完善程序。3.2软件界面设计3.2.1总体系统软件界面在实现这些模块的功能的同时还要能实现串口的基本功能设置,各个功能模块的切换。智能家居系统的总体界面设计如下:图3-2总体界面3.2.2空调软件界面系统要实现控制空调的开和关、温度,还要实现实时接收当前的环境温度并显示。系统软件界面设计如下:图3-1系统软件界面3.3程序总体设计在编写程序之前根据模块功能要设定好代码。代码如下(以下数字都是16进制):80,81,82分别代表家居灯,空调,热水器三个功能模块。家居灯代码:83,84,85分别代表房间1,房间2,房间3。0代表家居灯关,11代表家居灯开。家居灯亮度十个级别用1——10表示。空调代码:14代表空调打开,33代表空调关掉。温度范围为(15——32),分别用数字15——32代表。热水器代码:34代表打开,76代表关掉。温度范围为(35——75),分别用数字35——75代表。软件分为三个模块:家居灯、空调、热水器。在启动程序后总体工作流程为:窗体载入(串口初始化)——默认在家居灯房间1状态(即发送80,再发送了83)。3.3.1总体程序流程图图3-3总体程序流程图3.3.2空调流程图空调的工作流程:按切换键切换到空调的工作模式(即发送81)——按启动键启动,空调默认温度为20度(即先发送14再发送20)——按加减键调节温度——按确定键发送温度代码——按关掉键关掉空调(即发送33)图3-4空调流程图3.3.3空调通讯设置串口设置和状态显示:默认串口打开、串口参数为串口1、波特率9600、无校验位、8位数据位、1位停止位。当串口打开时,串口设置参数显示在TxtStatus文本控件里,标识串口打开的图片ImgSwitchon处于可见状态:图3-5标识串口打开图片当串口关闭时,串口关闭信息要显示在TxtStatus文本控件里,标识串口打开的图片ImgSwitchoff处于可见状态:图3-6标识串口关闭图片通讯模块串口可以设置的参数:图3-7串口设置的参数通讯模块波特率可以设置的参数:图3-8波特率设置的参数通讯模块校验位可以设置的参数:图3-9校验位设置的参数通讯模块数据位可以设置的参数:图3-10数据位设置的参数通讯模块停止位可以设置的参数:图3-11停止位设置的参数细节要求:功能切换用于切换功能模块,当处于此功能模块时,另外两个功能模块的功能按键不能被触发。当分别处于各个功能模块之内时开始键和设定时间处于可触发状态,关掉按键和确定按键处于不可触发状态,启动按键按下后,启动按键处于不可触发状态,关掉按键和确定按键后处于可触发状态。串口处于关闭状态时各个功能模块处于处于不可触发状态,主界面要显示串口的实时状态。4、系统软件仿真4.1系统软件仿真设计4.1.1串口仿真与方法串口仿真要求:仿真串口的基本设置包括数据位、停止位、校验位、串口、波特率,仿真开关按钮实现关闭/打开串口,仿真图片和串口状态栏显示当前串口状态。家居灯仿真要求:仿真家居灯开和关,仿真切换键实现切换房间,仿真加减键调节家居灯亮度确定键确定亮度,仿真当前亮度级别接收返回的亮度级别。空调仿真要求:仿真空调开和关,仿真加减键调节空调温度确定键确定温度,仿真当前当前值接收返回的当前环境温度。热水器仿真要求:仿真热水器开和关,仿真加减键调节热水器温度确定键确定温度,仿真加热时间段控制热水器,仿真当前温度接收返回的热水温度。仿真方法:总结来说此系统要能设置串口,根据按钮发送指定数据,实时接收数据,设定特定的时间发送指定的数据,所以可以在计算机上模拟仿真。4.1.2软件虚拟串口用VirtualSerialPortDriver软件在计算机上增加一对相连的虚拟串口。图4-1VirtualSerialPortDrive单片机串口用单片机Proteus串口实时接收智能家居系统发送过来的数据,并显示验证发送数据是否正确,同时把数据倒发送给系统验证系统是否能正确接收数据。单片机程序如下:ORG0000HLJMPSTARTORG0023HLJMPEESORG1000HSTART:MOVSP,#4FHMOVIE,#90HMOVSCON,#50HMOVTMOD,#20HMOVPCON,#0MOVTH1,#0FDHMOVTL1,#0FDHSETBTR1AA0:NOPNOPSJMPAA0EES:CLREACLRRIMOVA,SBUFMOVP2,AMOVSBUF,AJNBTI,$CLRTISETBEARETIEND4.2串口参数设置图4-2串口参数设置图4-3串口参数设置4.3空调的仿真情况发送81代码系统转到空调功能模块。图4-4发送81代码按下启动按钮默认的温度为20度。图4-5默认的温度为20度空调温度设置的上限值为32度,当超过上限值时,系统出现“空调温度已经达到极限”的提示信息:图4-6空调温度设置的上限值空调温度设置的下限值为15度,当超过下限值时,系统出现“空调温度已经最低”的提示信息:图4-7空调温度设置的下限值通过以上的仿真,可以基本实现空调的开关与温度的控制。可以实现实时接收外部环境温度的要求与显示,能在设计指定的温度范围内。在超过范围后,会禁止操作,并发出提示信息。在完成这一模块后,当功能切换键按下之后,就可以切换到家居灯与热水器的功能模块,实现本次整体的智能家居控系统设计。结论本文首先详细介绍了智能家居控制系统的意义和其在国内外的现状。在原有的智能家居系统技术的基础上对其进行的进一步研究和探索。本系统的设计主要是对家庭内的家居灯、空调、热水器三方面进行整体系统智能设计。设计系统旨在为人们提供具有安全、方便、高效、快捷、智能化,并具有个性化的独特魅力的智能家居系统。在课题的设计过程中我所作的主要工作有下面几点:1、总体方案的设计和VisualBasic6.0软件通讯控件(MSComm控件)的选择,利用VB程序通过虚拟串口与单片机进行仿真。2、设计了空调智能控制的软件界面和流程图。3、编写控制空调开关与温度的VB程序。4、设计了PC机设置与数据显示的方法5、设计VB串口通信控件实现功能代码的发送,以及接收空调的实时状态。6、完成空调模块要实现的控制功能设计并仿真调试成功,组成完整的智能家居控制系统,生成可执行文件。完成设计后,使我懂得了如何运用课本知识结合实际来完成定时器的显示和编程方法,以及如何驱动数码显示电路,这样能够慢慢地适应现代控制技术发展的需求,同时也提高了我们的思维能力和实际操作能力。在设计过程中,本组成员都努力相互帮助,相互监督。在碰到问题或难点的时候积极面对,共同解决,从而很好地完成各个模块,一起完成整体系统设计。谢辞经过这一个多月的查资料、编写程序、系统设计与仿真、写作论文,今天终于可以顺利地完成论文的最后谢辞了。时光匆匆飞逝,随着论文的完成,终于让我在大学的生活得以划下完美的句号。论文得以完成,要感谢的人实在太多了,首先要感谢老师的悉心指导,才能顺利地完成整个毕业设计与论文。曾老师严谨的治学态度,精益求精的工作作风,平易近人的人格魅力对我影响深远。在我的毕业设计期间,曾老师为我提供了种种专业知识上的指导和一些富于创造性的建议,并引导我的论文写作方向和架构,使我有了思考的方向,然后顺利的完成论文。在此向曾凌静老师表示深深的感谢和崇高的敬意。与此同时,还要感谢同组的各位同学,在毕业设计的这段时间里,你们给了我很多的启发,提出了很多宝贵的意见,对于你们的帮助和支持,在此我深表感谢。在临近毕业之际,我还要借此机会向在大学生涯中给予了我帮助和指导的所有老师表示由衷的谢意,感谢他们的辛勤栽培。在他们的悉心帮助和支持下,我能够很好地掌握和运用专业知识,并在设计中得以体现,顺利地完成毕业论文。主要参考文献【1】孙秀梅,安剑,刘彬彬编著《VisualBasic开发技术大全(第2版)》人民邮电出版社2009.10【2】楼玉萍编著《VisualBasic上机实践指导》浙江大学出版社2007.12【3】付永平,宋向红编著《VisualBasic语言程序设计》中国水利水电出版社2006.08【4】郑阿奇,梁敬东,曹弋,刘金定编著《VisualBasic实训》清华大学出版社2010.8【5】贾长云,朱香卫《可视化编程应用VisualBasic》高等教育出版社2006.5【6】林卓然编著《VB语言程序设计(第2版)》电子工业出版社2009.1【7】孟德欣编著《VB程序设计》清华大学出版社2009.7【8】龚运新编著《VisualBasic在自动控制中的编程技术》清华大学出版社2008.9【9】杨克玉编著《VB6.0程序设计实训教程》机械工业出版社2005.2【10】罗朝盛,余文芳,余平编著《VisualBasic6.0程序设计教程》人民邮电出版社2009.10【11】李玉东编著《VisualBasic6.0中文版控件大全》电子工业出版社2000.02【12】郭圣路编著《VisualBasic6.0中文版从入门到精通》电子工业出版社2008.1【13】杨聪,刘培涛编著《VisualBasic6.0程序设计案例实训教程》中国人民大学出版社2009.1【14】赵俊岚编著《中文版VisualBasic6.0循序渐进教程》北京希望电子出版社2005.2【15】张彦玲,于志翔编著《VisualBasic6.0程序设计教程》电子工业出版社2009.9【16】沈祥玖编著《VB程序设计(第2版)》高等教育出版社2007.11附录一:系统源程序'============================================================'变量定义'=============================================================OptionExplicit'强制显式声明Dimsumcount,temp,sumcount1,sumcount2AsIntegerDimSetup,open1,open2,stop1,stop2DimComSwitchAsBoolean'串口开关状态判断DimInputSignalAsString'接收缓冲暂存PrivateSubCmdAuto_Click()'房间切换按钮OnErrorGoToErrwsumcount1=sumcount1+1Ifsumcount1=84ThenCmdOpen11.Visible=TrueCmdcontrol11.Visible=TrueCmdclose11.Visible=TrueCmdOpen22.Visible=FalseCmdcontrol22.Visible=FalseCmdclose22.Visible=FalseCmdOpen.Visible=FalseCmdcontrol.Visible=FalseCmdclose.Visible=FalseFrame4.Caption="房间2"temp=sumcount1CalltextsendElseIfsumcount1=85ThenCmdOpen22.Visible=TrueCmdcontrol22.Visible=TrueCmdclose22.Visible=TrueCmdOpen.Visible=FalseCmdcontrol.Visible=FalseCmdclose.Visible=FalseCmdOpen11.Visible=FalseCmdcontrol11.Visible=FalseCmdclose11.Visible=FalseFrame4.Caption="房间3"temp=sumcount1CalltextsendElsesumcount1=83CmdOpen.Visible=TrueCmdcontrol.Visible=TrueCmdclose.Visible=TrueCmdOpen22.Visible=FalseCmdcontrol22.Visible=FalseCmdclose22.Visible=FalseCmdOpen11.Visible=FalseCmdcontrol11.Visible=FalseCmdclose11.Visible=FalseFrame4.Caption="房间1"temp=sumcount1CalltextsendEndIfErrw:EndSub'============================================================='家居关掉按钮'=============================================================PrivateSubCmdClose_Click()'家居灯房间1关掉按钮CmdOpen.Enabled=TrueCmdclose.Enabled=FalseCmdcontrol.Enabled=Falsetemp=0CalltextsendEndSubPrivateSubCmdClose1_Click()'空调关掉按钮Cmdcontrol1.Enabled=FalseCmdOpen1.Enabled=TrueCmdclose1.Enabled=Falsetemp=33CalltextsendEndSubPrivateSubCmdclose11_Click()'家居灯房间2关掉按钮CmdOpen11.Enabled=TrueCmdclose11.Enabled=FalseCmdcontrol11.Enabled=Falsetemp=0CalltextsendEndSubPrivateSubCmdClose2_Click()'热水器关掉按钮Cmdcontrol2.Enabled=FalseCmdOpen2.Enabled=TrueCmdclose2.Enabled=Falsetemp=76CalltextsendEndSubPrivateSubCmdclose22_Click()'家居灯房间3关掉按钮CmdOpen22.Enabled=TrueCmdclose22.Enabled=FalseCmdcontrol22.Enabled=Falsetemp=0CalltextsendEndSub'============================================================='家居控制按钮'=============================================================PrivateSubCmdcontrol_Click()'家居灯房间1控制按钮temp=TxtSendIftemp>10ThenMsgBox"亮度已经超过最大级别",48,"智能家居控制系统"temp=5ElseIftemp<1ThenMsgBox"亮度已经超过最低级别",48,"智能家居控制系统"temp=5ElseEndIfCalltextsendEndSubPrivateSubCmdcontrol1_Click()'空调控制按钮temp=TxtSend1.TextIftemp>32ThenMsgBox"空调温度已经超过最高温度",48,"智能家居控制系统"temp=20ElseIftemp<15ThenMsgBox"空调温度已经低于最低温度",48,"智能家居控制系统"temp=20ElseEndIfCalltextsendEndSubPrivateSubCmdcontrol11_Click()'家居灯房间2控制按钮temp=TxtSendIftemp>10ThenMsgBox"亮度已经超过最大级别",48,"智能家居控制系统"temp=5ElseIftemp<1ThenMsgBox"亮度已经超过最低级别",48,"智能家居控制系统"temp=5ElseEndIfCalltextsendEndSubPrivateSubCmdcontrol2_Click()'热水器控制按钮temp=TxtSend2.TextIftemp>75ThenMsgBox"热水器温度已经超过最高温度",48,"智能家居控制系统"temp=50ElseIftemp<35ThenMsgBox"热水器温度已经低于最低温度",48,"智能家居控制系统"temp=50ElseEndIfCalltextsendEndSubPrivateSubCmdcontrol22_Click()'家居灯房间3控制按钮temp=TxtSendIftemp>10ThenMsgBox"亮度已经超过最大级别",48,"智能家居控制系统"temp=5ElseIftemp<1ThenMsgBox"亮度已经超过最低级别",48,"智能家居控制系统"temp=5ElseEndIfCalltextsendEndSub'============================================================='家居功能切换按钮'=============================================================PrivateSubCmdMode_Click()'功能切换按钮OnErrorGoToErrsumcount=sumcount+1Ifsumcount=81ThenCmdMode.Caption="空调"Frame1.Enabled=FalseFrame3.Enabled=FalseFrame2.Enabled=TrueCmdcontrol1.Enabled=FalseCmdOpen1.Enabled=TrueCmdclose1.Enabled=Falsetemp=sumcountCalltextsendElseIfsumcount=82ThenCmdMode.Caption="热水器"Frame1.Enabled=FalseFrame2.Enabled=FalseFrame3.Enabled=TrueCmdcontrol2.Enabled=FalseCmdOpen2.Enabled=TrueCmdclose2.Enabled=Falsetemp=sumcountCalltextsendElsesumcount=80CmdMode.Caption="家居灯"Frame1.Enabled=TrueFrame2.Enabled=FalseFrame3.Enabled=FalseCmdOpen.Enabled=TrueCmdclose.Enabled=FalseCmdcontrol.Enabled=Falsetemp=sumcountCalltextsendtemp=sumcount1CalltextsendEndIfIfMSComm.PortOpen=Truethen'如果串口打开了,则可以发送数据MSComm.Output=sumcount'发送数据ElseMsgBox"串口没有打开,请打开串口",48,"智能家居控制系统"'如果串口没有被打开,提示打开串口EndIfErr:EndSub'============================================================='家居打开按钮'=============================================================PrivateSubCmdOpen_Click()'家居灯房间1打开按钮CmdOpen.Enabled=FalseCmdclose.Enabled=TrueCmdcontrol.Enabled=Truetemp=11Calltextsendtemp=5CalltextsendEndSubPrivateSubCmdOpen1_Click()'空调打开按钮Cmdcontrol1.Enabled=TrueCmdOpen1.Enabled=FalseCmdclose1.Enabled=Truetemp=14Calltextsendtemp=20CalltextsendEndSubPrivateSubCmdOpen11_Click()'家居灯房间2打开按钮CmdOpen11.Enabled=FalseCmdclose11.Enabled=TrueCmdcontrol11.Enabled=Truetemp=11Calltextsendtemp=5CalltextsendEndSubPrivateSubCmdOpen2_Click()'热水器打开按钮Cmdcontrol2.Enabled=TrueCmdOpen2.Enabled=FalseCmdclose2.Enabled=Truetemp=34Calltextsendtemp=50CalltextsendEndSubPrivateSubCmdOpen22_Click()'家居灯房间3打开按钮CmdOpen22.Enabled=FalseCmdclose22.Enabled=TrueCmdcontrol22.Enabled=Truetemp=11Calltextsendtemp=5CalltextsendEndSub'============================================================='家居调节按钮'=============================================================PrivateSubCmdSend1_Click(IndexAsInteger)'家居灯亮度加按钮IfTxtSend.Text<10ThenTxtSend.Text=TxtSend.Text+1ElseMsgBox"电灯亮度已经达到最大级别",48,"智能家居控制系统"EndIfEndSubPrivateSubCmdSend2_Click(IndexAsInteger)'家居灯亮度减按钮IfTxtSend.Text>1ThenTxtSend.Text=TxtSend.Text-1ElseMsgBox"电灯亮度已经达到最低级别",48,"智能家居控制系统"EndIfEndSubPrivateSubCmdSend3_Click(IndexAsInteger)'空调温度减按钮IfTxtSend1>15ThenTxtSend1.Text=TxtSend1.Text-1ElseMsgBox"空调温度已经最低",48,"智能家居控制系统"EndIfEndSubPrivateSubCmdSend4_Click(IndexAsInteger)'空调温度加按钮IfTxtSend1.Text<32ThenTxtSend1.Text=TxtSend1.Text+1ElseMsgBox"空调温度已经达到极限",48,"智能家居控制系统"EndIfEndSubPrivateSubCmdSend5_Click(IndexAsInteger)'热水器温度减按钮IfTxtSend2.Text>35ThenTxtSend2.Text=TxtSend2.Text-1ElseMsgBox"热水器温度已经最低",48,"智能家居控制系统"EndIfEndSubPrivateSubCmdSend6_Click(IndexAsInteger)'热水器温度加按钮IfTxtSend2.Text<75ThenTxtSend2.Text=TxtSend2.Text+1ElseMsgBox"热水器温度已经达到极限",48,"智能家居控制系统"EndIfEndSub'============================================================='热水器设定时间按钮'=============================================================PrivateSubCmdTime_Click()'热水器设定时间按钮sumcount2=sumcount2+1Ifsumcount2=1ThenLabTime.Caption="结束时间:"CmdTime.Caption="设定结束时间"open1=TxtTime.TextText2.Text=Text2.Text&open1Text2.Text=Text2.Text&"-"ElseIfsumcount2=2ThenLabTime.Caption="开始时间:"CmdTime.Caption="设定开始时间"stop1=TxtTime.TextText2.Text=Text2.Text&stop1Text2.Text=Text2.Text&""ElseIfsumcount2=3ThenLabTime.Caption="结束时间:"CmdTime.Caption="设定结束时间"open1=TxtTime.TextText2.Text=Text2.Text&open1ElseIfsumcount2=4Thensumcount2=0LabTime.Caption="开始时间:"CmdTime.Caption="设定开始时间"Text2.Text=Text2.Text&"-"stop2=TxtTime.TextText2.Text=Text2.Text&stop2ElseEndIfEndSub'============================================================='窗体载入'=============================================================PrivateSubForm_Load()'载入窗体CmdOpen.Visible=TrueCmdcontrol.Visible=TrueCmdclose.Visible=TrueCmdOpen22.Visible=FalseCmdcontrol22.Visible=FalseCmdclose22.Visible=FalseCmdOpen11.Visible=FalseCmdcontrol11.Visible=FalseCmdclose11.Visible=FalseCmdOpen.Enabled=TrueCmdclose11.Enabled=FalseCmdcontrol11.Enabled=FalseCmdOpen22.Enabled=TrueCmdclose22.Enabled=FalseCmdcontrol22.Enabled=FalseCmdOpen.Enabled=TrueCmdclose.Enabled=FalseCmdcontrol.Enabled=Falsesumcount=80sumcount1=83sumcount2=0Frame1.Enabled=TrueFrame2.Enabled=FalseFrame3.Enabled=FalseOnErrorGoToErrIfMSComm.PortOpen=TrueThenMSComm.PortOpen=False'先判断串口是否打开,如果打开则先关闭'初始化串口CallComm_initial(Val(Mid(CboCom.Text,4,1)),CboBaudrate.Text,Left(CboParitybit.Text,1),CboDatabit.Text,CboStopbit.Text)CboBaudrate.AddItem(300)'波特率载入CboBaudrate.AddItem(600)CboBaudrate.AddItem(1200)CboBaudrate.AddItem(2400)CboBaudrate.AddItem(4800)CboBaudrate.AddItem(9600)CboBaudrate.AddItem(14400)CboCom.AddItem("COM1")'串口载入CboCom.AddItem("COM2")CboCom.AddItem("COM3")CboCom.AddItem("COM4")CboCom.AddItem("COM5")CboCom.AddItem("COM6")CboCom.AddItem("COM7")CboParitybit.AddItem("ODD")'校验位载入CboParitybit.AddItem("ENEV")CboParitybit.AddItem("NONE")CboParitybit.AddItem("MARK")CboParitybit.AddItem("SPACE")CboDatabit.AddItem"8"'数据位载入CboDatabit.AddItem"7"CboDatabit.AddItem"6"CboStopbit.AddItem"1"'停止位载入CboStopbit.AddItem"1.5"CboStopbit.AddItem"2"temp=sumcountCalltextsendtemp=sumcount1CalltextsendErr:EndSub'============================================================='串口设置'=============================================================PrivateSubCboBaudrate_Click()'修改波特率CallComm_reSet(Val(Mid(CboCom.Text,4,2)),CboBaudrate.Text,Left(CboParitybit.Text,1),CboDatabit.Text,CboStopbit.Text)'串口设置EndSubPrivateSubCboCom_Click()'修改串口CallComm_reSet(Val(Mid(CboCom.Text,4,2)),CboBaudrate.Text,Left(CboParitybit.Text,1),CboDatabit.Text,CboStopbit.Text)'串口设置EndSubPrivateSubCboDatabit_Click()'修改数据位CallComm_reSet(Val(Mid(CboCom.Text,4,2)),CboBaudrate.Text,Left(CboParitybit.Text,1),CboDatabit.Text,CboStopbit.Text)'串口设置EndSubPrivateSubCboParitybit_Click()'修改校验位CallComm_reSet(Val(Mid(CboCom.Text,4,2)),CboBaudrate.Text,Left(CboParitybit.Text,1),CboDatabit.Text,CboStopbit.Text)'串口设置EndSubPrivateSubCboStopbit_Click()'修改停止位CallComm_reSet(Val(Mid(CboCom.Text,4,2)),CboBaudrate.Text,Left(CboParitybit.Text,1),CboDatabit.Text,CboStopbit.Text)'串口设置EndSub'============================================================='串口开关'=============================================================PrivateSubCmdSwitch_Click()'串口开关按钮OnErrorGoToErrIfMSComm.PortOpen=TrueThenComSwitch=TrueElseComSwitch=FalseEndIfIfComSwitch=FalseThenOpenCom'打开串口Frame1.Enabled=TrueFrame3.Enabled=FalseFrame2.Enabled=FalseComSwitch=TrueElseCloseCom'关闭串口Frame1.Enabled=FalseFrame3.Enabled=FalseFrame2.Enabled=FalseComSwitch=FalseEndIfErr:EndSub'============================================================='初始化串口'=============================================================PrivateSubComm_initial(PortAsByte,BaudRateAsString,ParityBitAsString,DataBitAsInteger,StopBitAsInteger)OnErrorGoToErrorTrap'错误则跳往错误处理IfMSComm.PortOpen=TrueThenMSComm.PortOpen=False'先判断串口是否打开,如果打开则先关闭MSComm.CommPort=Port'设定端口MSComm.Settings=BaudRate&","&ParityBit&","&DataBit&","&StopBit'设置波特率,无校验,8位数据位,1位停止位MSComm.InBufferSize=1024'设置接收缓冲区为1024字节MSComm.OutBufferSize=4096'设置发送缓冲区为4096字节MSComm.InBufferCount=0'清空输入缓冲区MSComm.OutBufferCount=0'清空输出缓冲区MSComm.SThreshold=1'发送缓冲区空触发发送事件MSComm.RThreshold=1'每X个字符到接收缓冲区引起触发接收事件MSComm.OutBufferCount=0'清空发送缓冲区MSComm.InBufferCount=0'滑空接收缓冲MSComm.InputMode=comInputModeBinaryMSComm.PortOpen=True'打开串口IfMSComm.PortOpen=TrueThenTxtStatus.Text="STATUS:"&CboCom.Text&"OPEND,"&CboBaudrate.Text&","&Left(CboParitybit.Text,1)&","&CboDatabit.Text&","&CboStopbit.TextElseTxtStatus.Text="STATUS:COMPortCloced"'串口没打开时,提示串口关闭状态EndIfExitSubErrorTrap:'错误处理SelectCaseErr.NumberCasecomPortAlreadyOpen'如果串口已经打开,则提示MsgBox"没有发现此串口或被占用",49,"智能家居控制系统"CloseComCaseElseMsgBox"没有发现此串口或被占用",49,"智能家居控制系统"CloseComEndSelectErr.ClearEndSub'============================================================='串口设置'=============================================================PrivateSubComm_reSet(PortAsByte,BaudRateAsString,ParityBitAsString,DataBitAsInteger,StopBitAsInteger)OnErrorGoToErrorHint'错误则跳往错误处理IfMSComm.PortOpen=TrueThenMSComm.PortOpen=False'先判断串口是否打开,如果打开则先关闭MSComm.CommPort=Port'设定端口MSComm.Settings=BaudRate&","&ParityBit&","&DataBit&","&StopBit'设置波特率,无校验,8位数据位,1位停止位MSComm.Settings="9600,n,8,1"MSComm.PortOpen=True'打开串口IfMSComm.PortOpen=TrueThenCmdSwitch.Caption="关闭串口"ImgSwitchoff.Visible=FalseImgSwitchon.Visible=TrueTxtStatus.Text="STATUS:"&CboCom.Text&"OPEND,"&CboBaudrate.Text&","&Left(CboParitybit.Text,1)&","&CboDatabit.Text&","&CboStopbit.TextElseCmdSwitch.Caption="打开串口"ImgSwitchon.Visible=FalseImgSwitchoff.Visible=TrueTxtStatus.Text="STATUS:COMPortCloced"EndIfExitSubErrorHint:'错误处理SelectCaseErr.NumberCasecomPortAlreadyOpen'如果串口已经打开,则提示MsgBox"没有成功,请重试",48,"智能家居控制系统"CloseCom'调用关闭串口函数CaseElseMsgBox"没有成功,请重试",48,"智能家居控制系统"CloseCom'调用关闭串口函数EndSelectErr.Clear'清除Err对象的属性EndSub'============================================================='串口开关子程序'=============================================================PrivateSubOpenCom()'打开串口OnErrorGoToErrIfMSComm.PortOpen=TrueThenMSComm.PortOpen=False'先判断串口是否打开,如果打开则先关闭CallComm_reSet(Val(Mid(CboCom.Text,4,1)),CboBaudrate.Text,Left(CboParitybit.Text,1),CboDatabit.Text,CboStopbit.Text)'串口设置IfMSComm.PortOpen=TrueThenTxtStatus.Text="STATUS:"&CboCom.Text&"OPEND,"&CboBaudrate.Text&","&Left(CboParitybit.Text,1)&","&CboDatabit.Text&","&CboStopbit.TextCmdSwitch.Caption="关闭串口"ImgSwitchon.Visible=TrueImgSwitchoff.Visible=FalseElseTxtStatus.Text="STATU:COMPortCloced"'串口状态显示CmdSwitch.Caption="打开串口"ImgSwitchoff.Visible=TrueImgSwitchon.Visible=FalseEndIfErr:EndSubPrivateSubCloseCom()'关闭串口OnErrorGoToErrIfMSComm.PortOpen=TrueThenMSComm.PortOpen=False'先判断串口是否打开,如果打开则先关闭TxtStatus.Text="STATU:COMPortCloced"'串口状态显示CmdSwitch.Caption="打开串口"ImgSwitchoff.Visible=TrueImgSwitchon.Visible=FalseErr:EndSub'============================================================='通信触发事件'=============================================================PrivateSubMSComm_OnComm()'设置oncomm事件,读取片机内存的值OnErrorGoToErrSelectCaseMSComm.CommEvent'每接收1个数就触发一次CasecomEvReceiveCalltextReceiveCasecomEvSend'每发送1个数就触发一次CaseElseEndSelectErr:EndSub'============================================================='文本接收'=============================================================PrivateSubtextRec

温馨提示

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

评论

0/150

提交评论