基于AT89C52单片机的温湿度检测设计

点击链接获取Keil源码与Project Backups仿真图:
在这里插入图片描述

https://download.csdn.net/download/qq_64505944/87704704
源码获取
主要内容:
设计一套基于51单片机的温湿度Protus仿真监控系统,采用SHT11、DHT11或DS189B20等传感器模块,用LCD液晶实时显示当前环境温湿度值。
基本要求:
1、设计报警单元,实现系统对超限温湿度监控报警;
2、设计输入单元,可对系统正常温湿度范围进行调节;
3、keil运行源程序;
4、protus中仿真;
5、运行结果分析。
主要参考资料:
[1]梁小丽 仓库环境监控系统的设计与应用[J]企业技术开发2 007,第8期.
[2]左现刚 基千做控制器的仓库溫度湿度控制系统的设计[J]内江科技2 010.
[3]王静 通用库房溫湿度测检系统[中国海洋大学学位论文]2009.
[4]孙良彦 国外湿度传感器发展动态 [J]吉林大学学报1996,第38期

           完  成  期  限:12 月 11 日 - 12 月 26 日  
        指导教师签名:                     
           课程负责人签名:                           

摘 要
在日常生活中,温度、湿度是两种最基本的环境参数,是与人类的生活、工作关系最密切的物理量,也是各门学科与工程研究设计中经常遇到的,必须精确测量和不可忽略的物理量。从工业炉温、环境气溫到人体温度,从空间、海洋到家用电器,各个技术领域都离不开温度、湿度的测量与监控。
SHTl l是基于CMOSens 技术的新型智能溫湿度传感器,它将温湿度传感器、信号放大调理、A/D转换、二线串行接口全部集成千一个芯片内,触合了 CMOS 芯片技术与传感器技术,使传感器具有品质卓越、超快响应、抗干扰能力强、性价比极高等特点。
温湿度监控系统的软件部分是以Keil为开发平台,C语言为软件系统的开发语言,同时采用模块化编程。具体分为以下几个部分:主控制、温湿度采集程序、温湿度数据处理程序、LCD显示程序、按键设置程序和LED,蜂鸣器报警程 序。
系统通过SHT11温湿度传感器感应周围的环境的温度和湿度,通过单片机对采集到的数据进行读取处理,经过LCD1602显示模块实时显示温湿度数据,同时可以通过按键模块对溫湿度报瞥上、下限值进行设定。当SHT11读取的温湿度值不再设定范围内时,报警模块LED灯指示故障信息,同时蜂鸣器;当温湿度读取数据正常后,LED灯熄灭,蜂鸣器关闭。

关键词:51单片机;SHT11传感器;温湿度监控;Keil;C语言

目 录
摘 要 1
目 录 2
1.系统概述 3
1.1课题研究意义 3
1.2课题研究主要内容 3
2. 系统总体设计 3
3. 硬件设计 4
3.1单片机最小系统 4
3.1.1AT89C51介绍 4
3.1.2晶振电路 6
3.1.3复位电路 7
3.2 SHT11温湿度传感器 8
3.3 LCD1602液晶显示模块 10
3.4按键模块 13
3.5报警模块 14
3.5.1蜂鸣器报警模块 14
3.5.2 LED报警模块 15
4.软件设计 15
4.1 Keil软件开发平台 16
4.2主程序设计 16
4.3 SHT11程序设计 16
4.4 LCD1602 程序设计 17
4.5 报警模块程序设计 18
5.仿真与测试 19
5.1 Protus设计平台 19
5.2仿真结果分析 19
6.总结 21
参考文献 22
课程设计评定表 23

1.系统概述
1.1课题研究意义
在现代工业生产过程中,温度、湿度对于生产来说是最主要的参数,它们是关乎产品质量和产品效率的物理量,在工程研究与各个领域也是极其重要,必须精确测量和不可忽略的物理量。自古以来,无论是工业的温度湿度、自然环境的温湿度,还是人体温度;从航天学、航海学到农业学,每个技术领域都离不开温度和湿度的检测与控制。
工业生产中,当温湿度度测量不准确,很可能导致产品的失败,阻碍工业的发展,在家庭生活发面,但温湿度监控不准确,很可能导致家庭电器的正常运行,不能达到预想的工作效果,在设备比较密集的核心地带,如果温湿度控制不精确,很有可能导致设备故障的发生。因此,温湿度监控系统的研究对我们人类生活具有重要的意义。

1.2课题研究主要内容

本设计包括硬件部分和软件部分设计。本设计的硬件是以51系列单片机为核心、SHT11传感器为采集模块、LCD1602为显示显示模块、按键输入模块和报警模块共同构建的温湿度监测系统。包括单片机最小系统模块设计、传感器采集模块设计、液晶显示模块设计、按键模块设计和报警模块设计部分。系统软件则是基于Keil开发平台,以C语言为开发语言进行,采用模块化编程,构建温湿度监控系统从数据采集、处理、显示、外围输入和故障动作等整个过程。

2.系统总体设计
本课题设计的仓库温湿度监测系统主要是利用AT89C51单片机最小系统为核心,包括晶振电路、复位电路和排阻电路,SHT11温湿度传感器对环境温湿度的采集,经过单片机进行数据处理,最终通过LCD1602液晶显示模块准确、快捷、实时地显示出当前环境的温度和湿度,同时,按键模块可设置温湿度的上下限值,当采集的数据不在设定范围内时,实现LED和蜂鸣器报警,从而达到对环境温湿度监测的目的。本系统的总体设计如下图2所示。
在这里插入图片描述

图2.1系统总体设计框图

3.硬件设计
3.1单片机最小系统
3.1.1AT89C51介绍
AT89C51单片机是一款MCS-51 系列的CMOS8位单片机,具有微功耗、高性能等特点。该芯片内部含有4K字节的可反复擦除的只读程序存储器(PEROM)以及128字节的随机存取数据存储器,同时该芯片内部还有Flash存储单元以及8位的中央处理器(CPU),该芯片利用高密度、非易失性存储等先进的生产技术,兼容标准MSC-51指令系统,其强大的功能对各个场合提供了便利,可灵活的应用在各种行业领域。
对于51系列的单片机外部结构总共有40个引脚,其主要采用的是双列直插式结构,其中内含6条控制信号线、2条电源线(Vss与GND〉和4个8位并行I/0接口(PO、P1、P2、P3)。P3接口同时还具有第二功能,根据引脚不同的功能我们可以将其划分为以下几类。具体详见下图3.1.1。
在这里插入图片描述

图3.1.1 AT89C51单片机
1.电源引脚VCC 和 VSs
其中 VCC接+5V电压。VSS接地。
2.时钟电路引脚XTAL1和XTAL2
其中XTAL1端口用来接外部晶体以及微调电容的一端,其作用是用来作为振荡反相放大器的输入端口。如果需要采用外部时钟信 时,必须将该引脚接地。XTAL2用来连接外部晶体与微调电容的另 外一端,其具体作用是用来作为该电路的输出端口。如果我们需要 采用外部时钟电路进行振荡时,我们必须给XTAL2端口输入时钟脉冲信号。
3.控制和复位引脚 PSEN、ALE、RST/VPD和 EA
ALE:如果需要访问外部存储器时,ALE端的信号输出主要用于锁 存地址的低位字节。
PSEN:主要输出的外部程序存储器的读选通信号。
EA:如果该端口保持高电平信号时,则表示只访问单片机内部程序存储器。如果该端口为低电平信号时,表示只访问外部程序存储器,而不管有没有内部存储器。RST/VPD:单片机复位引脚,主要用来维护程序的正常运转,当程序出现问题或者跑飞速,该引脚发出2个机器周期的高电平信号,对其进行复位,让其正常工作运行。
4.输入/输出(I/0)引脚PO、P1、 P2、P3
P0端口是双向8位三态I/o口,如果需要连接部存储器时,该端口与地址总线的低8位及数据总线进行复用,以吸收电流的方式驱动8个TTL负载。P1,P2,P3口都是8位准双向I/0口。
以下是该单片机的主要性能参数:
(1)具有4K字节可以用来反复擦除Flash闪存存储器,具有100次的擦除周期。
(2)具有三级加密程序存储器。
(3)全静态操作,6个中断源。
(4)含有128×8字节的RAM,32个可用来编程的8位I/0口线(PO、P1、P2、P3)。
(5)含有2个16位的定时器/计数器。(分别为P3.4口和3.5口)。
(6)拥有微功耗空闲模式以及掉电模式,同时还具备可编程串行UART通道。
在这里插入图片描述

3.1.2晶振电路
单片机的工作过程要对各种指令在时间上有明确的次序,这种时间次序也叫做时序,所以单片机需要产生一个时钟信号。晶振电路如图3.1.2所示。

图3.1.2晶振电路

产生时钟信号的方式是:在XTAL1 (18脚)和XTAL2(19脚)引脚接入一个振荡电路。用两个22pF电容的作用是开启振荡器和调节振荡频率。接入12M品振来确定时钟周期,此时产生的信号为单片机最基本的时间单位,即时钟周期,用振荡频率的的倒数代表它的大小( 1/fosc)。
在这里插入图片描述

3.1.3复位电路
复位电路在单片机设计中是一个必不可少的部分。单片机在刚开始运行的时候需要进行一次复位,以确保整个系统电路在要开始运行时保持一种最初状态,保证一开始的运行正常。AT89C51单片机的第九引脚RESET,当这个引脚接收到两个机器周期(24个振荡脉冲周期)的高电平时,就会发生复位。复位电路的实现方式有很多种方式。常见的方式有上电、手动和自动复位三种。电路连接图如图3.1.3所示:

图3.1.3复位电路

3.1.4上拉排阻电路
AT89C51单片机PO口内部结构与其他三个I/0口(P1口、P2口和P3口)不同,由于PO口内部没有上拉电阻,当它用于通用I/0口使用时,其输出驱动级为漏极开路,不能正常的输出高低电平,因此必须外接上拉电阻。一般我们选择接入阻值为10K的上拉电阻。如图3.1.4所示。

在这里插入图片描述

图3.1.4上拉电阻电路

3.2 SHT11温湿度传感器

数字温湿度传感器SHT11是SHT1X家族中的一员,它是一款高度集成的温湿度传感器芯片,提供全量程标定的数字输出。串岗器包括一个电容性聚合体湿度敏感元件和一个用能隙材料制成的温度敏感元件,这两个敏感元件与一个14位的A/D转换器以及一个串行接口电路设计在同一个芯片面上。其实物图如图3.2所示。

图3.2数字温湿度传感器SHT11
数字温湿度传感器SHT11具有以下几个特点:
(1)相对湿度和温度测量;
(2)露点测量;
(3)全标定输出,无需标定即可互换使用;
(4)卓越的长期稳定性;
(5)两线制数字接口,无需额外电路;
(6)基于请求式测量,低能耗;
(7)自动休眠;
(8)超快响应时间;
数字温湿度传感器SHT11广泛应用于空调、汽车电子、家电产品、医疗仪器、测试和检测设备和自动控制等领域。
SHT11为具有二线串行接口的单片全校准数字式新型相对湿度和温度传感器,其外形及管脚的示意图如图3.2.2所示。

图3.2.2SHT11 管脚示意图
SHT11传感器默认的测量温度和相对湿度的分辨率为14位、12位,通过状态寄存器可降至12位、8位。温度测量范围是0-100%RH,对于12位的分辨率为0.03%RH;测量温度的范围为-40-+123.8℃,对于14位的分辨率为0.01℃。每个传感器芯片都在极为精确的湿度室中标定,校准系数以程序形式存储在OTP内存中,在测量过程中可对相对湿度自动校准,使SHT11具有100%的互换性。器内部框图见图3.2.3。

图3.2.3SHT11内部框图

其测量原理:首先利用2只传感器分别产生相对湿度、温度的信号;然后经过放大,分别送至A/D转换器进行模数转换、校准和纠错;再通过二线串行接口将先对湿度和温度的数据送至AT89C51控制器;最后利用控制器完成非线性补偿和温度补偿。其典型应用电路如图3.2.4所示,引脚说明如图3.2.5所示。

图3.2.4 SHT11典型应用电路

图3.2.5 SHT11引脚说明

3.3 LCD1602液晶显示模块

显示温、湿度需要较长的显示字码,在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶LCD显示器。在本文中采用液晶显示LCD1602作为显示模块。在日常生活中,我们对液晶显示器并不陌生,当今液晶显示器已经成为市场上很多电子产品的显示器件,比如在电子表、计算器、万用表以及很多家用的电子产品中都可以看到,其显示主要是数字、符号和图形。
在单片机系统中应用晶液显示器作为输出器件有以下几个优点:显示质量高、数字式接口、体积小、重量轻、功耗低。LCD1602液晶显示模块可以和单片机 AT89C51直接接口,电路如图3.3所示。
图3.3 LCD1602与AT89C51电路连接

在这里插入图片描述

LCD1602主要技术参数为显示容量为162个字符;工作电压范围4.5-5.0V;工作电流在5.0V供电电压下位.2mA;字符尺寸为2.954.35mm。
LCD1602引脚功能如表3.3.2所示:
在这里插入图片描述

表3.3.2 LCD1602引脚功能表

LCD1602指令集说明如下:
它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)
指令1:清显示,指令码01H,光标复位到地址00H位置
指令2:光标复位,光标返回到地址00H
指令3:光标和显示模式设置 ID:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效
指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁
指令5:光标或显示移位SIC:高电平时移动显示的文字,低电平时移动光标
指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时双行显示F:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符
指令7:字符发生器RAM地址设置指令8:DDRAM地址设置
指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:写数据
指令11:读数据
3.4按键模块
常用的按键电路有两种形式,独立式按键和矩阵式按键,由于在温湿度监控系统设计中,按键的主要功能是设置报警温湿度的上下限值,功能明确单一,因此采用独立式按键模块。
独立式键盘的按键相互独立,每个按键接一根IO口线,一根I/O口线上的按键工作状态不会影响其它IO口线的工作状态。因此,通过检测TO口线的电平状态,即可判断键盘上哪个键被按下。
在本系统中只需检测引脚P30、P31、P32是否被拉低为低电平,若为低电平则表示有键按下。P30对应“设置”键,P31对应“数值+”键,P32对应为“数值-”键。连接方式如图3.4所示。

图3.4按键模块电路图
当“设置”键破按卜时,LCD液晶显示温湿度上卜限设置界面,如图3.4.2所示,此时可以通过“数值+"”和“数值-键对温湿度上下限数值进行设置。
在这里插入图片描述

图3.4.2温湿度上下限值设置界面

3.5报警模块
3.5.1蜂鸣器报警模块
本次设计采用三极管驱动蜂鸣器报警。蜂鸣器又称为喇叭,广泛运用在各种电子产品中的一种元器件,常用于提示、报警等多种场合。
蜂鸣器和家用电气上的喇叭在用法上也有相似的地方。通常工作电流比
较大,电路上的TTL电平基本上不能驱动蜂鸣器。一个管脚很难驱动蜂鸣器发出声音,这时就需要加一个电流放大电路,增加一个三极管来增加通过蜂鸣器的电流。
蜂鸣器的正极性的一端联接三极管的集电极,另一端接地,三极管的基
极由单片机的P1.2管脚来控制,当P1.2管脚为低时,三极管导通,这样蜂鸣器
的电流形成回路,发出声音。当P1.2管脚为高时,三极管截至,蜂鸣器不发出声音。其电路如图3.5.1所示。

图3.5.1 蜂鸣器报警电路

3.5.2 LED报警模块
系统LED报警模块,主要有4个LED灯组成,它们分别指示当前温湿度值的状态,数值过低,相应绿色LED灯点亮;数值过高,相应的红色LED灯点亮;当温湿度数值处于设定的上下限范围之中时,LED灯熄灭。LED报警模块电路图见图3.5.2。

图3.5.2 LED报警模块电路图

4.软件设计
4.1 Keil软件开发平台
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境( mVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M 以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。
C51 工具包的整体结构,其中mVision与Ishell分别是C51 for Windows和for Dos 的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器 dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如 EPROM中。

4.2主程序设计
主程序主要就是调用各个子程序的C语言文件中定义的函数,实现SHT11、LCD1602初始化等操作,然后测量温湿度,调用函数对数据进行处理,最后进行显示并监测预警当前温湿度信号。

4.3 SHT11程序设计
采集模块的任务是负责温湿度信号的采集以及将采集到的温度模拟量信号转化为相应的数字量信号提供给单片机。单片机再经过相应的数据处理,数据采集主要通过SHT11温湿度传感器采集当前环境的温度。因为数字式温湿度传感器SHT11能将外界的温度直接转换成数字信号,直接送入单片机处理就行了,就不用在经过A/D转化器将其转化成数字信号,这样就方便了很多而且抗干扰能力强。软件程序也简化了很多,数据采集模块的程序流程:数据采集的程序初始化即SHT11的程序初始化→采集温湿度→等待温湿度转换→读取温湿度送给单机处理,如图4.3所示:
在这里插入图片描述

图4.3 SHT11温湿度采集程序流程图
在这里插入图片描述

4.4 LCD1602 程序设计
LCD1602程序设计流程图如图4.4所示。

图4.4 LCD1602程序设计流程图

4.5 报警模块程序设计
在这里插入图片描述

图4.5为本系统报警模块程序设计流程图

5.仿真与测试
本设计的单片机采用C语言,在Protus 软甲仿真环境中测试。
5.1 Protus设计平台
Proteus是目前较为先进手段,在资金以及设备的维护成本高的问题上,它可以在有限的硬件设备的情况下采用不同的方法,不仅可以直观形象化,也可以使流程运行可视化并能够获得传统方法不能达到锻炼的效果;它可以提供超过27000模拟装置,能够同时模拟和数字仿真,虚拟可以直接在原理图上编程,然后显示输出实现这个结果;仿真软件使得它可以使抽象的原理变得形象化,同时提供了一个虚拟的控制按钮,就可以控制程序的运行、停止;目前这是我们的毕业设计过程中设计最广泛使用的工具,提供了许多不能在实践中得到元器件,我们可以无限随机修改电路设计。

5.2仿真结果分析
把在KEIL里编译、调试生成的Code 的 hex文件导入到Proteus中的AT89C51里进行仿真,其结果如图5.2所示。

图5.2仿真结果分析

6.总结
经过一段时间的努力,终于完成了我的基于SHT11的温湿度传感器监控系统Proteus 仿真设计,该系统具有结构简单、性能稳定,转换速度快等特点。仿真结果表明,电路可以实现数模转换功能。在性能上,可以成功的测试出当前环境的温度和湿度。因此电路的仿真结果完全符合设计指标。
在这次的课程设计过程中,我发现很多问题,虽然以前做过类似的设计,但是这次的设计真的让我有了很大的进步。设计重点在于硬件电路的设计、软件算法的设计。对于本系统,我先调试1602的显示程序,重点理解时序图,理解清楚硬件电路后,参照相关的程序,编写自己的系统程序,然后调试SHT11数据通信显示。同样,SHT11程序部分最关键也是时序图,读明白时序图,很快就能进入编程调试阶段。
本次设计不仅仅培养了我们实际操作能力,也培养了我们灵活运用书本知识,理论联系实际,独立自主的进行设计的能力。这不仅仅是一个学习新知识、新方法的好机会,同时也是对我所学知识的一次综合性的检验和复习,使我看到了自己的缺陷所在,从而进行查漏补缺。
在设计中要有足够的耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,通过这次设计和在设计中遇到问题解决问题,也让我积累了一定的经验,我相信这对我以后的工作会有很大的帮助。我感受到做设计是要真真正正用心去做一件事,是真正的自己学习和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。

参考文献

[1]梁小丽.仓库环境监控系统的设计与应用[J].企业技术开发.2007,第8期
[2]左现刚.基于微控制器的仓库温度湿度控制系统的设计[J].内江科技.2010
[3]王静.通用库房温湿度测检系统[D].中国海洋大学学位论文.2009
[4]刘志强,罗庆生.一种智能化温度检测系统的设计[J].汕头大学学报:2003,第2期
[5]阳成军.用单总线器件组建温湿度测控系统硬件设计[J.江汉石油学院学报:2004
[6]王魁汉.温度检测技术现状与展望(上)[J].东北大学学报:1997,第62期
[7]秦永和.温度传感器测试系统[D].哈尔滨工程大学学位论文.2002
[8]孙良彦.国外湿度传感器发展动态[J.吉林大学学报:1996,第38期
[9]赵升.高精度温度湿度测试系统研究[D].合肥工业大学学报.2005
[10]徐晓冰.仓库温湿度监测系统设计[J].科技与生活.2010,第3期
[11]李群林.基于多传感器的温湿度检测系统[J.中国仪器仪表.2006
[12]凌志浩.AT89C52单片机原理与接口技术[M].高等教育出版社.2011
[13]李炳建.基于AT89C52单片机的温度检测及显示设计[D].长安大学学位论文.2008
[14]魏云.应用于建筑节能的测量与监控系统[D].北京工业大学学位论文.2010

猜你喜欢

转载自blog.csdn.net/qq_64505944/article/details/130243956
今日推荐