版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
系统总体设计2.1系统总体架构单片机这套系统的设计运用单片机为主要部分,来完成一个能对温度及湿度的监控、采集、处理与控制的一个控制系统,这套系统的各个单片机数字显示数字显示蘑菇房内的温度湿度传感器蘑菇房内的温度湿度传感器声光报警声光报警温湿度控制温湿度控制复位复位远程计算机RS-232通信远程计算机时钟时钟图2-1系统总体框架图本装置测温的原理是利用PC和单片机来实现的,蘑菇房内的温度传感器DS18B20可以检测出蘑菇房内的实际的温度,HS1101湿度传感器可以测量出实际的湿度,再通过数字显示模块显示出蘑菇房内的温度。假如系统所采集到的温度比报警的温度的最高值高,系统会产生报警信号,相关的工作设备改变工作状态,蘑菇房内的温度下降,直到温度降到比最高温度的复位值低的时候,调节温度的设备才会停下来。假如系统所采集到的温度比报警的温度的最低值低,系统同样会产生报警信号,工作人员操纵系统能够调节温度的设备,会给蘑菇房内升高温度,直到温度升到比最低温度的复位值高的时候,调节温度的设备应停止,进而完成对蘑菇房内的温度进行合理的监控与调节。蘑菇房内的湿度调节原理与温度调节是一样的。2.2硬件设备的选择2.2.1控制系统的选择1.单片机概述将计算机的各个模块集成在一块芯片上,就能得到一个单芯片的微型计算机。尽管它的功能在一块芯片上,但在理论上已经具有一台完整的计算机所具有的一系列功能和特点,因此称之为单片微控制器,简称单片机。所以单片机不仅仅是一个具有逻辑功能的芯片,而是由中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等部分组成。随着科学技术的发展,单片机的应用领域已覆盖各行各业,比如人工智能、实时监控、通讯设施、导航系统、铁路建设等领域都离不开单片机的参与。由于单片机的体积小、功耗低、价格便宜、不易受外界因素所干扰等因素,广泛应用于各种控制场合。2.PLC概述PLC(ProgrammableLogicController),又称可编程逻辑控制器。PLC是采用一类可编程,基于计算机科学的新兴工业控制器。其可用于内部存储程序,执行逻辑运算、顺序控制、定时、计数与算术操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程。PLC因为功能强大、功耗小、编程简单等因素而应用于各行各业,尤其是工业控制,各种自动化设备以及机械控制系统方面。随着科学技术的发展和自动化工业的快速推进,可编程逻辑控制器仍有巨大的发展空间,控制方向、控制难度将朝着多样化、简易化方向发展。它不仅仅在单机设备中应用量广泛,同时在大型工业网络控制中也有着不容忽视的地位。可编程逻辑控制器主要由CPU模块、输入模块、输出模块、和编程软件等组成。PLC主要有以下特点:(1)使用灵活、通用性强。PLC的功能模块品种多,可以灵活组成各种不同大小和不同功能的控制系统。同一个PLC装置用于不同的控制对象,只是输入输出组件和应用软件的不同。(2)可靠性高、抗干扰能力强。普通PC虽然功能强大但抗干扰能力差,在工业现场中,由于运行设备的电磁干扰,机械振动等扰动因素,可能使普通PC不能正常工作。PLC采用微电子技术,开关动作由无触点的电子存储器件来完成,所以工作寿命长,可靠性也大大提高。(3)接口简单方便。可编程逻辑控制器接口的设计,有较强的带负载能力,其接口电路也为模块式,使用起来更便捷。(4)体积小、功耗小、性价比高。(5)可编程逻辑控制器有五种标准化编程语言:顺序功能图(SFC)、梯形图(LD)、功能模块图(FBD)、指令表(IL)、结构文本(ST)。其中顺序功能图、梯形图和功能模块图是图形化语言,而指令表和结构文本是文本语言。(6)编程简单易掌握。PLC是以用户为导向的设备,编程语言形象直观,指令少,语法简单,不需要专业的电脑知识和语言,具有一定程度的电气和技术知识员工可以在短时间内掌握。使用专用的编程器,工作人员就可以轻松查看,编辑,修改用户程序。(7)强大的通信功能。综上所述,PLC(可编程逻辑控制器)虽然由于其高可靠性、稳定性、易于维护等特点广泛应用于工业控制等场合,但是其价格昂贵,并且各个PLC厂家的硬件体系互不兼容,同时考虑到我们的被控对象,单片机通过编程同样可以达到跟PLC一样的自动化目的。结合控制系统的价格、我们的需要,最终蘑菇房养殖气候监视系统最终决定采用单片机进行控制。3.单片机选择经过筛选,我们最终选择采用由美国ATMEL公司生产的AT89C52型号单片机。这是一款低电压,低功耗,高性能CMOS8位单片机,片内含8kbytes可重复擦写只读存储器(PEROM)和256的随机存取数据存储器(RAM)。AT89C52单片机是高密度非易失性存储器技术生产技术的应用,而且与标准的MCS-51指令系统及8052产品引脚兼容。在单片机内部含通用8位中央处理器跟FLASH存储单元。AT89C52单片机因为其控制方便、高性能、拓展性能强等特点而广泛应用于各种各样的控制场所。AT89C52主要特性:(1)电压范围:1.8V-3.6V。(2)超低功耗:2.5LA@4kHz2.2V;280A1MHz2.2V。节电模式:LPMO-LPM4,其中LPM4耗电最省,仅为O.11zA。(3)从等待方式唤醒,时间小于6S。(4)16位RISC结构,125ns指令周期。(5)时钟模块:高速晶体振荡器;低速晶体振荡器;数字控制振荡器DCOa12位200ksps的A/D转换器。(6)内置温度传感器。(7)16位定时器TimerA,TimerB。(8)两个串行通信接口可以用于异步模式和同步模式。(9)6个8位并行端口,且2个8位端口有中断能力。(10)内嵌硬件乘法器,60KBFlash,2KBRAM。(11)可以实现串行在系统编程,密保熔丝的程序代码保护。(12)有PDIP、PDFP及PLCC等几种封装形式,可以适应不同产品的需求。AT89C52的应用:(1)生产业控制应用:单片机最早应用于工业自动化控制之中,在过程控制,智能检测,一体化中主要运用单片机来实现控制,运算,处理,通信等方面。单独使用单片机可以实现一些小的功能,用来与一些上位计算机,结合成一个大规模的控制系统。尤其是在机电一体化中,这种情况得到了完美的结合,体现出其极其重要的优势。(2)智能仪器应用:内部含有点片剂的仪器系统称为智能仪器,也称为微机化仪器。这类仪器大多采用单片机进行信息处理、控制及通信,与非智能化仪器相比,功能得到了强化,增加了诸如数据存储、故障诊断、联网集控等功能。以单片机作为核心组成智能仪器表已经是自动化仪表发展的一种趋势。(3)家用电器应用:单片机功能齐全,价格便宜,容易操作,我们要实现对家用电器控制利用单片机是一个好的方法,这种单片机实现了自动化,智能化,是我们传统的控制方式的一种更新,现在已经大量的运用于电视,洗衣机,电冰箱,空调等各种设备。(4)信息和通信产品应用:我们用于信息传输的设备的智能化和自动化要求是非常高的,他们的许多功能都离不开我们的单片机。就像手机一样,手机里面有许多控制芯片,就是我们的单片机。另外还有一些计算机的硬件设备,就像键盘,音响,打印架等也不能没有单片机的参与。现在的单片机可以很便捷的和计算机进行数据的传输,为我们处理一些问题创造了便利条件。(5)办公自动化设备应用:现在办公自动化设备中大多数嵌入了单片机控制核心。如打印机、复印机、传真机、绘图机、考勤机及电话等。通过单片机控制不但可以完成设备的基本功能,还可以实现与计算机之间的数据通信。(6)商业营销设备应用:我们的商业营销通常会用到电子秤,打款机,阅读器,刷卡机等,这些都会用到单片机。在安全监测系统,保安系统,气温调节系统等,也需要用到单片机。2.2.2传感器的选择传感器是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。现如今传感器已经渗透到工业生产、数据测量、环境保护、医学诊断等领域。1.温度传感器选择温度传感器主要是用来测量蘑菇房内的实时温度,并将测得的物理量发送显示。DS18B20温度传感器是由美国DALLAS公司生产的一种数字化单总线传感器。该温度传感器采用先进的测量技术可以对采样的温度从二进制转换成十进制,同时还可以设定出所需要控制的温度。DS18B20在使用过程中可以不使用A/D转换器,这是因为该传感器使用了数字输出的方式。被测量的温度可以直接读出,这根普通通过热敏电阻测量温度的方式相比更为方便快捷。用户能够根据自身的需要通过编写程序,使DS18B20温度传感器能够在很小的时间间隔内完成9位到12位的数字值读数方式。向该传感器读写数据时只用一根口线即可。数据总线可以提供温度发生改变的功率,而数据总线同时亦可向温度传感器供电,这样就省去了电源线。DS18B20由于优异的测温性能而广泛适用于各种环境不良场所的温度采样,例如:环境控制、复杂设备或过程控制等。可广泛用于工业、民用、军事等领域的温度测量及机械仪器、测量现场和大型复杂设备中。由于气候监视系统中的温度信号需要被准确的识别出来,利用DS18B20传感器就能把自己感受到的信息转换成能够能发现的信号,这样就可以测量出蘑菇房内的温度了。DS18B20的特点:(1)不需要外部元件。(2)可用数据线供电,供电电压:+3.0-+5.5V。(3)测量范围从-55℃至+125℃。固有测温分辨率为0.5℃。当该传感器在-10℃一+85℃范围内,可确保测量误差不超过0.5℃,在-550C-+125℃范围内,测量误差也不超过2℃。(4)通过编程可实现9-12位的数字读数方式。(5)转换速率高,进行9位的温度转换仅需93.75ms,而分辨率为12位时该值最大为750ms。(6)电源内部有为了防止反接保护电路。(7)内含只读存储器。2.湿度传感器选择筛选后,我们的蘑菇房实时监测系统的湿度测量最终选出了电容式湿度传感器HS1101,相当于电路结构中的电容器器件,其电容随着测量的空气湿度而增加。作为HS1101湿度传感器,精度高,线性输出良好,不需校准,不需湿度补偿,稳定性好,可靠性高,适合于低湿度和露点测量需要的场合。如干燥炉,电缆充气设备、空气和土壤水分测湿。如何将电容量精确地更换到计算机中成为容易接受信号呢,一般有两种方法:第一个办法是将湿度传感器HS1101放置在运放和电阻组成的桥式振荡电路中,产生正弦波电压信号,接下来进行整流,直流放大,然后A/D转换成数字信号;而第二个办法是是湿度传感器放置在555振荡电路中,电容值变成电压频率信号,但是该信号与电容值成反比,可以直接由电脑收集。电容式湿度传感器的感湿机理是介电常数的变化是随着环境中的水分被电极之间的湿敏材料吸附而变化。电容式湿度传感器HS1101的特点如下:(1)全互换性。在快速除湿时,在标准环境中完全可互换性,无需校正较长的时间。(2)能够自动化焊接,包括波峰焊或水浸高可靠性,能够保证长时间的稳定性。(3)专利的固态聚合物结构。(4)可用于线性电压或频输出回炉。(5)快速反应时间。(6)宽量程:10~95%RH,稳定,比例线性的频率输出。(7)精度±5%RH,工作温度范围-40~80℃。(8)高可靠性与长时间稳定性。(9)防灰尘,可有效抵抗各种腐蚀性气体物质。(10)5VDC恒压供电,1-4VDC放大线性电压输出,便于用户使用。2.2.3RS-232串行通信在实用过程中,AT89C52单片机需要与蘑菇房内其他设施联系,才能获得一定的信息,单片机和单片机或者单片机和PC之间都需要进行联系,这种情况下就需要进行通信才能完成,通信分为串行通信和并行通信两种方式,本文利用RS-232的串行通信方式进行信息的通信。RS-232串行通信的特点:(1)在接口的位置上它的信号电平比其他的串行通信接口低,这种设计为了保护电路里边的芯片设计的;(2)RS-232它传数据非常的快,特别方便;(3)RS-232可以抵抗噪音,不容易受外界因素的影响;(4)传输距离可达几十米;(5)RS-232可以连接很多发送装置和很多接收装置,可以一块连接。RS-232不易受外界的影响,很长的距离也能通信还有可以同时连接多个发送装备和接收装备,本文的系统中蘑菇房和上位机靠的不是很近,需要测量很多地方,而且RS-232不容易受外界环境的影响,所以采用RS-232串口通信。2.2.4显示模块的选择液晶显示器模块是当系统通电正常运行时,其工作模式、运行实时状态等一些重要信息就会在液晶显示器上显示出来。通过对我们的显示模块进行筛选,选择SMG12864标准汉字和图形点阵液晶显示模块(LCM)。点阵液晶显示器(LCD)用于显示128X64点阵或8X4线。点大小为0.5X0。5(WXH)mm,内置ST7920接口LCD控制器,具有GB2312代码简体中文字体(16X16点阵),可直接与MCU单片机连接,具有8位并行和串行连接,广泛应用于Class仪器和电子设备。我们采用的SMGl2864液晶显示器共有20个引脚,由外部电源提供+5V的电来为其液晶模块供电,其对比度调节是由脚3来担任的,为了获得较好的效果,我们需要对UR2的电位器进行连接,第17脚是LCD屏的复位功能是由第17个引脚来担任的;分别为显示器背光的正负极分别是由第19和20引脚来担任的,其供电系统依旧由外部电源提供+5V的电源;其显示器模块的控制电路如图2-2所示。图2-2SMGl2864液晶显示器控制电路图2.2.5矩阵键盘电路的设计通过我们的筛选,决定在我们的蘑菇房气候监视系统中采用矩阵键盘,矩阵键盘就是按照相似的规则和规律将一系列的按键排列起来,组成一个键盘组,然后将其连接在单片机外围设备上。我们采用矩阵键盘不仅仅可以使得整个电路板美观,更重要的是这样子可以减少单片机的端口的使用。每个键的原理实际上是机械接触式开关,其主要作用是将实际电路中的电路开关转换为逻辑电平1和0。因为矩阵键盘是由四行四列相同的按键组成,共有16个键。16个键按照按键模式和微控制器连接,我们就需要16个IO,而使用矩阵键盘形式我们现在只需要8个IO口即可。这样一来就极大地方便了我们的外设结构和微控制器的连接。当有按下键时,这个按键的行线跟列线就会得电。我们常用的矩阵键盘扫描原理有以下两种:行扫描法(1)要确定是否有按钮被按,我们需要首先设置四个行线置0,然后检测四列的电平值的高低,当某列的电平为0时,然后按钮显示在四个按钮对应于0电平列行。如果所有行都为高,则表示没有按键。(2)当如何确定已经按下键却不知道按下的哪个键时,我们只能确定与步骤1中的低级列线对应的四个键之一。具体如何检测哪个键,如下所示:我们先给某一个行线置0,其他三线为高水平。然后检查列线,看看它是否低。当检测到列线为低电平时,低电平行线和低电平列线所在的坐标就是按下按钮。2.高低电平翻转法事实上,电平高低翻转法和行扫描法使用的基本原理是一样的。当使用时,首先使单片机P0端口的高4位为0,低4位为1.当按下按钮时,低4位之一从1变为0,高4位不变。这次你就可以确定被按下的按键列的位置。然后让P0端口的高4位为1,低4位为0。如果按下一个键,高四位之一从1变为0,但是低4位不改变。这次你可以确定被按下按钮的行位置。矩阵键盘控制电路如图2-3所示。图2-3矩阵键盘控制电路图2.2.6ADC0809模数转换器在自动控制领域,模拟量与数字量之间的转换是经常会遇到的问题,比如压力、流量、湿度、温度等,这些物理量都是连续变化的量,这样是不能被计算机识别的,所以,这些物理量需要首先变化为模拟量,其次再由模/数转换器变成单片机能够识别的数字量。由于我们的湿度传感器HS1101所测得的模拟量不能直接被单片机识别,因此经过我们的筛选,最终选择了ADC0809转换器。ADC0809是一种8路模拟输入的逐次逼近式A/D转换器件。在程序的参与下,它能够对任何通道实行A/D转换,并且能够输出8位的能够被计算机识别的数字量。这是一种经济的多路数据采集方法。ADC0809的引脚如图所示:图2-4ADC0809控制电路图3系统硬件设计方案3.1系统总体原理框图该系统总体原理框图由单片机模块、温湿度检测模块、报警模块、键盘模块、显示模块等模块组成。图3-1系统总原理图3.2电源电路一个系统要想正常运行,必须有可以给系统供电的电源电路,系统的电源电路如下图所示,系统中的电源变压器是为了给电路降压,可以将日常生活中的220V交流电高电压降到系统所需的10V交流电低电压;整流电路的目的是把系统中的交流10V电压转换成直流电;LM7812和LM7805是可以使电压保持稳定的元件,可以将电压稳定在一定的范围,增强了系统电压的可靠性;此外电路中的电容器可以过滤电路中的高频和低频的电压成分,增强了电压的稳定性。IC1LM7912图3-2电源电路电路图3.3数字量输入电路3.3.1DS18B20的测温原理DS18B20的测温原理如图所示,低温度系数振荡器和高温度系数振荡器分别可以测量温度后都可以通过减数计数器1和2减到0,最后都传到DS18B20,从而测得蘑菇房内的实际温度。测温原理图如图所示:斜率累加器斜率累加器预置计数比较器预置计数比较器预置低温度系数振荡器减法计数器1预置低温度系数振荡器减法计数器1温度传感器减到0温度传感器减到0减到0减到0高温系数振荡器减数计数器2高温系数振荡器减数计数器2图3-3温度传感器测温原理图3.3.2温度传感器供电方式假如几个DS18B20在同一条线上需要发生变化的时候,要想得到足够的电源电流,当温度发生变化时,需要给系统系共一个节点,当使用寄生电源方式时VDD引脚必须接地。温度传感器供电原理图如下:图3-4温度传感器供电方式原理图3.3.3DS18B20与单片机的硬件接口设计温度传感器DS18B20是一种采集温度信息的元器件,它与单片机只需要一根数据线就可以连接在一起。本系统中DS18B20与单片机的连接如图所示,其中Pl.1口和DS18B20连在一块,P1.0口和电源的负极相连,单片机能够读取DS18B20内部的数据,根据DS18B20的时序读取P1.0口的状态。硬件接口电路图如下:VDVDP1.1AT89C52P1.0GND R1DS18B20DS18B20DS18B20DS18B20DS18B20DS18B20 R2图3-5温度传感器与单片机的硬件接口电路图3.3.4NE555时基电路NE555能够准确产生定时脉冲,并且工作稳定的控制器。该时基电路可以输出的驱动电流最大有200mA。并且工作在多谐振荡器方式时,外接的电阻跟电容可以决定该时基电路的脉冲占空比;而当其工作在单稳态模式的时候,时基电路的延时能力很强,既可以延时数微妙,又可以延时数小时,而外接的电阻与电容可以确定时基电路的延时时间。NE555时基电路稳定工作的电压为:4.5~16V。NE555的控制电路如图3-6。图3-6NE555时基控制电路图3.3.5湿度测量电路设计由于HS1101实质上是一个湿敏电容,但是怎样将湿敏电容测得的变化量精确转换为单片机能够认别的数字量。我们选择将该湿敏电容置于555振荡电路中,即将NE555时基电路与电容式湿敏传感器HS1101通过一定的电路形式连接起来,将电容值的变化转为与之成反比的电压频率信号,可直接被计算机所采集。电容式湿度传感器的感湿机理是当基于电极间的感湿材料吸附环境中的水分时,其介电常数也随之变化。测湿电路图如图3-7所示:图3-7测湿电路图NE555电路功能的简单概括为:当6端和2端同时输入为“1”时,3端输出为“0”;当6端和2端同时输入为“0”时,3端输出为“1”。在此电路中,555定时器正是根据这一功能用作多稳态触发器输出频率信号的。当电源接通时,由于6和2端的输入为“0”,则定时器3脚输出为“1”;又由于C1两端电压为0,故通过R2和R3对C1充电,当C1两端电压达到2/3时,定时电路翻转,输出变为“0”。此时555定时器内部的放电BJT的基极电压为“1”,放电BJT导通,从而使电容C1通过R3和内部放电BJT进行放电,当C1两端电压降低到1/3时,定时器又翻转,使输出变为“1”,内部放电BJT截止,VCC又开始通过R2和R3对C1充电,如此周而复始,形成振荡。其工作循环中的充电时间为T=0.7(R2+R3)C1;放电时间T=0.7R3*C1;输出脉冲占空比为q=(R2+R3)/(R2+2R3),为了使输出脉冲占空比接近50%,R2应远远小于R3。当外界湿度变化时,HS1101两端电容值发生改变,从而改变定时电路的输出频率。因此只要测出555的输出频率,并根据湿度与输出频率的关系,即可求得环境的湿度。3.4报警电路如图3-8所示为声光报警电路。根据菌类不同的生存环境,在我们的蘑菇房气候养殖系统中就需要设置不同的温度及湿度,不同的蘑菇在其合适的温湿度环境下才会生长的更健康。这样,在系统开始运行时我们就会设置温度及其湿度上下限值。这样我们需要在单片机引脚外接蜂鸣器报警电路,我们之所以采用蜂鸣器作为报警器件是其工作稳定好、价格低廉、使用寿命长。该器件广泛应用于现场测量、工业控制等场合。当被测的温度值或者湿度值超标时,单片机引脚的高低电平就会发生反转,电路就会被接通,我们的蜂鸣器就会发出警报,及时通知蘑菇房内的工作人员做出措施。图3-8报警电路图3.5矩阵键盘模块在我们的蘑菇房气候监视系统中,矩阵键盘主要用于设置温度和湿度的限值即最高温度值和最低温度值,还有最高湿度值、最低湿度值。在这个设计中,我们是依次输入上限、下限。然后先输入温度后输入湿度。每次输入都要点*键确认。可以将这些值显示在12864液晶显示屏上。当我们需要输入新的上限和下限值时,我们可以按复位按钮,然后重新输入。在实际应用过程中,我们要对SMG12864液晶,键盘,以及时钟进行初始化。在调用12864液晶显示的过程中,流程图如图:图3-9调用液晶模块流程图3.6单片机复位电路与时钟电路无论微控制器功耗的大小,几乎所有的设备都需要复位电路,其基本要求是复位电路能够可靠地将程序运行,防止飞线数据EEPROM进行修改;此外,该SCM系统在操作中,由于各种因素的影响,干扰,可能会导致死亡SCM系统的现象不工作,为了防止这种现象的发生,于是就用到了看门狗电路;此外,SCM系统也需要生存向下瞬间微控制器能够因电力故障的重要数据常常发生很大的随机性,因此需要单芯片电源监控系统电路,在电源出现故障时可以通知微控制器。而在单片机的实际应用过程中,不管在单片机内部进行的无论是多大或者多小的程序,都是在时钟信号的基础上进行的,而该信号是由时钟晶振电路产生的。单片机按照功能的要求会产生一系列在时间上有一定次序的信号,有关电路的工作就是在该信号的基础上完成的。电路图3-10如下:图3-10单片机复位与时钟电路图3.7串口通信电路设计串口通信技术诞生于上世纪70年代,经过几十年的不断完善,如今己成为一种应用广泛且相当成熟的技术,是数据终端DTE和数据通讯设备DCE进行数据传输的标准。串口通信是按位进行数据传输,传输速率慢,但串口通信的优势是干扰小,可靠性高。PC与PC之间或者PC与终端之间传输数据一般采用串口通信的方法。本文设计的通信方式为运用RS-232通信。在串口通信中,一般采用一个标准接口就可以,为了使不同的各个设备都能连接起来。串口通信的通信方式是异步通信,在通信距离为中远距离的时候,普遍采用RS-232通信方式,RS-232串口通信方式有抑制工模干扰的优点。串口通信中有以下几个重要的参数,必须匹配好才可以:(1)波特率:波特率指的是信号被调试之后在单位时间里的变化,是用来测量传输速率的单位,简而言之就是每秒传输二进制数的位数。(2)数据位:运用解调器调节数据传输的时候,每次传输数据的时候,都需要有控制好这些数据才行,应该有开始发送数据,结束数据才可以,这组数据中就用到了数据位,一般是7位或者8位。(3)停止位:停止位指的是数据的倒数第一位。停止位表示传输数据已经结束了,它是逻辑“1”电平,标志着传送一个字符的结束,还可以校时。(4)奇偶校验位:是一种较错方式,分为奇校验和偶校验。单片机具有全双工串行通信端口,因此微控制器和PC可以方便地进行串行通信。串行通信满足一定条件,PC串口为RS-232电平,而微控制器的串口为TTL电平,两者之间必须有一个电平转换电路,一般使用专用芯片MAX232进行转换。串口通信电路图如下所示:图3-11串口通信电路设计电路图4温室控制系统软件设计4.1系统主程序设计如图所示为系统的主程序设计结构框图,系统由初始化状态,然后调用键盘扫描子程序后,再调用显示子程序,时间到达1s后系统开始初次上电,然后读出实际的温度值,再进行温度计算处理,当温度超过系统设置的报警温度的时候,系统就会发出报警信号,当没超过报警温度时继续循环此程序。主程序流程图如下:开始开始初始化 初始化调用键盘扫描子程序调用键盘扫描子程序调用显示子程序调用显示子程序1s到?1s到?N初次上电 Y初次上电 NNY N读出温度值温度计算处理显示数据刷新读出温度值温度计算处理显示数据刷新发出温度开始指令结束 发出温度开始指令结束温度超过报警值发出报警温度超过报警值发出报警图4-1系统主程序流程图4.2系统温湿度采集子程序设计系统温湿度采集子程序设计如图4-2所示。系统对温度信息进行采集并显示出来,然后进入等待中断,等待中断分为按键中断和串口中断,按键中断根据按下去的次数可以显示温度值,显示湿度值和显示照度值。而串口中断之后可以进行数据的传输,最后中断返回,完成整个系统的温湿度采集。温湿度采集流程图如下所示:图4-2湿度采集子程序设计程序框图4.3读出温度子程序设计如下图所示为读出子程序的程序设计,首先由温度传感器DS18B20发出复位命令,以及ROM命令,还有读取温度命令。读取传感器发送的各个命令之后,CRC开始校验,如果校验过程中9字节已完成,CRC校验正确,程序读取温度信息完成,则把以上信息都移入温度暂存器。开始开始发DS18B20复位命令发DS18B20复位命令发跳过RCM命令发跳过RCM命令发读取温湿度命令发读取温湿度命令结束移入温度暂存器CRC校验正?9字节完?读取操作,CRC校验结束移入温度暂存器CRC校验正?9字节完?读取操作,CRC校验图4-3读出温度子程序设计程序框图4.4DS18B20部分程序片段4.4.1DS18B20的初始化函数VoidDS18B20_Init(void)﹛ucharx=0;DQ=1;Delay10us(9);//约90usDQ=0;Delay10us(80);//约800usDQ=1;Delay10us(37);约370us﹜4.4.2自DS18B20读一个字节函数UcharDS18B20_RByte(void)﹛Uchari=0;Uchardat=0;for(i=8;i>0;i--)﹛DQ=0;dat>>=1;DQ=1;If(DQ)dat|=0x80;Delay10us(5);//约54us﹜return(dat);﹜
4.5液晶模块子程序设计l2864液晶显示器在该系统中起显示基本信息的作用,根据系统的基本需求,12864液晶需要显示信息具体为:蘑菇房内温湿度,系统工作状态等。12864液晶具体工作流程如图5-4所示,另外,液晶程序在运行的同时,气候监视系统的各个硬件部分之间相互协同制约。液晶显示模块流程图如下所示:图4-4液晶模块显示流程图4.6报警电路子程序设计系统的报警电路如图所示,报警电路是由单片机P2.1引脚完成的。当P2.1输出的是高电平的信号时,报警器就会发出声响,产生报警信号。当输出低电平的信号,报警器停止报警,最后报警结束,完成整个电路的报警信号。开始开始初始化初始化 P2.1是高电平P2.1是低电平P2.1是高电平P2.1是低电平报警结束报警器静音报警器发出声响报警结束报警器静音报警器发出声响图4-5报警电路子程序设计程序框图4.7键盘消抖子程序设计4.7.1键盘消抖程序流程图在单片机应用系统中,通常将键盘和简单的按钮开关作为简单的输入设备,通常的按钮为机械弹性开关,因此在按键开关在闭合跟断开时,触点会存在抖动现象。按键抖动的时间一般为10ms左右。抖动会产生一次按键的多次处理问题。应采取措施消除抖动的影响。对于单个按键,可以采用硬件去抖电路消抖。而在蘑菇房气候监视系统中采用矩阵键盘,宜采用软件延时或定时扫描去抖。软件延时是检测到有键按下时先延时,再检测按键的状态,若仍是闭合的则确定为有键按下;定时扫描则是利用单片机内部定时器产生某一定时间隔,定时时间到时检测按键是否按下,在此我们采用了软件延时的方法。键盘消抖流程图如下所示:图4-6键盘消抖程序设计程序框图4.7.2键盘消抖部分程序片段#include<reg52.h>#include"seg.h"sbitAN1=P1^5;ucharKeyCount,DownFlag;ucharKeyScan()﹛ucharKeyNum=0;If(AN==0)﹛KeyCount++;If(KeyCount==10)//计数消抖﹛DownFlag=1;﹜﹜else﹛KeyCount=0;if(DownFlag==1)﹛DownFlag=0;KeyNum=1;﹜﹜return(KeyNum);﹜5结论通过先进的技术来发展我国的农业,是我国未来发展农业的前景。而利用先进的技术来对蘑菇房的气候进行监控来提高蘑菇的产量和质量,更是一大出色的亮点,同时符合国务院党中央倡导的科技兴农方针,对于未来产业的发展提供了很有价值的帮助与参考。本文结合当地的蘑菇房养殖情况,通过对大棚内的温度湿度进行分析,结合蘑菇的生长需求,设计了一套蘑菇房养殖气候监控系统。以单片机AT89C52为核心,以温度传感器DS18B20作为测量温度的元件,以电容式湿敏传感器HS1101作为测量湿度的原件,共同对蘑菇房内的温度进行了实时的监控和处理。我们可以根据我们的使用要求,变换各个变量参数,以完成上位机干扰温度,我们还可以采集蘑菇房内的温度参数,这样就可以清楚地了解到蘑菇房内的各个指标。蘑菇房养殖气候监控系统对我国蘑菇房内温度的检测有很大的帮助作用,但是因为条件的影响,改进空间还非常巨大。影响蘑菇生长的因素还有很多,未来还应设计出一套对蘑菇房内的湿度、二氧化碳、光照等各个因素对蘑菇生长的影响。未来蘑菇房养殖气候监控系统的设计道路还很长。
参考文献[1]杨俊.十三届四中全会以来中国共产党农业现代化思想研究[D].武汉:师范大学,2004[2]王丽艳,邱立春,郭树国.我国温室发展现状与对策,农机化研究,2008拍:207-210[3]曹福刚.远程监控系统在农业温室大棚中的应用[D].硕士学位论文.辽宁:辽宁科技大学2007[4]孙玉广,卫向东.日光温室环境自动化监控系统的设计,农机化研究,2009,7:106-109[5]赵鸿图.基于单片机的温度控制系统的设计与实现,微计算机信息,2008,24(9-2):54-56[6]郭凤城.蘑菇房的监控系统的设计与实现[D].硕士学位论文.山东:山东大学,2010[7]张晓进,史小军,朱为,堵国梁.基于DS18B20的多点温度检测,电子工程师,2006,32(7):1-4[8]居荣,郭怡倩.DS18B20在温控系统中的应用,农机化研究,2005,1:224-226[9]葛志军,傅理.国内外温室产业发展现状与研究进展,安徽农业科学,2008,35:15751-15753[10]张英,穆楠,张雪清.国外设施农业的发展现状与趋势,农业与技术,2008,28(2):123-25[11]殷九泽.温室增温保温措施,西北园艺:蔬菜,2007,5:5l.[12]郭庆梁,李永奎.北方温室群环境监控系统的研究,农机化研究,2009,31(8):106-108[13]黄文龙,减壮望,王斌.棚室温度调控管理技术,现代农业科技,2008,23:121-122[14]何培祥,史磊,李庆东,郎同勇.智能温室测控系统软件的设计与研究,农机化研2008,11:133-136[15]于海龙,郭倩,杨娟等.环境因子对食用菌生长发育影响的研究进展.上海农业学报,2009,25(3):100-104.[16]杨玮,李民赞,王秀.农田信息传输方式现状及研究进展.农业工程学报,2008,24(5):297-301.[17]MarvinGerth.TransformersfortheElectrician[M].CengageLearning,2010.[18]CHRISTINEM.Plantphysiology:plantbiologyintheGenomeEra[J/OL].Science,1998,281.
致谢辞毕业论文是总结大学四年以来学习和实践相结合的结晶,也是见证我们大学生活中所创造的劳动果实,在即将告别母校的这一刻,首先我要感谢这四年来帮助过我的老师们,尤其要感谢的是我的导师张成元老师,感谢他在百忙之中抽出时间耐心地给我指导,从文章的选题、讲解设计本文的思路和文章的结构,到论文的定稿,如果不是您的指导,我不能够如此顺利地完成本篇论文。其次,我要感谢的是在这篇论文的写作过程中我所参考过的文章的作者们,是你们给了我写作的思路和方向,在这里我谨代表自己对你们表示真挚的谢意。再次,我还要感谢我的同学和朋友们,感谢你们在论文的写作过程中对我的帮助,使得我能够克服写作中的困难与瓶颈。同时,在撰写论文的过程中,自己的很多缺点也暴露了出来。我在学校的图书馆学习了很多图书文献,也在网上搜索了大量与本次论文主题相关的论文等。经过这次的论文编写,丰富了我在自己专业的很多学术空白,并且通过这次论文撰写,不仅使自己以前学习的理论知识得到了巩固与加强,而且还在一定程度上培养了我发现问题解决问题的能力以及最为重要且实用的动手能力。这些实践知识是书本上没有的,也是我日后从事工作所必备的技能,我非常开心能独立完成此次的毕业论文的设计。从此次论文设计中我收获了许多,同时也坚定了学习下去的信心,日后我会继续完善自己的知识体系,继续追求对知识的渴望。最后,我还要感谢我的父母,是你们的谆谆教诲,给了我无限的动力。这些都为以后从事各方面的工作打下了一个良好的基础。在论文的设计过程中学到了很多东西,让我体会到了什么叫做学术研究,体验到了研究过程中的充实,这在以后的工作中将是一笔宝贵的财富。附录一程序#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#defineI_TH0((65536-50000)/256)//定时器50000us#defineI_TL0((65536-50000)%256)ucharcodedigit[10]={"0123456789"};//温实测度查询数值ucharcodeError[]={"Error!Check!"};//18B20检测警告uchardis1[16]={"current:"};//实测温度uchardis2[16]={"stated:"};//设定温度uinttemper=20;//设定温度初始值uchartime;//设置全局变量,专门用于严格延时sbitBEEP=P1^5;//蜂鸣器sbitRelay=P1^4;sbitRS=P2^6;//LCD12864sbitRW=P2^5;sbitE=P2^7;sbitBF=P0^7;sbitDQ=P3^7;//DS18B20/***********************************Delay**************************/函数功能:延时1ms(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒***************************************************/voiddelay1ms(){uchari,j;for(i=0;i<4;i++)for(j=0;j<33;j++);}/*****************************************************函数功能:延时若干毫秒入口参数:n***************************************************/voiddelaynms(ucharn){uchari;for(i=0;i<n;i++)delay1ms();}/*****************************************************函数功能:延时若干微秒入口参数:n***************************************************/voidDelayXus(ucharn){while(n--){_nop_();_nop_();}}/*****************************************************函数功能:延时若干个半秒入口参数:n***************************************************/voidDelaySec(ucharn){ucharj;while(n--){for(j=0;j<5;j++)delaynms(200);}}/************************************LCD12864**************************//*****************************************************函数功能:判断液晶模块的忙碌状态返回值:result。result=1,忙碌;result=0,不忙***************************************************/bitBusyTest(void){bitresult;RS=0;//根据规定,RS为低电平,RW为高电平时,可以读状态 E=1;//E=1,才允许读写_nop_();//空操作_nop_();_nop_(); _nop_();//空操作四个机器周期,给硬件反应时间 result=BF;//将忙碌标志电平赋给resultE=0;//将E恢复低电平Returnresult;}/*****************************************************函数功能:将模式设置指令或显示地址写入液晶模块入口参数:n***************************************************/voidWriteInstruction(ucharcmd){while(BusyTest()==1);//如果忙就等待RS=0;//根据规定,RS和R/W同时为低电平时,可以写入指令RW=0;E=0;//E置低电平,写指令时,E为高脉冲, //就是让E从0到1发生正跳变,所以应先置"0"_nop_();_nop_();//空操作两个机器周期,给硬件反应时间P0=cmd;//将数据送入P0口,即写入指令或地址_nop_();_nop_();_nop_();_nop_();//空操作四个机器周期,给硬件反应时间E=1;//E置高电平_nop_();_nop_();_nop_();_nop_();//空操作四个机器周期,给硬件反应时间E=0;//当E由高电平跳变成低电平时,液晶模块开始执行命令}/*****************************************************函数功能:指定字符显示的实际地址入口参数:n***************************************************/voidWriteAddress(unsignedcharx){WriteInstruction(x|0x80);//显示位置的确定方法规定为"80H+地址码x"}/*****************************************************函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:y(为字符常量***************************************************/voidWriteData(uchary){while(BusyTest()==1);RS=1;//RS为高电平,RW为低电平时,可以写入数据RW=0;E=0;//E置低电平,写指令时,E为高脉冲,就是让E从0到1发生正 跳变,所以应先置"0"P0=y;//将数据送入P0口,即将数据写入液晶模块_nop_();_nop_();_nop_();//空操作四个机器周期,给硬件反应时间E=1;//E置高电平_nop_();_nop_();_nop_();_nop_();//空操作四个机器周期,给硬件反应时间E=0;//当E由高电平跳变成低电平时,液晶模块开始执行命令}/*****************************************************函数功能:对12864的的显示模式进行初始化设置***************************************************/voidLcdInitiate(void){delaynms(15);//延时15ms,首次写指令时应给LCD一 段较长的反应时间WriteInstruction(0x38);//显示模式设置:16×2显示,5×7点阵,8 位数据接口delaynms(5);//延时5ms,给硬件一点反应时间 WriteInstruction(0x0c);//显示模式设置:显示开,无光标,光标不闪烁 delaynms(5);//延时5ms,给硬件一点反应时间 WriteInstruction(0x06);//显示模式设置:光标右移,字符不移 delaynms(5);//延时5ms,给硬件一点反应时间 WriteInstruction(0x01);//清屏幕指令,将以前的显示内容清除 delaynms(5);//延时5ms,给硬件一点反应时间}/***********************************DS18B20****************************//*****************************************************函数功能:将DS18B20传感器初始化,读取应答信号出口参数:flag***************************************************/bitInit_DS18B20(void){bitflag;//储存DS18B20是否存在的标志,flag=0,表示存在; flag=1,表示不存在DQ=1;//先将数据线拉高for(time=0;time<2;time++);//略微延时约6微秒DQ=0;DelayXus(240);//再将数据线从高拉低,要求保持480~960us//以向DS18B20发出一持续480~960us的低电平复位脉冲 DQ=1;//释放数据线(将数据线拉高)DelayXus(60);//延时约30usflag=DQ;//让单片机检测是否输出了存在脉冲(DQ=0表示存在)DelayXus(240);//等待设备释放数据线DelayXus(180);return(flag); //返回检测成功标志}/****************************************************函数功能:从DS18B20读取一个字节数据出口参数:dat***************************************************/ucharReadOneChar(void){uchari=0;uchardat;//储存读出的一个字节数据for(i=0;i<8;i++){dat>>=1;DQ=0;//开始时间片DelayXus(1);//延时等待,等待一个机器周期 DQ=1;//将数据线"人为"拉高,为单片机检测DS18B20的输出电平作准备 DelayXus(1);if(DQ==1)dat|=0x80;//如果读到的数据是1,则将1存入dat DelayXus(60);}return(dat);//返回读出的十进制数据}/*****************************************************函数功能:向DS18B20写入一个字节数据入口参数:dat***************************************************/voidWriteOneChar(uchardat){uchari=0;for(i=0;i<8;i++){DQ=0;//开始时间片DelayXus(1);//延时等待dat>>=1; //送出数据DelayXus(60);//等待时间片结束DQ=1;//恢复数据线DelayXus(1);}for(time=0;time<4;time++);//稍作延时,给硬件一点反应时间}/*****************************************************函数功能:处理用户设定的温度并显示*************************/voidWorkTemp(){dis2[9]=temper%100/10+'0';dis2[10]=temper%10+'0';WriteAddress(0x09);WriteData(dis2[9]);WriteAddress(0x0a);WriteData(dis2[10]);}/***************************************************以下是与温度有关的显示设置函数功能:显示*******************************/voiddisplay1(void){uchari=0;//从第一个字符开始显示dis1[11]='.';dis1[13]=0xdf;dis1[14]='C';WriteAddress(0x40);//写显示地址,将在第2行第1列开始显示while(dis1[i]!='\0')//只要没有写到结束标志,就继续写{WriteData(dis1[i]);//将字符常量写入LCDi++;//指向下一个字符delaynms(100);//延时100ms较长时间,以看清关于显示的说明}{uchari=0;WriteAddress(0x00);//写显示地址,将在第1行第1列开始显示while(dis2[i]!='\0')//只要没有写到结束标志,就继续写{WriteData(dis2[i]);//将字符常量写入LCDi++;//指向下一个字符delaynms(100);//延时100ms较长时间,以看清关于显示的说明}WorkTemp();WriteAddress(0x0b);WriteData(0xdf);WriteAddress(0x0c);WriteData('C');}/**************************************************函数功能:显示没有检测到DS18B20***************************************************/voiddisplay_error(void){uchari=0;WriteAddress(0x00);//写显示地址,将在第1行第1列开始显示while(Error[i]!='\0')//只要没有写到结束标志,就继续写{WriteData(Error[i]);//将字符常量写入LCDi++;//指向下一个字符delaynms(100);//延时100ms较长时间,以看清关于显示的说明}while(1);//进入死循环,等待查明原因}/*****************************************************函数功能:显示温度的整数部分入口参数:x***************************************************/voiddisplay_temp1(ucharx){uchark,l;//k,l分别储存温度的十位和个位k=(x%100)/10;//取十位l=x%10;//取个位WriteAddress(0x49);WriteData(digit[k]);WriteAddress(0x4a);WriteData(digit[l]);delaynms(50);}/*****************************************************函数功能:显示温度的小数数部分入口参数:x***************************************************/voiddisplay_temp2(ucharx){WriteAddress(0x4c);WriteData(digit[x]);delaynms(50);}/*****************************************************函数功能:做好读温度的准备***************************************************/voidReadyReadTemp(void){Init_DS18B20();WriteOneChar(0xCC);WriteOneChar(0x44);for(time=0;time<100;time++);Init_DS18B20();//将DS18B20初始化WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0xBE);//读取温度寄存器,前两个分别是温度的低位和高位}/*************************************************************/voidbeep(){uchari,j;for(i=0;i<100;i++){BEEP=!BEEP;for(j=0;j<250;j++);}BEEP=1;}/***************************************************************//*****************************************************函数功能:按键延时处理***************************************************/voidtime_int()interrupt1using1{inttime;TH0=I_TH0;TL0=I_TL0;time++;if(time>=5){time=0;EX1=1;EX0=1;TR0=0;}}/*****************************************************函数功能:按键中断处理***************************************************/voidkey1_int()interrupt0using2{delaynms(50);//延时防抖if(!P3^2)if(temper<70)//限定用户设定温度上限为70°c{delaynms(50);temper++;beep();}WorkTemp();//处理用户输入的设定温度并显示在LCD上EX0=0;//中断允许关闭,避免短时间内产生多个中断请求TR0=1;//打开定时器,一段时间后再次打开中断允许}voidkey2_int()interrupt2using2{delaynms(50);if(!P3^3)if(temper>20)//限定用户设定温度下限为20°c{delaynms(50);temper--;beep();}WorkTemp();EX1=0;TR0=1;}/***************************main************************************/voidmain(void){ucharTL,TH,TN,TD;//存储温度低八位,高八位,十进制温度整数部分, 十进制温度小数部分TMOD=0x01;TCON=0x00;IE=0x8f;IP=0x0d;TH0=I_TH0;TL0=I_TL0;LcdInitiate();//将液晶初始化delaynms(5);if(Init_DS18B20()==1)//检测DS18B20连接是否有错display_error();display1();while(1){ReadyReadTemp();//读温度准备TL=ReadOneChar();//先读的是温度值低位TH=ReadOneChar();//接着读的是温度值高位TN=TH*16+TL/16;Delaynms;}}附录二外文文献SCMisanintegratedcircuitchip,istheuseoflargescaleintegratedcircuittechnologytoadataprocessingcapabilityofCPUCPUrandomaccessmemoryRAM,read-onlymemoryROM,avarietyofI/Oportandinterruptsystem,timers/timerfunctions(whichmayalsoincludedisplaydrivercircuitry,pulsewidthmodulationcircuit,analogmultiplexer,A/Dconvertercircuit)integratedintoasiliconconstituteasmallandcompletecomputersystems.SCMisalsoknownasmicro-controller(Microcontroller),becauseitisthefirsttobeusedinindustrialcontrol.OnlyasinglechipbytheCPUchipdevelopedfromadedicatedprocessor.ThefirstdesignisbyalargenumberofperipheralsandCPUonachipinthecomputersystem,smaller,moreeasilyintegratedintoacomplexanddemandingonthevolumecontroldevicewhich.TheZ80INTEListhefirstdesignedinaccordancewiththisideaprocessor,thenonthedevelopmentofmicrocontrolleranddedicatedprocessorswillbepartingways.Are8-bitmicrocontrollerearlyor4bits.OneofthemostsuccessfulistheINTEL8031,forasimple,reliableandgoodperformancewasalotofpraise.Thendevelopedin8031outofMCS51MCUSystems.SCMsystemsba
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消防知识竞赛超全版题库
- 中国消防安全总公司权威指南
- 牙套佩戴与口腔健康的关系
- 车站运管考试试题及答案
- 医学生理试题及答案
- 2025-2026人教版一年级体育期末测试卷
- 肠道微生物组氢气代谢物与氧化应激
- ICU心电图相关知识
- 年产400万米柔纱帘、罗马帘、200万米卷帘、香格里拉帘项目环评报告
- 教学楼卫生考核制度
- 服务外包人员保密管理制度(3篇)
- 2026中国电信四川公用信息产业有限责任公司社会成熟人才招聘备考题库及答案详解(夺冠系列)
- 成都高新区桂溪街道公办幼儿园招聘编外人员考试备考题库及答案解析
- 2025年医院病历管理操作规范
- 2026云南保山电力股份有限公司校园招聘50人笔试备考题库及答案解析
- GB 4053.2-2025固定式金属梯及平台安全要求第2部分:斜梯
- 2026届上海市长宁区市级名校高一上数学期末学业质量监测模拟试题含解析
- 2026年烟草公司笔试综合试题及考点实操指引含答案
- 九年级寒假期末总结课件
- 压铸机作业人员安全培训课件
- 新产品研发质量管控流程详解
评论
0/150
提交评论