蔬菜大棚温度测控系统的设计方案.docx_第1页
蔬菜大棚温度测控系统的设计方案.docx_第2页
蔬菜大棚温度测控系统的设计方案.docx_第3页
蔬菜大棚温度测控系统的设计方案.docx_第4页
蔬菜大棚温度测控系统的设计方案.docx_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

蔬菜大棚温度测控系统的设计方案第1章综述1.1现状分析随着人类的进步和发展,在人类的生存的环境中,温度、湿度、阳光扮演着越来越重要的角色。无论你生活在何处、从事什么工作,温度都无时无刻不在影响着我们身边以及周围的一切。自古以来我国都是一个农业大国,加之庞大的人口数量,造成了我国的农耕土地资源“僧多粥少”的局面。因此,要改变这种局面,只靠增加耕地面积是不可能实现的,因此我们要另辟蹊径,想办法来提高单位亩产量。温室大棚技术就是其中一个好的办法。温室大棚就是建立一个模拟适合生物生长的气候条件,创造一个人工气象环境,来消除温度对生物生长的约束。而且,温室大棚能够改善环境对植物生长的约束,能使不同的农作物在不适合生长的季节产出,使农作物不再受气候的影响,部分或完全摆脱了农作物对自然条件的依赖。由于温室大棚能带来可观的经济效益,所以温室大棚技术越来越普及,而且已成为农民增收的主要手段。但是有些自然因素带来的影响是目前人们所不能控制的,所以其真正的难题在于夏季的降温问题和冬季的棚内温度过低的问题给植物带来的减产问题,这样的气候条件对室内植物的生长很不利。夏季由于强烈的太阳辐射和温室效应,使室内的温度高达摄氏度以上,植物生长发育停止,到制作物枯萎而死。冬季由于日光强度不够和日照时间短,使温室内晚上的温度低于植物的正常生长所需,会阻碍农作物的生长。因此,目前的当务之急就是解决温度问题。1.2课题的提出近年来,随着大棚技术的普及应用,温室已经成为了设施农业的重要组成部分,是我国农业的发展重点之一,国内外温室种植业的实践经验表明,提高温室的自动控制和管理水平可充分发挥温室农业的高效性。同时,随着单片机和传感技术的迅速发展,自动检测领域发生了日新月异的变化,温室环境自动控制方面的研究有了突飞猛进的发展,并且必将以其优越的性价比,逐步取代传统的温度控制措施,但是,目前应用于温室大棚的温度检测系统大多采用模拟传感器、多路模拟开关、A/D转换器及单片机等组成的传输系统。这种温度采集系统需要在大棚内布置大量的测温电缆,才能把现场的传感器信号送到采集卡上,安装和拆卸繁杂,成本也高。同时线路上传送的是模拟信号,易受干扰和损耗,测量误差也比较大。为了克服这些缺点,本文参考了一种基于单片机并采用数字化单总线技术的温度测控系统应用于温室大棚的设计方案,根据使用者提出的一些问题进行了改进,提出了一种新的设计方案,本次设计主要对当今农业温室的研究热点之一智能温室控制系统进行研究,设计了一套能实时控制大棚温度的测控系统。通过对该系统的自动调节作用,使温室中环境参数处于事先确定的最佳值,为农作物提供良好的生长环境。1.3系统特点(1)温度检测范围大、精度高:上下限检测值可达到55。C125.C(-67。F257。F),精度可达正负0.5摄氏度。(2)采用STC90C51单片机,成本低。(3)超低功耗,更健康、更安全。(4)布线简单,安装和拆卸方便,容易操作。1.4 开发平台及工具介绍Keil Vision系列是一个非常优秀的编译器,得到广大单片机设计者的广泛使用。其主要特点如下:具有Windows风格的可视化操作界面,界面友好,使用极为方便。支持汇编语言、C51语言及混合编程等多种方式的单片机设计。集成了非常全面的单片机支持,能够完成51系列单片机及和51系列兼容的绝大部分类型单片机的程序设计和仿真。集成了丰富的库函数,以及完善的编译链接工具。提供了并口、串口、A/D、D/A、定时器/计数器及中断等资源的硬件仿真能力,能够帮助用户模拟实际硬件的执行效果。可以与多款外部仿真器联合使用,提供了强大的在线仿真调试能力。内嵌RTX-51 Tiny和RTX-51 FULL内核,提供了简单而强大的实时多任务操作系统支持。在一个开发界面中支持多个项目的程序设计。支持多级代码优化,最大限度地帮助用户精简代码体积。由于Keil Vision具有最广泛的用户群,因此相应的代码资源非常丰富,读者可以轻松地找到各类编程资源以加速学习和开发过程。最新的ARM开发工具RealVIEW MDK依然采用Keil Vision3的开发环境和界面,给用户的升级带来极大的方便。第2章系统硬件设计2.1系统总体组成及构成框图此次设计由温度检测模块、控制单元、显示单元和外围执行的升降温装置组成。1.温度检测模块:负责检测大棚内的实时温度。2.控制单元:主要负责对所有数据的读取和分析,并执行各项的管理功能。3.显示单元:主要负责显示温度值和设置的最适温度范围。4.外围执行机构:执行控制单元所传输过来的命令。其系统框图如下图2.1所示:降温模块升温模块图2.1 系统框图2. 2系统整体硬件电路图系统的硬件电路图如图2.2所示。主要由主机单元、显示单元、检测单元和控制单元组成:图2.2系统整体电路图2. 3系统工作原理该设计主要由DS18B20数字温度传感器负责监测温室大棚内的温度,并将温度反馈给STC89C51单片机(MPU),有LCD1602液晶显示屏显示出当前的温度,由单片机根据当前的温度做出相应的操作,当监测到的温度值大于设定的最大值时,系统将自动通过继电器开启降温装置进行降温,直到温度处于设定的最适温度范围内;当温度低于设定的最小值时,系统将自动通过继电器开启升温装置提高大棚内的温度,直到温度升高到设定的最适温度范围。其中,最是温度的范围可以通过按钮进行设置。2.4温度传感器温度传感器是通过物体随温度变化而改变某种特性来间接测量的。不少材料、元件的特性都随温度的变化而变化,所以能做温度传感器的材料相当多。温度传感器随温度而引起物理参数变化的有:膨胀、电阻、电容、电动势、磁性能、频率、光学特性及热噪声等等,根据具体的应用,可以选择以下几种方案:方案一:采用二极管做温度传感器晶体二极管或三极管的PN结的结电压是随温度的变化而变化的。例如硅管的PN结的结电压在温度每升高一摄氏度时,下降-2mv,利用这种特性,一般可以直接采用二极管或采用硅三极管结成二极管来做PN结温度传感器。这种传感器有较好的线性,尺寸小,其热时间常数为0.2-2秒,灵敏度高。测温范围为-50-+150摄氏度。同型号的二极管或三极管特性相不完全相同,因此他们的互换性较差。方案二:用LM35做温度传感器LM35是一种得到广泛使用的温度传感器。由于它采用内部补偿,所以输出可以从零摄氏度开始。在上述电压范围内,芯片从电源吸收的电流几乎是不变(约50uA),所以芯片自身几乎没有散热的问题。这么小的电流也使得该芯片在某些应用中特别适合,比如在电池供电的场合中,输出可以由第三个引脚取出,根本无需校准。在使用单一电源时,LM35的一个缺点就是无法指示低至零摄氏度的温度。据称利用LM35可测出20mV的电压,这一值相当于摄氏度(一些情况甚至可测出0-2mV的电压),但要指示零摄氏度或更低的温度时,最好还是提供一个负电源和一只下拉电阻。方案三:用DS18B20做温度传感器DS18B20是DALLS公司的最新单线数字温度传感器,它体积小、经济,是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点,是用户可轻松的组建传感器网络,为测量系统的构建引入全新的概念。现场温度可以直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如环境控制、设备或过程控制、测温类消费电子产品等。通过对比和对本次设计要求的考虑,决定第三种方案以DS18B20作为温度传感器。2.5温度检测模块2.5.1 DS18B20工作原理及运用DS18B20是美国DALLAS公司继DS1820之后最新推出的一种改进型智能温度传感器。与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现位的数字值读数方式。可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。低温度系数晶振的振荡频率受温度的影响很小1,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图2中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。DS18B20工作过程一般遵循以下协议:初始化ROM操作命令存储器操作命令处理数据初始化单总线上的所有处理均从初始化序列开始。初始化序列包括总线主机发出一复位脉冲,接着由从属器件送出存在脉冲。存在脉冲让总线控制器知DS1820在总线上且已准备好操作。ROM操作命令一旦总线主机检测到从属器件的存在,它便可以发出器件ROM操作命令之一。所有ROM操作命令均为8位长。这些命令列表如下:ReadROM(读ROM)33h此命令允许总线主机读DS18B20的8位产品系列编码,唯一的48位序列号,以及8位的CRC。此命令只能在总线上仅有一个DS18B20的情况下可以使用。如果总线上存在多于一个的从属器件,那么当所有从片企图同时发送时将发生数据冲突的现象(漏极开路会产生线与的结果)。MatchROM(符合ROM)55h此命令后继以64位的ROM数据序列,允许总线主机对多点总线上特定的DS18B20寻址。只有与64位ROM序列严格相符的DS18B20才能对后继的存贮器操作命令作出响应。所有与64位ROM序列不符的从片将等待复位脉冲。此命令在总线上有单个或多个器件的情况下均可使用。SkipROM(跳过ROM)CCh在单点总线系统中,此命令通过允许总线主机不提供64位ROM编码而访问存储器操作来节省时间。如果在总线上存在多于一个的从属器件而且在SkipROM命令之后发出读命令,那么由于多个从片同时发送数据,会在总线上发生数据冲突(漏极开路下拉会产生线与的效果)。SearchROM(搜索ROM)F0h当系统开始工作时,总线主机可能不知道单线总线上的器件个数或者不知道其64位ROM编码。搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。AlarmSearch(告警搜索)ECh此命令的流程与搜索ROM命令相同。但是,仅在最近一次温度测量出现告警的情况下,DS18B20才对此命令作出响应。告警的条件定义为温度高于TH或低于TL。只要DS18B20一上电,告警条件就保持在设置状态,直到另一次温度测量显示出非告警值或者改变TH或TL的设置,使得测量值再一次位于允许的范围之内。贮存在EEPROM内的触发器值用于告警。在单点总线系统中,此命令通过允许总线主机不提供64位ROM编码而访问存储器操作来节省时间。如果在总线上存在多于一个的从属器件而且在SkipROM命令之后发出读命令,那么由于多个从片同时发送数据,会在总线上发生数据冲突(漏极开路下拉会产生线与的效果)。SearchROM(搜索ROM)F0h当系统开始工作时,总线主机可能不知道单线总线上的器件个数或者不知道其64位ROM编码。搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。AlarmSearch(告警搜索)ECh此命令的流程与搜索ROM命令相同。但是,仅在最近一次温度测量出现告警的情况下,DS18B20才对此命令作出响应。告警的条件定义为温度高于TH或低于TL。只要DS18B20一上电,告警条件就保持在设置状态,直到另一次温度测量显示出非告警值或者改变TH或TL的设置,使得测量值再一次位于允许的范围之内。贮存在EEPROM内的触发器值用于告警。存储器操作命令WriteScratchpad(写暂存存储器)4Eh这个命令向DS18B20的暂存器中写入数据,开始位置在地址2。接下来写入的两个字节将被存到暂存器中的地址位置2和3。可以在任何时刻发出复位命令来中止写入。ReadScratchpad(读暂存存储器)BEh这个命令读取暂存器的内容。读取将从字节0开始,一直进行下去,直到第9(字节8,CRC)字节读完。如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。CopyScratchpad(复制暂存存储器)48h这条命令把暂存器的内容拷贝到DS18B20的E2存储器里,即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又正在忙于把暂存器拷贝到E2存储器,DS18B20就会输出一个“0”,如果拷贝结束的话,DS18B20则输出“1”。如果使用寄生电源,总线控制器必须在这条命令发出后立即起动强上拉并最少保持10ms。ConvertT(温度变换)44h这条命令启动一次温度转换而无需其他数据。温度转换命令被执行,而后DS18B20保持等待状态。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于做时间转换的话,DS18B20将在总线上输出“0”,若温度转换完成,则输出“1”。如果使用寄生电源,总线控制器必须在发出这条命令后立即起动强上拉,并保持500ms。RecallE2(重新调整E2)B8h这条命令把贮存在E2中温度触发器的值重新调至暂存存储器。这种重新调出的操作在对DS18B20上电时也自动发生,因此只要器件一上电,暂存存储器内就有了有效的数据。在这条命令发出之后,对于所发出的第一个读数据时间片,器件会输出温度转换忙的标识:“0”=忙,“1”=准备就绪。ReadPowerSupply(读电源)B4h对于在此命令发送至DS18B20之后所发出的第一读数据的时间片,器件都会给出其电源方式的信号:“0”=寄生电源供电,“1”=外部电源供电。处理数据DS18B20的高速暂存存储器由9个字节组成,其分配如图3所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。2.5.2 DS18B20的主要特征(1)独特的单线接口,只需一个接口引脚即可通信。(2)多点能力使份分布式温度检测应用得以简化。(3)不需要外部元件。(4)可用数据线供电。(5)不需备份电源。(6)测量范围从-55摄氏度至125摄氏度,增量值为0.5摄氏度。(7)最高12位分辨率,精度可达土0.5摄氏度。(8)12位分辨率时的最大工作周期为750毫秒。(9)以9为数字值方式读出温度。(10)在一秒内把温度转变为数字。(11)用户可定义的,非易失性的温度告警设置。(12)告警搜索命令识别和寻址温度在编定的极限之外的器件(温度告警情)。(13)64位光刻ROM,内置产品序列号,方便多机挂接。(14)应用范围包括恒温控制,工业系统,消费类产品,温度计或任何热敏系统。(15)多样封装形式,适应不同硬件系统。2.5.3 DS18B20的内部结构DS18B20内部结构图如图2.4所示:图2.4 DS18B20内部结构图2.5.4电路图DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图3-1-2所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。如图2.5所示:图2.5 DS18B20电路图2.6主控单元电路功能及引脚图STC90C516RD+系列单片机是宏晶科技推出的新一代超*/高速/低功耗的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可任意选择,内部集成MAX810专用复位电路,时钟频率在12MHz以下时,复位脚可直接接地,STC90C516RD+单片机的主要性能指标:1.增强型6 时钟/ 机器周期,12 时钟/ 机器周期 8051 CPU。2.工作电压:5.5V - 3.8V(5V 单片机)/3.8V - 2.4V(3V 单片机)。3.工作频率范围:0-40MHz,相当于普通8051的 080MHz。4.用户应用程序空间 4K/6K/7K/8K/10K/12K/13K/16K/32K/40K/48K/56K/ 61K/字节。5.片上集成 1280字节/512/256字节 RAM。6.通用I/O口(35/39 个),复位后为: P1/P2/P3/P4 是准双向口/ 弱上拉(普通8051 传统I/O 口),P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O 口用时,需加上拉电阻。7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器 / 仿真器可通过串口(P3.0/P3.1)直接下载用户程序,8K 程序3 - 5 秒即可完成一片。8.EEPROM 功能。9.看门狗。10.内部集成MAX810专用复位电路,外部晶体12M以下时,可省外部复位电路,复位脚可直接接地。11.共3个16位定时器/计数器,其中定时器0还可以当成2个8位定时器使用。12.外部中断4路,下降沿中断或低电平触发中断,Power Down模式可由外部中断低电平触发中断方式唤醒。13.通用异步串行口(UART),还可用定时器软件实现多个UART。14.工作温度范围:0-75/-40-+85。15.封装:LQFP-44,PDIP-40,PLCC-44。STC90C516RD+引脚图如图2.6所示: 图2.6 STC90C516RD引脚图2.7 STC90C516引脚说明Stc90c516RD+的常见引脚说明如表1.1所示:表1.1 STC90C516引脚说明管脚管脚编号说明LQFP44PDIP40PLCC44P0.0P0.737-3239324336P0:P0口既可作为输入/输出口,也可作为地址/数据复用总线使用。当P0口作为输入输出口时,P0是一个位准双向口,上电复位后处于开漏模式。P0口内部无上拉电阻,所以作I/O口必须外接10K4.7K的上拉电阻。当P0作为地址数据复用总线使用时,是低8位地址线A0A7,数据线的D0D7,此时无需外接上拉电阻。P1.0/T24012P1.0标准I/O口PORT10T2定时器/计数器2的外部输入P1.1/T2EX4123P1.1标准I/O口PORT11T2EX定时器/计数器2捕捉/重装方式的触发控制P1.24234标准I/O口PORT12P1.34345标准I/O口PORT13P1.44456标准I/O口PORT14P1.5167标准I/O口PORT15P1.6278标准I/O口PORT16P1.7389标准I/O口PORT17P2.0P2.718-2521-2824-31Port2:P2口内部有上拉电阻,既可作为输入/输出口,也可作为高8位地址总线使用(A8A15)。当P2口作为输入/输出口时,P2是一个8位准双向口。P3.0/RxD51011P3.0标准I/O口PORT30RxD串口1数据接收端P3.1/TxD71113P3.1标准I/O口PORT31TxD串口1数据发送端P3.281214P3.2标准I/O口PORT32INT0外部中断,下降沿中断或低电平中断P3.3/91315P3.3标准I/O口PORT33INT1外部中断1,下降沿中断或低电平中断P3.4/T0101416P3.4标准I/O口PORT34T0定时器/计数器0的外部输入P3.5/T1111517P3.5标准I/O口PORT35T1定时器/计数器1的外部输入P3.6/121618P3.6标准I/O口PORT36WR外部数据存储器写脉冲P3.7/131719P3.7标准I/O口PORT37RD外部存储器都脉冲其他常见引脚说明如下:P4.6/:此管脚已经是I/O口(P4.6),不用时可浮空P4.5/ALE:此管脚缺省是ALE(地址锁存信号),也可在ISP烧录时设置为P4.5P4.4/PSEN:此管脚已经是I/O口(P4.4),不用时可浮空2.8控制按键四位独立按键,能快速被MCU识别,大大提高MCU响应时间。按键定义:K5:最低温度加1;K6:最低温度减1;K7:最高温度加1;K8:最高温度减1;按键实物及电路图如图2.11、图2.12所示:图2.11按键实物图 图2.12按键电路图2.9 LCD1602液晶屏LCD1602分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别。其实物图如图3-4-1所示。LCD1602主要技术参数:显示容量:162个字符。芯片工作电压:4.4-5.5V。工作电流:2.0mA(5.0V)。模块最佳工作电压:5.0V。字符尺寸:2.954.35(WH)mm。 图2.13液晶显示屏实物图图2.14 LCD1602电路图2.10 LCD1602液晶显示模块的基本特点1.液晶屏显示是以若干个58或511点阵块组成的显示字符群。每个点阵块为一个字符位,字符间距和行距都为一个点的宽度。2.主控制驱动电路为HD44780(HITACHI)及其他公司全兼容电路,如SED178(SEIKOEPSON)、KS0066(SAMSUNG)、NJU6408(NERJAPANRADIO).3.具有字符发生器ROM可显示192种字符(160个57点阵字符和32个511点阵字符)。4.具有64个字节的自定义字符RAM,可自定义8个58点阵字符或4个511点阵字符。5.具有80个字节的RAM.6.标准的接口特性,适配M6800系列MPU的操作时序。7.模块结构紧凑、轻巧、装配容易。8.单+5V电源供电(宽温型需要一个-7V的驱动电源)。9.低功耗、长寿命、高可靠性。2.11 控制器接口时序说明当我们要写指令时,设置LCD1602的工作方式时:需要把RS置为低电平,RW置为低电平,然后将数据送到数据口D0D7,最后E引脚一个高脉冲将数据写入;当我们要写入数据字,在1602上实现显示时:需要把RS置为高电平,RW置为低电平,然后将数据送到数据口D0D7,最后E引脚一个高脉冲将数据写入。其时序图如图2.15和2.16所示:图2.15 LED1602读操作时序图2.16 LED1602写操作时序LCD1602相关时序参数如下表2.1所示:表2.1 LCD1602时序参数时序图符号极限值单位测试条件最小值典型值最大值E信号周期Tc400-ns引脚EE脉冲宽度Tpw150-nsE上升沿/下降沿时间tR、tF-25ns地址建立时间tsp130-ns引脚E、RS、R/W地址保持时间tHD110-ns数据建立时间(读操作)tD-100ns引脚DB0DB7数据保持时间(读操作)tHD220-ns数据建立时间(写操作)tSP240-ns数据建立时间(写操作)tHD210-ns2.12 STC90C51单片机最小系统系统的晶振电路如图2.7所示:图2.7晶振电路2.13复位电路图2.8复位电路如图2.8所示,复位电路和时钟电路是维持单片机最小系统运行的基本模块。单片机最小系统是在以51单片机为基础上扩展,使其能更方便地运用于测试系统中,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被测试的技术指标,从而能够大大提高产品的质量和数量。单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,称为在实时检测和自动控制领域中广泛应用的器件,在工业生产中称为必不可少的器件,尤其是在日常生活中发挥的作用也越来越大。2.14温度调节模块设计图2.9温度调节模块电路图当温度超过或低于所设定的温度值时继电器会打开,从而启动调温装置,使温度控制在所设定的最适温度范围内。2.15温度报警模块 图2.10温度报警电路图当大棚内的温度不在所设定的蔬菜的最适生长温度时就会报警(蜂鸣器打开),直到温度恢复到最适的温度范围时才停止警报。 第3章 软件设计及实现3.1整体系统框图该设计主要通过STC90C51单片机作为主系统,通过温度传感器BS18B20测得温室大棚内的温度,将测得的温度通过LED1602显示,与此同时还将测得的温度与设置的温度范围进行比较,当温度超过作物生长的最适温度时将启动蜂鸣器进行报警,并通过继电器开启降温装置(散热风扇)进行降温直至到最适大棚内作物的生长温度,当低于设置的最低温度时,同样蜂鸣器开始报警,升温装置通过继电器被启动,直到温度上升到设定的最适温度范围内,蜂鸣器停止报警,升温装置自动关闭。其流程图如下图所示:YN 图3.1系统整体框图3.2 DS18B20程序设计流程图系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。其程序流程图如图3.2所示:NYYN图3.2温度检测相关功能代码为:/*Function:18B20初始化*/void Init18b20 (void)D18B20=1;_nop_();D18B20=0;TempDelay(80); /delay 530 uS/80_nop_();D18B20=1;TempDelay(14); /delay 100 uS/14_nop_();_nop_();_nop_();if(D18B20=0)flag = 1; /detect 1820 success!elseflag = 0; /detect 1820 fail!TempDelay(20); /20_nop_();_nop_();D18B20 = 1;/*Function:向18B20写入一个字节*/void WriteByte (unsigned char idata wr) /单字节写入unsigned char idata i;for (i=0;i= 1;/*Function:读18B20的一个字节*/unsigned char ReadByte (void) /读取单字节unsigned char idata i,u=0;for(i=0;i= 1;D18B20 = 1;if(D18B20=1)u |= 0x80;TempDelay (2);_nop_();return(u);/*Function:读18B20*/void read_bytes (unsigned char idata j)unsigned char idata i;for(i=0;ij;i+) *p = ReadByte(); p+; /*Function:CRC校验*/unsigned char CRC (unsigned char j) /校验函数 unsigned char idata i,crc_data=0; for(i=0;ij;i+) /查表校验 crc_data = CrcTablecrc_datatemp_buffi; return (crc_data);/*Function:读取温度*/void GemTemp (void)/读取温度函数 read_bytes (9); if (CRC(9)=0) /校验正确 Temperature = temp_buff1*0x100 + temp_buff0;Temperature /= 16;TempDelay(1); void Config18b20 (void) /重新配置报警限定值和分辨率 Init18b20(); WriteByte(0xcc); /skip rom WriteByte(0x4e); /write scratchpad WriteByte(0x19);/上限 WriteByte(0x1a);/下限 WriteByte(0x7f);/set 12 bit (0.125) Init18b20(); WriteByte(0xcc);/skip rom WriteByte(0x48);/保存设定值 Init18b20(); WriteByte(0xcc);/skip rom WriteByte(0xb8); /回调设定值/*Function:读18B20ID*/void ReadID (void)/读取器件 idInit18b20();WriteByte(0x33); /read romread_bytes(8);/*Function:18B20ID全处理*/void TemperatuerResult(void) p = id_buff; ReadID(); Config18b20();Init18b20 ();WriteByte(0xcc); /skip romWriteByte(0x44); /Temperature convertInit18b20 ();WriteByte(0xcc); /skip romWriteByte(0xbe); /read Temperaturep = temp_buff;GemTemp();void GetTemp() if(TIM=20) /每隔 500ms 读取温度 TIM=0;TemperatuerResult();void T1zd(void) interrupt 3 /中断 TH1 = 0xD8; /10 TL1 = 0xF0; TIM+;3.3 LCD1602显示模块程序设计NYY 图3.3 1602程序设计框图 如图3.3所示,初始化LED1602显示模块,设置8位格式,2行,5*7矩阵显示,整体显示,关光标,不闪烁设定输入方式,增量不移位,清除屏幕显示,延时等待,将采集到的温湿度数据进行转换,十六进

温馨提示

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

评论

0/150

提交评论