仓库温湿度的监测系统

更新时间:2024-06-11 10:02:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

仓库温湿度的监测系统

摘 要

防潮、防霉、防腐、防爆是仓库日常工作的重要内容,是衡量环境管理质量的重要指标。它直接影响到存贮物资质量。为保证日常工作的顺利进行,首要问题是加强仓库环境温度与湿度的监测工作。但传统的通过人工进行检测方法费时费力、效率低,而且精准度差。不能达到及时有效地对仓库进行通风、降温、祛湿的要求。传统的人工测试,测试的温度及湿度误差大,随机性大。根据这些现状一种造价低廉、使用方便且测量准确的温湿度测量仪就应运而生了。在测量仪上安装温度传感器,湿度传感器,通过单片机计算、显示和报警,可以实现室内温度和空气湿度自动调控功能,有助管理库房节省了时间,为设备安全运行提供了可靠的保障。随着社会的发展,该系统具有一定的实用价值和广泛的应用前景。

关键词:AT89S51 AD590 HS1100 LED

I

The warehouse of the temperature and

humidity monitoring system

Abstract:Moistureproof, mouldproof, anticorrosive, explosion-proof is the important content of the warehouse daily work, it is to measure the quality of

environmental management main index. It directly affects storage materials quality. To ensure the smooth implementation of the work of daily, the main issue was to strengthen warehouse environment temperature and humidity monitoring work. But the traditional testing method by artificial time-consuming, low efficiency and accuracy is poor. Can't achieve effective and timely to warehouse for ventilation and cooling, qushi requirements. The traditional manual testing, test the temperature and the humidity error is big, the randomness. According to the present situation a cheap and easy to use and accurate measurement of the temperature and humidity measuring instrument is made. In the measurement instrument installation temperature sensor, humidity sensors, through the

single-chip microcomputer calculation, display and alarm, can realize the indoor temperature and humidity automatic control function, help manage warehouse saves time, for the safe running of the equipment to provide reliable guarantee. With the development of the society, the system has certain practical value and broad application prospect.

Key words:AT89S51 AD590 HS1100 LED

II

目 录

第1章 引言 ........................................................................ 1 1.1背景 .......................................................... 1 1.2系统构成简介 .................................................. 1 第2章系统总体方案设计 ........................................................................................ 2 2.1温度传感器 .................................................... 2 2.2湿度传感器 .................................................... 7 2.3MC14433A/D转换器 .............................................. 9 2.4单片机89S51 ................................................. 11 第3章 系统的硬件设计和连接 ................................................. 14 3.1MC14433与89S51单片机的接口设计 .............................. 15 3.2显示与报警的设计 ............................................. 15 第4章 软件设计 .................................................................. 18 4.1主程序流程图 ................................................. 18 第5章 调试运行结果…………………………………………………………….21 结论 ............................................................ 23 谢辞 ................................................................................ 24 参考文献 ........................................................................... 25 附录 ............................................................ 26 附1 主程序清单 .................................................. 26 附2 89S51系统程序及子程序 ...................................... 31

III

本科毕业设计(论文)

第1章 引言

1.1背景

防潮、防霉、防腐、防爆是仓库日常工作的重要内容,是衡量环境管理质量的重要指标。它直接影响到存贮物资质量。为保证日常工作的顺利进行,首要问题是加强仓库环境温度与湿度的监测工作。但传统的通过人工进行检测方法费时费力、效率低,而且精准度差。不能达到及时有效地对仓库进行通风、降温、祛湿的要求。传统的人工测试,测试的温度及湿度误差大,随机性大。根据这些现状一种造价低廉、使用方便且测量准确的温湿度测量仪就应运而生了。在测量仪上安装温度传感器,湿度传感器,通过单片机计算、显示和报警,可以实现室内温度和空气湿度自动调控功能,有助管理库房节省了时间,为设备安全运行提供了可靠的保障。随着社会的发展,该系统具有一定的实用价值和广泛的应用前景。??

1.2系统构成简介

本设计由传感部分、数据分析处理部分、显示部分、报警部分,四大部分组成实现温度范围-30℃-+50℃ 误差± 1℃、湿度范围10%-100%RH 误差± 1%RH。计算机以8031单片机作为该监测系统的核心,能自动完成对温度进行采集、处理、缓冲、转换、并进行报警。工作稳定、性能可靠。其中传感部分至关重要,信心革命的三大重要支柱是信息的采集、传输和处理。信息采集中,首先要获得原始的信息,其最基本的元件是传感器,关键技术是传感器技术。因此,传感器及其相关的应用技术(传感器、与传感器相关的电子技术、信息处理)是信息领域的源头技术。

1

第2章 系统总体方案设计

本设计是基于单片机对数字信号的高敏感和可控性、温湿度传感器可以产生模拟信号,和A/D模拟数字转换芯片的性能,此设计以89S51基本系统为核心的一套检测系统,其中包括A/D转换、单片机、复位电路、温度检测、湿度检测、键盘及显示、报警电路、系统软件等部分的设计。系统总体方框图如图2-1。

AD590温度检测 CD4051多路CD4051多路开关 单片机 89S51 串行口LED显示 MC14433A/D转换 HS1100湿度检MC14433A/D转换 报警电路 图2-1 系统总体框图

本设计由信号采集、信号分析和信号处理三个部分组成的: (1) 信号采集 由AD590、HS1100及多路开关CD4051组成; (2) 信号分析 由A/D转换器MC14433、单片机89S51基本系统组成; (3) 信号显示 由串行口LED显示器和报警电路组成。 功能:

温度检测范围 : -30℃-+50℃ 测量精度 : ± 1℃ 湿度检测范围 : 10%-100%RH 检测精度 : ± 1%RH

显示方式 : 温度:三位显示 湿度:三位显示 报警方式 : 三极管驱动的蜂鸣音报警

2

2.1 温度传感器

集成温度传感器AD590是美国模拟器件公司生产的集成两端感温电流源。 AD590是电流型温度传感器,通过对电流的测量可得到所需要的温度值。 2.1.1 温度传感器主要特性

我采用AD590,它的测温范围在-55℃~+150℃之间,而且精度高。M档在测温范围内非线形误差为±0.3℃。AD590 可以承受44V正向电压和20V反向电压,因而器件反接也不会损坏。使用可靠。它只需直流电源就能工作,而且,无需进行线性校正,所以使用也非常方便,借口也很简单。作为电流输出型传感器的一个特点是,和电压输出型相比,它有很强的抗外界干扰能力。AD590的测量信号可远传百余米。

集成温度传感器AD590 是美国模拟器件公司生产的集成两端感温电流源。

一、AD590的工作原理

在被测温度一定时,AD590相当于一个恒流源,把它和5~30V的直流电源相连,并在输出端串接一个1kΩ的恒值电阻,那么,此电阻上流过的电流将和被测温度成正比,此时电阻两端将会有1mV/K的电压信号。

利用ΔUBE特性的集成PN结传感器的感温部分核心电路。其中T1、T2起恒流作用,可用于使左右两支路的集电极电流I1和I2相等;T3、T4是感温用的晶体管,两个管的材质和工艺完全相同,但T3实质上是由n个晶体管并联而成,因而其结面积是T4的n倍。T3 和T4的发射结电压UBE3和UBE4经反极性串联后加在电阻R上,所以R上端电压为ΔUBE。

3

对于AD590,n=8,这样,电路的总电流将与热力学温度T成正比,将此电流引至负载电阻RL上便可得到与T成正比的输出电压。由于利用了恒流特性,所以输出信号不受电源电压和导线电阻的影响。图中的电阻R是在硅板上形成的薄膜电阻,该电阻已用激光修正了其电阻值,因而在基准温度下可得到1μA/K的I值。

AD590的内部电路,中的T1~T4相当于T1、T2,而T9,T11 相当于上图中的T3、T4。R5、R6 是薄膜工艺制成的低温度系数电阻,供出厂前调整之用。T7、T8,T10 为对称的Wilson 电路,用来提高阻抗。T5、T12 和T10为启动电路,其中T5为恒定偏置二极管。

T6 可用来防止电源反接时损坏电路,同时也可使左右两支路对称。R1,R2 为发射极反馈电阻,可用于进一步提高阻抗。T1~T4 是为热效应而设计的连接方式。而C1 和R4 则可用来防止寄生振荡。该电路的设计使得T9,T10,T11 三者的发射极电流相等,并同为整个电路总电流I 的1/3。T9 和T11 的发射结面积比为8:1,T10和T11的发射结面积相等。

R6上只有T9 的发射极电流,而R5 上除了来自T10 的发射极电流外,还有来自T11的发射极电流,所以R5上的压降是R5 的2/3。根据上式不难看出,要想改变ΔUBE,可以在调整R5 后再调整R6,而增大R5 的效果和减小R6是一样的,其结果都会使ΔUBE减小,不过,改变R5对ΔUBE的影响更为显著,因为它前面的系数较大。实际上就是利用激光修正R5以进行粗调,修正R6以实现细调,最终使其在250℃之下使总电流I达到1μA/K。

流过器件的电流(μA)等于器件所处环境的热力学温度(开尔文)度数:Ir/T=1,式中,Ir—流过器件(AD590)的电流,单位为μA;T—热力学温度,单位为K;AD590的测温范围为-55℃~+150℃;AD590的电源电压范围为4~30V,可以承受44V正向电压和20V反向电压,因而器件即使反接也不会被损坏;输出电阻为710mΩ;精度高,AD590在-55℃~+150℃范围内,非线性误差仅为±0.3℃。 2.1.2 AD590的工作原理

AD590温度感测器是一种已经IC化的温度感测器,它会将温度转换为电

4

流。其规格如下:温度每增加1℃,它会增加1μA输出电流。可量测范围-55℃至150℃。供应电压范围+4V至30V。AD590的接脚图及零件符号如图2-2所示:

图2-2 AD590的接脚图及零件符号

AD590的输出电流是以绝对温度零度(-273℃)为基准,每增加1℃,它会增加1μA输出电流,因此在室温25℃时,其输出电流

Io=(273+25)=298μA。Vo的值为Io乘上10K,以室温25℃而言,输出值为 2.98V(10K×298μA)。量测Vo时,不可分出任何电流,否则量测值会不准。 2.1.3 电路设计

AD590的输出电流I=(273+T)μA(T为摄氏温度),因此量测的电压V为 (273+T)μA ×10K=(2.73+T/100)V。为了将电压量测出来又需使输出电流I不分流出来,我们使用电压追随器其输出电压V2等于输入电压V。

由于一般电源供应较多零件之后,电源是带噪声的,因此我们使用齐纳二极管作为稳压零件,再利用可变电阻分压,其输出电压V1需调整至2.73V。接下来我们使用差动放大器其输出Vo为(100K/10K)×(V2-V1)=T/10,如果现在为摄氏28℃,输出电压为2.8V,输出电压接A/D转换器,那么A/D转换输出的数字量就和摄氏温度成线形比例关系。

AD590温度传感器使用原理如图2-4。

5

+12V -- OP1 10K + +12V V1 20K - OP3 20K V2 -5V + 100K +12V V0

-5V +12V +12V - OP2 + -5V 100K 10K

图2-3 AD590温度传感器使用原理图

2.2 湿度传感器

测量空气湿度的方式很多,其原理是根据某种物质从其周围的空气吸收水分后引起的物理或化学性质的变化,间接地获得该物质的吸水量及周围空气的湿度。

电容式、电阻式和湿涨式湿敏原件分别是根据其高分子材料吸湿后的介电常数、电阻率和体积随之发生变化而进行湿度测量的。下面介绍HS1100(顶端接触)/HS1101(侧面接触)湿度传感器及其应用。测量空气湿度的方式很多,其原理是根据某种物质从其周围的空气吸收水分后引起的物理或化学性质的变化,间接地获得该物质的吸水量及周围空气的湿度。电容式、电阻式和湿涨式湿敏原件分别是根据其高分子材料吸湿后的介电常数、电阻率和体积随之发生变化而进行湿度测量的。

采用HS1100/HS1101 湿度传感器。HS1100/HS1101 电容传感器,在电路构成中等效于一个电容器件,其电容量随着所测空气湿度的增大而增大。不需校准的完全互换性,高可靠性和长期稳定性,快速响应时间,专利设计的固态聚合物结构,由顶端接触(HS1100)和侧面接触(HS1101)两种封装产

6

品,适用于线性电压输出和频率输出两种电路,适宜于制造流水线上的自动插件和自动装配过程等。

相对湿度在1%---100%RH范围内;电容量由16pF变到200pF,其误差不大于±2%RH;响应时间小于5S;温度系数为0.04 pF/℃。可见精度是较高的。

2.2.1 主要特性

(1)监测速度快;(2)高精度和高可靠性;(3)快速响应时间和长期稳定性;(4)使用方便体积小;(5)适用于线性电压输出和频率输出两种电路;(6)适宜于制造流水线上的自动插件和自动装配过程等。

相对湿度在1%~100%RH范围内,电容量由16pF变到200pF,其误差不大于±2%RH、响应时间小于5S、温度系数为0.04pF/℃,可见精度是较高的。 2.2.2 工作原理

7

表2-1典型频率值(参考点:25℃,相对湿度:50%,输出频率:6728KHZ)

HS1100/HS1101电容传感器,在电路构成中等效于一个电容器件,其电容量随着所测空气湿度的增大而增大。如何将电容的变化量准确地转变为计算机易于接受的信号,常用方法是将该湿敏电容置于555振荡电路中,将电容值的变化转为与之成反比的电压频率信号,可直接被计算机所采集。HS1100/HS1101湿度传感器在不同的相对湿度中的电容值不同,而容值得改变使输出的频率发出相应的改变,HS1100/HS1101的容值随着相对湿度的增大而增大,因此输出频率随着相对湿度值的变大而变小,即频率降低。表2-1给出了输出频率的典型值。

图2-4给出了HS1101典型555应用电路。

·湿度 %RH 0 10 20 30 40 频率HZ 7351 7224 7100 6976 6853 湿度 %RH 60 70 80 90 100 频率HZ 6600 6468 6330 6168 6033 8

3.5V-12V576K49.9K2355574361K输出909KHS1101

图2-4 典型555应用电路

2.3 MC14433A/D转换器

2.3.1 MC14433A/D转换器的特点

本系统选用了双积分A/D转换器MC14433,可以把温度、湿度检测电路测出的模拟信号转换成数字量送CPU处理,它精度高,分辨率达1/1999。由于MC14433只有一路输入,而本系统检测的多路温度与湿度信号输入,故选用多路选择电子开关,可输入多路模拟量。

由于双积分方法二次积分时间比较长,所以A/D转换速度慢,但精度可以做得比较高;对周期信号变化的干扰信号积分为零,抗干扰性能也比较好。 2.3.2 MC14433A/D转换器件简介

MC14433是三位半双积分型的A/D转换器,具有精度高,抗干扰性能好的优点,其缺点是转换速率低,约1~10次/秒。在不要求高速转换的场合,在低速数据采集系统中,被广泛采用。

MC14433A/D转换器的被转换电压量程为199.9mV或1.999V。转换完的数据以BCD码的形式分四次送出。

9

1VA GNDVDD242VREFQ3233VXQ2224R1Q1215R1/C1Q0206C1DS1197C01DS2188C02DS3179DUDS41610CLK1/OR1511CLK0EOC1412VEEVss13MC14433 图2-5 MC14433 引脚图

2.3.3 MC14433引脚(图2-5)功能说明如表2-2

10

表2-2 功能说明

电源及共地端 外界电阻及电容端 转换启动/过量程信号输出结束信号端 端 ————VDD:主工作电RI:积分电阻输入端,VX=2VEOC:转换结源+5V。 OR:当|Vx|?VR,时,R1=47?;VX=200M时,束信号输出过量程/OR 输出制线DS4~DS1:选VEE:模拟部分R1=27K?。C1:积分电容输端,正脉冲低电平。位选通控的负电源端,入端。C1一般为0.1μF。C01、有效。 接-5V。 端。 端。 C02:外界补偿电容端,电DU:启动新择个、十、百、千与C1的公共端。CLKI、DU与EOC相DS1 对应千位,节电阻Rc,Rc一般取 470 K转换结束个选通脉冲宽度后,自动启为18个时钟周动新的转期,两个相应脉冲换。 BCD码输出线

Q0~Q3:BCD码输出线。其中Q0为最低位,Q3为最高位。当DS2、DS3和DS4选通期间,输出三位完整的BCD码数,但在DS1选通期间,输出端Q0~Q3 除了表示个位的0或1外,还表示了转化值的正负极性和欠量程还是过量程其含义见表2-3,DS1选通时Q3~Q0表示的结果。

之间间隔为2个时钟周期。 VAG:模拟地容取值约0.1μF。R1/C1:R1 的转换,若位,正脉冲有效。VSS:数字地CLKO : 外界振荡器时钟调连,每当A/DDS4 对应个位。每VR:基准电压。 ?左右。 11

表2-3 DS1选通时Q3~Q0表示的结果

Q3 1 0 * * 0 1 Q2 * * 1 0 * * Q1 * * * * * * Q0 0 0 0 0 1 1 表示结果 千位数为0 千位数为1 结果为正 结果为负 输入过量程 输入欠量程 由表可知Q3 表示1/2位,Q3=“0”对应1,反之对应0。Q2 表示极性,Q2=“1”为正极性,反之为负极性。Q0=“1”表示超量程:当Q3=“0”时,表示过量程;当Q3=“1”时,表示欠量程。

2.4 单片机89S51

为了设计此系统,此系统采用了89S51单片机作为控制芯片,它具有以下特性:片内程序存储器含有4KB的Flash存储器,允许在线编程,擦写周期可达1000次;片内数据存储器内含128字节的RAM;I/O口具有32根可编程I/O线;具有两个16位I/O线;中断系统具有6个中断源、5个终端矢量、2个中断优先级的中断结构;串行口是一个全双工的串行通信口;具有两个数据指针DPTR0和DPTR1;低功耗节电模式有节电模式和掉电模式;包含3级程序锁定位;AT89S51的电源电压为4.0~5.5V,AT89LS51的电源电压为2.7~4.0V;振荡器频率0~33MHz(AT89S51),0~16MHz(AT89LS51);具有片内看门狗定时器;灵活的在线片内编程模式(字节和页编程模式);具有断电标志模式POF。89S51引脚如图2-6。

12

图2-6 89S51的引脚图

功能说明如下: VCC:供电电压。 GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

13

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写1时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址1时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入1后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器

(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。

14

第3章 系统的硬件设计和连接

3.1 MC14433与89S51单片机的接口设计

由于MC14433的A/D转换结果是动态分时输出的BCD码,Q0~Q3HE,DS1~DS4都不是总线式的。因此,MCS-51单片机只能通过并行I/O接口或扩展I/O接口与其相连。对于89S51单片机的应用系统来说,MC14433可以直接和其P1口或扩展I/O口8155/8255相连。下面是MC14433与89S51单片机P1口直接相连的硬件接口,接口电路如图3-1所示。

+5v AD590 3 1 2 1K 0.047uF 1 VA GND VDD24 +5V 2 VREF Q3 23 1 3 VX Q2 22 2 470k 4 R1 Q1 21 3 5 R1/C1 Q0 20 4 6 C1 DS1 19 5 7 C01 DS2 18 6 0.1uF 8 C02 DS3 17 7 0.1uF 9 DU DS4 16 8 10CLK1 /OR 15 9 11 CLK0 EOC14 10 12VEE Vss 13 11 300K -5V MC14433 12 13 0.02uF 14 15 16 17 18 19 20 P1.0 VCC 40 P1.1 89S51 P0.0 39 P1.2 P0.1 38 P1.3 P0.2 37 P1.4 P0.3 36 P1.5 P0.4 35 P1.6 P0.5 34 P1.7 P0.6 33 RST/VPD P0.7 32 P3.0/RxD EA/Vpp 31 P3.1/TxD ALE/PROG30 P3.2/INT0 PSEN 29 P3.3/INT1 P2.7 28 P3.4/T0 P2.6 27 P3.5/T1 P2.5 26 P3.6/WR P2.4 25 P3.7/RD P2.3 24 XTAL2 P2.2 23 XTAL1 P2.1 22 GND P2.0 21

图3-1 MC14433与8031单片机P口直接相连的硬件接口

3.2 显示与报警的设计

3.2.1显示电路

在单片机应用系统设计中,一般都是把键盘和显示器放在一起考虑。本设计是利用89S51的串行口实现键盘/显示器接口。当89S51的串行口未作它用时,使用89S51的串行口来外扩键盘/显示器。应用89S51的串行口方式0的输出方式,在串行口外接移位寄存器74LS164,构成键盘/显示器接口,8个74LS164:74LS164(0)~74LS164(7)作为8位段码输出口,74LS138的

15

Y0作为键输入线,Y2作为同步脉冲输出控制线。这种静态显示方式亮度大,很容易作到显示不闪烁。静态显示的优点是CPU不必频繁的为显示服务,因而主程序可不必扫描显示器,软件设计比较简单,从而使单片机有更多的时间处理其他事务。 3.2.2报警电路

报警电路在微型计算机控制系统中,为了安全生产,对于一些重要的参数或系统部位,都设有紧急状态报警系统,以便提醒操作人员注意,或采取紧急措施。其方法就是把计算机采集的数据或记过计算机进行数据处理、数字滤波,标度变换之后,与该参数上下限给定值进行比较,如果高于上限值(或低于下限值)则进行报警,否则就作为采样的正常值,进行显示和控制。

本设计采用峰鸣音报警电路。峰鸣音报警接口电路的设计只需购买市售的压电式蜂鸣器,然后通过MCS-51的1根口线经驱动器驱动蜂鸣音发声。压电式蜂鸣器约需10mA的驱动电流,可以使用TTL系列集成电路7406或7407低电平驱动,也可以用一个晶体三极管驱动。在图中,P3.2接晶体管基极输入端。当P3.2输出高电平“1”时,晶体管导通,压电蜂鸣器两端获得约+5V电压而鸣叫;当P3.2输出低电平“0”时,三极管截止,蜂鸣器停止发声。

图3-2是一个简单的使用三极管驱动的峰鸣音报警电路:

图3-2 三极管驱动的峰鸣音报警电路

89S51 P3.2 3.3K 5.6K NPN +5V

PB2130UP002A

三极管驱动的峰鸣音报警电路本设计是为在温湿度测量中对温湿度的上下限超出是的提示报警,接口位于单片机AT89S51的P3.2口,但温湿度过限时,P3.2口被置0,本系统开始工作。

16

3.2.3 CD4051多路开关

在本设计中,由于采用了温湿度双量控制,所以在信号采集中将有两个模拟量被提取,这时选用多路开关就是很必要的。此系统选用的是CD4051多路开关,它是一种单片、COMS、8通道开关。该芯片由DTL/TTL-COMS电平转换器,带有禁止端的8选1译码器输入,分别加上控制的8个COMS模拟开关TG组成。CD4051的内部原理框图如图3-3所示

VDD16XCOM

111096ABCINH有禁止电平转换控制的8选1译码器012345677SVSSVGG图3-3 CD4051的内部原理框图

CD4051 引脚功能见图附录1。CD4051相当于一个单刀八掷开关,开关接通哪一通道,由输入的3位地址码ABC来决定。其真值表见表1。INH是禁止端,当 INH=1时,各通道均不接通。此外,CD4051还设有另外一个电源端VEE,以作为电平位移时使用,从而使得通常在单组电源供电条件下工作的 CMOS电路所提供的数字信号能直接控制这种多路开关,并使这种多路开关可传输峰-峰值达15V的交流信号。例如,若模拟开关的供电电源VDD=+5V, VSS=0V,当VGG=-5V时,只要对此模拟开关施加0~5V的数字控制信号,就可控制幅度范围为-5V~+5V的模拟信号。输出端OUT/IN输出端OUT/IN和各通道的接通关系如表3-1。

17

表3-1 输出端OUT/IN输出端OUT/IN和各通道的接通关系

输入状态 INH 0 0 0 0 0 C 0 0 0 0 1 B 0 0 1 1 0 A 0 1 0 1 0 接通 通道 0 1 2 3 4 输入状态 INH 0 0 0 1 C 1 1 1 x B 0 1 1 x A 1 0 1 x 接通 通道 5 6 7 均不显示 18

第4章 软件设计

温/湿度控制主程序的设计应考虑以下问题:(1)键盘扫描、键码识别和温/湿度显示;(2)温湿度采样,数字滤波;(3)越限报警和处理。通常,符合上述功能的温度控制程序由主程序和T0中断服务程序两部分组成。

在该软件系统中,定时器T0为工作方式1,定时周期为125ms,8次定时器中断为1S,由于实际环境温度和湿度变化是连续和平缓的,故这里采用分段定值平缓滤波算法处理每次测得的温度和湿度值,有效防止了突发干扰使测得值波动很大,导致反馈系统关启工作,影响系统的稳定,提高了系统的抗干扰性。

由于系统中设计有看门狗监视电路,所以在编程时要特别注意,传统的等待按键释放的方法较好的解决了这个问题,既保证当按键按下后,置键按下标志位,在主程序的循环中则反复判断键按下标志位是否被清零。如果被清零,说明键已被释放,然后才能进行下一轮的键盘按下判断。在T0中断处理程序中,每次中断均要检测键是否按下。若无按下,有两种情况,一是系统中确实无键按下(此时键按下标志为0),处于监控状态;二是键按下释放后的情况(此时键按下标志为1)。这时要清键按下标志,以便主程序进行下一轮的键按下检测。

4.1 T0中断流程图

19

T0中断 保护现场

设定1s时间

N 是否到1s

Y 湿度数据采

是否越限? N

Y 显示

重装时间常数

恢复现场

返回

图4-1 T0中断流程图

报警程序

20

4.2 温度主程序流程图

开始 设堆栈 清标志 清暂存 清显示 T0初始化 串行口初始化 CPU开中断 扫描键盘 温度采样 显示

图4-2 温度主程序流程图

21

第5章 调试运行结果

5.1 硬件电路的调试

此部分的任务是在系统连接好后,调试各个组件能否正常工作,能否实现软件设计的预期目标。其步骤如下5.1.1按照系统设计,将系统需要的各个组件连接好。

根据实验说明书,了解各个组件的工作原理,开始着手调试芯片。调试MC14433芯片。按照说明书调用MC14433.ASM汇编程序,运行,观察现象。现象正确,说明MC14433芯片正常,可以使用。调试8031芯片。按照说明书调用8031.ASM汇编程序,运行,观察现象。现象正确,说明8031芯片正常,可以使用。调试直流电机,按照说明书调用直流电机相应的汇编程序,运行,观察现象。现象正确,说明直流电机正常,可以使用。

5.2 功能模块的调试方案

连接完成后,可实仿真功能,得到电路图仿真,输入信号得到仿真结果如图5-1,

22

图5-1 仿真结果图

用户温度输入数据时上限、下限分别在七段数码管的0、1、2、3位置显示,湿度输入数据时上限、下限分别在七段数码管的4、5、6、7位置显示。读键存储的过程是循环程序。可循环等待直到用户输入正确并确认为止。

采样转换模块是一个比较重要的模块,在调试的阶段遇到的问题较多,由于它是程序运行的瓶颈,如果这一部分通不过的话,那么程序就无法执行下去,本系统采用的是延时的方法。

温湿度判断控制模块也一个非常重要的模块,由于温湿度对于植被的生长起着决定性的作用,因此,如果这两个因素控制不好,这个系统就失败了,这就需要我认真的考虑这一模块的控制方式,调试阶段比较顺利。

除了以上所提到的模块之外,还有一些模块也很重要,也都需要认真的调试,如报警模块等。调试了各模块之后,接下来的工作就是将各源程序段连接起来,进行综合调试了,综合调试需要我们特别注意细节部分,这样才能尽可能的减少错误的产生。 :

23

结 论

本设计是基于单片机对数字信号的高敏感和可控性、温湿度传感器可以产生模拟信号,和A/D模拟数字转换芯片的性能,此设计以89S51基本系统为核心的一套检测系统,其中包括A/D转换、单片机、复位电路、温度检测、湿度检测、键盘及显示、报警电路、系统软件等部分的设计。本设计可以输入温湿度调节的上下限值,超过或低于该范围时会自动报警,当温湿度恢复到该范围时不会自动停止报警,需要按复位键。本设计还有继电电路设计,当突然断电时在掉电的瞬间系统能自动保护RAM中的数据和系统的运行状态,当电源恢复正常供电后能恢复到掉电前的工作状态。

但是在调试时还有一些问题需要特别注意需要细节却很多,如选择显示寄存器与送段码的顺序,初始化等待时间等

随着社会的发展,传感器的作用越来越突出。在现代工业生产尤其是自动化生产过程中,要用各种传感器来监视和控制生产过程中的各个参数,使设备工作在正常状态或最佳状态,并使产品达到最好的质量。因此可以说,没有众多的优良的传感器,现代化生产也就失去了基础。

24

致谢

25

参考文献

[1]周坚,单片机轻松入门[M].北京:北京航空航天出版社,2002.

[2]孙育才.MCS-51系列单片微型计算机及其应用[M].南京:东南大学出版社,2004. P231

[3]李华,孙晓民,李红青.MCS- 51系列单片机实用接口技术[M].北京:北京航空航天大学出版社,1993

[4]公孙茂,马宝匍,孙晨.单片机入口接口实例集[M].北京:北京航空航天出版社,2002. P120

[5]求是科技.PIC单片机典型模块设计和实例导航[M].北京:人民邮电出版社,2005. [6]龙泽明,顾立志,王桂莲,陈光军.MCS-51单片机原理及工程应用[M].北京:国防

工业出版社,2005.

[7]胡辉.王晓,戴永成.单片机原理及应用设计[M].北京:中国水利水电出版社,2005. P6 ,P181

[8]蔡菲娜. 单片微型计算机原理和应用[M]。杭州:浙江大学出版社,2003

[9]周润景,张丽娜.基于PROTEUS的电路及单片机系统设计与仿真[M].北京航空航天大学出版社,2006

[10]李华,孙晓民,李红青.MCS- 51系列单片机实用接口技术[M].北京:北京航空航天大学出版社,1993

[11]李朝青.单片机原理及接口技术[M].北京航空航天大学出版社.2009 [12]王忠民.微型计算机原理[M].西安电子科技大学出版社.2008 [13]李建民.单片机在温度控制系统中的应用[M].江汉大学学报.1996

[14]沈德金,陈粤初.MCS-51系列单片机接口电路与应用程序实例[M].北京航空航天大学出版社.1990

[15]童诗白.模拟电子技术基础[M].高等教育出版社.2001.

[16]刘笃仁,韩保君.传感器原理及应用技术[M].机械工业出版社.2003 [17]胡汉才.单片机原理及接口技术[M].清华大学出版社.1996.

[18]赵修良 于LabVIEW 的多路温湿度测量系统[J] 湖南科技学院学报 2009

[19]何利民.MCS-51系列单片机应用系统设计系统配置与接口技术[M].北京:北京航空航天大学出版社,2001

[20]李杏春,徐平,李华,赵嘉蔚编.8098单片机原理及实用接口技术[M].北京航空航天大学出版社,1996

[21Pasgianos G D. Nonlinear Feedback Technique for Greenhouse Environment control[J]. Computers and Electronics in Agriculture, 2003

[22] Yang Xianhui, “Technology and Application for Field Bus” [M],QingHua University Publishing, 1999.

[23] Li Zhengjun, “The design for distribute measure and control system intelligent node based on CAN” [J], Automatization Instrument,2003.6

26

附 录

附1 主程序清单

main() {

unsigned char z;

unsigned char a,b,flag_2=1,count1=0;

unsigned char phil[]={2,0xce,0x6e,0x60,0x1c,2}; TMOD=0x21; TH0=0x2f; TL0=0x40; SCON=0x50; PCON=0x00; TH1=0xfd; TL1=0xfd; PS=1; EA=1; EX1=0; ET0=1; ES=1; TR0=1; TR1=1; high_time=50; low_time=50;

PIDInit ( &spid ); /*Initialize Structure */ spid.Proportion = 10; /* Set PID Coefficients*/ spid.Integral = 8; spid.Derivative =6;

27

spid.SetPoint = 100; /* Set PID Setpoint */ while(1) {

if(plus==0) { EA=0;

for(a=0;a<5;a++) for(b=0;b<102;b++){} if(plus==0) {

set_temper++; flag=0; } }

else if(subs==0) {

for(a=0;a<5;a++) for(b=0;a<102;b++){} if(subs==0) {

set_temper--; flag=0; } }

else if(stop==0) {

for(a=0;a<5;a++) for(b=0;b<102;b++){} if(stop==0) {

28

flag=0; break; } EA=1; }

get_temper(); b=temper; if(flag_2==1) a=b;

if((abs(a-b))>5) temper=a; else temper=b; a=temper; flag_2=0; if(++count1>30) {

display(); count1=0; }

compare_temper();} TR0=0; z=1; while(1) { EA=0; if(stop==0) {

for(a=0;a<5;a++)

29

for(b=0;b<102;b++){} if(stop==0) disp_1(phil); // break; } EA=1; } }

/*DS18b20 子程序*/ #include

sbit DQ=P2^1;

typedef unsigned char byte; typedef unsigned int word; void delay(word useconds) {

for(;useconds>0;useconds--); }

/*复位*/ byte ow_reset(void) {

byte presence;

DQ=0; DQ=1; delay(3); presence=DQ; delay(25);

return(presence);; }

30

byte read_byte(viod) {

byte i; byte value=0; for (i=8;i>0;i--) {

value>>=1; DQ=0; DQ=1; delay(1);

if(DQ)value|=0x80; delay(6); }

return(value); }

/*void write_byte(char val) {

byte i;

for (i=8;i>0;i--) /* { DQ=0; DQ=val&0x01; delay(5); DQ=1; val=val/2; }

delay(5); }

/*

向1-wire总线上写一个字节*/ 一次写一个字节*/ 读取温度*/

31

char Read_Temperature(void) {

union{

byte c[2]; int x; }temp; ow_reset(); write_byte(0xcc); write_byte(0xBE); temp.c[1]=read_byte(); temp.c[0]=read_byte(); ow_reset(); write_byte(0xCC); write_byte(0x44); return temp.x/2;

附2 89S51系统程序及子程序 #include #include #include

32

#include struct PID {

unsigned int SetPoint; /*设定目标 Desired Value*/ unsigned int Proportion; /*比例常数 Proportional Const*/ unsigned int Integral; /*积分常数 Integral Const */ unsigned int Derivative; /*微分常数 Derivative Const*/ unsigned int LastError; /*Error[-1] */ unsigned int PrevError; /*Error[-2] */ unsigned int SumError; /*Sums of Errors*/ };

struct PID spid; /*PID Control Structure*/ unsigned int rout; /*PID Response (Output) */ unsigned int rin; /*PID Feedback (Input) */ sbit data1=P1^0; sbit clk=P1^1; sbit plus=P2^0; sbit subs=P2^1; sbit stop=P2^2; sbit output=P3^4; sbit DQ=P3^3;

unsigned char flag,flag_1=0;

unsigned char high_time,low_time,count=0;/*占空比调节参数*/ unsigned char set_temper=35; unsigned char temper; unsigned char i; unsigned char j=0; unsigned int s;

/*延时子程序,延时时间以12M晶振为准,延时时间为30us×time */ void delay(unsigned char time) {

33

unsigned char m,n; for(n=0;n

/* 写一位数据子程序 */

void write_bit(unsigned char bitval) { EA=0;

DQ=0; /*拉低DQ以开始一个写时序*/ if(bitval==1) {

_nop_();

DQ=1; /*如要写1,则将总线置高*/ }

delay(5); /*延时90us供DA18B20采样*/ DQ=1; /*释放DQ总线*/ _nop_(); _nop_(); EA=1; }

/* 写一字节数据子程序*/

void write_byte(unsigned char val) {

unsigned char i; unsigned char temp; EA=0; /*关中断*/ TR0=0;

for(i=0;i<8;i++) /*写一字节数据,一次写一位*/ {

temp=val>>i; /*移位操作,将本次要写的位移到最低位*/

34

temp=temp&1;

write_bit(temp); /*向总线写该位*/ }

delay(7); /*延时120us后*/ // TR0=1; EA=1; /*开中断*/ }

/* 读一位数据子程序 */ unsigned char read_bit() {

unsigned char i,value_bit; EA=0;

DQ=0; /*拉低DQ,开始读时序*/ _nop_(); _nop_();

DQ=1; /*释放总线*/ for(i=0;i<2;i++){} value_bit=DQ; EA=1;

return(value_bit); }

/* 读一字节数据子程序 */ unsigned char read_byte() {

unsigned char i,value=0; EA=0;

for(i=0;i<8;i++) {

if(read_bit()) /*读一字节数据,一个时序中读一次,并作移位处理*/ value|=0x01<

35

delay(4); /*延时80us以完成此次都时序,之后再读下一数据*/ } EA=1;

return(value); }

/* 复位子程序 */ unsigned char reset() {

unsigned char presence; EA=0;

DQ=0; /*拉低DQ总线开始复位*/ delay(30); /*保持低电平480us*/ DQ=1; /*释放总线*/ delay(3);

presence=DQ; /*获取应答信号*/ delay(28); /*延时以完成整个时序*/ EA=1;

return(presence); /*返回应答信号,有芯片应答返回0,无芯片则返回1*/ }

/* 获取温度子程序 */ void get_temper() {

unsigned char i,j; do {

i=reset(); /*复位*/

}while(i!=0); /*1为无反馈信号*/ i=0xcc; /*发送设备定位命令*/ write_byte(i);

i=0x44; /*发送开始转换命令*/

36

write_byte(i); delay(180); /*延时*/ do {

i=reset(); /*复位*/ }while(i!=0); i=0xcc; /*设备定位*/ write_byte(i);

i=0xbe; /*读出缓冲区内容*/ write_byte(i); j=read_byte(); i=read_byte(); i=(i<<4)&0x7f;

s=(unsigned int)(j&0x0f); s=(s*100)/16; j=j>>4;

temper=i|j; /*获取的温度放在temper中*/ }

/*==================================================================================================== Initialize PID Structure

=====================================================================================================*/ void PIDInit (struct PID *pp) {

memset ( pp,0,sizeof(struct PID)); }

/*==================================================================================================== PID计算部分

37

本文来源:https://www.bwwdw.com/article/fp86.html

Top