利用DHT11测温度湿度实验报告

合集下载

基于DHT11温湿度传感系统总结报告

基于DHT11温湿度传感系统总结报告

成都信息工程学院电子工程学院工程实践总结报告项目名称:温湿度的传感器专业:大气探测班级:组号:成员:指导教师:评分:年月日目录1 项目计划 (1)1.1 方案可行性分析 (1)1.2 项目执行计划 (1)2 各单元模块设计说明 (2)2.1 主控制模块 (2)2.2 温湿度传感器 (3)2.2.1 DHT11的简介 (4)2.2.2 DHT11的引脚应用电路连接说明 (4)2.2.3 DHT11的硬件连接图 (5)3 调试说明 (5)3.1 调试方法及步骤 (5)3.2 调试数据 (7)3.3 调试结果 (8)3.4 材料清单 (9)4 总结 (9)5 参考文献 (10)6 附录 (10)1项目计划1.1方案可行性分析随着电子科技的迅速发展,对仓库、工厂、博物馆等等地方温湿度监测系统的要求不断增高,从而也促进自动监测系统的迅速发展,本文详细叙述一个温湿度自动监测系统的总体结构,设计原则及具体性能指标。

由于系统具有较高的精度,反应速度快,在环境测试方面具有良好的应用前景。

随着人们生活水平的提高,人们逐渐对温湿度变得敏感起来,对于温湿度的了解,有助于人们的生活起居。

有时候需要知道空气中的温湿度,以便于出行和穿戴的选择,有时候需要知道太阳能热水器的水温,以便于洗浴。

为了能实时了解空气中的温度和湿度,有必要制作一种测量温度和湿度的仪器。

随着温湿度传感器快速发展,可想而知的是研发一个湿度计不再是难事。

人类高端技术不断发展,电子集成电路越来越简单方便,将之投注与工业加工也并非难事。

从设计方案看了,我们所运用的电子技术也不会很复杂,所以,研发一种新的湿度计可谓是轻而易举,水到渠成。

就工业技术可行度是一定的。

图1-1 温湿度传感器1.2项目执行计划老师对本学期任务介绍后,本小组先讨论了项目内容,明确大致方向后用1周时间查阅相关的资料使其有更深入的了解,并对实物的制作有初步的概念,讨论给出最终方案后用2周时间绘制原理图、PCB排版以及着手对实物制作材料的准备,1周时间软件学习以及程序的完成和最终检查,1周就开始实物的制作、改进、调试和测试数据。

DHT11数字温湿度传感器毕业设计(论文)

DHT11数字温湿度传感器毕业设计(论文)

摘要DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。

它应用专用的数字模块采集技术和温湿度传感技术,确保产品有极高的可靠性与卓越的长期稳定性。

传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。

因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。

8051单片机是常用于控制的芯片,在智能仪器仪表、工业检测控制、机电一体化等方面取得了令人瞩目的成果,用其作为温湿度控制系统的实力也很多。

使用8051单片机能够实现温湿度全程的自动控制,而且8051单片机易于学习掌握,性价比高。

使用8051型单片机设计温湿度控制系统,可以即时精确的反应温室内的温度以及适度的变化。

完成诸如升温到特定的温度、降温到特定的温度。

在温度上下限范围内保持恒温等多种控制方式,在湿度控制方面也是如此。

将此系统应用到温室当中无疑为植被生长提供了更加适宜的环境。

对于大棚种植和花圃、花卉栽培,必须在某些特定环境安装温湿度装置对其进行监控。

本系统可以及时、精确的反映室内的温度以及湿度的变化,能够满足温湿度的控制要求。

关键词: 8051 DHT11 复合传感器性价比极高ABSTRACTDHT11 digital temperature and humidity sensors is a section contains the already calibration digital signal output humidity composite sensor. It used special digital module collection technology and humidity sensor technology to ensure product has high reliability and excellent long-term stability. Sensors including a resistive feeling wet components and a NTC (temperature measuring element, and with a high-performance 8-bit microcontroller connections. So the product has excellent quality, super fast response, strong anti-jamming capability, and cost-effective extremely high yield.8051 is commonly used in the control chip, smart instrumentation, industrial inspection control, mechatronics achieved impressive results, also a lot of its strength as the temperature and humidity control system. Able to achieve automatic control of temperature and humidity throughout 8051, the 8051 is easy to learn and master the high cost-effective.Use a 8051-type microcontroller design temperature and humidity control system for, instant accurate reaction greenhouse temperature and moderate changes. Complete, such as the temperature was raised to a specific temperature, cooled to a specific temperature. Maintain constant temperature and other control in the upper and lower temperature range, humidity control is also true. The application of this system to the greenhouse which undoubtedly provides a more suitable environment for vegetation growth. For greenhouse cultivation and flower garden, flower cultivation, you must install certain environmental temperature and humidity device monitor. This system can be timely, accurate reflection of the indoor temperature and humidity changes, able to meet the requirements of the temperature and humidity control.Keywords: 8051 DHT11 Composite sensor Highly cost-effective目录前言................................................ 错误!未定义书签。

DHT11温湿度传感器

DHT11温湿度传感器

DHT11温湿度传感器概述 DHT11数字温湿度传感器是⼀款含有已校准数字信号输出的温湿度复合传感器。

它应⽤专⽤的数字模块采集技术和温湿度传感技术,确保产品具有极⾼的可靠性与长期的稳定性。

传感器包括⼀个电阻式感湿元件和⼀个NTC测温元件,并与⼀个8位单⽚机相连接。

因此该产品具有抗⼲扰能⼒强、性价⽐⾼等优点。

硬件连接 DHT11使⽤1-wire总线与MCU进⾏半双⼯通信,当连接线长度短于20⽶时可⽤5K的上拉电阻,⼤于20⽶时需要根据实际情况选择合适的上拉电阻。

通信过程 DATA引脚⽤于MCU与DHT11之间的通讯和同步,采⽤单总线数据格式,⼀次通讯时间4ms左右,数据分⼩数部分和整数部分,⼀次完整的数据传输为40bit,⾼位先出(MSB)。

数据格式:8bit湿度整数数据+8bit湿度⼩数数据+8bit温度整数数据+8bit温度⼩数数据+8bit校验和。

数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度⼩数数据+8bit温度整数数据+8bit温度⼩数数据”所得结果的末8位。

通信的开始 上图为MCU与DH11通信的开始,MCU拉低总线20ms后拉⾼,请求DH11响应,DH11收到信号后将总线拉低以此来响应主机,响应后拉⾼总线开始传输数据,本图来源为DH11的数据⼿册。

需要注意MCUI/O引脚输⼊输出模式的切换,本⼈使⽤的是GPIOG的号引脚与DHT11进⾏通信。

数据的判断 上图中可以看出论时数据0还是数据1,数据的开始总线都是被拉低50us,只是在总线被拉⾼时的时长不⼀样,于是程序便可以在40us 的时候判断引脚的电平,以此来指定当前传输的数据是0是1。

温湿度传感器程序 以下为温湿度传感器初始化函数和获得温湿度数据的程序,初始化相关引脚后调⽤read_ht_data(&data),便可以获得所需数据,注意该函数1s钟只能调⽤⼀次,不然获取不到数据。

还需要保证延迟函数是准确的,参考我之前的系统定时器的相关随笔。

DHT11温湿度传感器

DHT11温湿度传感器

基于单片机的DHT11温湿度传感器设计姓名:史延林指导老师:黄智伟学院:电气工程学院学号:20094470321摘要:温湿度是生活生产中的重要的参数。

本设计为基于单片机的温湿度检测与控制系统,采用模块化、层次化设计。

用新型的智能温湿度传感器DHT11主要实现对温度、湿度的检测,将温度湿度信号通过传感器进行信号的采集并转换成数字信号,再运用单片机STC89C52进行数据的分析和处理,为显示和报警电路提供信号,实现对温湿度的控制报警。

报警系统根据设定报警的上下限值实现报警功能,显示部分采用LCD1602液晶显示所测温湿度值。

系统电路简单、集成度高、工作稳定、调试方便、检测精度高,具有一定的实用价值。

关键词:单片机;DHT11温湿度传感器; LCD1602显示第一章:课程构思1.1课题背景温湿度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生产和生活中的更加广泛的应用。

在生产中,温湿度的高低对产品的质量影响很大。

由于温湿度的检测控制不当,可能使我们导致无法估计的经济损失。

为保证日常工作的顺利进行,首要问题是加强生产车间内温度与湿度的监测工作,但传统的方法过于粗糙,通过人工进行检测,对不符合温度和湿度要求的库房进行通风、去湿和降温等工作。

这种人工测试方法费时费力、效率低,且测试的温度及湿度误差大,随机性大。

目前,在低温条件下(通常指100℃以下),温湿度的测量已经相对成熟。

利用新型单总线式数字温度传感器实现对温度的测试与控制得到更快的开发。

但人们对它的要求越来越高,要为现代人工作、科研、学习、生活提供更好的更方便的设施就需要从数字单片机技术入手,一切向着数字化,智能化控制方向发展。

对于国内外对温湿度检测的研究,从复杂模拟量检测到现在的数字智能化检测越发的成熟,随着科技的进步,现在的对于温湿度研究,检测系统向着智能化、小型化、低功耗的方向发展。

在发展过程中,以单片机为核心的温湿度控制系统发展为体积小、操作简单、量程宽、性能稳定、测量精度高,等诸多优点在生产生活的各个方面实现着至关重要的作用。

DHT11温湿度传感器C程序测试可以用(有说明)

DHT11温湿度传感器C程序测试可以用(有说明)

DHT11温湿度传感器C程序说明:DHT11温湿度传感器只有整数位没有小数,传感器内部小数位留空备用,使用该程序时,只需要在while循环里面调用RH函数即可,间隔时间大于1秒,读取以下几个效验后的变量可以获取温湿度值:U8RH_data_H 湿度高8位整数位U8RH_data_L 湿度低8位小数位〔空的〕U8T_data_H 温度高8位整数位U8T_data_L 温度低8位整数位〔空的〕1,如果是用数码管显示,按时序延时18毫秒后如果有中断得关中断,取完40个Bit数据后开中断,防止MCU内部中断打断时序时间,引起读数误差或读不出来的问题,LCD显示器无需该操作。

2,循环读取传感器时间得大于1秒,否那么读不准。

自己做的实验板温度25,湿度45%#include <reg52.h>#include <intrins.h>//typedef unsigned char U8; /* defined for unsigned 8-bits integer variable 无符号8位整型变量*/typedef signed char S8; /* defined for signed 8-bits integer variable 有符号8位整型变量*/typedef unsigned int U16; /* defined for unsigned 16-bits integer variable 无符号16位整型变量*/typedef signed int S16; /* defined for signed 16-bits integer variable 有符号16位整型变量*/typedef unsigned long U32; /* defined for unsigned 32-bits integer variable 无符号32位整型变量*/typedef signed long S32; /* defined for signed 32-bits integer variable 有符号32位整型变量*/typedef float F32; /* single precision floating point variable (32bits) 单精度浮点数〔32位长度〕*/typedef double F64; /* double precision floating point variable (64bits) 双精度浮点数〔64位长度〕*///#define uchar unsigned char#define uint unsigned int#define Data_0_time 4//----------------------------------------------////----------------IO口定义区--------------------////----------------------------------------------//sbit P2_0 = P3^2 ;//----------------------------------------------////----------------定义区--------------------////----------------------------------------------//U8 U8FLAG,k;U8 U8count,U8temp;U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;U8U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_t emp;U8 U8comdata;U8 outdata[5]; //定义发送的字节数U8 indata[5];U8 count, count_r=0;U8 str[5]={"RS232"};U16 U16temp1,U16temp2;void Delay(U16 j){ U8 i;for(;j>0;j--){for(i=0;i<27;i++);}}void Delay_10us(void){U8 i;i--;i--;i--;i--;i--;i--;}void COM(void){U8 i;for(i=0;i<8;i++){U8FLAG=2;while((!P2_0)&&U8FLAG++);Delay_10us();Delay_10us();Delay_10us();U8temp=0;if(P2_0)U8temp=1;U8FLAG=2;while((P2_0)&&U8FLAG++);//超时那么跳出for循环if(U8FLAG==1)break;//判断数据位是0还是1// 如果高电平高过预定0高电平值那么数据位为1U8comdata<<=1;U8comdata|=U8temp; //0}//rof}//--------------------------------//-----湿度读取子程序------------//--------------------------------//----以下变量均为全局变量--------//----温度高8位== U8T_data_H------//----温度低8位== U8T_data_L------//----湿度高8位== U8RH_data_H-----//----湿度低8位== U8RH_data_L-----//----校验8位== U8checkdata-----//----调用相关子程序如下----------//---- Delay();, Delay_10us();,COM();//--------------------------------void RH(void){//主机拉低18msP2_0=0;Delay(180);P2_0=1;//总线由上拉电阻拉高主机延时20usEA=0;//关中断,如果是LCD删除此行。

基于DHT11的温湿度检测报告

基于DHT11的温湿度检测报告

课题:基于 DHT11 的温湿度检测
图二:DHT11 封装尺寸图
2、引脚说明
第一根引脚
第二根引脚
第三根引脚
第四根引脚
正面从左向右数
VDD 供电 3— 5.5VDC
串行数据 单总线
GND 空脚,请悬空
接地,电源负极
3、工作原理
3.1 数据传输格式
单片机发送一次开始信号后,DHT11 从低功耗模式转换到高速模式,等待单片机开始
一、设计目的
1、掌握 AT89C52 的控制 2、掌握 DHT11 的控制原理 3、掌握数码管的动态扫描 4、掌握按键的输入
二、设计要求
1、温、湿度实时检测及显示:通过 4 位数码管实时显示传感器 DHT11 检测到的温度 和湿度,并可通过固定时间切换显示温度和湿度。
2、温、湿度上下限设置按钮:分配按键,通过对应的按键,可实现对温度上、下限的 设置;湿度上、下限的控制。
如果总线为高电平,说明 DHT11 没有响应,有可能是线路没插好。
四、方案说明及相关功能电路接线图
4.1 整体框架图
采集装置 DHT11
控制中心 AT89C52
显示装置 数码管
输入装置 按键
报警装置 蜂鸣器
4.2 控制中心——AT89C52 单片机
图七:AT89C52 单片机的最小系统电路图 该系统的控制中心,是由一片 AT89C52 单片机来控制、分析。该款单片机的最小系统 由复位电路、晶振电路,I\O 口电路,完成其它功能的元器件均接在该片单片机的 I\O 口上, 由该单片机控制。
1、基本参数..............................................................................................................................2 2、引脚说明..............................................................................................................................3 3、工作原理..............................................................................................................................3 四、方案说明及相关功能电路接线图 ...................................................................................5 4.1 整体框架图..........................................................................................................................5 4.2 控制中心——AT89C52 单片机.........................................................................................5 4.3 采集装置——DHT11 传感器 ...........................................................................................5 4.4 输入装置——按键.............................................................................................................5 4.5 显示装置——数码管.........................................................................................................6 4.6 报警装置——蜂鸣器.........................................................................................................7 五、主要程序流程图 ...............................................................................................................8 六、调试结果: .....................................................................................................................10 6.1 总体显示:........................................................................................................................10 6.2 按键调试:........................................................................................................................10 6.3 报警调试............................................................................................................................11 七、调试过程遇到的问题 .....................................................................................................11 7.1 问题:单片机始终未接收到 DHT11 的信号。 .............................................................11 7.2 问题:数码管动态扫描不稳定。....................................................................................11 7.3 问题:数码管显示位数太少,要显示的东西太多。....................................................12 7.4 问题:报警太单一,无法区分是湿度报警,还是温度报警。....................................12 八、实验总结 .........................................................................................................................12 九、程序清单 .........................................................................................................................13 十、效果图 .............................................................................................................................21

DHT11实验

DHT11实验

《嵌入式接口技术》实验报告班级:机电实验班12(1)姓名:任梦杰学号:2012339930023DHT11数字温湿度传感器实验1.实验装置ALIENTEK探索者STM32F407开发板2.实验原理DHT11是一款湿温度一体化的数字传感器。

该传感器包括一个电阻式测湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。

通过单片机等微处理器简单的电路连接就能够实时的采集本地湿度和温度。

DHT11与单片机之间能采用简单的单总线进行通信,仅仅需要一个I/O口。

传感器内部湿度和温度数据40Bit的数据一次性传给单片机,数据采用校验和方式进行校验,有效的保证数据传输的准确性。

DHT11功耗很低,5V电源电压下,工作平均最大电流0.5mA。

DHT11的技术参数如下:● 工作电压范围:3.3V-5.5V● 工作电流:平均0.5mA● 输出:单总线数字信号● 测量范围:湿度20~90%RH,温度0~50℃● 精度:湿度±5%,温度±2℃● 分辨率:湿度1%,温度1℃DHT11的管脚排列如图36.1.1所示:虽然DHT11与DS18B20类似,都是单总线访问,但是DHT11的访问,相对DS18B20来说要简单很多。

下面我们先来看看DHT11的数据结构。

DHT11数字湿温度传感器采用单总线数据格式。

即,单个数据引脚端口完成输入输出双向传输。

其数据包由5Byte(40Bit)组成。

数据分小数部分和整数部分,一次完整的数据传输为40bit,高位先出。

DHT11的数据格式为:8bit湿度整数数据+8bit 湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和。

其中校验和数据为前四个字节相加。

传感器数据输出的是未编码的二进制数据。

数据(湿度、温度、整数、小数)之间应该分开处理。

例如,某次从DHT11读到的数据如图所示:由以上数据就可得到湿度和温度的值,计算方法:湿度= byte4 . byte3=45.0 (%RH)温度= byte2 . byte1=28.0 ( ℃)校验= byte4+ byte3+ byte2+ byte1=73(=湿度+温度)(校验正确)可以看出,DHT11的数据格式是十分简单的,DHT11和MCU的一次通信最大为3ms左右,建议主机连续读取时间间隔不要小于100ms。

基于DHT11的实验室多点温湿度报警系统设计

基于DHT11的实验室多点温湿度报警系统设计
湿度整数
二进制
o l 1o o 00 0
十六进 制
2H 4
十进制
3 6

5 O
湿度小数 温度整数 温度小数
校 验 码
o l o 1 o 1 oO O 0 O 1 ol l O 0 0 O o 11 o 0
1 l 1o O 1l0
3H 2 1H 6 5H O
山西 电子 技 术 21 0 1年第 4期
文章 编 号 :6 44 7 (0 )4 04 -2 17 -58 2 1 0 ・0 50 1
应 用 实践
基 于 D T 实验 室 多点 温 湿度 报 警 系统 设 计 H1 1的
王 志宏 , 白翠珍
( 山西 医科 大学 基 础 医学院 , 西 太原 000 ) 山 30 1
BH C
2 2

8 O
D T1 H 1 与单 片机主机通讯过程时序如图 3所示 , 总线空 闲状态为高 电平 , 机把 总 线拉 低大 于 1 等 待 D T I 主 8ms H 1
器 和高亮发 光管 , 实现报警 功能。
13 OI l . t l特性研究 T
D T 1 H 1【数字温湿度传感 器 , 2 是一款含有 已校 准数字信
当温湿度 数据超 出设定 温湿 度值 时 , 由单 片 机驱 动 报警 装 置, 实现现场报警功 能。
图 1 系统 原 理 结 构 框 图
1所示 。
表 l 4 bt 0 i数据结构表
1 2 硬 件选 型 .
单 片 机 选 用 国 产 宏 晶 科 技 生 产 的 高 性 价 比 SC 95 R T 8 C 1 C系列 j与传统 8 5 单 片机 相 比, 具有功 , 01 其 耗低 , 抗外部 电磁辐射 干扰强 , 序下 载方式 为 U R 程 A T方式 等优 点 , 用 非 常 方 便 。显 示 模 块 采 用 自带 汉 字 库 的 使 L D 26 , C 18 4 主控 芯 片为 S 72 , 求 支 持 串 口通 信 ( 分 T9 1要 部 L D模块需要跳线 才能 实 现 串 口通 信 功 能 ) C 。报 警 装置 采 用 L D与蜂 鸣器实现声光报警 , E 当温湿 度超出设定 值时 , 单 片机 VO 口输 出高 电平 , N N型三 极管驱 动大 电流蜂 鸣 经 P
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微电子工艺实验题目气压温度测量系统学生姓名洪强学号学院电子与信息工程学院专业电子科学与技术指导教师曹鸿霞二O一五年十一月二十二日目录目录 ............................................................................................................. 错误!未定义书签。

1 系统描述................................................................................................ 错误!未定义书签。

1.1 课程设计题目 (3)1.2 系统设计方案介绍 (3)1.3 方案论证 (4)2 硬件电路设计 (4)2.1 LCD1602液晶显示模块 (5)2.1.1 LCD1602原理图及引脚说明 (5)2.1.2 LCD1602操作时序 (6)2.2 AT89C52单片机 (7)2.3 DHT11传感器模块 (8)2.3.1 DHT11原理图及引脚说明 (8)2.3.2 DHT11数据帧 (9)2.3.3 DHT11电气特性 (10)2.3.4 DHT11操作时序 (10)2.4 蜂鸣器模块 (12)2.5 DHT11温湿度检测设计图 (12)3 软件程序设计 (13)3.1 程序流程图 (13)3.2程序设计 (14)3.2.1主程序 (14)3.2.2 LCD显示程序 (15)3.2.3蜂鸣器程序 (22)4 实验结果 (23)5 实验总结 (24)参考文献 (22)测量气压温度测量系统洪强南京信息工程大学电子科学与技术,210044摘要本实验基于使用STC89C52单片机、DHT11传感器模块、1602液晶显示屏模块以及报警模块。

简单明了的实现的可提要求。

DHT11数字温湿度传感器把采集到的温湿度数据传给单片机。

经过单片机的处理。

准确的显示到液晶屏上。

并对温湿度设置上下限。

越限报警。

)关键词:单片机DHT11传感器1602液晶显示屏STC89C52 报警1 系统描述1.1 课程设计题目温度测量及显示要求:①基于52系列单片机平台和DHT11温湿度传感器完成温湿度的测量;②温度测量数据的显示,可以用LCD1602显示;③对温湿度设置上下限,超过限度报警1.2 系统设计方案介绍电路总体上分为温湿度采集部分、中央处理器、显示模块以及报警模块部分。

以STC89C52单片机最小系统作为核心控制电路,控制DHT11传感器采集的温湿度的转换,控制1602液晶屏的显示,以及蜂鸣器的报警。

具体显示内容及方式由软件来完成。

采集温湿度方面由DHT11传感器来完成,它是一个数字温湿度传感器、内置模数转换,可以直接与单片机相连接。

而1602液晶屏是插针式,也可以直接与单片机相连接。

因此不需要手动焊接等复杂的过程。

具体步骤是:按照原理图将传感器、1602液晶显示屏分别接入单片机。

通过DHT11传感器采集当前的温湿度值、再经单片机,将处理后的数据传送到液晶屏上显示出来。

并且接入蜂鸣器。

设置温度的上下限值。

(如图一)图1 系统框图1.3 方案论证方案一:选用DS18B20温度传感器作为温度检测模块。

DS18B20是一线式数字温度传感器。

具有独特的单线式接口方式。

测量范围在—55℃~125℃,—10℃~85℃,误差范围在-\+0.5℃。

最高精度可达0.0625℃。

HS1101是电容式湿度传感器。

可测量相对湿度范围在0%~100%RH。

误差为-\+2%RH。

方案二:选用DHT11作为设计的温湿度检测模块。

DHT11是一款集成型的数字温湿度一体传感器。

它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。

传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。

因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。

测量范围20%~90%RH,0℃~50℃。

测温精度为-\+2℃,测湿精度为-\+5%RH。

完全符合本次毕业设计的要求。

比较以上两种方案,虽然第一种方案在测量的精度方面比第二种更高,但是第二中方案的电路、软件设计更简单,在功耗、范围等方面达到要求,故本设计采用方案二。

2 硬件电路设计2.1 LCD1602液晶显示模块LCD1602液晶显示器是以点阵形式来显示字母、数字、符号和汉字的显示模块,显示内容范围为16*2,即可以显示两行,每行16个字符(即8个汉字)。

2.1.1 LCD1602原理图及引脚说明如下图2即为系统板中LCD1602的原理图:图2 LCD1602原理图该LCD1602采用16引脚,通过VL口电压来控制背光大小,液晶的各个引脚说明如表3所示:表3 LCD1602引脚说明具体功能如下:第1脚:VSS为地电源。

第2脚:VDD接5V正电源。

第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。

第15脚:背光源正极。

第16脚:背光源负极。

2.1.2 LCD1602操作时序LCD1602的读写操作时序如下图4和图5所示:RSR/WE图4 读操作时序RSEDB7-DB0图5 写操作时序2.2 AT89C52单片机AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在线系统可编程Flash 存储器。

使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

下图为52单片机最小系统图图6 最小系统图2.3 DHT11传感器模块DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。

传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。

产品为4 针单排引脚封装。

连接方便,特殊封装形式可根据用户需求而提供。

2.3.1 DHT11原理图及引脚说明DHT11传感器原理图如下7所示:图7 DHT11传感器原理图单片机的P2.0口用来发收串行数据,即数据口。

连接传感器的Pin2(单总线,串行数据)。

由于测量范围电路小于20米,建议加一个5K的上拉电阻,因此在传感器的Pin2口与电源之间连接一个5K电阻。

而传感器的电源端口Pin1和Pin4分别接单片机的VDD和GND端。

传感器的第三脚悬浮放置。

DHT11传感器原件的电路原理图如下8所示:图8 DHT11电路原理图具体引脚如下Pin1:(VDD),电源引脚,供电电压为3~5.5V。

Pin2:(DATA),串行数据,单总线。

Pin3:(NC),空脚,请悬浮。

Pin4(VDD),接地端,电源负极。

建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻。

2.3.2 DHT11数据帧DATA 用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:一次完整的数据传输为40bit,高位先出。

数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。

2.3.3 DHT11电气特性电气特性:VDD=5V,T = 25℃,除非特殊标注(采样周期间隔不得低于1秒钟)表8 DHT11的电气特性2.3.4 DHT11操作时序用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。

图9 通讯图总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。

DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后, 读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可, 总线由上拉电阻拉高。

图10 通讯图总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1.格式见下面图示.如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常.当最后一bit数据传送完毕后,DHT11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。

数字0信号表示方法如下图12所示:图11 数字信号0表示数字1信号表示方法如下图13所示图12 数字1信号表示2.4 蜂鸣器模块蜂鸣器是一种一体化结构的电子讯响器。

采用直流电压供电,主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。

图13 蜂鸣器工作原理图2.5 DHT11温湿度检测设计图图14 DHT11温湿度检测设计图3 软件程序设计3.1 程序流程图图16 主程序流程图3.2程序设计3.2.1主程序#include <reg51.h>#include <intrins.h>#include <absacc.h>typedef unsigned char U8; /* defined for unsigned 8-bits integer variable 无符号8位整型变量*/typedef unsigned int U16; /* defined for unsigned 16-bits integer variable无符号16位整型变量*/#define lcd_H#include <reg51.h>#define HIGH 1#define LOW 0#define TRUE 1#define FALSE 0#define ZERO 0#define MSB 0x80#define LSB 0x013.2.2 LCD显示程序#define LINE1 0#define LINE2 1#define LINE1_HEAD 0x80#define LINE2_HEAD 0xC0#define DATA_MODE 0x38#define OPEN_SCREEN 0x0C#define DISPLAY_ADDRESS 0x80#define CLEARSCREEN LCD_en_(0x01)#define LCDIO P1sbit LCD1602_RS = P2^4; //定义端口sbit LCD1602_RW = P2^3;sbit LCD1602_EN = P2^2;//----------------------------------------------////----------------IO口定义区--------------------////----------------------------------------------//sbit P2_0 = P2^0 ;sbit SPK=P0^7;int t1,t2,ss;//----------------------------------------------////----------------定义区--------------------////----------------------------------------------//U8 U8FLAG;U8 U8count,U8temp;U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;U8U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;U8 U8comdata;unsigned char str1[]={'s','h','i','d','u',':'}; unsigned char str2[]={'w','e','n','d','u',':'}; LCD_init();void Delay(U16 j){ U8 i;for(;j>0;j--){for(i=0;i<27;i++);}}void Delay_10us(void){U8 i;i--;i--;i--;i--;i--;i--;}void COM(void){U8 i;for(i=0;i<8;i++){U8FLAG=2;while((!P2_0)&&U8FLAG++);Delay_10us();Delay_10us();Delay_10us();U8temp=0;if(P2_0)U8temp=1;U8FLAG=2;while((P2_0)&&U8FLAG++);//超时则跳出for循环if(U8FLAG==1)break;//判断数据位是0还是1// 如果高电平高过预定0高电平值则数据位为1U8comdata<<=1;U8comdata|=U8temp; //0}//rof}void LCD_Read_BF(void){unsigned char read=0;LCD1602_RS=LOW;LCD1602_RW=HIGH;LCD1602_EN=HIGH;LCDIO=0XFF;read=LCDIO;}void LCD_en_(unsigned char command)//写指令{LCD_Read_BF();LCD1602_RS=LOW;LCD1602_RW=LOW;LCD1602_EN=HIGH;LCDIO=command;LCD1602_EN=LOW;}void LCD_en_dat(unsigned char dat)//写数据{LCD_Read_BF();LCD1602_RS=HIGH;LCD1602_RW=LOW;LCD1602_EN=HIGH;LCDIO=dat;LCD1602_EN=LOW;}void LCD_set_xy(unsigned char x,unsigned char y) //写入地址函数{unsigned char address;if(y==LINE1)address=LINE1_HEAD+x;else address=LINE2_HEAD+x;LCD_en_(address);}void LCD_write_char(unsigned char x,unsigned char y,unsigned char dat)//写入字符函数{LCD_set_xy(x,y);LCD_en_dat(dat);}void LCD_write_string(unsigned char x,unsigned char y,unsigned char *s)//写入字符串函数{LCD_set_xy(x,y);while(*s){LCDIO=*s;LCD_en_dat(*s);s++;}}void LCD_Init(void) //初始化函数{LCD_en_(0x38); /*显示模式设置*/Delay(5);LCD_en_(0x38);Delay(5);LCD_en_(0x38);Delay(5);LCD_en_(0x38);LCD_en_(0x08); /*显示关闭*/LCD_en_(0x01); /*显示清屏*/LCD_en_(0x06); /*显示光标移动设置*/ Delay(5);LCD_en_(0x0C); /*显示开及光标设置*/ }//--------------------------------//-----湿度读取子程序------------//--------------------------------//----以下变量均为全局变量--------//----温度高8位== U8T_data_H------//----温度低8位== U8T_data_L------//----湿度高8位== U8RH_data_H----- //----湿度低8位== U8RH_data_L-----//----校验8位== U8checkdata-----//----调用相关子程序如下----------//---- Delay();, Delay_10us();,COM();//--------------------------------void RH(void){//主机拉低18msP2_0=0;Delay(180);P2_0=1;//总线由上拉电阻拉高主机延时20usDelay_10us();Delay_10us();Delay_10us();Delay_10us();//主机设为输入判断从机响应信号P2_0=1;//判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行if(!P2_0) //T !{U8FLAG=2;//判断从机是否发出80us 的低电平响应信号是否结束while((!P2_0)&&U8FLAG++);U8FLAG=2;//判断从机是否发出80us 的高电平,如发出则进入数据接收状态while((P2_0)&&U8FLAG++);//数据接收状态COM();U8RH_data_H_temp=U8comdata;COM();U8RH_data_L_temp=U8comdata;COM();U8T_data_H_temp=U8comdata;COM();U8T_data_L_temp=U8comdata;COM();U8checkdata_temp=U8comdata;P2_0=1;//数据校验U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);if(U8temp==U8checkdata_temp){U8RH_data_H=U8RH_data_H_temp;U8RH_data_L=U8RH_data_L_temp;U8T_data_H=U8T_data_H_temp;U8T_data_L=U8T_data_L_temp;U8checkdata=U8checkdata_temp;}//湿度整数部分str1[6] = (char)(0X30+U8RH_data_H/10);str1[7] = (char)(0X30+U8RH_data_H%10);//湿度小数部分str1[9] = (char)(0X30+U8RH_data_L/10);//温度整数部分str2[6] = (char)(0X30+U8T_data_H/10);str2[7] = (char)(0X30+U8T_data_H%10);//温度小数部分str2[9] = (char)(0X30+U8T_data_L/10);t1=(int)(0X30+U8T_data_H/10);t2=(int)(0X30+U8T_data_H%10);ss=t1*10+t2;}}void xianshi(void){LCD_write_char(0x00,0,'s');LCD_write_char(0x01,0,'h');LCD_write_char(0x02,0,'i');LCD_write_char(0x03,0,'d');LCD_write_char(0x04,0,'u');LCD_write_char(0x05,0,':');LCD_write_char(0x06,0,str1[6]);LCD_write_char(0x07,0,str1[7]);LCD_write_char(0x08,0,'.');LCD_write_char(0x09,0,str1[9]);LCD_write_char(0x0B,0,'%');LCD_write_char(0x0C,0,'R');LCD_write_char(0x0D,0,'H');LCD_write_char(0x00,1,'w');LCD_write_char(0x01,1,'e');LCD_write_char(0x02,1,'n');LCD_write_char(0x03,1,'d');LCD_write_char(0x04,1,'u');LCD_write_char(0x05,1,':');LCD_write_char(0x06,1,str2[6]);LCD_write_char(0x07,1,str2[7]);LCD_write_char(0x08,1,'.');LCD_write_char(0x09,1,str1[9]);LCD_write_char(0x0B,1,0x27);LCD_write_char(0x0C,1,'C');}3.2.3蜂鸣器程序void laba(){unsigned int i;if(ss>554||ss<500){for(i=0;i<200;i++)//喇叭发声的时间循环,改变大小可以改变发声时间长短{Delay(160); //参数决定发声的频率,估算值,可以自行更改参数并SPK=!SPK;}SPK=1;Delay(60000);}//喇叭停止工作,间歇的时间,可更改}//---------------------------------------------- //main()功能描述: AT89C51 11.0592MHz 串口发//送温湿度数据,波特率9600//---------------------------------------------- void main(){LCD_init();Delay(4);while(1){//调用温湿度读取子程序RH();xianshi();laba();}} 、4 实验结果4.1实物及温湿度显示图如下图所示(图15)图15 实物及温湿度显示(实拍)5 实验总结小半个学期的实践下来,我更加深入掌握了52单片机的开发,对于程序的书写与仿真能力有了更进一步的提升与理解,加深了数字电路设计中的逻辑关系认识,我在课堂上学习了不少相关知识。

相关文档
最新文档