大棚基地温湿度自动控制系统_第1页
大棚基地温湿度自动控制系统_第2页
大棚基地温湿度自动控制系统_第3页
大棚基地温湿度自动控制系统_第4页
大棚基地温湿度自动控制系统_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、西华大学电气信息学院智能化电子系统设计报告 目录1 前言- 1 -2总体方案设计- 2 -2.1设计内容- 2 -2.2系统硬件电路整体框架图- 2 -2.3系统硬件电路图- 3 -3.单元模块设计- 4 -3.1各单元模块功能介绍- 4 -3.1.1晶振模块- 4 -3.1.2复位模块- 4 -3.1.3温度调节模块- 5 -3.1.4湿度报警模块设计- 5 -3.2电路参数的计算及元器件的选择- 6 -3.3特殊器件的介绍- 7 -4软件设计- 12 -4.1软件设计整体结构图- 12 -4.2 LCD1602显示模块结构图- 14 -4.3外部中断0、按键、设置(SET)温、湿度上下限、

2、UP+,DOWN:- 15 -4.4设定过程:即设定温、湿度上下限过程- 16 -5系统调试- 16 -5.1系统软硬件联调- 16 -5.2 系统的抗干扰设计- 17 -6总结与体会- 18 -7参考文献- 19 -8附录- 20 -8.1系统电路图- 20 -8.2 系统部分程序代码- 21 -1 前言随着单片机和传感技术的迅速发展,自动检测领域发生了巨大变化,温室环境自动监测控制方面的研究有了明显的进展,并且必将以其优异的性能价格比,逐步取代传统的温湿度控制措施.但是,目前应用于温室大棚的温湿度检测系统大多采用模拟温度传感器、多路模拟开关、A/D转换器及单片机等组成的传输系统。这种温湿度

3、度采集系统需要在温室大棚内布置大量的测温电缆,才能把现场传感器的信号送到采集卡上,安装和拆卸繁杂,成本也高。同时线路上传送的是模拟信号,易受干扰和损耗,测量误差也比较大。为了克服这些缺点,本文参考了一种基于单片机并采用数字化单总线技术的温度测控系统应用于温室大棚的的设计方案闭,根据实用者提出的问题进行了改进,提出了一种新的设计方案,在单总线上传输数字信号。本文介绍的温湿度测控系统就是基于单总线技术及其器件组建的。该系统能够对大棚内的温湿度进行采集,利用温湿度传感器将温室大棚内温湿度的变化,变换成数字量,其值由单片机处理,最后由单片机去控制液晶显示器,显示温室大棚内的实际温湿度,同时通过与预设量

4、比较,对大棚内的温度进行自动调节,如果超过我们预先设定的湿度限制,湿度报警模块将进行报警。这种设计方案实现了温湿度实时测量、显示和控制。该系统抗干扰能力强,具有较高的测量精度,不需要任何固定网络的支持,安装简单方便,性价比高,可维护性好。这种温湿度测控系统可应用于农业生产的温室大棚,实现对温度的实时控制,是一种比较智能、经济的方案,适于大力推广,以便促进农作物的生长,从而提高温室大棚的亩产量,以带来很好的经济效益和社会效益。2总体方案设计2.1设计内容要求设计一个大棚基地温湿度控制系统,当DHT11温湿度传感器检测到空气中温度超过预设的温度范围值时,直流电机会加速旋转,降低大棚内温度;当空气中

5、温度低于预设温度范围时,直流电机停止转动。当DHT11温湿度传感器检测到空气中湿度高于预设湿度范围时,电路启动报警系统,蜂鸣器工作;当DHT11温湿度传感器检测到空气中湿度低于预设湿度范围时,电路启动报警系统,蜂鸣器工作,电磁阀工作。2.2系统硬件电路整体框架图STC89C52DHT11温湿度检测模式LCD1602显示模块复位、晶振模块按键模块温湿度报警模块温度调节系统湿度调节系统图2-1 系统整体框图DHT11温湿度传感器采集数据,STC89C52单片机进行数据处理,LCD1602显示模块显示预设的温湿度范围和当前温湿度值。由PWM控制温度调节系统进行温度调节,当温度小于设定温度下限时,红色

6、指示灯亮,直流电机停止运转;当温室大于设定温度上限时,红色指示灯亮,直流电机全速运转;当温度处于18和28之间时,通过PWM控制直流电机转速。由STC89C52单片机输出高低电平控制湿度报警系统,当湿度小于45%RH时,STC89C52单片机输出低电平,黄色指示灯亮,湿度报警模块报警,打开电磁阀;当湿度大于65%RH时,STC89C52单片机输出低电平,黄色指示灯亮,湿度报警模块报警,打开电机通风;当湿度处于45%RH和65%RH之间时,STC89C52单片机输出高电平,湿度报警模块关闭,电磁阀关闭。复位模块用于给单片机复位。晶振模块用于传输时钟信号给单片机。其中温度和湿度的范围均是可以通过按

7、键功能设定的。2.3系统硬件电路图图2-2系统整体电路图3.单元模块设计3.1各单元模块功能介绍 3.1.1晶振模块图3-1 晶振电路晶振电路是给单片机提供时钟信号,晶振是石英振荡器的简称,英文名为Crystal,晶振分为有源晶振和无源晶振两种,其作用是在电路产生震荡电流,发出时钟信号。它是时钟电路中最重要的部件,它的作用是向IC等部件提供基准频率,它就像个标尺,工作频率不稳定会造成相关设备工作频率不稳定,自然容易出现问题。由于制造工艺不断提高,现在晶振的频率偏差、温度稳定性、老化率、密封性等重要技术指标都很好,已不容易出现故障,但在选用时仍可留意一下晶振的质量。3.1.2复位模块图3-2复位

8、电路 复位电路原理:VCC上电时,电容充电(充电过程中会有充电电流,并且在最开始时电流最大,随着时间推移逐渐减小直到电容充满电后充电电流变为0,此时无充电电流,电容器相当于开路,这个时候才是真正意义上的隔直,所以在电源接通的一瞬间,是有通交这个过程的),在电容充电这个过程中,RST端电压确正好相反是从VCC逐渐降低到0(因为充电电流是从大变小直到0),此过程中会有一段时间VCC处于高电平状态,导致单片机复位(时间常数有R和C决定)。但电容不再充电后,无电流通过,RST恒为0,单片机正常工作。3.1.3温度调节模块图3-3电机驱动电路图由PWM控制温度调节模块,当温度高于设定上限时,PWM端输入

9、高电平,电流经过三极管放大,继电器常开端闭合,电流经Q4放大,常开端闭合,直流电机运转;当温度低于设定下限时,当PWM端输入低电平时,常开端断开,直流电机停止运转。3.1.4湿度报警模块设计图3-4 湿度报警模块电路图如图2-5所示,由STC89C52单片机在BUZZER端输入信号控制湿度报警模块。当湿度大于65%RH或者小于45%RH时,BUZZER端输入高电平,电流经Q放大,使蜂鸣器工作;当湿度处于45%RH和65%RH之间或者在我们设定的范围内时,BUZZER端输入高电平,蜂鸣器不工作。3.2电路参数的计算及元器件的选择表3-1 主要元件参数计算 参数主要元件工作电流工作电压额定功率mi

10、ntypmaxmintypmax89C526.5mA-25mA3.3V5V5.5VLCD1602-2.0mA2.4mA2.2V5VVDD0.01WSHT112uA550uA-2.4V5V5.5V0.00275WL298-24mA36mA4.5V5V7V0.120W直流电机0.09A0.17A-5V12V12W表3-2 主要元件清单表元件参数和数量89C521LCD16021DT111L2981排阻10k电容电解电容10uF*1、100uF*1 100nF*1 30uF*1 47uF*1瓷片电容33pF*2 0.1uF*1电阻1k、10k 若干二极管1N4007*4 1N4148*1普通二极管*

11、4按键开关3LED3(红黄绿各1支)石英振荡器1电机小直流电机蜂鸣器1继电器13.3特殊器件的介绍3.3.1 DHT11数字温湿度传感器的介绍表3-3 DHT11引脚说明Pin名称注释1VDD供电 35.5VDC2DATA串行数据,单总线3NC空脚,请悬空4GND接地,电源负极DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT

12、11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为 4 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。表3-4 传感器性能说明参数条件MinTypMax单位湿度分辨率111%RH8Bit重复性±1%RH精度25±4%RH050±5%RH互换性可完全互换量程范围03090%RH252090%RH502080%RH响应时间

13、1/e(63%)25,1m/s 空气61015S迟滞±1%RH长期稳定性典型值±1%RH/yr温度分辨率111888Bit重复性±1精度±1±2量程范围050响应时间1/e(63%)630S3.3.2 L298的介绍L298 为SGS-THOMSON Microelectronics 所出产的双全桥步进电机专用驱动芯片( Dual Full-Bridge Driver ) ,内部包含4信道逻辑驱动电路和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge 的高电压、大电流双全桥式驱动器, TTL逻辑准位信号,

14、可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信号,但在本驱动电路中用L297 来提供时序信号,节省了单片机IO 端口的使用。L298N 之接脚如图3-5所示,Pin1 和Pin15 可与电流侦测用电阻连 接来控制负载的电路; OUTl、OUT2 和OUT3、OUT4 之间分别接2 个步进电机;input1input4 输入控制电位来控制电机的正反转;Enable 则控制电机停转。图3-5 L298引脚图3.3.3 STC89C52单片机的介绍图3-6 STC89C52单片机引脚图芯片引脚如图2-3所示:VCC : 电源端;GN

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

16、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口使用很强的内部上拉发送1。在使用8位地址(如M

17、OVX 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个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输

18、出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当STC89C52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND

19、。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。程序存储器:如果EA引脚接地,程序读取只从外部存储器开始。对于89S52,如果EA接VCC,程序读写先从内部存储器(地址为0000H1FFFH)开始,接着从外部寻址,寻址地址为:2000HFFFFH。数据存储器:STC89C52有256字节片内数据存储器。高128字节与特殊功能寄存器重叠。也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。当一条指令访问高于7FH的地址时,寻址方式决定CPU访问

20、高128字节RAM还是特殊功能寄存器空间。直接寻址方式访问特殊功能寄存器(SFR)中断:STC89C52有6个中断源如表2-2所示:两个外部中断(INT0和INT1),三个定时中断(定时器0、1、2)和一个串行中断每个中断源都可以通过置位或清除特殊寄存器IE中的相关中断允许控制位分别使得中断源有效或无效。IE还包括一个中断允许总控制位EA,它能一次禁止所有中断。定时器2可以被寄存器T2CON中的TF2和EXF2的或逻辑触发。程序进入中断服务后,这些标志位都可以由硬件清0。实际上,中断服务程序必须判定是否是TF2或EXF2激活中断,标志位也必须由软件清0。3.3.3LCD1602的介绍图3-7

21、LCD1602引脚1602共16个管脚,但是编程用到的主要管脚不过三个,分别为:RS(数据命令选择端),R/W(读写选择端),E(使能信号);以后编程便主要围绕这三个管脚展开进行初始化,写命令,写数据。以下具体阐述这三个管脚:RS为寄存器选择,高电平选择数据寄存器,低电平选择指令寄存器。R/W为读写选择,高电平进行读操作,低电平进行写操作。E端为使能端,后面和时序联系在一起。除此外,D0D7分别为8位双向数据线。RSR/W操作说明00写入指令码D0D701读取输出的D0D7状态字10写入数据D0D711从D0D7读取数据注:关于E=H脉冲开始时初始化E为0,然后置E为1,再清0.读取状态字时,

22、注意D7位,D7=1,禁止读写操作;D7=0,允许读写操作4软件设计4.1软件设计整体结构图 开始 当前温度大于设定湿度上限?显示温、湿度值读取温、湿度值输出信号初始化定时器0、1,外中断0初始化LCD初始化红灯亮,开蜂鸣器打开电机,降温Y当前文度小于设定湿度下限?N红灯亮,打开蜂鸣器Y N 温度正常,红灯灭,关蜂鸣器,关电磁阀当前湿度大于设定温度上限?黄灯亮,开蜂鸣器开风扇 YN 当前温度小于设定温度下限黄灯亮,开蜂鸣器,开电磁阀YN温度正常,黄灯灭关蜂鸣器,关风扇关电磁阀 打开外部中断0启动键盘延时2S,以便正常读取温、湿度值图4-1 系统软件设计整体结构图首先,初始化单片机设置中断,定义

23、变量,然后初始化LCD1602显示模块,设置8位格式,2行,5*7矩阵显示,整体显示,关光标,不闪烁设定输入方式,增量不移位,清除屏幕显示。调用温湿度采集程序进行数据采集,经过数据转换程序,将十六进制转换成十进制,将十进制数据输出到LCD1602显示模块进行显示,根据温度调整电机转速,根据湿度判断是否报警,最后,进行新一轮的温湿度采集4.2 LCD1602显示模块结构图图4-2 LCD1602显示模块结构图初始化LCD1602显示模块,设置8位格式,2行,5*7矩阵显示,整体显示,关光标,不闪烁设定输入方式,增量不移位,清除屏幕显示,延时等待,将采集到的温湿度数据进行转换,十六进制转换成十进制

24、,然后,判断是否在第一行显示,输入相应的地址数据,延时等待,输入需要显示的数据。4.3外部中断0、按键、设置(SET)温、湿度上下限、UP+,DOWN: INTO:P3.4有一个低电平 NYSET是否按下YSET是否放开 N YLCD光标移动到设定温度下限设定温度下限下限SET是否按下 N设定温度上限YSET是否按下 N设定湿度下限YSET是否按下 N设定湿度上限 YSET是否按下 N退出设定图4-3 中断流程图 4.4设定过程:即设定温、湿度上下限过程进入设定UP是否按下DOWN是否按下NNDOWN是否放开UP是否放开YNN Y设定值减1正常化处理设定值是否符合要求设定值加1Y设定值是否符合

25、要求NN正常化处理返回进行其它操作YY 图4-4 设定温、湿度上下限过程流程图5系统调试单片机应用系统的调试包括硬件调试和软件调试两部分。硬件调试和软件调试不能完全分开。许多硬件电路设计、连接错误是在程序运行过程中被发现和纠正的。5.1系统软硬件联调5.1.1 整机联调前的静态调试拿到设计好的印刷电路板,在未焊接各种元件或集成电路插座之前,应先观察印刷电路板是否有明显的断路、短路之处。尤其注意电源是否短路。或用万用表检测。如果存在上述故障,焊上元器件或集成电路后,非常难办。焊接前,仔细检查原件参数、型号及耐压值是否正确。焊接后,要仔细检查元器件金属部分有无碰触现象,有无焊锡短路现象。目测通过后

26、,空载上电检查线路板各管脚电位是否正常,特别是电源正极和地线。一切正常后,插上集成电路芯片,再通过检测各点电位是否符合要求。5.1.2 外部数据存储器的测试 单片机外部RAM的测试可通过程序测试法实现。可先向整个数据区全部写入一数据,再一一读出比较,若不一致,则出错,说明外部RAM有问题。5.1.3程序存储器的调试调试单片机的程序存储器,可以把一个已知内容的EPROM芯片插到样机的EPROM插座上,插上仿真头,运行程序。5.1.4其他部分的调试 显示部分是最基本的输出,当我们观看内部情况变化时,显示部分不看缺少。因此,我们首先要对显示部分进行调试。先编写一个显示的小程序,显示的内容可以是预设的

27、数值,观看显示部分能否正常显示。对于不能正常显示的有两种可能,其一,硬件的连接有问题。其二,软件的设计有问题。对于第一种可能,我们可以用万用表进行检测或直接观看电路的连接情况。对于第二种可能,我们需要打开数据窗口,观看数值的变化,对于不能变化的,我们还进一步需修改程序。当然了,我们也不能排除元件在焊接过程中的损坏情况。调试时,可能需要用到启动/停止调试、运行、步进、跟踪、停止运行及断点等功能,不同的情况需要不同的功能,希望读者能够灵活运用。需要调试的部分还有定时的调试、播放音乐调试,键盘调试。因调试方法大体相同,解决的办法也基本相同,这里就不在详细阐述每一部分的调试情况。5.2 系统的抗干扰设

28、计5.2.1 克服来自电源的干扰 电源的干扰是单片机应用系统中干扰的主要来源之一。由于任何电源及输电线路都存在分部参数,如分布电容、分布电感等。这些会引起电源的噪声干扰。可以采取隔离变压器双层屏蔽措施减少分布电容,提高系统抗干扰能力;采用交流稳压器稳定供电电压;采用分散独立功能块和干扰抑制器来消除或减小来自电源的干扰。5.2.2降低来自各功能模块的干扰 将模拟电路通过隔离放大器进行隔离;数字电路通过光电耦合器进行隔离;数字地和模拟地分开;采用差动放大器等措施提高电路的共模抑制比。5.2.3 设计好地线 在单片机应用系统中,地线大致分为系统地、机壳地、模拟地、数字地等。要将各种地分开,屏蔽线采用

29、多接地点。 此外,要注意电平匹配、元器件的筛选、采用双绞线等措施来消除干扰。5.2.4软件的抗干扰设计在程序设计中,对软件采取抗干扰设计,提高整机电路的抗干扰能力。通常采用数字滤波技术提高数据采集的可靠性。6总结与体会以上为本小组所设计的温室大棚控制控制系统,它经过多次修改和整理,可以满足设计的基本要求。采用STC89C52单片机、DHT11数字温湿度传感器、LCD1602液晶显示模块和直流电机等器件设计温室大棚控制系统,实现温湿度采集、显示;温度自动调节,湿度越限报警功能。由于使用的是单片机作为核心的控制元件,配合其它器件,使本温度控制系统具有功能强、性能可靠、电路简单、成本低的特点,加上经

30、过优化的程序,使其有很高的智能化水平。因为条件有限,此设计存在一定的问题。譬如系统抗干扰能力差,且没有实现自动自动复位。在程序的反复修改中,本小组成员积极讨论,群策群力,一起提出建议,并一步步的改进。设计成果与之前预计的略有偏差,实践中也遇到了各种各样的难题,很感谢杨坤明老师对我们的悉心指导,并对关键性问题提出了建设性意见和建议。他的治学严谨和科学研究的精神也是我们永远学习的榜样。本次课程设计历时一个月,小组组长董星星同学带着成员苟中发、王伟伟、唐国洪同学一起从最初的选题、定器材、画仿真图、做硬件到最后的软件调试。共同学习到了很多书本上没有的知识。大家都是第一次做实物,一边查资料、一边复习过去

31、的课本,同时积极向老师提问,第一次意识到团队协作的重要性。四个人分工各有不同,都在尽力做到尽善尽美,使每次设计达到最好的效果。7参考文献1 孙育才.MCS-51系列单片微型计算机及其应用(第四版) M.南京:东南大学出版社,20042 康华光.电子技术基础-模拟部分(第四版)M.北京:高等教育出版社,19993 康华光.电子技术基础-数字部分(第四版)M.北京:高等教育出版社,19994 石来德.机械参数电测技术M.上海:上海科学技术出版社,19815 Ernest O.Doebelin. Measurement Systems: Application and Design M.Americ

32、a: McGraw-HILL BOOK COMPANY,19766 曹继松.测试电路M.上海:上海交通大学出版社,19957 谢自美.电子线路设计实验测试M.武汉:华中科技大学出版社,20008 马靖善,秦玉平.C语言程序设计M.北京:清华大学出版社,20059 赖麒文.8051单片机C语言开发环境实务与设计 M.北京:科学出版社,200210 徐爱钧.智能化测量控制仪表原理与设计M.北京:北京航空航天大学出版社,20048附录8.1系统电路图8.2 系统部分程序代码/*最后成功作品*/#include <reg52.h>#include <intrins.h>/#in

33、clude <math.h> #include "lcd1602.h"#include "DHT11.H" uint T; /占空比 高电平时间 T=x|0<=x<=20000/*引脚定义*/P0 = LCD_DATA/已定义sbit JDQ = P11;/继电器输出sbit LEDR = P13;/LED红灯输出sbit LEDY = P14;/黄灯/sbit lcdrs = P15;/read 已定义/sbit lcdrw = P16;/write 已定义/sbit lcden = P17;/enable 已定义sbit UP

34、 = P20; / + sbit DOWN = P21;/ -sbit SPK = P22; /蜂鸣器输出sbit PWM = P23; /PWM信号输出sbit SET = P32;/由中断进入温湿度设定 SET键/sbit P2_0 = P34; /DHT11 DATA端口 /*/*/void timer_init() /定时器初始化TMOD = 0x11; /T0 T1 工作于方式1T=10000; /设定初始占空比为50%TH0 = (65536-20000)/256;/定时器0装初值:20msTL0 = (65536-20000)%256;TH1 = (65536-T)/256;/定

35、时器1装初值:10msTL1 = (65536-T)%256;EA = 1;/开启所有中断TR0 = 0;/关闭定时器0TR1 = 0;/关闭定时器1ET0 = 1;/允许定时器0中断ET1 = 1;/允许定时器1中断EX0 = 1;/允许外部中断0PWM = 0;void sanfeng()/打开电机散热 ,降低湿度int t; TR0 = 1; /运行定时器0,1 开始输出信号TR1 = 1;if(xianzhi_t>SETT_H)t= xianzhi_t-SETT_H;/显示值与设定值的差值决定 PWM 占空比=t/20else if(xianzhi_h<SETH_L)t=

36、SETH_L - xianzhi_h;else t = 10 ;if(t>20) t= 20; T=1000*t;/JDQ = 0;/控制继电器 打开电磁阀void out_init()/输出初始化PWM = 0; /关输出PWM信号LEDR = 1; /灭红灯LEDY = 1; /灭黄灯SPK = 1; /关蜂鸣器JDQ = 1; /关继电器 电磁阀/*/*/void main() /仿真lcd_init(); /lcd初始化 lcd_geshi(); /设定初始显示内容timer_init(); /定时器0,1外部中断0 初始化 都关out_init(); /初始化各输出信号RH()

37、; /读取温湿度Disp(); /显示温湿度while(1)if(xianzhi_t>SETT_H) /温度大于设定上限SPK = 0; /蜂鸣器鸣叫LEDR = 0;/红色灯亮JDQ = 0;/打开继电器 电磁阀sanfeng();/打开风扇 else if(xianzhi_t<SETT_L)/温度小于设定下限SPK = 0;LEDR = 0;elseLEDR = 1;/关闭灯SPK = 1;/关蜂鸣器JDQ = 1;/关电磁阀TR0 = 0;/关电机TR1 = 0;/定时器0,1关闭 ;无PWM输出if(xianzhi_h>SETH_H)/湿度太高LEDY = 0; /黄

38、色灯亮SPK = 0; /蜂鸣器鸣叫sanfeng(); /打开风扇else if(xianzhi_h <SETH_L)LEDY = 0; /黄灯亮SPK = 0; /蜂鸣器鸣叫JDQ = 0; /打开继电器 开电磁阀else /if(xianzhi_h<=SET_H)LEDY = 1; /关闭灯SPK = 1;/关蜂鸣器JDQ = 1;/关电磁阀TR0 = 0;/关电机TR1 = 0;/定时器0,1关闭 ;无PWM输出Delay(20000);/读取模块数据周期不易小于 2SEX0 = 1; /打开外部中断0 恢复按键设定功能 /*外部中断0,SET按键*/void INT0IS

39、R(void) interrupt 0 /SET按键 用外部中断0uchar H,L;EX0 = 0; /关外中断0if(!SET) while(!SET); /等待按键松开while(SET)/设置温度下限write_lcd1602_com(0x80+0x0a);if(!UP) while(!UP); /等待按键松开SETT_L+;if(SETT_L >SETT_H-1) SETT_L = SETT_H-1;H = SETT_L/10;L = SETT_L%10;write_lcd1602_com(0x80+9);write_lcd1602_dat(0x30+H);write_lcd1

40、602_dat(0x30+L);if(!DOWN) while(!DOWN); /等待按键松开SETT_L-;if(SETT_L <10) SETT_L = 10 ;H = SETT_L/10;L = SETT_L%10;write_lcd1602_com(0x80+9);write_lcd1602_dat(0x30+H);write_lcd1602_dat(0x30+L);if(!SET) /设定温度上限while(!SET); /等待按键松开while(SET)write_lcd1602_com(0x80+0x0d);if(!UP) while(!UP); /等待按键松开SETT_H+;if(SETT_H >99) SETT_H = 99 ;H = SETT_H/10;L = SETT_H%10;write_lcd1602_com(0x80+0x0c);write_lcd1602_dat(0x30+H);write_lcd1602_dat(0x30+L); if(!DOWN) while(!DOWN); /等待按键松开SETT_H-;if(SETT_H <SETT_L+1) SETT_H

温馨提示

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

评论

0/150

提交评论