ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:212.90KB ,
资源ID:3317748      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3317748.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(温室大棚控制系统设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

温室大棚控制系统设计.docx

1、温室大棚控制系统设计摘 要关键词: STC89C52单片机、DS-18B20 数字温度传感器、ULN-2003A集成芯片、 温室、自动控制、自动检测第二章 系统硬件电路的设计2.1系统硬件构成及其测控原理2.1.1系统硬件电路构成系统整体框图图2-1 系统整体框图2.1.2系统整体电路图图2-2 系统整体电路图 2.1.3系统工作原理本系统由如图2-1、图2-2所示,DHT11温湿度传感器采集数据,STC89C52单片机进行数据处理,LCD1602显示模块显示温湿度。由PWM控制温度调节模块进行温度调节,当温度小于18时,M4QA045电机停止运转,当温室大于28时,M4QA045电机全速运转

2、,当温度处于18和28之间时,通过PWM控制M4QA045电机转速。由STC89C52单片机输出高低电平控制湿度报警模块,当湿度大于65%RH或者小于45%RH时,STC89C52单片机输出高电平,湿度报警模块报警,当湿度处于45%RH和65%RH之间时,STC89C52单片机输出低电平,湿度报警模块关闭。2.2 显示模块的选择2.2.1DS18B20简介DS18B20数字温度传感器采用DS18B20可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样等优点,适用于各种狭小空间设备数字测温和控制领域。 2.2.2 DS18B20的性能特点 2.2.2.1、适应电压范围

3、更宽,电压范围:3.05.5V,在寄生电源方式下可由数 据线供电 2.2.2.2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯 2.2.2.3、 DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温 2.2.2.4、DS18B20在使用中不需要任何外围元件,全部 传感元件及转换电路集成在形如一只三极管的集成电路内 2.2.2.5、温范围55125,在-10+85时精度为0.5 2.2.2.6、可编程 的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高

4、精度测温 2.2.2.7、在9位分辨率时最多在 93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快 2.2.2.8、测量结果直接输出数字温度信号,以一 线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力 2.2.2.9、负压特性:电源极性接反时,芯片不会因发热而烧毁, 但不能正常工作。2.2.3 DS18B20的管脚排列2.2.3.1、DS18B20的外形及管脚排列如下图:DS18B20引脚定义:(1)DQ为数字信号输入/输出端; (2)GND为电源地; (3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。 2.2.4

5、 DS18B20的内部结构DS18B20内部结构图:2.2.5 DS18B20的控制方法2.2单片机的选择2.2.1单片机概述单片微型计算机简称单片机,又称微控制器,嵌入式微控制器等,属于第四代电子计算机。它把中央处理器、存储器、输入/输出接口电路以及定时器叶数器集成在一块芯片上,从而具有体积小、功耗低、价格低廉、抗干扰能力强且可靠性高等特点,因此,适合应用于工业过程控制、智能仪器仪表和测控系统的前端装置。正是由于这一原因,国际上逐渐采用微控制器(MCU)代替单片微型计算机(SCM)这一名称。“微控制器”更能反映单片机的本质,但是由于单片机这个名称已经为国内大多数人所接受,所以仍沿用“单片机”

6、这一名称。1、单片机的主要特点有:(1) 具有优异的性能价格比。(2) 集成度高、体积小、可靠性高。(3) 控制功能强。(4) 低电压,低功耗。2、单片机的主要应用领域:(1) 工业控制(2) 仪器仪表(3) 电信技术(4) 办公自动化和计算机外部设备(5) 汽车和节能(6) 制导和导航(7) 商用产品(8) 家用电器因此,在本课题设计的温湿度测控系统中,采用单片机来实现。在单片机选用方面,由于STC89系列单片机与MCS-51系列单片机兼容,所以,本系统中选用STC89C52单片机。2.2.2 STC89C52单片机的引脚说明图2-3 STC89C52单片机引脚图芯片引脚如图2-3所示:VC

7、C : 电源。GND: 地。P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口: 是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电

8、流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表1所示。在flash编程和校验时,P1口接收低8位地址字节。P2口:P2口是一个具有内部上拉电阻的8 位双向I/O口,P2输出缓冲器能驱动4个TTL 逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上

9、拉发送1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3口:P3口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如上表2-1所示。在flash编程和校验时,P3口也接收一些控制信号。RST: 复位输入。晶振工作时,RST脚持续2个机器周期高电平将

10、使单片机复位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置 “1”,ALE操作将无效。这一位置 “1”,ALE 仅在执行MOV

11、X 或MOVC指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当STC89C52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。XTAL1:振荡器反相放大器和内部时钟发生电

12、路的输入端。XTAL2:振荡器反相放大器的输出端。程序存储器:如果EA引脚接地,程序读取只从外部存储器开始。对于89S52,如果EA 接VCC,程序读写先从内部存储器(地址为0000H1FFFH)开始,接着从外部寻址,寻址地址为:2000HFFFFH。数据存储器:STC89C52 有256 字节片内数据存储器。高128 字节与特殊功能寄存器重叠。也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。当一条指令访问高于7FH 的地址时,寻址方式决定CPU 访问高128 字节RAM 还是特殊功能寄存器空间。直接寻址方式访问特殊功能寄存器(SFR)定时器2:定时器2是一个16位定时/计

13、数器,它既可以做定时器,又可以做事件计数器。其工作方式由特殊寄存器T2CON中的C/T2位选择(如表2所示)。定时器2有三种工作模式:捕捉方式、自动重载(向下或向上计数)和波特率发生器。工作模式由T2CON中的相关位选择。定时器2 有2 个8位寄存器:TH2和TL2。在定时工作方式中,每个机器周期,TL2 寄存器都会加1。由于一个机器周期由12 个晶振周期构成,因此,计数频率就是晶振频率的1/12。中断:STC89C52 有6个中断源如表2-2所示:两个外部中断(INT0 和INT1),三个定时中断(定时器0、1、2)和一个串行中断每个中断源都可以通过置位或清除特殊寄存器IE 中的相关中断允许

14、控制位分别使得中断源有效或无效。IE还包括一个中断允许总控制位EA,它能一次禁止所有中断。定时器2可以被寄存器T2CON中的TF2和EXF2的或逻辑触发。程序进入中断服务后,这些标志位都可以由硬件清0。实际上,中断服务程序必须判定是否是TF2 或EXF2激活中断,标志位也必须由软件清01。表2-2 中断控制寄存器符号位地址功能EAIE.7中断总允许控制位。EA=0,中断总禁止;EA=1,各中断由各自的控制位设定-IE.6预留ET2IE.5定时器2中断允许控制位ESIE.4串行口中断允许控制位ET1IE.3定时器1中断允许控制位EX1IE.2外部中断1允许控制位ET0IE.1定时器0中断允许控制

15、位EX0IE.0外部中断1允许控制位2.2.3 STC89C52单片机最小系统图2-4 晶振电路图2-5 复位电路如图2-4、图2-5所示,复位电路和时钟电路是维持单片机最小系统运行的基本模块。单片机最小系统是在以51单片机为基础上扩展,使其能更方便地运用于测试系统中,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被测试的技术指标,从而能够大大提高产品的质量和数量。单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,称为在实时检测和自动控制领域中广泛应用的器件,在工业生产中称为必不可少的器件,尤其是在日常生活中发挥的作用也越来越大2。2.5 温度调节模块设计1、方案一

16、图2-12 方案一电路图 如图2-12所示,由PWM控制温度调节模块,当PWM端输入高电平时,电流经Q1放大,光耦导通,光耦输出电流经Q2放大后,使双向可控硅导通,M4QA045电机运转,当PWM端输入低电平时,双向可控硅控制端输入电流为0,交流电过零以后,双向可控硅截止,M4QA045电机停止运转4。2、方案二图2-13 方案二电路图如图2-13所示,由PWM控制温度调节模块,当PWM端输入高电平时,电流经Q4放大,常开端5闭合,M4QA045电机运转,当PWM端输入低电平时,常开端5断开,M4QA045电机停止运转。3、方案比较 方案一采用光耦隔离强电,方案二采用继电器隔离强电,但方案一没

17、有实现强电与直流源的隔离,且方案一环节复杂,计算难度大,过多的环节延长响应时间,从而影响温度调整模块的性能,所以选择方案二5。图2-14 电热器驱动电路基于以上两个方案的分析,加热器驱动电路也同样选用继电器隔离,当温度低于18时,相应引脚输出高电平,电流经过三极管放大,继电器常开端闭合,电热器工作,当温度高于23时,相应引脚输出低电平,继电器常开端关闭,电热器不工作6。2.6 湿度报警模块设计图2-14 湿度报警模块电路图如图2-14所示,由STC89C52单片机在BUZZER端输入信号控制湿度报警模块。当湿度大于65%RH或者小于45%RH时,BUZZER端输入高电平,电流经Q3放大,使蜂鸣

18、器工作;当湿度处于45%RH和65%RH之间时,BUZZER端输入低电平,蜂鸣器不工作7。第三章 温室大棚控制系统软件设计3.1 Keil C 软件概述单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷

19、宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿

20、真调试工具也会令你事半功倍。Keil C51开发系统基本知识Keil C51开发系统基本知识: 1. 系统概述 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的

21、优势。下面详细介绍Keil C51开发系统各部分功能和使用。 2. Keil C51单片机软件开发系统的整体结构 C51工具包的整体结构,其中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope

22、51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。 使用独立的Keil仿真器时,注意事项: *仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。 *仿真器上的复位按钮只复位仿真芯片,不复位目标系统。 *仿真芯片的31脚已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。1、安装好了Keil软件以后,我们打开它。2、 我们先新建一个工程文件,点击“Pr

23、oject-NewProject”菜单。3、选择工程文件要存放的路径 ,输入工程文件名 xdch 最后单击保存。4、在弹出的对话框中选择 CPU 厂商及型号。5、选择好STC89C52芯片,接着点击确定,弹出对话框。6、新建一个 C51 文件, 单击左上角的 New File,保存为DS18B20_4.C,(注意后缀名必须为.C),再单击“保存”。7、存好后把此文件加入到工程中方法如下:用鼠标在 Source Group1 上单击右键, 然后再单击 Add Files to Group Source Group 1。8、 选择要加入的文件, 找到 MAIN.C后, 单击 Add, 然后单击 C

24、lose。9、在编辑框里输入代码。10、生成 .hex 烧写文件,先单击Options for Target。11、在下图中,我们单击 Output, 选中 Create HEX F,再单击“确定”。以上是Keil软件的基本应用8。3.2 温室大棚控制系统程序设计3.2.1整体系统框图图4-1 系统整体框图首先,初始化单片机设置中断,定义变量,然后初始化LCD1602显示模块,设置8位格式,2行,5*7矩阵显示,整体显示,关光标,不闪烁设定输入方式,增量不移位,清除屏幕显示。调用温湿度采集程序进行数据采集,经过数据转换程序,将十六进制转换成十进制,将十进制数据输出到LCD1602显示模块进行显

25、示,根据温度调整电机转速,根据湿度判断是否报警,最后,进行新一轮的温湿度采集9。3.2.2 LCD1602显示模块程序设计图4-2 显示程序框图如图4-2,初始化LCD1602显示模块,设置8位格式,2行,5*7矩阵显示,整体显示,关光标,不闪烁设定输入方式,增量不移位,清除屏幕显示,延时等待,将采集到的温湿度数据进行转换,十六进制转换成十进制,然后,判断是否在第一行显示,输入相应的地址数据,延时等待,输入需要显示的数据。3.2.3 PWM程序设计图4-3 PWM程序框图如图4-3所示,进行中断程序初始化,设置定时器T0中断时间为1ms,中断100次,即100ms作为一个脉冲周期,每中断一次,

26、由变量T0_number进行计数,当变量T0_number大于100时,给变量T0_number赋值0,重新开始计数,当变量T0_number小于变量PWM_width_H时,输出高电平,当变量T0_number大于变量PWM_width_H时,输出低电平,以此控制脉宽10。第四章 调试中遇到的问题在软件的调试过程中,遇到的问题有很多,下面就几个比较突出的问题进行说明。1)在对Keil C的使用时不知道怎么才能让它生成HEX文件,从而进行仿真,因为以前没有用过类似的软件,不会并且也不知道需要生成HEX文件,导致前期的工作很难进行2 )因为用的是DHT11数字传感器,在编程过程中需要对所测得温度

27、进行处理,而且需要给定一个温度范围,建立一个温度与电机转速的数学模型,经过反复的计算、实验才实现。3)因为考虑到经济实用方面,所以在进行实物操作之前,采用proteus软件对程序和硬件电路进行仿真,可是在仿真过程中,独立按键总是不灵敏,这需要对延迟时间进行调整,而程序中设置的延迟时间总是不能够很符合实际操作,所以在这方面浪费了大量的时间进行反复的操作和实验4)在仿真过程中,因为用到的是LCD1602显示模块,这种显示模块是可以显示字符的,并且这种模块本身带有字库,但事实仿真过程中,电路要求相对宽松,不需加上拉电阻,而实际的电路调试过程需要加上拉电阻。 结 论以上为毕业期间所设计的温室大棚控制控

28、制系统,它经过多次修改和整理,可以满足设计的基本要求。采用STC89C52单片机、DHT11数字温湿度传感器、LCD1602液晶显示模块和M4QA045电机等器件设计温室大棚控制系统,实现温湿度采集、英文显示;温度自动调节,湿度越限报警功能。因为本人水平有限,此设计存在一定的问题。譬如系统抗干扰能力差,且没有实现自动自动复位。由于使用的是单片机作为核心的控制元件,配合其它器件,使本温度控制系统具有功能强、性能可靠、电路简单、成本低的特点,加上经过优化的程序,使其有很高的智能化水平。参考文献 孙育才.MCS-51系列单片微型计算机及其应用(第四版) M.南京:东南大学出版社,20042 康华光.

29、电子技术基础-模拟部分(第四版)M.北京:高等教育出版社,19993 康华光.电子技术基础-数字部分(第四版)M.北京:高等教育出版社,19994 石来德.机械参数电测技术M.上海:上海科学技术出版社,19815 Ernest O.Doebelin. Measurement Systems: Application and Design M.America: McGraw-HILL BOOK COMPANY,19766 曹继松.测试电路M.上海:上海交通大学出版社,19957 谢自美.电子线路设计实验测试M.武汉:华中科技大学出版社,20008 马靖善,秦玉平.C语言程序设计M.北京:清华大学

30、出版社,20059 赖麒文.8051 单片机 C语言开发环境实务与设计 M.北京:科学出版社,200210 徐爱钧.智能化测量控制仪表原理与设计M.北京:北京航空航天大学出版社,2004附 录#include #include #define LCD_DB P2sbit DQ = P10;sbit BUZZER = P11;sbit PWM = P12;sbit LCD_RS = P14;sbit LCD_RW = P15;sbit LCD_E = P16;sbit HEAT = P17;void initial(void);void read_DHT11(void);void LCD_wri

31、te_command(unsigned char com);void LCD_display_char(unsigned char x, unsigned char y, unsigned char dat);unsigned char read_DHT11_char(void);void control_temperature_humidity(void);void delay_xms(unsigned int time_xms);void delay_x10us(unsigned int time_x10us);unsigned char stop_system = 0;unsigned char lineOne = TS(0-50): C;unsigned char lineTwo = HS(20-90): %RH;unsigned int T0_number = 0, T1_number, PWM_width_H;u

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1