主要内容:
设计基于51单片机的温湿度Protus模拟监控系统,采用SHT11、DHT11或DS189B20等传感器模块,利用LCD实时显示当前环境温湿度值。
基本要求:
1、设计报警单元,实现温湿度超限的系统监控和报警;
2、输入单元设计用于调节系统正常温湿度范围;
3.keil运行源程序;
4、protus中仿真;
5、运行结果分析。
主要参考资料:
[1]梁晓丽仓库环境监测系统的设计与应用[J]企业技术开发2007年第8期。
[2]以左贤钢机前为控制器的仓库温湿度控制系统设计[J]内江科技2010.
[3]王静的通用仓库温湿度检测系统[中国海洋大学学位论文]2009.
[4]孙良艳 国外湿度传感器的发展趋势[J]吉林大学学报1996年第38期。温度和湿度是两个最基本的环境参数。 它们是与人类生活和工作关系最密切的物理量。 它们在各个领域也很重要。 在学科和工程研究设计中经常会遇到必须准确测量且不可忽视的物理量。 从工业炉温、环境空气温度到人体温度,从太空、海洋到家用电器,各个技术领域都离不开温湿度的测量和监测。
SHTl是一款基于CMOSens技术的新型智能温湿度传感器。 它将温湿度传感器、信号放大与调理、A/D转换、二线串行接口集成到一颗芯片中,融合了CMOS芯片技术和传感器技术。 该传感器具有品质优良、响应超快、抗干扰能力强、性价比极高等特点。
温湿度监控系统的软件部分采用Keil作为开发平台,C语言作为软件系统的开发语言,采用模块化编程。 具体分为以下部分:主控、温湿度采集程序、温湿度数据处理程序、LCD显示程序、按钮设置程序以及LED和蜂鸣器报警程序。
系统通过SHT11温湿度传感器感知周围环境的温湿度,通过单片机读取并处理采集到的数据,并通过LCD1602显示模块实时显示温湿度数据。 同时可以通过按键模块上下报温湿度。 限制已设定。 当SHT11读取的温湿度值不再在设定范围内时,报警模块LED灯指示故障信息,同时蜂鸣器鸣响; 当温湿度读数正常时,LED灯熄灭,蜂鸣器关闭。
关键词:51单片机; SHT11传感器; 温湿度监测; 凯尔; 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系列的CMOS 8位单片机,具有微功耗、高性能的特点。 该芯片包含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:MCU复位引脚,主要用于维持程序的正常运行。 当程序出现问题或运行速度过快时,该引脚会发送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) 包含两个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单片机的第9脚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.2 SHT11 引脚图
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内部框图
其测量原理:首先使用两个传感器分别产生相对湿度和温度信号; 然后放大送至A/D转换器进行模数转换、校准和误差修正; 然后使用两线串行接口先将测量的湿度和温度数据发送给AT89C51控制器; 最后利用控制器完成非线性补偿和温度补偿。 其典型应用电路如图3.2.4所示,引脚说明如图3.2.5所示。
图 3.2.4 SHT11 典型应用电路
图 3.2.5 SHT11 引脚说明
3.3 LCD1602液晶显示模块
显示温度和湿度需要很长的显示代码。 在单片机的人机通讯接口中,一般的输出方式有:发光管、LED数码管、液晶液晶显示器。 本文采用液晶显示器LCD1602作为显示模块。 在日常生活中,我们对液晶显示器并不陌生。 如今,液晶显示器已成为市场上许多电子产品的显示设备。 例如,它们可以在电子表、计算器、万用表和许多家用电子产品中看到。 它们的显示主要是数字、符号和图形。
在单片机系统中应用液晶显示器作为输出器件具有以下优点:显示质量高、数字接口、体积小、重量轻、功耗低。 LCD1602液晶显示模块可直接与单片机AT89C51接口。 电路如图3.3所示。
图 3.3 LCD1602 与 AT89C51 电路连接
LCD1602的主要技术参数是显示容量为162个字符; 工作电压范围4.5-5.0V; 电源电压5.0V时工作电流为0.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:级别低时,显示5×7点阵字符。 当级别高时,显示5×10点阵字符。
指令 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 按键模块电路图
当按下“设置”键时,液晶显示屏显示温湿度上限设置界面,如图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和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 仿真结果分析
六、总结
经过一段时间的努力,终于完成了我基于SHT11的温湿度传感器监控系统的Proteus仿真设计。 该系统具有结构简单、性能稳定、转换速度快的特点。 仿真结果表明该电路能够实现数模转换功能。 性能方面,可以成功测试当前环境的温度和湿度。 因此,电路的仿真结果完全满足设计指标。
在课程设计过程中,我发现了很多问题。 虽然之前也做过类似的设计,但是这次的设计确实让我有了很大的进步。 设计重点是硬件电路和软件算法的设计。 对于这个系统,我首先调试了1602的显示程序,重点是理解时序图。 了解硬件电路后,参考相关程序编写了自己的系统程序,然后调试了SHT11数据通讯显示。 同样,SHT11程序中最关键的部分就是时序图。 如果看清楚时序图,就可以快速进入编程和调试阶段。
这次设计不仅培养了我们的实际操作能力,也培养了我们灵活运用书本知识、理论联系实际、独立设计的能力。 这不仅是学习新知识、新方法的好机会,也是对所学知识的一次全面的检验和复习,让我看到自己的不足在哪里,以便查漏补缺。
设计时必须有足够的耐心和毅力,同时也必须细心。 如果不小心,一个小错误就会导致错误的结果。 通过这次设计以及解决设计中遇到的问题,我也了解到自己积累了一定的经验,相信这对我以后的工作会有很大的帮助。 我觉得做设计是需要真正用心去做一件事。 这是一个真正的自己学习和研究的过程。 没有学习,就不可能有研究的能力。 没有自己的研究,就不会有突破。