单片机控制DHT11传感器的课程设计报告

更新时间:2023-09-17 16:48:01 阅读量: 幼儿教育 文档下载

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

重庆三峡学院?课程设计(论文)

题目 温湿度传感器报警器

院 系 机械工程学院 专 业 机械设计及其自动化 年 级 2010级 学生姓名 吴春生

学生学号 201007024169

指导教师 吴光杰 职称 教授

完成设计(论文)时间 2013 年 1 月

目 录

摘要................................................ 错误!未定义书签。 关键词............................................................... 1 1 引言.............................................. 错误!未定义书签。 第一章课程构思....................................................... 2 1.1主要内容 ........................................ 错误!未定义书签。 1.2系统的功能介绍 .................................. 错误!未定义书签。 1.3系统总体方案设计 ................................................. 2 1.3.1 DHT11产品概述 ................................................. 3 1.3.2单片机AT89S52.................................................. 4 第二章 系统的硬件设计和连接(独立完成部分).......................... 8 2.1时钟电路 ......................................................... 8 2.2复位电路 ......................................................... 8 2.3显示模块 ......................................................... 9 2.4传感器模块 ...................................................... 10 第三章程序设计...................................................... 12 程序................................................................ 12 第四章.............................................................. 20 总结................................................................ 20 参考文献............................................................ 21 致 谢............................................................. 21 英文翻译............................................................ 22

吴春生 温湿度报警器传感器

摘要:

温湿度是生活生产中的重要的参数。本设计为基于单片机的温湿度检测与控制系统,采用模块化、层次化设计。用新型的智能温湿度传感器DHT11主要实现对温度、湿度的检测,将温度湿度信号通过传感器进行信号的采集并转换成数字信号,再运用单片机AT89S51进行数据的分析和处理,为显示和报警电路提供信号,实现对温湿度的控制报警。报警系统根据设定报警的上下限值实现报警功能,显示部分采用LCD1602液晶显示所测温湿度值。系统电路简单、集成度高、工作稳定、调试方便、检测精度高,具有一定的实用价值。

关键词:单片机;DHT11温湿度传感器; LCD1602显示

1.引言

温湿度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生产和生活中的更加广泛的应用。在生产中,温湿度的高低对产品的质量影响很大。由于温湿度的检测控制不当,可能使我们导致无法估计的经济损失。为保证日常工作的顺利进行,首要问题是加强生产车间内温度与湿度的监测工作,但传统的方法过于粗糙,通过人工进行检测,对不符合温度和湿度要求的库房进行通风、去湿和降温等工作。这种人工测试方法费时费力、效率低,且测试的温度及湿度误差大,随机性大。目前,在低温条件下(通常指100℃以下),温湿度的测量已经相对成熟。利用新型单总线式数字温度传感器实现对温度的测试与控制得到更快的开发。但人们对它的要求越来越高,要为现代人工作、科研、学习、生活提供更好的更方便的设施就需要从数字单片机技术入手,一切向着数字化,智能化控制方向发展。

对于国内外对温湿度检测的研究,从复杂模拟量检测到现在的数字智能化检测越发的成熟,随着科技的进步,现在的对于温湿度研究,检测系统向着智能化、小型化、低功耗的方向发展。在发展过程中,以单片机为核心的温湿度控制系统发展为体积小、操作简单、量程宽、性能稳定、测量精度高,等诸多优点在生产生活的各个方面实现着至关重要的作用。

温湿度传感器除电阻式、电容式湿敏元件之外,还有电解质离子型湿敏元件、重量型湿敏元件(利用感湿膜重量的变化来改变振荡频率)、光强型湿敏元件、声表面波湿敏元件等。湿敏元件的线性度及抗污染性差,在检测环境湿度时,湿敏元件要长期暴露在待测环境中,很容易被污染而影响其测量精度及长期稳定性。

1

吴春生 温湿度报警器传感器

第一章:课程构思

1.1主要内容

此设计的是基于单片机AT89S51的温湿度检测和控制系统,主要以广泛应用的DHT11作为温度和湿度的检测,该仪器具有测量精度较高、硬件电路简单、并能很好的进行显示,可测试不同环境温湿度的特点。另外和控制电路相连,可以进行加湿电路和除湿电路的控制,使温度和湿度参数在预先设定的范围内,不需要人的直接参与。

单片机是系统的控制核心,所以单片机的性能关系到整个系统的好坏。因此单片机的选择,对所设计系统的实现以及功能的扩展有着很大的影响。本设计中,最终选用的集成温度传感器DHT11,采集到的温湿度信号送至单片机,实现温湿度的显示与控制。

1.2 系统的功能介绍

本系统可对温湿度值进行实时检测,测温范围可为0~+50℃,根据粮仓内 实际温度变化情况, 将测温范围设定为 0-50 C。 可测湿度测量范围是 (20-60) %RH, 这也足以满足对湿度的测量要求。所测温湿度值通过 LCD1602 显示芯片显示。整个 系统测量精度高、稳定性好,性能上能够达到远距离测量温湿度的要求。

1.3系统总体方案设计

用新型的智能集成温温度传感器DHT11主要实现检测温度、湿度的检测,将温度湿度信号通过传感器进行信号的采集并转换成数字信号,再运用单片机AT89S52进行数据的分析和处理,并在LCD1602上显示当前温湿度。

1.3.1 DHT11产品概述

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用

2

吴春生 温湿度报警器传感器

甚至最为苛刻的应用场合的最佳选则。产品为 4 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。

DHT11传感器实物图

1、引脚说明

引脚号 引脚名称 1 VCC

类型

引脚说明

正电源输入,3V-5.5V DC

电源

2 Dout 输出 单总线,数据输入/输出引脚

3 NC 空 空脚,扩展未用 4 GND 地 电源地

2、电源引脚

DHT11的供电电压为 3-5.5V。传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。

4、串行接口(单线双向)

DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右, 用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。

3

吴春生 温湿度报警器传感器

1.3.2单片机AT89S52

ATC89C51是一种低功耗、高性能CMOS八位微控制器,具有8K在系统可编程Flash存储器,使用ATMEL公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许ROM在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使其为众多嵌入式控制应用系统提供灵活的解决方案。

1、主要特性如下:

1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051

2.工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)

3.工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz 4.用户应用程序空间为8K字节 5.片上集成512字节RAM

6.通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻

7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成

8.具有EEPROM功能 9. 具有看门狗功能

10.共3个16位定时器/计数器。即定时器T0、T1、T2

11.外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒

12.通用异步串行口(UART),还可用定时器软件实现多个UART

4

吴春生 温湿度报警器传感器

13. 工作温度范围:-40~+85℃(工业级)/0~75℃(商业级) 14. PDIP封装

2、 AT89S52单片机的工作模式

掉电模式:典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续原程序

空闲模式:典型功耗2mA

正常工作模式:典型功耗4Ma~7mA

掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备

VCC:电源 Vss:地

如图芯片引脚图

P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。

5

吴春生 温湿度报警器传感器

在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P0口内部上拉电阻有效。在Flash ROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。

P1端口(P1.0~P1.7,1~8引脚):P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。

此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)。

P2端口(P2.0~P2.7,21~28引脚):P2口是一个带内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。

在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVX @DPTR”指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行“MOVX @R1”指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。

在对Flash ROM编程和程序校验期间,P2也接收高位地址和一些控制信号。

P3端口(P3.0~P3.7,10~17引脚):P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。

在对Flash ROM编程或程序校验时,P3还接收一些控制信号。

RST(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机的复位初始化操作。看门狗计时完成后,RST引脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。

ALE/PROG (30引脚):地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8

6

吴春生 温湿度报警器传感器

位地址的输出脉冲。在Flash编程时,此引脚也用作编程输入脉冲。

在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。

如果需要,通过将地址位8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX或MOV指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位(地址位8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。

PSEN(29引脚):外部程序存储器选通信号是外部程序存储器选通信号。当AT89C51RC从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次,而访问外部数据存储器时,PSEN 将不被激活。

EA/VPP(31引脚):访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令, EA必须接GND。注意加密方式1时,EA 将内部锁定位RESET。为了执行内部程序指令,EA 应该接VCC。在Flash编程期间,EA 也接收12伏VPP电压。

XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2(18引脚):振荡器反相放大器的输入端。

7

吴春生 温湿度报警器传感器

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

此次设计的电路部分是由我来设计,电路主要分为时钟电路、复位电路、显示模块等等,再将其连接到一起就组成了温湿度报警器传感器电路图,除此之外我还参与了电路的焊接。

2.1、时钟电路

ATC89C51内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。

如下:

图1 时钟电路

2.2、复位电路

RST引脚是单片机复位端,高电频有效。在引脚端输入至少连续两个单片机周期的高电频,单片机复位。使用时,在引脚与VSS引脚之间接一个10KΩ的下拉电阻,与VCC引脚之间接一个约10μF的电解电容,即可保证上电自动复位。

如下:

8

吴春生 温湿度报警器传感器

图2 复位电路

2.3、显示模块

图3 显示电路

9

吴春生 温湿度报警器传感器

LCD1602引脚功能图:

2.4、传感器模块

图4 传感电路

10

吴春生 温湿度报警器传感器

电路原理图:

图5 电路原理图

11

吴春生 温湿度报警器传感器

第三章程序设计

程序:

/***********************lcd1602.h***************************/ U8 code table2[]=\U8 code table3[]=\

sbit RS=P2^6; sbit RW=P2^5; sbit E=P2^7;

void write_com(U8 com) { E=0; RS=0; RW=0; Delay(5); E=1; P0=com; E=0; }

void write_date(U8 date) { E=0; RS=1; RW=0; Delay(5); E=1; P0=date;

12

吴春生 温湿度报警器传感器

E=0; P0=0;

}

void init() {

U8 num; Delay(15); write_com(0x38); write_com(0x38); write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); for(num=0;num<15;num++) { write_date(table2[num]); Delay(1);

}

write_com(0x80+0x40); for(num=0;num<15;num++) { write_date(table3[num]); Delay(1);

} }

void write_dht11(U8 add,U8 date) {

U8 shi,ge; shi=date/10;

13

吴春生 温湿度报警器传感器

ge=date;

write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge); }

/***********************dht11.h***************************/ typedef unsigned char U8; typedef unsigned int U16;

sbit P1_0 = P2^0 ;

U8 U8FLAG,k; U8 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;

U8 U8comdata;

void Delay(U16 z) { U8 x,y;

for(x=z;x>0;x--) for(y=110;y>0;y--); }

void delay_10us() {

14

吴春生 温湿度报警器传感器

U8 i; i--; i--; i--; i--; i--; i--; }

void COM(void) //数据0 1确认 { U8 i;

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

U8FLAG=2;

while((!P1_0)&&U8FLAG++); //1bit是否结束 delay_10us(); delay_10us(); delay_10us();

U8temp=0;// 26us~28us 表示为0

if(P1_0)U8temp=1; // 超过28us依然为高电平 表示为1 U8FLAG=2;

while((P1_0)&&U8FLAG++);

if(U8FLAG==1)break;//U8FLAG溢出超时则跳出for循环 //判断数据位是0还是1

// 如果高电平高过预定0高电平值则数据位为 1

15

吴春生 温湿度报警器传感器

U8comdata<<=1; U8comdata|=U8temp; } }

void RH(void) //-----湿温度读取子程序 ------------ {

P1_0=0;

Delay(34); //主机拉低高于18ms P1_0=1;

//总线由上拉电阻拉高 主机延时20us delay_10us(); delay_10us(); delay_10us(); delay_10us();

P1_0=1;//主机设为输入 判断从机响应信号

if(!P1_0)//判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行 { 否结束

U8FLAG=2;

while((P1_0)&&U8FLAG++);//判断从机是否发出 80us 的高电平, 如发出则U8FLAG=2;

while((!P1_0)&&U8FLAG++);//判断从机是否发出 80us 的低电平响应信号是

进入数据接收状态

16

吴春生 温湿度报警器传感器

COM();//数据接收状态

U8RH_data_H_temp=U8comdata; //湿度整数8位

COM();

U8RH_data_L_temp=U8comdata; //湿度小数8位 COM();

U8T_data_H_temp=U8comdata; //温度整数8位 COM();

U8T_data_L_temp=U8comdata; //温度小数8位 COM();

U8checkdata_temp=U8comdata; //校验位 P1_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; }

} }

/***********************main.c***************************/ #include

#include

17

吴春生 温湿度报警器传感器

U16 a,b,t; U8 flag,i; void main() {

RW=1; t=0; flag=0; TMOD=0x01;

TH0=(65536-50000)/256; TL0=(65536-50000)%6; EA=1; ET0=1; TR0=1; init(); P1_0=1; P2=0xff; Delay(40); while(1) { RH();

write_dht11(0,U8T_data_H); write_dht11(3,U8T_data_L); write_dht11(9,U8RH_data_H); write_dht11(12,U8RH_data_L);

if(flag==2)//100后flag为2,进行比较 {

if(a==U8T_data_H&&b==U8RH_data_H)

18

吴春生 温湿度报警器传感器

Buzzer=0;

while(a==U8T_data_H&&b==U8RH_data_H); flag=0;

}

test();

} }

void timer0() interrupt 1 {

TH0=(65536-50000)/256; TL0=(65536-50000)%6; t++;

if(t==2000)//100秒检测一次 { t=0;

flag=2;//100秒后flag为2

}

if(flag==0)//最开始 flag为0 赋值 { a=U8T_data_H; b=U8RH_data_H; flag=1;//flag变化 } }

19

吴春生 温湿度报警器传感器

元件参数表

第四章 总结

回顾起此次单片机课程设计,我仍感慨颇多,从理论到实践,在接近一个月期的日

子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,难免会遇到过各种各样的问题。首先,说说焊接的美观程度,这是我所骄傲的,我焊接的很美观、明了。但在设计的过程中也发现了自己的不足之处,对以前所学过的知识理解得不够深,把硬件焊接出来后,由于编程不熟,导致推迟了对硬件功能的检测,最终在指导老师的耐心指导下完成所有功能检测,两位老师的耐心指导,使我意识到专业知识的重要性,以后会更加努力!

通过本次设计,使我在学校中所学到的知识真正的运用到了实际当中, 遇到了一些困难, 也我学到了很多课本上没有的知识, 使我开阔了眼界, 增长了见识, 同时使我对我所学的专业有了更深一步的了解。 从这次的课程设计中,我真真正正的意识到,在以后的学习工作中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如

20

吴春生 温湿度报警器传感器

此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。

参考文献

1、李建民.单片机在温度控制系统中的应用[N].湖北:江汉大学学报,1996:9

2、胡汉才.单片机原理及接口技术[M].北京:清华大学出版社,1996:5. 3、邵敏权.单片机原理实验及应用[M].吉林:吉林科学技术出版社,1995:3. 4、付家才.单片机控制工程实践技术[M].北京:化学工业出版社,2004:12.宋启超 5、基于 AT89S52 的温度控制器的设计[R].黑龙江:黑龙江工程学院学 报,2007:3. 6、郭天祥.新概念 51 单片机 C 语言教程[M]. 北京:电子工业出版社,2009:1.

致谢

本此设计是在老师的悉心指导下完成的。几个月来,老师严谨的治学态度,渊博的学

识,对学生诚 恳的态度,使我受益匪浅。在整个设计的过程中,老师帮助我开拓研究思路,精心点拨、热忱鼓励,在此谨向老师和帮助过我的老师致以诚挚的谢意和崇高的敬意。 此外,我要感谢同班同学,他们为我们的设计提供了良好的材料,在深化设计方面给予了我们极大的帮助和支持,并在设计的过程中提出了宝贵的建议。在此,真诚的感谢他们的帮助!

ABSTRACT:

Temperature and humidity is life in production of the important parameters.

This design is based on single chip temperature and humidity detection and control system, adopting modular and hierarchical design. With new type of intelligent temperature and humidity sensor DHT11 main realization of temperature, humidity test, temperature humidity signal through the sensor signal acquisition and translated into digital signals, then ATC89C51 single-chip processor is used to analyze the data and processing, display and alarm circuit provides signal to realize the control

21

吴春生 温湿度报警器传感器

of temperature and humidity alarm. Alarm system according to set up alarm limit realize alarm function, display part adopts LCD1602 liquid crystal display measured temperature and humidity value. The system has the simple circuit, high integration level, work stability, convenient debug, high accuracy, and has a certain practical value.

KEY WORDS:SCM; DHT11 temperature and humidity sensor, LCD1602 display

22

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

Top