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

更新时间:2024-01-02 12:06:01 阅读量: 教育文库 文档下载

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

微电子工艺实验

题 目 气压温度测量系统

学生姓名 洪 强

学 号 20121321027

学 院 电子与信息工程学院

专 业 电子科学与技术

指导教师 曹鸿霞

二O一 五 年 十一 月 二十二 日

目录

目录............................................... 错误!未定义书签。 1 系统描述......................................... 错误!未定义书签。 1.1 课程设计题目.................................................... 2 1.2 系统设计方案介绍................................................ 2 1.3 方案论证........................................................ 3 2 硬件电路设计...................................................... 3 2.1 LCD1602液晶显示模块 ............................................ 3 2.1.1 LCD1602原理图及引脚说明 ...................................... 4 2.1.2 LCD1602操作时序 .............................................. 5 2.2 AT89C52单片机 .................................................. 6 2.3 DHT11传感器模块 ............................................... 7 2.3.1 DHT11原理图及引脚说明 ........................................ 7 2.3.2 DHT11数据帧 .................................................. 8 2.3.3 DHT11电气特性 ................................................ 8 2.3.4 DHT11操作时序 ............................................... 9 2.4 蜂鸣器模块.................................................... 10 2.5 DHT11温湿度检测设计图 ........................................ 11 3 软件程序设计..................................................... 11 3.1 程序流程图..................................................... 11 3.2程序设计 ....................................................... 12 3.2.1主程序 ....................................................... 12 3.2.2 LCD显示程序 ................................................. 13 3.2.3蜂鸣器程序 ................................................... 20 4 实验结果......................................................... 21 5 实验总结......................................................... 22 参考文献........................................................... 22

1

测量气压温度测量系统

洪强

南京信息工程大学电子科学与技术,南京 210044

摘 要

本实验基于使用STC89C52单片机、DHT11传感器模块、1602液晶显示屏模块以及报警模块。简单明了的实现的可提要求。DHT11数字温湿度传感器把采集到的温湿度数据传给单片机。经过单片机的处理。准确的显示到液晶屏上。并对温湿度设置上下限。越限报警。)

关键词:单片机 DHT11传感器 1602液晶显示屏 STC89C52 报警

1 系统描述

1.1 课程设计题目

温度测量及显示

要求:① 基于52系列单片机平台和DHT11温湿度传感器完成温湿度的测量; ② 温度测量数据的显示,可以用LCD1602显示; ③ 对温湿度设置上下限,超过限度报警

1.2 系统设计方案介绍

电路总体上分为温湿度采集部分、中央处理器、显示模块以及报警模块部分。以STC89C52单片机最小系统作为核心控制电路,控制DHT11传感器采集的温湿度的转换,控制1602液晶屏的显示,以及蜂鸣器的报警。具体显示内容及方式由软件来完成。采集温湿度方面由DHT11传感器来完成,它是一个数字温湿度传感器、内置模数转换,可以直接与单片机相连接。而1602液晶屏是插针式,也可以直接与单片机相连接。因此不需要手动焊接等复杂的过程。具体步骤是:按照原理图将传感器、1602液晶显示屏分别接入单片机。通过DHT11传感器采集当前的温湿度值、再经单片机,将处理后的数据传送到液晶屏上显示出来。并且接入蜂鸣器。设置温度的上下限值。(如图一)

2

传感器与之相连 图1 系统框图

P2.0 STC89C52主控模块 P2.2~P2.4 P0.7 DHT11传感器模块 1602字符液晶与之相连 1602字符液晶模块 报警模块

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个汉字)。

3

2.1.1 LCD1602原理图及引脚说明

如下图2即为系统板中LCD1602的原理图:

图2 LCD1602原理图

该LCD1602采用16引脚,通过VL口电压来控制背光大小,液晶的各个引脚说明如表3所示:

表3 LCD1602引脚说明 编号 1 2 3 4 5 6 7 8

具体功能如下:

第1脚:VSS为地电源。 第2脚:VDD接5V正电源。

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

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

符号 VSS VDD VL RS R/W E D0 D1 引脚说明 电源地 电源正极 液晶显示偏压 数据/命令选择 读/写选择 使能信号 数据 数据 编号 9 10 11 12 13 14 15 16 符号 D2 D3 D4 D5 D6 D7 BLA BLK 引脚说明 数据 数据 数据 数据 数据 数据 背光源正极 背光源负极

4

第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所示:

RS tSP1R/WtPWtHD1EtRtHD2tDDB0-DB7 Valid Datatc图4 读操作时序

5

RStHD1tsp1R/WtpwtFEtRtHD2tsp2DB7-DB0Valid Datatc 图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

图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所示:

7

图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的电气特性

8

参数 供电 供电电流 条件 DC 测量 平均 待机 Min 3 0.5 0.2 100 1 typ 5 max 5.5 2.5 1 150 单位 V mA mA uA 次 采样周期

秒 2.3.4 DHT11操作时序

用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。

图9 通讯图

总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后, 读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可, 总线由上拉电阻拉高。

图10 通讯图

9

总线为低电平,说明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”等)表示。

10

3.1 程序流程图

3 软件程序设计

2.5 DHT11温湿度检测设计图

图13 蜂鸣器工作原理图

图14 DHT11温湿度检测设计图

11

开始 初始化 判断温延时 温度 温湿度测量 低于a℃ 高于b℃ 1602显示数据 蜂鸣器铃响 蜂鸣器铃响 结束 图 16 主程序流程图

3.2程序设计

3.2.1主程序

#include #include #include

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

#define HIGH 1 #define LOW 0 #define TRUE 1 #define FALSE 0

12

#define ZERO 0 #define MSB 0x80 #define LSB 0x01

3.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_com(0x01)

#define LCDIO P1

sbit 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; U8

U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;

13

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++);

14

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); }

3.2.3蜂鸣器程序 void laba()

{

LCD_write_char(0x0C,1,'C');

unsigned int i; if(ss>554||ss<500) {

for(i=0;i<200;i++)//喇叭发声的时间循环,改变大小可以改变发声时间长短 {

Delay(160); //参数决定发声的频率,估算值,可以自行更改参数并 SPK=!SPK; }

20

}

SPK=1; Delay(60000);

//喇叭停止工作,间歇的时间,可更改 }

//----------------------------------------------

//main()功能描述: AT89C51 11.0592MHz 串口发 //送温湿度数据,波特率 9600 //---------------------------------------------- void main() {

LCD_init();

Delay(4); while(1) {

//调用温湿度读取子程序 RH(); xianshi();

laba(); }

} 、

4 实验结果

4.1实物及温湿度显示图

如下图所示(图15)

21

图15 实物及温湿度显示(实拍)

5 实验总结

小半个学期的实践下来,我更加深入掌握了52单片机的开发,对于程序的书写与仿真能力有了更进一步的提升与理解,加深了数字电路设计中的逻辑关系认识,我在课堂上学习了不少相关知识。为我的实验实践带来了极大的帮助。把浅浅的理论上升到实践,使我对理论的掌握更加深入。从而培养了自己的动手能力,增强学习单片机的兴趣

参考文献

[1] 王丽.《单片机原理及应用》.国防工业出版社,2014.8 [2] 张鑫.《单片机原理及应用》.电子工业出版社,2014.8.

[3] 澎伟. 《单片机C语言程序设计实训100例——基于8051+Proteus仿真基》. 北京电

子工业出版社,2009.

22

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

Top