基于物联网的温度控制系统_第1页
基于物联网的温度控制系统_第2页
基于物联网的温度控制系统_第3页
基于物联网的温度控制系统_第4页
基于物联网的温度控制系统_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

北京理工大学珠海学院2020届本科生毕业设计基于物联网的温度控制系统摘要温度控制系统的智能化发展拥有巨大化幅度和规模,可以用来提高温度控制技术的水平和精度,这样使得产品的品质获得了巨大的质量提升与创新,所以,智能化的温度控制系统技术被生产生活中广泛的应用开来,我采用了常见的数码管显示器,使得操作应用更为直观,我所研究的课题将对花房,大棚等农副产品领域应用,并对温度进行智能化的监测和控制。 关键词:物联网;服务网观;wsn;Zigbee:嵌入式系统英文题目AbstractMassivelyimprovethetechnicallevelandaccuracyoftemperaturecontrol,whichmakesthequalityofproductsobtainhugequalityimprovementandinnovation.Therefore,theintelligenttemperaturecontrolsystemtechnologyiswidelyusedinproductionandlife,andIhaveadoptedThedigitaltubedisplaymakestheoperationandapplicationmoreintuitive.Myresearchtopicwillbeappliedtothefieldsofflowerhouse,greenhouseandotheragriculturalandsidelineproducts,andthetemperaturewillbemonitoredandcontrolledintelligently.Keywords:TheInternetofThings;servicegatewayWirelesssensornetworks;ZigBee;Embeddedsystem目录1前言 11.1温度控制系统的研究与意义 11.2本设计在国内外的发展概况及存在的问题 11.3论文的内容与结构 12.本设计基本概念 22.1系统总体设计方案 22.1.1设计的基本要求 22.1.2功能的模块组成 33主要元器件的介绍 33.1STC89C52单片机介绍 43.2LCD1602液晶显示屏的介绍 53.3HC-05蓝牙模块的介绍 63.4DS18B20W温度传感器的介绍 54.系统的硬件设计 24.1系统的使用说明及功能介绍 24.2复位电路的设计 24.3显示电路的设计 24.4温度检测电路的设计 24.5蓝牙通信电路的设计 25.系统的软件件设计 25,1读出温度的设计 25,2温度控制的程序设计 26.系统调试 2参考文献谢辞附录1前言随着科技的巨大进步,社会的飞速发展,物联网技术的发展已成为国家战略议程,设计温度控制系统,拥有广阔的应用前景和实际的意义。具体可以应用于环境保护,交通,家居,农业等。我们值得关注的是,在有些相对风险较高的地区,智能化的温度控制有着更重要的实际价值,尤其对于特殊情况,比如突发性灾害事故的道路,危险区域,环境监测,救灾预警,防火。所以鉴于实际情况,温度控制系统有着巨大的前景,各种合适不同场合的温度控制系统随着时代的发展迈向我们。 1.1本设计的目的、意义及应达到的技术要求1.2本设计在国内外的发展概况及存在的问题温度控制系统,控制对象是温度,温度控制的影响越来越大,关于温度控制的智能化领域的应用也在不断的扩大,目前的众多国家都投入了巨额的资金在其中,对于物联网的应用是这中最为重要的一环,在我们日常生活众用相当广泛,比如温室、卧室、空调房、电源等场所。在智能化的温控系统出现之前,温度控制一直需要人工来完成,尤其现在很多场所都需要实时的监控温度以免发生意外。对此,我研究这个课题,来完成这个系统,我设计这个系统是为了可以24小时实时监测并控制温度,想必它的应用范围会特别的广泛,这个课题对生活质量有着十分重要的意义。 1.3本设计应解决的主要问题物联网是趋势,智能化是新时代的重要组成部分,为了方便人们的生活,明确我做的课题,我需要要确定几点。第一.这套系统.其是否具有感应网络的能力。第二.是否可以完成数据之间的转换,是否具有通讯功能,是否能准确的传递信号里的功能并作出相应的反馈。3.是否具有自动规划和检测的能力,自动检测其中的问题,并自动化且智能化的运作,出现问题自我调整。对此我主要的工作内容如下:第一.明确课题论文的内容与整体流程。第二.关于系统的设计和完成相关的技术分析,分析系统的功能,满足的条件,对总体框架进行设计,研究它的技术,介绍他的处理器和相关的技术。2基于物联网的温度控制系统的基本概念它是新一代的物联网的计算机中的一个重要组成部分,物联网的定义是“的物与物连接的互联网功能,具有重要的成分的意义。是一个综合性的技术和系统,以及其实际应用还仅限于内部,对此,我们所做的东西是智能化的。2.1方案选择对于我的理解来说,物联网就是把实际的应用和互联网,无线信号相结合起来。所以这对于实物来说有了较高的智能要求。因此,各方面的协作能力也应该是很强的。此外,网关应始终保持在移动过程中与网络连接,所以网关的流动性也应该是很强的。我的大概思路是做一个温度检测的传感器,能够利用单片机控制采集数据并及时反馈,尝试用一种方式将数据传输到远端,这时考虑发送它的具体形式,比如wifi,射频,蓝牙等等,这是针对温度的检测,还有温度的控制,需要有温度调控,温度的升温和降温功能,这是考虑我所做的温度控制系统要适用于哪个工作环境,我个人选择与智能家居的温度监控,大概的工作模式是这样,首先恒定一个温度,比如室温25度,当室温低于这个数值时自动检测并升温,当室温低于这个值时及时降温,由于地域的特殊性,具体的工作模式还需商议,暂定选用半导体模块负责升温降温,对于针对室内温度,需要设计控制空调的开关2.2.1分析问题物联网网关是广域网和外部网络之间的节点。作为一个入口节点,它必须能够接受来自客户的远程访问,那就是,支持TCP/IP协议,并提供YEB服务。在另一方面,从用户体验的角度来看,用户需要能够控制通过远程计算机整个网络(通常来说,智能家居)。在本文网关的设计,硬件平台是ARMI微处理器。它连接以太网到公共网络的外部,并且内部连接无线传感器节点,以形成一个无线传感器网络。通俗地说,网关不仅应该有自己的功能,但也有一台服务器的功能,最重要的是智慧,需要自带监控系统。硬件功能如何实现,软件功能如何实现,加在一起需要满足什么样的功能,整体的构架,我们需要确定我们所做的东西,实现什么功能,几个模块,等等,用什么可以更直观的模拟,比如灯,温度计等等,实现这个想法等,2.2.2设计过程我觉得设计物联网的温度控制系统首先要明确它的总体构架,需要能连接互联网,能智能的反馈信息,它是在物联网的体系结构的汇聚层,并且两个端部连接到一个公用传输网和一个公共传感器网络。在这个设计中,我将使用WiFi或蓝牙作为解决问题的一种方便,快捷的方式,实现对传感器网络的通信,要明确我们所做的东西,它的硬件功能,它的软件功能,他所需要的模块,我们该用什么来更直观的模拟,我们该如何实现这个想法等等,针对于我选择的课题,我的元器件有,以及主要元器件选择的原因万用板9x15cm1单片机STC89C521单片机底座40P1晶振11.0592M1瓷片电容22PF2电解电容10UF1电阻1K5电阻10K2电阻2K1按键按键4开关自锁开关1电源座电源接口1电源线匹配电源座1温度传感器DS18B201蓝牙模块HC-051显示屏LCD16021排针16P1排母16P1铜柱1cm2螺丝1cm2三极管S90123蜂鸣器有源蜂鸣器1LED灯绿色1LED灯红色1继电器5V黄色2接线端子2P2蓝牙HC-051导线连接线1M焊锡丝焊锡1M3.主要元器件的介绍 3.1STC89C52单片机的介绍STC89C52RC引脚图3.2LCD1602液晶显示屏的介绍 液晶显示屏具有以下的特点,其中是:1.显示质量高由于液晶显示器每一个点在收到信号后就会一直保持那种色彩和亮度,需求是恒定发光,而且不像阴极射线管显示器那样,对此需要不断刷新亮点。所以液晶显示器画质高并且不会闪烁。2.数字式接口由于液晶显示器都是数字式的,且单片机系统的接口更加简单可靠,所以操作起来相对更加方便。3.体积小、重量轻液晶显示器通过控制显示屏上的电极液晶分子状态来达到我们所需要的显示功能,所以在重量上比相同显示面积的传统显示器要轻许多。4.功耗低根据现有资料的显示,液晶显示器的能量消耗主要在其内部的电极和驱动上,所以它的耗电量比其它显示器要少很多。10.8.1液晶显示简介1602LCD尺寸图1602LCD主要技术参数:显示屏的显示容量为:16×2个字符显示屏的芯片工作电压为:4.5—5.5V显示屏工作电流为:2.0mA(5.0V)显示屏模块最佳工作电压为:5.0V字符尺寸为:2.95×4.35(W×H)mm3.3HC-05蓝牙模块的介绍 蓝牙介绍 图7-1产品实物图图7-2HC-05蓝牙模块的特点:1.首先采用CSR主流蓝牙芯片,具有蓝牙V2.0的标准;2.允许的输入电压为:3.6V—6.5V,禁止超过7V;3.工作的波特率为1200,2400,4800,9600,19200,38400模块使用的注意事项:注意….交叉连接蓝牙模块USB转TTL模块RXD<>TXDTXD<>RXDVCC<>5VGND<>GND设置步骤1.工作中进入AT指令模式(所有AT指令都必须换行)2.设置串口波特率为9600,没有校验位,没有停止位3.规定修改蓝牙名称、密码4.具体的设置蓝牙的主从模式(1主1从)5.完整实现主从模块的绑定(两个模块实现透传)3,4DS18B20温度传感器的介绍 温度传感器有很多种类型,在众多的温度传感器中,我选择了这个,它具有高精度,可靠性高等特点,在实际应用中使用DS18B20温度传感器,我个人是非常能接受的。他本身有着超小的体积,超低的硬件需求,和强大的防干扰功能,而且精确度极高,还有功能强大的附加功能,所以DS18B20的普及率十分的高。针对电子设备爱好者,它是非常适合学习和研究微控制器技术的温度产品。对于我们可以了解操作和应用,使用中可以拓宽我们的思维,给我们分析温度更宽广的角度,让我们更有远见和建设性的思维以及逻辑思考的能力。DS18B20工作原理及应用:温度检测和数字数据输出DS18B20都将集成到单个芯片中,使得防干扰的功能增强,使得操作更加得心应手,操作周期可分为具体的两个部分。关键的存储器,用于存储DS18B20ID代码,它针对的是第18位单线串行代码和最后48位,所以用户根本不生产由于时间变化所产生的数据。对于RAM数据的临时存储器。操作将用于内部计算和数据访问,电源关闭后数据将会丢失(所以应用过程要小心)。针对DS18B20,在第三和第四字节之后的数据值信息,其中第二个字节是用户EEPROM的镜像,它的值是在上电复位上刷新。它的第五字节是第三EEPROM的用户的镜像。元件已经被设计成更高的温度分辨率,也可用于内部温度转换和计算的临时存储单元。所以用户操作它是可以很容易。由于他的特殊性,它的硬件功能简单,所以给生产的成本的省了一大笔,减少了中间的多余损耗.(4)控制器对18B20操作流程:复位:1.首先需要重置芯片的功能,由于复位这是其中的一个特征2.当18B20接收这个复位信号时,这会把芯片存在脉冲及时的返回并反馈。应答脉冲:1.当我们的复位电平操作结束后,使用控制器必须制定计划。2.到目前为止,双方的通信功能已经达成一致,下面是控制器和芯片之间的数据通信传输转换。如果没有足够的时间,低电平复位或单一的总线的电路断开,它也就不会有脉冲,因此要注意应对设计意外情况。控制器所发送一个存储器操作指令:会经过信号的转换,其ROM指令被发送到存储器中,操作的指令被立即发送。操作指令也是我们所指的8位,其中一共有六个,工作模式的RAM报警值据切换。内存操作指令的作用会告诉芯片做什么工作,这是它的关键的芯片控制。3.执行或数据读出以及关键点写入:内存的操作指令将要完成时,将会根据存储操作指令,会把进行的执行或数据读出和写入指令。如果在执行温度转换指令时,控制器是会具有等待18B20执行该指令的时候,通用的转换时间是500US。当执行读取指令和写入数据,所以我们需要应该严格按照的元器件18B20的读取和写入的顺序进行操作。所以在工作流程中,要求我们读取温度数据,运行2个甚至更多的运动周期,并进行反复,这是全部的流程。4.系统的硬件设计4.1使用说明及功能介绍功能介绍:系统可检测当前环境的温度,并采用液晶屏显示;所以我将运用手机APP,通过蓝牙功能与系统进行连接操作,所做的系统可一通过蓝牙将温度数据发送至手机上,在手机APP上显示。我可以通过按键和APP来设置温度报警值的上下限;而且系统带有断电记忆功能,所以下次启动时,记忆上次设置的温度上下限值,无需再次设置;当温度超过上限报警值时,红灯亮,相应继电器开关吸合(可接散热风扇);当温度低于下限报警值时,绿灯亮,相应继电器开关吸合(可接加热片);注意:继电器端子只相当于是个开关,继电器闭合时,两端相连,否者断开,无供电部分。若需要加风扇,还需要加风扇相应的电源,此电源和系统电源无关。使用说明:首先插上电源线(可用手机充电器或电脑USB口供电);按下电源开关;按下“设置”键进入温度设置的上限与下限的状态,按“加”和“减”来设置数值大小;这之后进入设置,设置温度下限与上限的状态,按“加”和“减”键来设置数值大小;经过上面的操作,再按一下“设置”键就可以恢复正常状态;最后按“复位”键就可以初始化系统。蓝牙功能:手机安装相应APP;给系统上电,手机打开蓝牙功能,扫描周围蓝牙(系统蓝牙模块名字为HC-05),连接并配对(配对密码1234);打开手机APP,点击连接模块蓝牙;液晶显示屏和APP可同步显示温度值。设置温度下限发送TL:XX.X+回车然后点击发送设置温度上限发送TH:XX.X+回车4.2复位电路的设计显然,复位电路的作用是复位。MCU连接到电源后,如果功率过低,则复位MCU存储器,所述参数是所述初始位置,即以便成为标准程序状态在电源接通时,由于某种原因,干扰程序和消除。对于我们来实现单片微型的计算机的复位电路,在其中如果有一个上电复位电路和一个按钮复位电路。如果我们使用电容充电,将会实现了复位电复位电路。当我们使用电源开启时,切记不要将电容的电压迅速改变。RST引脚为高电平时,将开始重启。电容器C被连续地加入,在整个电阻器R上的电压降逐渐减小。。。当电容器C被充满电时,所以可以在端部对应于开路与相关复位电路。时间补充相关的充电时间。如果复位时间足够长,充电时间较长。此操作将增加复位电容和电阻的时间。功能复兴电路复位按钮是相同的.所以在复位电路中,而且还可以通过按键被复位。按压该按钮开关后,当中的两个电阻划分的电压,以产生一高电平到RST端。图4.1复位电路4.3显示电路的设计在本次设计采用了最常用的液晶显示屏LCD1602。其中液晶显示屏共有16个引脚,在其中第一和第二引脚为显示屏的电源正极和电源负极,系统的整体设计,在第十五引脚和第十六引脚为显示屏背光的正极和负极,第三引脚为调节显示屏显示的字符的对比度的引脚,次引脚通过一个滑动10K变阻器与液晶显示屏的第一引脚及显示屏的负极相连,通过调节10K电位器来进行显示字符亮暗对比度的调节。图4.3液晶显示电路图4.4温度检测电路的设计我们可以在某隧道窑烟道温度控制系统中,在温度检测部分我们采用了上文所提到的芯片,它的硬件电路比较简单,所以,我放出了它的接口电路,如图:温度传感器的电路引脚图根据这个图片我们可以看到,,这个温度传感器只有3个引脚,所以在性能上会十分的简单,它的第一引脚是电源GND,第二引脚为数据传输引脚,对此,根据我对这个芯片的功能了解,为了增大芯片的数据传输能力,,我最后决定在引脚上加了一个10k电阻,如上图中所示,在这个而且对于其中的第三引脚为电源VCC,所以在最后我们只需要连接它的电源正极即可完成任务需求。 4.5蓝牙通讯电路的设计数据上传采用了蓝牙通信方式,在本设计中蓝牙通信电路的比较简单,由于采用的是集成的蓝牙模块,因此设计电路中没有一些电容电阻等外围器件,因此蓝牙通信电路简单明了。首先蓝牙模块共有6个引脚,其中第一引脚EN和第六引脚STALE作为使能引脚,本电路中作为空闲引脚,不连接。然后是蓝牙模块的电源引脚VCC和GND,只需连接在系统的正向电压和负极即可。最后有蓝牙通信采用的是串口通信的方式,因此具有TX和RX两个引脚,有一点需要特别注意一下就是,模块的TX要和单片机的RX连接,这样才能起到相互通信的效果,其电路图如图所示。图4.5蓝牙通信电路原理图5.系统的软件设计在系统软件设计中最重要的事情是窑烟气温度系统涉及,为了完成这个通过调用每个子程序的每个程序控制的主程序。在其中,它主要包括子程序诸如系统初始化程序,定时中断程序,温度检测程序,LCD显示程序,密钥设定程序等。整个主程序形成闭环,并且每次调用子程序也执行相应的功能的一部分。首先是系统上电后对系统进行初始化。存在要被执行的各种初始子程序,包括定时器中断定时器程序。在时间到期时,在定时器中断程序必须执行。一键扫描子程序被放置,以便当按下键时,键能快速响应。这里,窑烟道温度控制系统的上部和下部的温度限制可设定。其次,除了在中断函数的执行,计时时间达到之前,在死循环功能必须执行。在该循环中,窑烟道的温度必须首先检测。如果温度超过上述上限值,冷却装置被启动。降温,当温度比上限下停止;如果温度低于该下限,启动加热装置,当温度低于下限更高加热该体系,并停止。在这一点上,一个周期的端部,然后再启动之初,继续检测的温度,控制它,等等,该系统主程序流程图图示。主程序流程图5.1读出温度的设计温度控制系统中,我运用上文中提到的传感器进行温度检测,在温度检测过程中,读取关于温度的子程序十分的重要且特别,针对于温度的读取,主要目的就是对传感器的读取数据将数据提取出来并处理,对于数据的提取过程,容不得马虎,对这个问题我严肃的对待,在时间顺序上按照时序表反复的对照并处理,为了顺利的读取数据,我们要将传感器复位,因为整个实验,我使用了一个传感器,所以我不需要对序列号进行反复校对和匹配,下一步,下达指令,对传感器下达命令,命令的内容是读取数据,在收到命令后,对上文的单片机传导字节,传输的方式是由高位到低位,其中一共有12个字节,最后将信号处理,把数据传导在液晶显示屏上,温度读取的流程如下图所示.读出温度程序5.2温度控制的程序设计对于温度控制的问题,我使用两个继电器冷却温度。第一步,通过显示屏来获取当前的温度值。如果现在温度值比之前我们预先设定的温度报警的上限高,用以驱动风扇继电器继续被接通,将要启动所述风扇的旋转。否则,当下面的系统预先设定报警温度值的上限温度设定值时,继电器驱动控制风扇被关闭时,风扇的旋转停止。类似地,如果比温度报警温度值的下限值时预先设定,继电器驱动和控制所述加热芯片被接通时,加热头的加热开始。相反,当比预先设定的温度的报警温度值的下限值以上,关闭继电器驱动控制风扇,示出了图中的温度控制子程序的流程图停止加热器的加热。温度控制子程序流程图系统调试硬件调试 在我的设计中,为了简便,温度控制系统我没有使用散热风扇和加热片,相应的我用了两个继电器做演示,它的工作模式如下,我通过按键设置了温度上下限的报警值,系统可以检测当前的温度,当温度超过上限时,红灯亮起,相应的继电器开关吸和(这里应该接散热风扇),当温度低于下限时,绿灯亮,相应的继电器开关吸和(这里应该接加热片),电源方面我选择了充电宝 实物如下图:第一步:监视阶段,当电源被接通。观察成品,是否有烧焦气味,是否有不良反应,我用手触摸了集成电路,没有发现发烫等异常的情况(第一次接通电源后,始终没有反应,因为焊接问题导致断路)。 第二步:静态调试阶段。我使用万用表测量了电路中的各点位,对照判断了电路是否正常工作,插上充电宝(由于上一步的失误,我更换了几个元器件,将电阻进行了更换,让整个电路的工作状态符合要求)。第三步:动态调试阶段。动态调试,就是我在原有的静态调试基础下给电路端输入信号,检测了各点的输出信号信息(在这一步中,我反复的排查故障,又进行了调试,很幸运,没有发现较大的问题)软件调试调试软件进入组织到实际操作的程序,它可以正确的语法和逻辑错误的之前做手工或编译的程序进行初步测试。这也是确保单片机能正常运行的非常必要的一步。之后,我们一起把微控制器的程序,我们必须向单片机进行测试。我把软件调试过程分为两个步骤:第一步是用软件来调试程序。我们可以编译和链接编辑汇编语言程序,它可以消除基本的语法错误,然后使用软件调试工具本身执行规定的工作程序调试。第二个步骤是由程序的实际运行接触以调试程序。这一步骤主要是为了消除在程序逻辑错误,当我们编辑程序,有可能是在逻辑思维间隙,这将在程序的操作引起错误。通过这种方式,逻辑错误,可以通过实际操作发现,和编程的程序将继续变化,最后操作的各个步骤和指定的显示格式将在各方面都得到满足,满足课题所需要的功能,反复检查,有特殊问题及时更改等等。系统联调系统的硬件调试和软件调试都完成后,下一步进行的就是系统的整体调试。我要对整体的实物进行测试,先把LCD1602液晶显示程序烧录到单片机中,看看液晶显示器是否能正常显示文字,若能证明液晶显示模块焊接无问题,若不能显示则需要检查电路焊接问题并排除故障。然后用同样的方法来验证温度模块是否能正常工作,若能正确检测温度值且显示正常,则这个实物已经能完成温度检测和显示功能,然后是控制的调试,直到完成演示,整体功能实现并可以运作,这个课题就完成了。操作步骤这是一款带有蓝牙传输功能的温度控制系统,可以检测当前环境温度,通过蓝牙模块将数据传输到手机app,工作我把手放在温度传感器上,温度控制系统我没有使用散热风扇和加热片,相应的我用了两个继电器做演示,它的工作模式如下,我通过按键设置了温度上下限的报警值,系统可以检测当前的温度,当温度超过上限时,红灯亮起,相应的继电器开关吸和(这里应该接散热风扇),当温度低于下限时,绿灯亮,相应的继电器开关吸和(这里应该接加热片),然后打开手机,下载蓝牙传播软件,打开软件,里面有连接,我已经配对完成,显示当前的温度值,和液晶屏显示同步,可以用手机修改温度上下限。参考文献[1]高锋编.单片微型计算机原理与接口技术[M].科学出版社2007.77~82[2]刘爱华、满宝元编.传感器原理与应用技术[M].人民邮电出版社2010.103~115[3]陈永甫编.红外探测与控制电路[M].人民邮电出版社2003.110~117[4]沈任元、吴勇编.常用电子元器件简明手册[J].机械工业出版社2006.23~34[5]周良权、傅恩锡、期世馨编.模拟电子技术基础第二版[M]高等教育出版社2004.79~92[6]李东生、张勇、许四毛编.Protel99SE电路设计技术入门与应用[M].电子工业出版社2004.56~76[7]王卫平、陈栗宋编.电子产品制造工艺高等教育出版社[J].电子工业出版社2007.36~42[8]蔡发魁编.具有单片机功能的红外读写器第一章:红外光的介绍[J].中国现代教育网2005.57~68[9]黄继昌、徐巧鱼等编.传感器工作元理及应用实例[M]人民邮电出版社2007.95~106[10]王大飞编.被动红外探测器在安防工程中的应用[M].人民邮电出版社2006.76~83[11]王安敏、张凯.基于AT89C52单片机的超声波测距系统[J].仪表技与传感器,2006.44~49.[12]沈红卫.单片机应用系统设计实例与分析[M].北京航空航天大学出版社,2001(7):298~312[13]张毅刚.单片机原理及应用[M].北京:高等教育出版社,2001.397~407[14]杨恢先,黄辉先.单片机原理及应用[M].上海:复旦大学出版社,2002.36~52[15]徐淑华,程退安,姚万生.单片机微型机原理及应用[M].哈尔滨:哈尔滨工业大学出版社,1994.85谢辞在这次的毕业设计中,首先要感谢我的指导老师对我的教导。在论文的开题报告、资料搜集等方面给予了我很多帮助。老师教与我的学习方法和处理问题技巧让我受益匪浅。真心感谢在这次毕业设计中帮助我的老师,还有几个给了我不少建议的同学,真心谢谢。这个毕业设计中,有我自己的劳动成果,也有他们的功劳。附录#include<reg52.h>#include<intrins.h>sfrISP_DATA=0xe2; //数据寄存器sfrISP_ADDRH=0xe3; //地址寄存器高八位sfrISP_ADDRL=0xe4; //地址寄存器低八位sfrISP_CMD=0xe5; //命令寄存器sfrISP_TRIG=0xe6; //命令触发寄存器sfrISP_CONTR=0xe7; //命令寄存器/********LanYa串口接收数据缓存**********/unsignedcharidataLanYa_receive[10];/********LY串口接收计数器**********/unsignedcharLanYa_DATA_count; unsignedintT_baojing=250;//温度下限unsignedintH_baojing=380;//温度上限unsignedcharTB1;//温度下限十位unsignedcharTB2;//温度下限个位unsignedcharTB3;//温度下限小数点后一位unsignedcharHB1;//温度上限十位unsignedcharHB2;//温度上限个位unsignedcharHB3;//温度上限小数点后一位unsignedcharT_buff[5];//报警缓存unsignedcharH_buff[5];unsignedcharstr_wd[5];//温度缓冲区unsignedcharmoshi=0;sbitshezhi=P3^7;sbitjia=P3^6;sbitjian=P3^5;sbitBUZZER=P3^4;//蜂鸣器报警功能sbitLED_R=P3^3;//红sbitLED_G=P3^2;//绿unsignedcharIntToString(unsignedchar*str,intdat);externbitStart18B20();externbitGet18B20Temp(int*temp);externvoidInitLcd1602();externvoidLcdShowStr(unsignedcharx,unsignedchary,unsignedchar*str);externvoidLcdWriteCmd(unsignedcharcmd);unsignedintwendu;unsignedcharT0RH=0;unsignedcharT0RL=0;bitlanya=0; //蓝牙发送标志voidConfigTimer0(unsignedintms){ unsignedlongtmp; tmp=11059200/12; tmp=(tmp*ms)/1000; tmp=65536-tmp; tmp=tmp+18; EA=1; T0RH=(unsignedchar)(tmp>>8); T0RL=(unsignedchar)tmp; TMOD&=0xF0; TMOD|=0x01; TH0=T0RH; TL0=T0RL; ET0=1; TR0=1;}/*串口配置函数,baud-通信波特率*/voidConfigUART(unsignedintbaud){SCON=0x50;//配置串口为模式1TMOD&=0x0F;//清零T1的控制位TMOD|=0x20;//配置T1为模式2TH1=256-(11059200/12/32)/baud;//计算T1重载值TL1=TH1;//初值等于重载值ET1=0;//禁止T1中断TR1=1;//启动T1 EA=1; ES=1;}//向串口发送一个字符voidsend_char_com(unsignedcharch){ SBUF=ch; while(TI==0); TI=0;}//向串口发送一个字符串,strlen为该字符串长度voidsend_string_com(unsignedchar*str,unsignedintstrlen){ unsignedintk=0; do { send_char_com(*(str+k)); k++; } while(k<strlen);}/*****************************************************************************延迟函数/****************************************************************************/voidDelay_Ms(unsignedinta){ unsignedinti; while(a--!=0) { for(i=0;i<600;i++); }}/*********************************************************///单片机内部EEPROM不使能/*********************************************************/voidISP_Disable(){ ISP_CONTR=0; ISP_ADDRH=0; ISP_ADDRL=0;}/*********************************************************///从单片机内部EEPROM读一个字节,从0x2000地址开始/*********************************************************/unsignedcharByte_Read(unsignedintadd){ ISP_DATA=0x00; ISP_CONTR=0x83; ISP_CMD=0x01; ISP_ADDRH=(unsignedchar)(add>>8); ISP_ADDRL=(unsignedchar)(add&0xff); //对STC89C51系列来说,每次要写入0x46,再写入0xB9,ISP/IAP才会生效 ISP_TRIG=0x46; ISP_TRIG=0xB9; _nop_(); ISP_Disable(); return(ISP_DATA);}/*********************************************************///往单片机内部EEPROM写一个字节,从0x2000地址开始/*********************************************************/voidByte_Program(unsignedintadd,unsignedcharch){ ISP_CONTR=0x83; ISP_CMD=0x02; ISP_ADDRH=(unsignedchar)(add>>8); ISP_ADDRL=(unsignedchar)(add&0xff); ISP_DATA=ch; ISP_TRIG=0x46; ISP_TRIG=0xB9; _nop_(); ISP_Disable();}/*********************************************************///擦除单片机内部EEPROM的一个扇区//写8个扇区中随便一个的地址,便擦除该扇区,写入前要先擦除/*********************************************************/voidSector_Erase(unsignedintadd) { ISP_CONTR=0x83; ISP_CMD=0x03; ISP_ADDRH=(unsignedchar)(add>>8); ISP_ADDRL=(unsignedchar)(add&0xff); ISP_TRIG=0x46; ISP_TRIG=0xB9; _nop_(); ISP_Disable();}voidKey_set_scan(){ if(shezhi==0) { Delay_Ms(10); if(shezhi==0) { while(!shezhi); LcdWriteCmd(0x01);//清屏 moshi++; if(moshi>=3)moshi=0; if(moshi==0) { LcdWriteCmd(0x01);//清屏LcdShowStr(2,0,"Temperature");TB1=T_baojing/100;TB2=T_baojing/10%10;TB3=T_baojing%10;HB1=H_baojing/100;HB2=H_baojing/10%10;HB3=H_baojing%10; Sector_Erase(0x2000); //将设置的新上下限值写入到内部的EEPROM中 Byte_Program(0x2000,TB1); Byte_Program(0x2001,TB2); Byte_Program(0x2002,TB3); Byte_Program(0x2003,HB1); Byte_Program(0x2004,HB2); Byte_Program(0x2005,HB3); Byte_Program(0x2007,10); } elseif(moshi==1) { LcdWriteCmd(0x01);//清屏 LcdShowStr(3,0,"Set_Temp_T"); T_buff[0]=T_baojing/100+0x30;T_buff[1]=T_baojing/10%10+0x30;T_buff[2]='.';T_buff[3]=T_baojing%10+0x30;T_buff[4]='\0';LcdShowStr(6,1,T_buff); } elseif(moshi==2) { LcdWriteCmd(0x01);//清屏 LcdShowStr(3,0,"Set_Temp_H"); H_buff[0]=H_baojing/100+0x30;H_buff[1]=H_baojing/10%10+0x30;H_buff[2]='.';H_buff[3]=H_baojing%10+0x30;H_buff[4]='\0';LcdShowStr(6,1,H_buff); } } } if(jia==0) { Delay_Ms(10); if(jia==0) { // while(!jia); if(moshi==1) { T_baojing++; if(T_baojing>=999)T_baojing=999; T_buff[0]=T_baojing/100+0x30;T_buff[1]=T_baojing/10%10+0x30;T_buff[2]='.';T_buff[3]=T_baojing%10+0x30;T_buff[4]='\0';LcdShowStr(6,1,T_buff); } if(moshi==2) { H_baojing++; if(H_baojing>=999)H_baojing=999; H_buff[0]=H_baojing/100+0x30;H_buff[1]=H_baojing/10%10+0x30;H_buff[2]='.';H_buff[3]=H_baojing%10+0x30;H_buff[4]='\0';LcdShowStr(6,1,H_buff); } } } if(jian==0) { Delay_Ms(10); if(jian==0) { //while(!jian); if(moshi==1) { T_baojing--; if(T_baojing<=0)T_baojing=0; T_buff[0]=T_baojing/100+0x30;T_buff[1]=T_baojing/10%10+0x30;T_buff[2]='.';T_buff[3]=T_baojing%10+0x30;T_buff[4]='\0';LcdShowStr(6,1,T_buff); } if(moshi==2) { H_baojing--; if(H_baojing<=0)H_baojing=0; H_buff[0]=H_baojing/100+0x30;H_buff[1]=H_baojing/10%10+0x30;H_buff[2]='.';H_buff[3]=H_baojing%10+0x30;H_buff[4]='\0';LcdShowStr(6,1,H_buff); } } } }voidwendu_chuli(){ bitres; inttemp;//读取到的当前温度值 floatintT,decT;//温度值的整数和小数部分 Get18B20Temp(&temp);//读取当前温度 res=Get18B20Temp(&temp);//读取当前温度 if(res)//读取成功时,刷新当前温度显示 { intT=temp>>4;//分离出温度值整数部分 decT=temp&0xF;//分离出温度值小数部分 decT=(decT*10)/16;//二进制的小数部分转换为1位十进制位 wendu=intT*10+decT; str_wd[0]=wendu/100+0x30; str_wd[1]=wendu/10%10+0x30; str_wd[2]='.'; str_wd[3]=wendu%10+0x30; str_wd[4]='\0';//添加字符串结束符 LcdShowStr(6,1,str_wd);//显示到液晶屏上 } Start18B20();}/******************下载程序后报警值初始化**********************/ voidTH_chushihua(){ unsignedcharvalue; value=Byte_Read(0x2007); if(value!=10) //只有在第一次开机进行初始化 { value=10; Byte_Program(0x2007,10); TB1=T_baojing/100;TB2=T_baojing/10%10;TB3=T_baojing%10;HB1=H_baojing/100;HB2=H_baojing/10%10;HB3=H_baojing%10; Byte_Program(0x2000,TB1); Byte_Program(0x2001,TB2); Byte_Program(0x2002,TB3); Byte_Program(0x2003,HB1);Byte_Program(0x2004,HB2); Byte_Program(0x2005,HB3); }TB1=Byte_Read(0x2000); //读取EEPROM中设置温度上限的报警值,并赋给全局变量TB2=Byte_Read(0x2001); //读取EEPROM中设置温度下限的报警值,并赋给全局变量TB3=Byte_Read(0x2002); //读取EEPROM中设置湿度上限的报警值,并赋给全局变量HB1=Byte_Read(0x2003); //读取EEPROM中设置湿度下限的报警值,并赋给全局变量HB2=Byte_Read(0x2004); //读取EEPROM中设置湿度上限的报警值,并赋给全局变量HB3=Byte_Read(0x2005); //读取EEPROM中设置湿度下限的报警值,并赋给全局变量T_baojing=TB1*100+TB2*10+TB3;H_baojing=HB1*100+HB2*10+HB3; }/************主函数(程序的入口)****************/voidmain(){ ConfigTimer0(5); ConfigUART(9600); InitLcd1602();//初始化液晶 LcdShowStr(2,0,"Temperature");//显示屏显示:Temperature Start18B20(); //开始读取温度信号 wendu_chuli();//读取温度并显示 TH_chushihua();//温度上下限报警值初始化 while(1) { Key_set_scan();//按键扫描 if(moshi==0) //当在检测模式时 { wendu_chuli(); //温度检测并显示 if(wendu>=H_baojing) //当温度大于温度上限时 { BUZZER=0; //蜂鸣器响 LED_R=0; //红灯亮 LED_G=1; //绿灯灭 if(lanya==1) { send_string_com("TempHigh",9);//发送到电脑上 send_char_com('\x0a'); lanya=0; } } elseif(wendu>T_baojing&&wendu<H_baojing)//当温度在温度下限和温度上限之间时 { BUZZER=1; //蜂鸣器不响 LED_R=1; //红灯灭 LED_G=1; //绿灯灭 if(lanya==1) { send_string_com("Temp:",5);//发送到电脑上 send_string_com(str_wd,4); send_char_com('\x0a'); lanya=0; } } elseif(wendu<=T_baojing) //当温度小于温度下限时 { BUZZER=0; //蜂鸣器响 LED_R=1; //红灯灭 LED_G=0; //绿灯亮 if(lanya==1) { send_string_com("TempLow",8);//发送到电脑上 send_char_com('\x0a'); lanya=0; } } }else BUZZER=1; }}/*T0中断服务函数,秒表计数*/voidInterruptTimer0()interrupt1{ staticunsignedchartmr1s=0;TH0=T0RH;//重新加载重载值TL0=T0RL; tmr1s++; if(tmr1s>=200) { tmr1s=0; lanya=1; }}/*****************************************************************************串口中断/****************************************************************************/voiduart(void)interrupt4{unsignedcharUART_data;unsignedchara,b,c; if(RI) { UART_data=SBUF; if(UART_data=='\n') { if((LanYa_receive[0]=='T')&&(LanYa_receive[1]=='L')&&(LanYa_receive[2]==':')) { a=LanYa_receive[3]-0x30; b=LanYa_receive[4]-0x30; c=LanYa_receive[6]-0x30; T_baojing=a*100+b*10+c; } if((LanYa_receive[0]=='T')&&(LanYa_receive[1]=='H')&&(LanYa_receive[2]==':')) { a=LanYa_receive[3]-0x30; b=LanYa_receive[4]-0x30; c=LanYa_receive[6]-0x30; H_baojing=a*100+b*10+c; } /*if((LanYa_receive[0]=='B')&&(LanYa_receive[1]=='J')&&(LanYa_receive[2]==':')) { a=LanYa_receive[3]-0x30; b=LanYa_receive[4]-0x30; c=LanYa_receive[5]-0x30; if(a>0) H_baojing=a*100+b*10+c; else H_baojing=b*10+c; } elseif((LanYa_receive[0]=='D')&&(LanYa_receive[1]=='O')&&(LanYa_receive[2]==':')) { a=LanYa_receive[3]-0x30; b=LanYa_receive[4]-0x30; //L_baojing=a*10+b; }*////// LanYa_DATA_count=0; } else { LanYa_receive[LanYa_DATA_count]=UART_data; LanYa_DATA_count++; } } RI=0;} 仿真图原理图

捷键与一些电脑小技巧HYPERLINKwinkey+d:

这是高手最常用的第一快捷组合键。这个快捷键组合可以将桌面上的所有窗口瞬间最小化,无论是聊天的窗口还是游戏的窗口……只要再次按下这个组合键,刚才的所有窗口都回来了,而且激活的也正是你最小化之前在使用的窗口!

--这个就是winkeywinkey+f:

不用再去移动鼠标点“开始→搜索→文件和文件夹”了,在任何状态下,只要一按winkey+f就会弹出搜索窗口。

winkey+r:

在我们的文章中,你经常会看到这样的操作提示:“点击‘开始→运行’,打开‘运行’对话框……”。其实,还有一个更简单的办法,就是按winkey+r!

alt+tab:

如果打开的窗口太多,这个组合键就非常有用了,它可以在一个窗口中显示当前打开的所有窗口的名称和图标●,选中自己希望要打开的窗口,松开这个组合键就可以了。而alt+tab+shift键则可以反向显示当前打开的窗口。

winkey+e:

当你需要打开资源管理器找文件的时候,这个快捷键会让你感觉非常“爽”!再也不用腾出一只手去摸鼠标了!

小提示:

winkey指的是键盘上刻有windows徽标的键●。winkey主要出现在104键和107键的键盘中。104键盘又称win95键盘,这种键盘在原来101键盘的左右两边、ctrl和alt键之间增加了两个windwos键和一个属性关联键。107键盘又称为win98键盘,比104键多了睡眠、唤醒、开机等电源管理键,这3个键大部分位于键盘的右上方。

再补充点

F1显示当前程序或者windows的帮助内容。

F2当你选中一个文件的话,这意味着“重命名”

F3当你在桌面上的时候是打开“查找:所有文件”对话框

F10或ALT激活当前程序的菜单栏

windows键或CTRL+ESC打开开始菜单

CTRL+ALT+DELETE在win9x中打开关闭程序对话框

DELETE删除被选择的选择项目,如果是文件,将被放入回收站

SHIFT+DELETE删除被选择的选择项目,如果是文件,将被直接删除而不是

放入回收站

CTRL+N新建一个新的文件

CTRL+O打开“打开文件”对话框

CTRL+P打开“打印”对话框

CTRL+S保存当前操作的文件

CTRL+X剪切被选择的项目到剪贴板

CTRL+INSERT或CTRL+C复制被选择的项目到剪贴板

SHIFT+INSERT或CTRL+V粘贴剪贴板中的内容到当前位置

ALT+BACKSPACE或CTRL+Z撤销上一步的操作

ALT+SHIFT+BACKSPACE重做上一步被撤销的操作

Windows键+D:最小化或恢复windows窗口

Windows键+U:打开“辅助工具管理器”

Windows键+CTRL+M重新将恢复上一项操作前窗口的大小和位置

Windows键+E打开资源管理器

Windows键+F打开“查找:所有文件”对话框

Windows键+R打开“运行”对话框

Windows键+BREAK打开“系统属性”对话框

Windows键+CTRL+F打开“查找:计算机”对话框

SHIFT+F10或鼠标右击打开当前活动项目的快捷菜单

SHIFT在放入CD的时候按下不放,可以跳过自动播放CD。在打开wo

rd的时候按下不放,可以跳过自启动的宏

ALT+F4关闭当前应用程序

ALT+SPACEBAR打开程序最左上角的菜单

ALT+TAB切换当前程序

ALT+ESC切换当前程序

ALT+ENTER将windows下运行的MSDOS窗口在窗口和全屏幕状态间切换

PRINTSCREEN将当前屏幕以图象方式拷贝到剪贴板

ALT+PRINTSCREEN将当前活动程序窗口以图象方式拷贝到剪贴板

CTRL+F4关闭当前应用程序中的当前文本(如word中)

CTRL+F6切换到当前应用程序中的下一个文本(加shift可以跳到前

一个窗口)

在IE中:

ALT+RIGHTARROW显示前一页(前进键)

ALT+LEFTARROW显示后一页(后退键)

CTRL+TAB在页面上的各框架中切换(加shift反向)

F5刷新

CTRL+F5强行刷新1.打开“我的电脑”-“工具”-“文件夹选项”-“查看”-在“显示所有文件和文件夹”选项前打勾-“确定”

2.删除以下文件夹中的内容:

x:\DocumentsandSettings\用户名\Cookies\下的所有文件(保留index文件)

x:\DocumentsandSettings\用户名\LocalSettings\Temp\下的所有文件(用户临时文件)

x:\DocumentsandSettings\用户名\LocalSettings\TemporaryInternetFiles\下的所有文件(页面文件)

x:\DocumentsandSettings\用户名\LocalSettings\History\下的所有文件(历史纪录)

x:\DocumentsandSettings\用户名\Recent\下的所有文件(最近浏览文件的快捷方式)

x:\WINDOWS\Temp\下的所有文件(临时文件)

x:\WINDOWS\ServicePackFiles(升级sp1或sp2后的备份文件)

x:\WINDOWS\DriverCache\i386下的压缩文件(驱动程序的备份文件)

x:\WINDOWS\SoftwareDistribution\download下的所有文件

3.如果对系统进行过windoesupdade升级,则删除以下文件:x:\windows\下以$u...开头的隐藏文件

4.然后对磁盘进行碎片整理,整理过程中请退出一切正在运行的程序

5.碎片整理后打开“开始”-“程序”-“附件”-“系统工具”-“系统还原”-“创建一个还原点”(最好以当时的日期作为还原点的名字)

6.打开“我的电脑”-右键点系统盘-“属性”-“磁盘清理”-“其他选项”-单击系统还原一栏里的“清理”-选择“是”-ok了

7、在各种软硬件安装妥当之后,其实XP需要更新文件的时候就很少了。删除系统备份文件吧:开始→运行→sfc.exe/purgecache近3xxM。(该命令的作用是立即清除"Windows文件保护"文件高速缓存,释放出其所占据的空间)

8、删掉\windows\system32\dllcache下dll档(减去200——300mb),这是备用的dll档,只要你已拷贝了安装文件,完全可以这样做。

9、XP会自动备份硬件的驱动程序,但在硬件的驱动安装正确后,一般变动硬件的可能性不大,所以也可以考虑将这个备份删除,文件位于\windows\drivercache\i386目录下,名称为driver.cab,你直接将它删除就可以了,通常这个文件是74M。

10、删除不用的输入法:对很多网友来说,WindowsXPt系统自带的输入法并不全部都合适自己的使用,比如IMJP8_1日文输入法、IMKR6_1韩文输入法这些输入法,如果用不着,我们可以将其删除。输入法位于\windows\ime\文件夹中,全部占用了88M的空间。

11、升级完成发现windows\多了许多类似$NtUninstallQ311889$这些目录,都干掉吧,1x-3xM

12、另外,保留着\windows\help目录下的东西对我来说是一种伤害,呵呵。。。都干掉!

13、关

温馨提示

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

评论

0/150

提交评论