您的当前位置:首页正文

基于单片机的温湿度检测

2024-09-02 来源:欧得旅游网
目 录

摘 要 ............................................................................................................................. I ABSTRACT ................................................................................................................... II 第1章 绪 论 ............................................................................................................ 1

1.1 课题来源 ........................................................................................................ 1 1.2 课题背景 ........................................................................................................ 1 1.3 国内外研究现状及分析 ................................................................................ 1 第2章 系统方案设计 ................................................................................................ 3

2.1 总体方案设计 ................................................................................................ 3 2.2 系统组成及框图 ............................................................................................ 3 第3章 硬件设计 ........................................................................................................ 4

3.1 微处理器 ........................................................................................................ 4

3.1.1 51单片机的主要特性 ......................................................................... 4 3.1.2 STC89C51的引脚具体介绍 ............................................................... 4 3.1.2 STC89C51的最小系统 ....................................................................... 6 3.2 温度测量电路的实现 .................................................................................... 6

3.2.1 温度传感器的选择 .............................................................................. 6 3.2.2 DS18B20介绍 ..................................................................................... 7 3.2.3 温度测量电路 ...................................................................................... 8 3.3 湿度测量电路的实现 .................................................................................... 9

3.3.1 湿度传感器的选择 .............................................................................. 9 3.3.2 HS1101介绍 ........................................................................................ 9 3.3.3 NE555振荡器 ..................................................................................... 10 3.3.4 湿度测量电路的实现 ........................................................................ 10 3.4 液晶显示及报警电路 .................................................................................. 12

3.4.1 显示方案的选择 ................................................................................ 12 3.4.2 LCD1602及其应用 ........................................................................... 12 3.4.3 报警电路 ............................................................................................ 14 3.5 按键电路设计 .............................................................................................. 14 第4章 软件设计 ...................................................................................................... 16

4.1 主程序流程图 .............................................................................................. 16 4.2 温度模块程序设计 ...................................................................................... 17 4.3 湿度模块程序设计 ...................................................... 错误!未定义书签。 4.4 显示子程序设计 .......................................................................................... 18 4.5 按键模块程序设计 ...................................................................................... 19 第5章 系统的仿真调试 .......................................................................................... 21 结 论 .......................................................................................................................... 22 参考文献 ...................................................................................................................... 23 附录I ............................................................................................................................ 24 附录II ........................................................................................................................... 25

河南大学本科毕业生学士学位论文

摘 要

随着大棚技术的普及,温室大棚数量不断增多,对于温室大棚来说,很重要的两个管理因素是温度控制及湿度控制。温湿度太低,植物就会被冻死或则停止生长,所以要将温湿度始终控制在适合植物生长的范围内。传统的温度控制是在温室大棚内部悬挂温度计,工人依据读取的温度值来调节大棚内的温度。如果仅靠人工控制,既耗人力,又容易发生差错。现在,随着农业产业规模的提高,对于数量较多的大棚,传统的温度控制措施就显现出很大的局限性。为此,在现代化的温室大棚管理中通常有温湿度自动控制系统,以控制温室大棚中的温湿度,适应生产需要,提高经济效益。

本论文主要阐述了基于STC89C51单片机的温室大棚温度及湿度控制系统设计原理、主要电路设计及软件设计等。该系统采用STC89C51单片机作为控制器,DS18B20作为温度传感器,HS1101作为湿度传感器。系统主要功能如下:

1.对温度进行测量 2.对湿度进行测量 3.温度及湿度的显示

4.温度及湿度超出设定范围时发出报警信号 5.设定温度及湿度设定值

关键词 STC89C51;温室大棚;温度及湿度

第Ⅰ页

河南大学本科毕业生学士学位论文

ABSTRACT

With the popularization of trellis technology, greenhouse trellis an ever-growing number, to greenhouse warming, it is important to shed two management factor is temperature control and humidity control. Temperature is too low, the plant can freeze to death or stop growth, so will always control temperature and humidity in suitable for plant growth range. The traditional temperature control is in greenhouse canopy internal suspension thermometer, workers will adjust the temperature according to read the temperature inside the shelter. If only, both consumption by artificial control human and easy to place regular orders. Now, with the increase of agricultural industry scale quantity shelter for the temperature control measures, the traditional is showing significant limitations. Therefore, in modern greenhouse trellis management zhongtong often temperature and humidity automatic control system to control the temperature and humidity, adapt to greenhouse canopy production needs and improve the economic benefit.

This paper mainly expounds the STC89C51 MCU based on greenhouse canopy temperature and humidity control system design principle, main circuit design and software design, etc. This system USES STC89C51 single chip microcomputer as controller, DS18B20 as temperature sensor, HS1101 as humidity sensor. System main function is as follows: 1. To temperature measuring 2. The humidity measurements 3. Temperature and humidity display

4. Temperature and humidity beyond the alarm-immediately set range 5. Set temperature and humidity value

Keywords: STC89C51; Greenhouse canopy; Temperature and humidity

第Ⅱ页

河南大学本科毕业生学士学位论文

第1章 绪 论

我国作为一个农业大国,温室技术的发展缺比较晚、与国外的技术相比有很大差距。为了提高这方面的技术,在自70年代末起,我国先后从日本、美国、荷兰和保加利亚等国引进了不下40套的现代化温室成套设备,虽然引进的这些温室设备技术领先、设备先进,但在我国的使用过程中还存在着较为严重问题,主要是由于我国自然气候的特点和引进的设备不能相符合,导致设备不能发挥起作用,加上设备的可改动性不大,因而很难达到设备对温室内温度、湿度等的合理控制。经过多年来的研究和实验,我国的温室大棚技术发展到现在,已经形成了比较完整和全面的体系。但在某些方面还有欠缺和需要改进地方, 可见,设计温湿度控制系统具有重要的现实意义。

1.1 课题来源

该课题为自选课题。

1.2 课题背景

传统农业生产中,农作物的产量受到自然因素的影响巨大,若天气情况不适合农作物的生长条件,就会导致其产量严重下降。为改变农业生产对自然环境的严重依赖,大棚技术应运而生。

现代化农业生产中,温室大棚作为一种反季节种植和提高产量的重要手段,越来越受到人们的关注。各种温室技术如雨后春笋般出现。温室大棚技术也越来越成熟。其中,温度和湿度作为大棚环境中的两个主要因素,对它们的检测及控制就显得尤为重要。

1.3 国内外研究现状及分析

国内温室发展现状。至20世纪60年代,中国的设施农业始终徘徊在小规模、低水平、发展速度缓慢的状态,70年代初期地膜覆盖技术引入中国,对保温保墒起到一定的作用。70~80年代,相继出现了塑料大棚和日光温室。90年代开始,中国设施农业逐步向规模化、集约化和科学化方向发展,技术水平有了大幅度提高。随着近年来国家相关科研项目的启动,中国的设施农业有了较快发展,设施面积和设施水平不断提高。近代温室的发展经历了改良型日光温室、大型玻璃温

- 第 1 页 -

河南大学本科毕业生学士学位论文

室和现代化温室三个阶段,但由于各地区生产状况、经济条件和利用目的的差异,至今各阶段不同类型的温室依然并存。

国外温室发展现状。国外温室栽培的起源以罗马为最早。罗马的哲学家塞内卡(Seneca,公元前3年至公元69年)记载了应用云母片作覆盖物生产早熟黄瓜。20世纪70年代以来,西方发达国家在设施农业上的投入和补贴较多,设施农业发展迅速。目前,全世界设施农业面积已达400余万公顷。荷兰、日本、以色列、美国、加拿大等国是设施农业十分发达的国家,其设施设备标准化、种苗技术及规范化栽培技术、植物保护及采后加工商品化技术、新型覆盖材料开发与应用技术、设施环境综合调控及农业机械化技术水平等都具有较高的水平,居世界领先地位。

自20世纪70年代以来,国外设施农业发达国家在温室环境配套工程技术方面也进行了大量研究,并取得了一些技术成果。以荷兰为代表的欧美国家设施园艺规模大、自动化程度高、生产效率高,设施农业主体没备温室内的光、水、气、肥等均实现了智能化控制;以色列的现代化温室可根据作物对环境的不同要求,通过计算机对内部环境进行自动监测和调控,实现温室作物全天候、周年性的高效生产;美国、日本等国还推出了代表当今世界最先进水平的全封闭式生产体系,即应用人工补充光照、采用网络通讯技术和视频技术进行温室环境的远程控制与诊断、由机械人或机械手进行移栽作业的“植物工厂”,大大提高了劳动生产率和产品产出率。

- 第 2 页 -

河南大学本科毕业生学士学位论文

第2章 系统方案设计

本章从控制系统的总体构成及原理框图对系统进行了总体分析说明,控制

系统组成以后,主要通过控制器、传感器及执行器对控制变量进行分析和处理。

2.1 总体方案设计

本系统采用STC89C51单片机作为微处理器,DS18B20作为温度传感器对温度进行检测,HS1101作为湿度传感器与NE555组成湿度测量模块,采用发光二极管实现报警功能,使用LCD1602对测得的温度及湿度值进行显示,使用按键对温度及湿度的设定值进行修改。

2.2 系统组成及框图

系统主要有温度测量模块、湿度测量模块、显示模块、报警模块、及按键模块。其原理框图如图2.1所示。

温度测量LCD液晶显示湿度测量STC89C51报警按键图2-1 系统组成框图

- 第 3 页 -

河南大学本科毕业生学士学位论文

第3章 硬件设计

本温度及湿度控制系统使用STC89C51作为控制器,用DS18B20实现对温度测测量,用HS1101及NE555实现的湿度的测量,并采用LCD1602将采集的的数据显示。现将系统硬件设计表述如下。

3.1 微处理器

微处理器是控制系统的核心部件。具有控制功能强,体积小,功耗小等一系列的优点,它在工业控制、智能仪表、节能技术改造、通讯系统、信号处理及家用电器产品中都得到了广泛的应用。本设计采用STC89C51作为微处理器。 3.1.1 51单片机的主要特性

51单片机的主要特性如表3-1所示。

表3-1 TC89C51主要特性表

兼容MCS51指令系统 32个双向I/O口 3个16位可编程定时/计数器中断 2个串行中断 2个外部中断源 2个读写中断口线 低功耗空闲和掉电模式 主要功能特性 8K可反复擦写Flash ROM 256x8bit内部RAM 时钟频率0-24MHz 可编程UART串行通道 共6个中断源 3级加密位 软件设置睡眠和唤醒功能

3.1.2 STC89C51的引脚具体介绍

STC89C51系列单片机是宏晶科技推出的新一代高速∕低功耗∕超强抗干扰的单片机,指令代码完全兼容传统8051单片机。STC89C51单片机的外形结构为40引脚双列直插式封装,其外部管脚如图3-1所示。

- 第 4 页 -

河南大学本科毕业生学士学位论文

图3-1 STC89C51外部引脚图

STC89C51的引脚含义具体介绍如下: 1. 主电源引脚(2根)

VCC(Pin40):电源输入,接+5V电源 GND(Pin20):接地线 2. 外接晶振引脚(2根)

XTAL1(Pin19):片内振荡电路的输入端 XTAL2(Pin20):片内振荡电路的输出端 3. 控制引脚(4根)

RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。

ALE/PROG(Pin30):地址锁存允许信号 PSEN(Pin29):外部存储器读选通信号

EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。

4. 可编程输入/输出引脚(32根)

STC89C51单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。

- 第 5 页 -

河南大学本科毕业生学士学位论文

PO口(Pin39~Pin32):8位双向I/O口线,名称为P0.0~P0.7 P1口(Pin1~Pin8):8位准双向I/O口线,名称为P1.0~P1.7 P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2.0~P2.7 P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3.0~P3.7 3.1.3 STC89C51的最小系统

单片机最小系统是是单片机可以工作的最小单元,包括电源、地、复位电路和晶振电路。在此基础上可扩展外围电路。STC89C51的最小系统如图3-2所示。

图3-2 STC89C51的最小系统

3.2 温度测量电路的实现

测温模块采用数字温度传感器DS18B20,它能代替模拟温度传感器和信号处理电路,直接与单片机沟通,完成温度采集和数据处理。DS18B20与AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。 3.2.1 温度传感器的选择

温度传感器的种类众多,在应用与高精度、高可靠性的场合时DALLAS(达拉斯)公司生产的DS18B20温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得DS18B20更受欢迎。我们选择DS18B20作为温度传感器。

- 第 6 页 -

河南大学本科毕业生学士学位论文

3.2.2 DS18B20介绍

DS18B20具有独特的单总线接口方式,仅需使用1个端口就能实现与单片机的双向通讯。全数字温度转换及输出提高了信号抗干扰能力和温度测量精度。它具有多样封装形式,适应不同硬件系统。它的工作电压使用范围宽(3.0~5.5 V),可以采用外部供电方式,也可以采用寄生电源方式,即当总线DQ为高电平时,窃取信号能量给DS18B20供电。它还有负压特性,电源极性接反时,DS18B20不会因接错线而烧毁,但不能正常工作。可以通过编程实现9~12位的温度转换精度设置。DS18B20采用3脚TO-92封装,形如三极管,同时也有8脚SOIC封装,还有6脚的TSOC封装,如图3-3所示。

图3-3 DS18B20的封装

其测温范围为-55~+125℃,在-10~85℃范围内,精度为±0.5℃。每一个DS18B20芯片的ROM中存放了一个64位ID号:前8位是产品类型编号,随后48位是该器件的自身序号,最后8位是前面56位的循环冗余校验码。因此,一条总线上可以同时挂接多个DS18B20,实现多点测温系统。另外用户还可根据实际情况设定非易失性温度报警上下限值TH和TL。DS18B20检测到温度值经转换为数字量后,自动存入存储器中,并与设定值TH或TL进行比较,当测量温度超出给定范围时,就输出报警信号,并自动识别是高温超限还是低温超限。

DS18B20的6个功能指令:

(1)温度转换指令(44H)。这个命令用于启动温度转换,无实质的数据要求。如果微控制器在该命令之后输出读操作命令,那么DS18B20将使DQ端为低电平,表示DS18B20正忙于温度转换,不能响应该命令。

(2)写便笺式存储器(4EH)。写便笺式存储器从TH存储单元开始,三个字节的数据将被定位在2到4号便笺式存储器单元。所有的三个字节必须在复位钳写入便笺式存储器。

- 第 7 页 -

河南大学本科毕业生学士学位论文

(3)读便笺式存储器(BEH)。该指令读取便笺式存储器的内容,读出的数据将从Byte0(存储器的0号单元)开始直到第9字节(CRC校验字)被读走。但如果不想读完所有字节,微控制器可以再任何时候输出复位信号中断其传输。

(4)复制便笺式存储器指令(48H)。把2、3、4号存储单元的内容存储到非易失性SRAM中去。复制期间,如果有读指令,DS18B20将把DQ置为低电平,直到转换结束,把DQ置为高电平。

(5)回读SRAM(B8H)。将存储在SRAM中的温度报警上下限、分别率配置的内容写回相应的便笺式存储器。

(6)读电源配置结构指令(B4H)。主控制设备发出该指令后在输出读时序,器件即会送出所使用的电源信息:0为寄生电源,1为外接电源。

DS18B20的ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。

在进行DS18B20操作时一般有以下步骤:(1)初始化DS18B20。(2)ROM指令操作。(3)便笺式存储器功能指令操作。(4)处理或数据传送。每一次DS18B20的操作都必须满足以上步骤,若是缺少或顺序混乱,期间将不会返回值。 3.2.3 温度测量电路

采用DS18B20数字温度传感器测量温度, DS18B20与单片机是单线双向通信。其连接电路如图3-4所示。

图3-4 DS18B20的测温电路(DQ端接51的P2.7)

- 第 8 页 -

河南大学本科毕业生学士学位论文

3.3 湿度测量电路的实现

HS1101实际上相当于一个可变电容,它会因外部环境湿度的变化而致使电容值变化,湿度测量模块采用HS1101及NE555一起组成,将该HS1101置于NE555震荡电路中,将电容值的变化转化为与之呈反比的电压频率信号,可直接被计算机采集。

3.3.1 湿度传感器的选择

传统的测量湿度使用干湿球湿度计,它虽然维护其来相当简单,只需定期给湿球加水及更换湿球纱布即可,但其精度不够、误差较大。电子式湿度传感器是近几十年,特别是近20年才迅速发展起来的。电子湿度传感技术由于发展快,精确性高,误差小,现在得到了广泛的应用。我们选择电子湿度传感器HS1101测量湿度。 3.3.2 HS1101介绍

HS1101是法国HUMIREL公司生产的基于独特工艺设计的电容式湿度传感器。采用具有专利权的固态聚合物结构。

特点:全互换性,在标准情况下不需校正;长时间饱和下快速脱湿;可以自动化焊接,包括波峰焊或水浸;高可靠性与长时间稳定性;可用于线性电压或频率输出回炉;快速反应时间。

HS1101是经过独特工艺设计的可变电容元件,这种想对湿度传感器可以大批量生产。可以应用于办公自动化,车厢内空气质量控制,家电,工业控制系统等在需要湿度补偿的场合它也可以得到很大的应用。HS1101如图3-5所示。

图3-5 HS1101的等效电路及其外观

HS1101湿度传感器随着湿度的变化其电容值的变化在一定程度上是线性的,测湿电路主要利用它们之间的线性关系,可以将湿度变化转化为电容值的变化

- 第 9 页 -

河南大学本科毕业生学士学位论文

其的等效电容值与相对湿度之间的关系如图3-2所示。

表3-2 等效电容值与相对湿度之间的数值关系

相对湿度RH(%) 0 10 20 30 40 50 电容值C(PF) 163 166 170 173 176 179 相对湿度RH(%) 60 70 80 90 100 电容值C(PF) 183 186 191 195 202 3.3.3 NE555振荡器

NE555是属于555系列的计时IC的其中的一种型号,555系列IC的接脚功 能及运用都是相容的,只是型号不同的因其价格不同其稳定度、省电、可产生的振荡频率也不大相同;而555是一个用途很广且相当普遍的计时IC,只需少数的电阻和电容,便可产生数位电路所需的各种不同频率之脉冲信号。其引脚位功能配置如图3-6所示。

图3-6 NE555引脚图

3.3.4 湿度测量电路的实现

采用HS1101及NE555实现对湿度进行测量,其电路连接如图3-7所示(NE555的3引脚通过1k电阻接51的P2.6)。

- 第 10 页 -

河南大学本科毕业生学士学位论文

图3-7 HS1101和NE555的测湿电路

此电路位典型的555非稳态电路,555芯片外接电阻R4,R5与HS1101,构成对HS1101的充电回路。7端通过555芯片内部的晶体管对地短路实现对HS1101的放电回路,并将引脚2,6端相连引入到片内比较器,构成一个多谐波振荡器,其中,R4相对于R5必须非常的小,但决不能低于一个最小值。R3是防止短路的保护电阻。555电路的非平衡电阻R6作为内部温度补偿用,目的是为了引入温度效应,使它与HS1101的温度效应相匹配。其工作循环可以描述如下:

Thigh=C@%RH*(R4+R5)*㏑2 Tlow=C@%RH*R5*㏑2

F=1/( Thigh+Tlow)=1/(C@%RH*(2*R5+R4)*㏑2)

式中:Thigh 表示一次循环输出高电平时间,单位(s)

Tlow 表示一次循环输出低电平时间,单位(s) C@%RH表示相对湿度下HS1101的容值,单位(F) F表示输出频率值,单位(HZ)

电路工作原理:HS1101作为一个变化的电容器,当电源VCC接通时,HS1101两端的电压Vc=0,定时电路处于置位状态由VCC通过R4与R5对变量电容HS1101充电,当Vc达到门限电压(2/3VCC)时,定时电路翻转为复位状态,HS1101通过R5向555内部的晶体管放电,当Vc降到触发电平(1/3VCC)时,定时电路又翻转为置位状态,HS1101又开始充电,这样周而复始,形成震荡。

典型频率湿度关系如表3-3所示(参考点:25℃,相对湿度:55%,输出频率:6660 Hz)。由此可以看出,空气相对湿度与555芯片输出频率存在一定线性关系。可以通过微处理器采集555芯片的频率,经过数据处理可以直接以相对湿度的数据进行显示。

- 第 11 页 -

河南大学本科毕业生学士学位论文

表3-3 相对湿度与频率的关系

相对湿度值/% 0 10 20 30 40 50 输出频率值/Hz 7351 7224 7100 6976 6853 6728 相对湿度值/% 60 70 80 90 100 输出频率值/kHz 6600 6468 6330 6186 6033 3.4 液晶显示及报警电路

本系统需要将测得的温度值和湿度值显示出来,并对值进行处理,判断其是否超出最大承受范围,若超出,则需要要报警。 3.4.1 显示方案的选择

显示方案有两种:一种是数码管显示,一种是LCD液晶显示。前者电路连接复杂,并且容易出现故障,后者使用起来非常方便,它和微处理器的连接简洁直观,容易理解。因此我们采用LCD1602液晶对温度和湿度实现显示。 3.4.2 LCD1602及其应用

1602液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧、位数多、程序简单的诸多优点,颇受欢迎。在本系统中使用的是字符型两行16字液晶显示器。在与单片机连接时使用接口电路(排针)相连,为并行通信。以下是1602液晶显示器的基本资料。

1602液晶显示采用标准的16脚接口,其中引脚功能如表3-4所示:(模块背面有标注)

- 第 12 页 -

河南大学本科毕业生学士学位论文

表3-4 1602引脚功能表

编号 1 2 3 4 5 6 7 8 符号 VSS VDD VL RS R/W E D0 D1 引脚说明 电源地 电源正极 液晶显示偏压信号 数据/命令选择端(H/L) 读/写选择端(H/L) 使能信号 Data 1/0 Data 1/0 编号 9 10 11 12 13 14 15 16 符号 D2 D3 D4 D5 D6 D7 BLA BLK 引脚说明 Data 1/0 Data 1/0 Data 1/0 Data 1/0 Data 1/0 Data 1/0 背光源正极 背光源负极 1602液晶模块内部的字符发生存储器(CGROM)已经存储了不同的点阵字符图形,这些字符有,阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,其中数字与字母同ASCII码兼容。

1602与微处理器的连接电路如图3-8所示。

图3-8 1602与微处理器的连接电路

其中,滑动变阻器R主要起调节1602亮度的作用,电阻R0起保护作用。

- 第 13 页 -

河南大学本科毕业生学士学位论文

3.4.3 报警电路

对于控制系统,当温度和湿度超出最大设定范围时,需要对温度及湿度进行调节,由于受到实验条件的限制,我们只设计报警电路。

报警电路可以使用蜂鸣器作声音报警,也可以使用发光二极管LED作光报警,本系统考虑到简单实用采用第二种方案。电路连接图如图3-9所示。

图3-9 报警电路(接51的P2.5)

3.5 按键电路设计

在一些智能化仪表中,人机接口通常是LED显示和小型键盘。对于键盘,其常见的工作方式有两种:一是直接使用系统中的微处理器对键盘进行检测,为键盘的及时响应,CPU需要频繁的执行动态扫描程序;二是采用专用的显示、键盘芯片,如8279、SAA1064等。结合本系统的具体情况,微处理器的工作强度并不大,故采用第一种方式进行键盘设计,其价格低廉,使用方便,能较充分的利用资源。

系统可以调节设定的温度及湿度值,我们可以通过四个按键来进行实现,前两个按键选择是温度设定还是湿度设定,后两个按键实现加一和减一操作,设计电路图如图3-10所示。

图3-10 按键电路

- 第 14 页 -

河南大学本科毕业生学士学位论文

其工作原理如下: 开关S-wendu和S-shidudu同时闭合或者同时断开时,U6和U7都输出低电平;当S-wendu闭合、S-shidudu断开时,U6输出低电平、U7输出高电平;当S-wendu断开、S-shidudu闭合时,U6输出高电平、U7输出低电平。U6和U7的输出端分别接微处理器的P0.1和P0.0端口,通过检查这两个端口的电平判断是温度设定还是湿度设定。将S+和S-分别接微处理器的两个外部中断接口。

- 第 15 页 -

河南大学本科毕业生学士学位论文

第4章 软件设计

本章主要对各个功能模块的程序流程进行说明

4.1 主程序流程图

主程序的主要功能是负责读出并处理DS18B20的测量温度值,读出测湿电路的结果,并将温度及湿度进行实时显示。程序流程图如图4-1所示

开始开总中断允许外部中断和定时器T0、T1中断1602初始化显示及T0、T1初始化设置读取温度值判断温度是否超出范围温度显示判断湿度是否超出范围湿度显示图4-1 主程序流程图

- 第 16 页 -

河南大学本科毕业生学士学位论文

4.2 温度模块程序设计

温度模块主要包括DS18B20的初始化以及与单片机之间的数据处理,程序流程图如图4-2所示。

开始初始化DS18B20N应答脉冲Y跳过读ROM启动温度转换初始化DS18B20N应答脉冲Y读暂存器(两个字节:高字节a,高字节b)(b<<8|a)即为温度数据图4-2 温度模块程序流程图

DS18B20与微处理器之间的通信比较复杂,每一次通信之前必须进行复位,复位的时间、等待时间、回应时间应严格按时序编程。

- 第 17 页 -

河南大学本科毕业生学士学位论文

4.3 湿度模块程序设计

湿度模块主要是利用定时器T0和T1对555的输出频率进行测量,进而得到相对湿度值,显示程序流程图如图4-3所示。

T0定时是否到50msYT0重装数据读T1的计数值,并清零N定时器T0开始计时,T1开始计数开始 图4-3 湿度模块程序流程图

在该块程序设计中,我们选取T0做定时器,定时时间是50ms,而选择T1做计数器,每当T0定时时间到就读取T1的计数值,然后将T1的计数值乘以20就可得到555芯片的输出频率,可进行数据处理从而得到相对湿度值。

4.4 显示子程序设计

显示子程序包括1602的初始化,以及对温度和湿度值的显示。初始化时第一行显示“wend”,第二行显示“shid”,然后根据温度的测得值及其正负将测得温度值和设定温度值在第一行,并将测得的频率值装换为相对湿度值,并将其和湿度设定值显示在第二行,显示子程序流程图如图4-4所示。

- 第 18 页 -

河南大学本科毕业生学士学位论文

显示湿度值将频率值转化为湿度值T1计数值*20显示温度符号加数值Y开始1602初始化设置初始化显示Tflag!=0NFlagdat=’ ’温度值转换ASC?码Flagdat=’-’温度值转换ASC?码结束图4-4 显示子程序流程图

4.5 按键模块程序设计

本系统采用了四个按键,将加减设置按键接两个外部中断0和1上,当外部中断被触发(即存在设定值设置)时,判断是另外两个按键是否按下(即判断是温度值设定还是湿度值设定),然后根据判断的条件执行设定值的改变。程序流程图如图4-5所示。

- 第 19 页 -

河南大学本科毕业生学士学位论文

开始外部中断引脚复位外部中断0外部中断1P0.0==0YNYP0.0==0NP0.1==0YNNP0.1==0YYP0.1==0NP0.1==0YNHsheding++Tsheding++Tsheding--Hsheding--返回

图4-5 按键模块程序流程图

- 第 20 页 -

河南大学本科毕业生学士学位论文

第5章 系统的仿真调试

Protues软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。采用Protues对本系统进行仿真,系统总体调试电路如图5-1所示。

图5-1 系统总体调试电路

在调试过程中,通过改变温度传感器的数值,来检验系统中温度模块是否运行正常。经过测试温度模块可以正常的显示,并且具有一定的快速性。通过改变NE555振荡电路中C3的容值(即HS1101的等效容值),来检验湿度摸快是否可以正常工作,经过测试湿度模块可以正常工作。并且对四个按键(即ST、SH、S+、S-)的功能进行了测试,都实现了应有的功能。

- 第 21 页 -

河南大学本科毕业生学士学位论文

结 论

在设计中,通过对硬件电路不断的处理,使得硬件部分比较完善,如按键模块中加入三个或非门电路避免了调温开关与调湿开关同时关闭的情况,另外,在二极管电路中加入了限流电阻,保证了二极管的使用寿命。总之,硬件电路的设计达到了抗干扰,较高精度的目的。软件部分中,对程序也做了数次修改,最终在Keil uVision3中实现了成功的模拟,进一步验证了设计思路。 本系统实现的功能如下。

1. 对温室大棚温度和湿度进行测量及显示 2. 报警设置

3.对温度和湿度的设定值通过按键可以进行调节 本系统的优点有以下几点。 1. 结构简单,容易实现 2. 造价低廉,性价比高 3.达到了一定的精度要求

- 第 22 页 -

河南大学本科毕业生学士学位论文

参考文献

【1】张剑平. 智能化检测系统及仪器. 国防工业出版社,2005年8月. 【2】刘畅生. 传感器简明手册及应用电路—温度传感器分册(上册). 西安电子科技大学出版社,2005年7月.

【3】孙育才. MCS-51系列单片微型计算机及其应用(第四版). 东南大学出版社,2004年3月.

【4】李军,李赋海等.检测技术及仪表.中国轻工业出版社,2006年. 【5】闫石. 数字电子技术基础. 高等教育出版社,2007年.

【6】俞斌,贾雅琼. 电容式湿度传感器的测试方法及其DSP的实现. 仪表技术与传感器,2008年04期.

【7】邵思飞. 一种湿度测量电路的设计. 现代电子技术,2008年20期. 【8】陈粤初. 单片机应用系统设计与实践. 北京航空航天大学出版社, 1991年.

【9】张靖,刘少强等编.检测技术与系统分析.中国电力出版社出版.2002年.

【10】赖寿宏等.微型计算机控制技术.机械工业出版社.2009年. 【11】李军,李赋海等.检测技术及仪表.中国轻工业出版社.2006年. 【12】江国强.现代数字逻辑电路. 电子工业出版社,2002 .

【13】俞斌;贾雅琼. 电容式湿度传感器的测试方法及其DSP的实现. 仪表技术与传感器, 2008年04期

- 第 23 页 -

河南大学本科毕业生学士学位论文

附录I

- 第 24 页 -

河南大学本科毕业生学士学位论文

附录II

#include #define uchar unsigned char #define uint unsigned int

sbit DQ=P2^7;//DS18B20与单片机连接口

sbit RS=P3^0;//LCD1602控制端与单片机的连接 sbit RW=P3^1; sbit EN=P3^7;

sbit ST=P0^0;//按键接口 sbit SH=P0^1; sbit Sjia=P3^2; sbit Sjian=P3^3;

sbit WBJ=P2^6;//温度报警接口 sbit HBJ=P2^5;//湿度报警接口

uchar code str1[]={\"Wend:\uchar code str2[]={\"Shid:\uchar data disdata1[6]; uchar data disdata2[4]; uint tvalue;//温度值

uchar tflag;//温度正负标志 uint tem0,tem1; uint temp0,temp1; uint f=0; int hhhh=0;

int tsheding=20;//设置温度值 int hsheding=40;//设置湿度值

void zhongd0() interrupt 0 //外部中断0 :加设置 {

if(ST==1) {

tsheding++; //温度值加1 }

if(SH==1) {

hsheding++; //湿度值加1 } }

- 第 25 页 -

河南大学本科毕业生学士学位论文

void zhongd1() interrupt 2 //外部中断1 :减设置 {

if(ST==1) {

tsheding--; //温度值减1 }

if(SH==1) {

hsheding--; //湿度值减1 } }

void timer0() interrupt 1 //T0定时中断 { TR0=0; TR1=0;

TL0=0xB0;//重装值,定时50000us TH0=0x3C;

tem0=TL1;//读数 tem1=TH1;

TL1=0x00;//计数器1清零 TH1=0x00; TR0=1;

TR1=1; }

void timer1() interrupt 3 //T1计数中断 { TR0=0; TR1=0;

TL0=0xB0;//重装值,定时50000us TH0=0x3C;

TL1=0x00;//计数器1清零 TH1=0x00; TR0=1; TR1=1; }

void init_timer() {

TMOD=0x51;//0101 0001 定时器0在模式1下工作16位定时器,定时方式式1下工作16位计数器,T1负跳变加1 TL0=0xB0;//定时器0初值 定时50000us

- 第 26 页 -

定时器1在模 河南大学本科毕业生学士学位论文

TH0=0x3C; TL1=0x00;//定时器1清零 TH1=0x00;

TR0=1;//T0开始计时 TR1=1;//T1开始计数 }

void TPanDuan()//温度超范围判断 {

uint k= tvalue/(10); if(tflag==0) {

if((k>(tsheding*1.2))||(k<(tsheding*0.8))) { WBJ=1; } else { WBJ=0; } } else {

if((k>tsheding*(-1.2))||(kvoid delay1ms(uint ms)//延时1毫秒 {

uint i,j;

for(i=0;ivoid wr_com(uchar com)//1602写指令 {

delay1ms(1); RS=0;

- 第 27 页 -

河南大学本科毕业生学士学位论文

RW=0; EN=0; P1=com; delay1ms(1); EN=1;

delay1ms(1); EN=0; }

void wr_dat(uchar dat)//1602写数据 {

delay1ms(1); RS=1; RW=0; EN=0; P1=dat;

delay1ms(1); EN=1;

delay1ms(1); EN=0; }

void lcd_init()//1602初始化设置 {

wr_com(0x38);delay1ms(1); //设置16*2显示,5*7点阵,8位数据接口;并延时 wr_com(0x08);delay1ms(1); //设置关显示,光标不显示,光标不闪烁;并延时 wr_com(0x01);delay1ms(1); //设置显示清屏;并延时

wr_com(0x06);delay1ms(1); //设置显示光标移动位置;并延时 wr_com(0x0c);delay1ms(1); //设置显示开及光标设置;并延时 }

void display(uchar *p)//显示子程序 {

while(*p!='\\0') {

wr_dat(*p); p++;

delay1ms(1); } }

init_play()//1602初始化显示 {

lcd_init();

wr_com(0x80); display(str1);

- 第 28 页 -

河南大学本科毕业生学士学位论文

wr_com(0xc0); display(str2); }

/**************************ds1820程序*************************/ void delay_18B20(uint i)//延时1微秒 {

while(i--); }

void ds1820rst()//DS18B20复位 {

uchar x=0;

DQ= 1; //DQ置位 delay_18B20(4); //延时

DQ = 0; //DQ拉低

delay_18B20(100); //精确延时大于480us DQ = 1; //拉高 delay_18B20(40); }

uchar ds1820rd()//DS18B20读数据 {

uchar i=0; uchar dat=0; for(i=8;i>0;i--) {

DQ=0; //给脉冲信号 dat>>=1;

DQ = 1; //给脉冲信号 if(DQ)

dat|=0x80; delay_18B20(10); }

return(dat); }

void ds1820wr(uchar wdata)//DS18B20写数据 {

uchar i=0; for(i=8;i>0;i--) {

DQ=0;

DQ=wdata&0x01; delay_18B20(10); DQ=1;

wdata>>=1;

- 第 29 页 -

河南大学本科毕业生学士学位论文

} }

void read_temp()//读取温度值并转换 {

uchar a,b;

ds1820rst();

ds1820wr(0xcc);//跳过读序列号 ds1820wr(0x44);//启动温度转换 ds1820rst();

ds1820wr(0xcc);//跳过读序列号 ds1820wr(0xbe);//读取温度 a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue<<=8; tvalue=tvalue|a; if(tvalue<0x0fff) {

tflag=0; } else {

tvalue=~tvalue+1; tflag=1; }

tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数 }

/*******************************************************************/ void ds1820disp1()//温度值显示 {

uchar flagdat;

uchar flagtsheding;

disdata1[0]=tvalue/1000+0x30;//百位数

disdata1[1]=tvalue%1000/100+0x30;//十位数 disdata1[2]=tvalue%100/10+0x30;//个位数 disdata1[3]=tvalue%10+0x30;//小数位

if(tshedingflagtsheding='-';

disdata1[4]=(~tsheding+1)/10+0x30; disdata1[5]=(~tsheding+1)%10+0x30; }

else {

- 第 30 页 -

河南大学本科毕业生学士学位论文

flagtsheding=' ';

disdata1[4]=tsheding/10+0x30; disdata1[5]=tsheding%10+0x30; }

if(tflag==0)

flagdat=0x20;//正温度不显示符号 else

flagdat=0x2d;//负温度显示负号:- if(disdata1[0]==0x30) {

disdata1[0]=0x20;//如果百位为0,不显示 if(disdata1[1]==0x30) { disdata1[1]=0x20;//如果百位为0,十位为0也不显示 } }

wr_com(0x85);

wr_dat(flagdat);//显示符号位 wr_com(0x86);

wr_dat(disdata1[0]);//显示百位 wr_com(0x87);

wr_dat(disdata1[1]);//显示十位 wr_com(0x88);

wr_dat(disdata1[2]);//显示个位 wr_com(0x89);

wr_dat(0x2e);//显示小数点 wr_com(0x8a);

wr_dat(disdata1[3]);//显示小数位 wr_com(0x8b);//显示设定温度值 wr_dat('('); wr_com(0x8c);

wr_dat(flagtsheding); wr_com(0x8d); wr_dat(disdata1[4]); wr_com(0x8e);

wr_dat(disdata1[5]); wr_com(0x8f); wr_dat(')'); }

/*******************************************************************/ void ds1820disp2()//湿度值显示

- 第 31 页 -

河南大学本科毕业生学士学位论文

{

f=tem1*256+tem0;

f=f*20; if((6033<=f)&&(f<=7351)) {

if((7224{ temp0=0;temp1=(7351-f)*10/127; } if((7100{ temp0=1;temp1=(7224-f)*10/124; } if((6976{ temp0=2;temp1=(7100-f)*10/124; } if((6853{ temp0=3;temp1=(6976-f)*10/123; } if((6728{ temp0=4;temp1=(6853-f)*10/125; } if((6600{ temp0=5;temp1=(6728-f)*10/128; } if((6486{ temp0=6;temp1=(6600-f)*10/132; } if((6330{ temp0=7;temp1=(6468-f)*10/138; } if((6186{ temp0=8;temp1=(6330-f)*10/144; } if((6033{ temp0=9;temp1=(6186-f)*10/153; } } else {

temp0=0;temp1=0; }

disdata2[0]=temp0+0x30; disdata2[1]=temp1+0x30;

disdata2[2]=hsheding/10+0x30; disdata2[3]=hsheding%10+0x30;

wr_com(0xc8);//显示所测湿度值 wr_dat(disdata2[0]); wr_com(0xc9);

wr_dat(disdata2[1]); wr_com(0xca); wr_dat('%');

wr_com(0xcb);//显示设定湿度值 wr_dat('('); wr_com(0xcc);

- 第 32 页 -

河南大学本科毕业生学士学位论文

wr_dat(disdata2[2]); wr_com(0xcd);

wr_dat(disdata2[3]); wr_com(0xce); wr_dat('%'); wr_com(0xcf); wr_dat(')'); }

/********************主程序***********************************/ void main() {

Sjia=0; Sjian=0; WBJ=0; HBJ=0;

init_play();//1602初始化显示 delay1ms(50); EA=1; //开中断

EX0=1;//允许外部中断0中断 EX1=1;//允许外部中断1中断 ET0=1;//允许定时器0中断 ET1=1;//允许计数器1中断 IT0=1; IT1=1;

init_timer();//定时/计数器初始化设置 while(1) {

read_temp();//读取温度 TPanDuan(); //温度是否超出范围的判断 ds1820disp1();//显示温度 delay1ms(50); ds1820disp2();//显示湿度 delay1ms(50); } }

- 第 33 页 -

因篇幅问题不能全部显示,请点此查看更多更全内容