DHT11为数字湿度度传感器单片机.docx
- 文档编号:7810945
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:27
- 大小:982.49KB
DHT11为数字湿度度传感器单片机.docx
《DHT11为数字湿度度传感器单片机.docx》由会员分享,可在线阅读,更多相关《DHT11为数字湿度度传感器单片机.docx(27页珍藏版)》请在冰豆网上搜索。
DHT11为数字湿度度传感器单片机
《单片机技术》课程设计说明书
学院:
学生姓名:
指导教师:
职称/学位
专业:
班级:
学号:
完成时间:
摘要
设计介绍了一种以AT89S52为主要控制器件,以DHT11为数字湿度度传感器利用LCD1602液晶显示湿度信息的数字湿度计。
设计主要包括硬件电路的设计和系统软件的设计。
数字湿度计的硬件系统包含电源、复位、下载、显示、时钟等模块,利用电子绘图软件进行原理图、PCB图的绘制,并完成了硬件系统实物的制作。
软件系统包含检查等各个模块的模块化程序。
通过对硬、软件系统的联调和测试,该湿度计的功能和性能指标符合设计任务书的要求。
首先,对测湿技术现状进行了介绍,对各种方案进行了简单的分析与比较;其次根据系统的总体要求和技术指标,从工程应用的角度出发,进行了硬件部分的设计和选型、软件的设计与分析,且在实现中遵循了简单、经济、实用的原则;然后详细介绍了系统所用各芯片的特点、引脚功能、工作原理及应用;最后通过设计,完成了对环境湿度的检测,达到了设计的基本要求,成品可以调节湿度和温度的上下限进行控制,超出上下限单片机报警鸣笛。
本系统电路简单、集成度高、工作稳定、调试方便、检测精度高,具有一定的实用价值。
关键词:
湿度计;AT89S52;LCD1602;DHT11
1绪论
1.1课题设计背景及意义
进入21世纪后,随着科技飞速发展,各行各业都须应用电子技术、自动控制技术进行改造和提升。
很多产业行业对湿度的测控手段很粗糙,十分落后,绝大多数仍在使用湿球湿度计,采用人工观测人工调节阀门、风机的方法,很少有人使用湿度传感器。
就在生活中,湿度扮演着非常重要的角色,现代社会越来越多的场所会涉及到湿度并将其显示。
湿度看看我们各自的家庭,具有温度计的很多,而同时墙上挂有湿度计的则很少。
这说明家庭室内装饰中的湿度题目,似乎还没引起我们足够的熟悉。
合适的湿度较之居室的主人来说,其重要性并不亚于温度。
空气湿度是指空气湿润的程度,可用相对湿度表示。
相对湿度是指空气实际所含水蒸气密度和同温下饱和水蒸气密度的百分比值。
人体在室内感觉舒适的最佳相对湿度是40~70%,相对湿度过低或过高,对人体都不适甚至有害。
相对湿度过低,还会导致木材水分散失,引起家具或木质地板变形、开裂和损坏;钢琴、提琴等对湿度要求高的乐器不能正常使用;文物、档案和图书脆化、变形。
相对湿度过高,又易使室内家具、衣物、地毯等织物生霉、铁器生锈、电子器件短路;地毯、壁纸发生静电现象,对人体有刺激,甚至诱发火灾。
最近几年来,单片机随着科技的发展,不断的走向社会各个领域,还带动传统控制检测日新月异更新。
在实时运作和自动控制的单片机应用到系统中,单片机如今是作为一个核心部件来使用,仅掌握单片机方面知识是不够的,还应根据其具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
1.2设计的主要工作
在课程设计中,为实现对湿度的检测与显示,主要利用以AT89S52为核心构架硬件电路,DHT11湿度传感器采集环境湿度信息(测量精度:
湿度检测范围:
20%-90%RH。
检测精度:
5%RH)。
LCD1602显示器直接显示湿度,同时设计其原理图、PCB图、并制作实物电路板利用C语言编程实现湿度信息的显示功能。
2设计方案及工作原理
2.1设计方案
系统主要由湿度复位电路、时钟电路、ISP下载等模块组成,设计方案使用AT89S52作为控制核心,湿度传感器DHT11作为湿度测量元件,显示电路采用LCD1602模块显示,控制电路采用电路控制,采用单片机最小系统。
系统硬件系统硬件电路设计框图如图1所示。
图1湿度计硬件电路设计框图
2.2工作原理
系统通过Keil软件编写C语言程序,然后把程序下载到单片机中,上电系统开始工作。
键盘对系统进行检测开始操作,DHT11传感器检测周围环境的湿度,把检测到的数据发送给AT89S52单片机,单片机对数据处理后送给LCD1602液晶显示器,显示器对数据进行有效显示。
在以上过程中键盘可同时对系统进行停止和系统复位操作,系统同时达到相应效果。
3硬件系统的设计
3.1主要元器件介绍
3.1.1AT89S52
AT89S52单片机是Atmel公司制造的,采用的是高密度非易失性存储器技术,此单片机有非常齐全的标准功能,具体内容如下:
它的RAM有256个字节;Flash有8K字节;它的有4个I/O口线,每一个8位共有32位;它还具有看门狗定时器;16位定时器/计数器有三个;数据指针有2个;全双工串行口;片内晶振及时钟电路。
除此之外,此单片机能够选择的节电模式有两种方式。
在空闲模式情况下,CPU是停止工作的,但是其内部模块仍然被准许继续工作,如RAM、定时器/计数器、串口以及中断等。
在掉电保护方式情况下,把RAM的内容保存好,振荡器将会停止,就会停止单片机的所有工作,当下一个中断或者硬件复位到来时才能改变状态。
AT89S52引脚图如图2所示。
图2单片机AT89C52引脚图
3.1.2LCD1602液晶显示屏
本设计采用的是LCD1602液晶显示器,它能显示出2行*16个字符,具有背光功能,其接口具有兼容性,驱动方便。
为了完成对密码等相关信息的显示,按照LCD1602的要求,将第1脚VSS接地,第2脚VDD接5V正电源,由于接地电源时对比度最高,对比度过高时会产生“鬼影”,因而将第3脚V0接入一个10K可调电阻,来调整液晶显示器对比度,第4脚RS为寄存器选择,与单片机的P2.7相连接,高电平时选择数据寄存器、低电平时选择指令寄存器;第5脚RW为读写信号线,与单片机的P2.6相连接,高电平时进行读操作,低电平时进行写操作,当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚E端为使能端,与单片机的P2.5相连接,当E端由高电平跳变成低电平时,液晶模块执行命令;第7~14脚D0~D7为8位双向数据线;第15~16脚为空脚,电路图如图3所示,实物图外观如图4所示。
图3LCD1602液晶显示
图4LCD1602实物图
3.2各模块电路的设计
3.2.1AT89S52单片机最小系统
单片机最小系统由电源电路、时钟信号电路和复位电路组成。
少了其中任何一个电路模块,单片机都不能正常工作。
所以数字湿度计硬件系统,首先设计单片机最小系统部分。
(1)电源部分:
系统各个功能实现首先必须要对其引入稳定的供电电压+5V,才能让各个模块具有驱动能力。
供电采用专用的电源变压器将市电降压成所需要的12V交流电压,通过整流、滤波、稳压,给系统提供稳定的直流电压+5V。
整流桥选择2W10型号,承受电流的能力为2A,最大耐压能力为1000V。
根据模电知识可知,滤波电容得取值与耐压水平有关,+5V的输出其耐压值应大于1.4倍变压器副边电压值,通过计算,滤波电容取标称值470μF,减少纹波系数电容取0.1μF,稳压芯片选取LM7805,才能输出稳定的+5V电压。
电源电路如图5所示。
图5电源电路
(2)时钟信号:
时钟电路采用AT89S52单片机外接晶振电路实现。
系统采用12MHz晶振。
时钟电路如图6所示。
图6时钟电路
(3)复位电路:
该电路是用来产生复位信号的,信号是有单片机中RST引脚送进单片机内部,从而进行复位操作。
复位有上电复位和手动复位,采用的是上电复位与手动复位相结合的电路。
上电复位的原理为:
复位是通过电容充电来实现的,在上电充电的过程中单片机。
复位引脚产生了正脉冲,因此就使得单片机复位。
手动复位的原理为:
按下按键,电阻分压得到单片机复位需要的电平,从而使单片机复位。
由于本次设计的系统是C51单片机复用,C51单片机是高电平复位。
单片机最小系统复位电路的极性电容C1的大小直接影响单片机的复位时间,一般采用10~30μF,51单片机最小系统容值越大需要的复位时间越短。
C1电容参数为10μF,R2电阻参数为10KΩ。
C51复位电路如图7所示。
图7C51复位电路
3.2.2ISP下载电路
ISP功能是AT89S52单片机固有的功能,编译通过的程序能够被其直接下载到单片机的Flash中。
下载电路有接口电路和连接电缆组成,接口电路图8所示。
其中接口模块的1、4、5脚分别连接单片机的P1.5、P1.7、P1.6引脚,接口模块的3脚连接单片机的复位引脚,接口模块的6脚接电源,接口模块的7、8、9、10脚接地。
图8ISP下载电路
3.2.3DHT11湿度传感器电路
DHT11湿传感器电路分别由DHT11湿度传感器、10K电阻和100PF的瓷片电容组成。
DHT11数字湿度传感器为单线接口器件,具有双向传输数据功能。
1脚接电源,2脚为SDA引脚,用于读、写感应到的湿度数据,接单片机P1.0口线,3脚悬空,4脚接地。
单片机和湿度传感器可以直接连接,但中线通信模式时,当SDA上拉后与单片机I/O口线P1.0相连接,并使用10K上拉电阻。
为了防止时间太短,不能准确测量数据和稳定有效的显示湿度,规定读取时间间隔应大于1s。
DHT11测湿电路如图9所示。
图9DHT11湿度传感器电路
3.3系统电路原理图
见附录A。
3.4系统元件清单
见附录C。
4系统软件设计
4.1软件设计主程序设计
软件部分主要有以下模块程序设计:
LCD1602液晶显示程序、DHT11测湿程序等。
主程序流程:
开启系统,系统初始化开始,然后判断两个按键的状态及采集标志置位,接着LCD1602液晶初始化,DHT11测湿初始化,读取湿度,显示相应的数据文字,结束程序。
主程序设计如图10所示。
图10主程序设计图
4.2软件设计的分模块程序设计
在进行程序开发时,需要对系统进行整体分析,考虑系统板上的硬件资源,以最优方案进行设计。
在软件设计过程中,选择模块化的设计方法,依次为每一个模块进行软件设计,这样不仅方便设计者对程序设计和修改,还方便阅读者读懂程序。
接下来将分别介绍各个模块的程序设计。
4.2.1液晶显示程序设计
液晶显示LCD1602,软件设计包括系统初始化、液晶初始化、液晶读/写时序、清屏处理、显示处理等。
液晶显示程序流程图如图11所示。
图11液晶显示流程图
4.2.2DHT11测湿度程序设计
DHT11数字式测湿度传感器的软件设计采用C语言编写程序,主要利用DHT11数字式测湿度传感器进行湿度的检测,对检测到的湿度数据进行处理,利用串行通信方式把数据发送给单片机,单片机再把处理后的数据发送给LCD1602液晶屏进行显示。
采用模块化设计方法,包括系统初始化、湿度读取程序、延时程序及液晶显示程序,DHT11测湿度流程图如图12所示。
图12DHT11测湿度流程图
4.2.3键盘扫描模块
键盘扫描程序又叫键扫程序,当键按下后通过延时去抖判断键是否真正按下,当有键按下时,返回键值,没有键按下则返回0。
键盘扫描模块程序流程框图如图13所示。
图13键盘扫描模块程序流程图
5系统调试运行及结果说明
5.1操作说明
把每个电路模块与单片机最小系统连接起来,组成数字湿度计系统。
随后在计算机上安装ISP在线下载器驱动,把数字湿度计系统板与计算机通过下载线相连,给系统上电,打开程序下载软件(progisp),选择单片机AT89S52,并调入Flash文件,点击自动,程序就被下载进入单片机了。
使稳压电源为系统板供电。
5.2调试
系统上电后,液晶显示器上显示检测湿度结果如:
“TEMPERATURE:
25℃HUMIDITY:
60%”等字符,显示界面如图14所示。
图14显示界面
按K1键后,湿度上限控制设置如图,准备界面显示如:
“SET_HUMI_HIGH80”等字符,准备界面如图15所示。
图15准备界面
按K4键返回确认后,再按K1键,湿度下限控制设置如图,准备界面显示如:
“SET_HUMI_LOW38”等字符,准备界面如图16所示。
图16准备界面
5.3设计缺陷分析
设计完成了湿度计的系统框架和基本电路,最终通过编写代码使湿度计能正常测得环境湿度并在显示器上显示,基本完成了设计任务中的不同要求,但是仍然存在不少问题。
经过探讨得出了与这些问题相关的一些分析。
实际做成的湿度计,在显示器上显示数据。
但是显示的信息只有数字和英文字符,不能显示中文字符,并显示的数据存在一定的误差。
分析:
选用的显示器LCD1602显示的功能有限,没有显示中文字符的功能,误差产生的原因与传感器本身的性能,还有软件编程和单片机都有一定的关系。
5.4设计结论
通过实物调试,系统上电后能显示测试暂停状态,当按键K4有效时,系统进入湿度检测和显示状态;当按键K1时,系统进入湿度上限控制状态,按键K2、K3分别上调、下调设定湿度;按键K4,确认返回测试暂停状态;再次按键K1,系统进入湿度下限控制状态,按键K2,K3分别上调、下调设定湿度,总体上实现了设计的基本功能。
5.5设计体会
在设计中,成功的设计了一个具有实用价值的湿度计,将学到的知识灵活的应用进来。
考虑到学习的不是很全面,设计湿度计系统时在网上找了大量资料,参考了很多有关的书籍,经过半个多月的设计和思考,终于成功将它完成。
设计期间,得到了老师和同学的很多帮助。
设计应用了多个模块,在对设计选择所需要的各个模块过程中,加强了单片机的综合应用能力,加深了每个模块功能及电路的理解,扩展了思维方式,开阔了视野。
其次,通过设计,加强了单片机系统开发的能力,提高了发现问题、解决的问题能力,对以后的学习和工作有着深远的影响。
结束语
从选择课题开始,不断的通过互联网和书本查找相关资料,然后制定了设计计划。
通过老师的指导和同学的耐心帮助,先后完成了课题设计任务书的内容,对设计方案等进行了确定。
通过相关软件对相关实物进行设计和制作,然后进行调试,编写课程设计说明书等。
这个过程,虽然历经许多天,也很辛苦,但收获却很多,对单片机以及其他相关知识有了更加深入的探究和了解,也让对理论知识的理解能力、编程能力、动手能力以及各种相关软件的使用能力有了相应的提高。
系统设计在硬件选择方面,采用湿度传感器DHT11,使电路链接更加方便,并且容易读数,简化了设计。
显示电路比较了LED和LCD之后,发现LED显示的信息量较少,外接电路复杂且耗电量大,而LCD正好弥补了LED的缺点,所以选择了用LCD来连接显示电路。
最终还是顺利的完成本次的单片机数字湿度计课程设计,完成了对自己理论知识及动手能力的检测。
参考文献
[1]路敬袆.传感器原理及应用[M].哈尔滨:
哈尔滨工程大学出版社,2014.
[2]康华光.电子技术模拟部分(第五版)[M].北京:
高等教育出版,2006.
[3]唐俊瞿.单片机原理及应用[M].北京:
冶金工业出版社,2003.
[4]李广弟.单片机基础[M].北京:
北京航空航天大学出版社,2007.
[5]王英.电子技术实验教程[M].成都:
西南交通大学出版社,2015.
[6]赵建领.零基础学单片机C语言程序设计(第3版)[M].北京:
机械出版
社,2014.
[7]郑毛祥.单片机原理及应用[M].武汉:
华中科技大学出版社,2015.
[8]李全利.单片机原理及应用(C51编程)[M].北京:
高等教育出版社,2012.
[9]马忠梅.单片机的C语言应用程序设计[M].第4版.北京:
北京航空航天大学出版社,2003.
[10]李光飞.单片机C程序设计指导[M].北京:
北京航空航天大学出版社,2003.
[11]李光飞.单片机课程设计实例指导[M].北京:
北京航空航天大学出版社,2004.
[12]胡汉才.单片机原理及接口技术[M].北京:
清华大学出版社,1996.
致谢
课程设计成了检验这学期学习的一种有效方法。
经过从开始整理思路,制定目标,到完成设计这样的一个过程,从无到有这样的一个过程中,受益匪浅,也懂得了结果并不重要,重要的是过程。
这段时间我不仅巩固了的学习内容,更增长了新的知识和经验,这些知识和经验让我以后在社会上少走弯路奠定了基础。
在完成设计这个过程中,我遇到了很多的难题,苦恼过后,发现总会有那么多的人在支持我,帮助我。
因此,我要深深的感谢我的指导老师,以及在背后默默支持我的同学及朋友!
是他们,在我遇到问题困难时,一遍一遍极有耐心的跟我讲解,帮我解决相应的困难,再一次谢谢他们。
我要再次感谢指导老师!
是她的悉心指导,才能让我顺利的完成课程设计。
老师做事一丝不苟,对我们严厉有加,老师的为人处事,工作尽心尽职的态度,都深深的影响着我,因此我要衷心的感谢老师。
课程设计的完成,感谢学校为我们提供这么好的学习气氛,感谢老师们细致教导,感谢同学们的热情帮助。
附录
附录A原理图
附录B实物图
附录C元件清单
表A1元件清单
元件名称
元件参数
数量
电解电容
22uF
2
瓷片电容
33pF
2
发光二极管
1
ISP下载口
1
排阻
470Ω
1
温湿度传感器
DHT11
1
晶振
12M
1
开关
6角
1
单片机
AT89S52
1
液晶
LCD1602
1
电阻
1K
4
电阻
200Ω
1
电阻
4.7K
4
排阻
10K
3
电位器
50K
1
变压器
220V/9V/55HZ
1
LM7805
1
整流桥
2W10
1
电解电容
470μf
2
瓷片电容
0.1μf
2
瓷片电容
10nf
2
四角按键
3
附录D程序清单
/********************************************************************
程序名:
数字湿度计程序
编写者:
唐振辉
指导老师:
凌云
时间:
2016年12月
班级:
电气1405班
功能:
显示湿度
使用说明:
湿度传感器的数据口接P1.0,P2.7接RS,2.6接RW,2.5接EN。
********************************************************************/
#include
#include"dht11.h"//温湿度传感器DHT11头文件
#include"lcd_1602.h"//液晶屏1602头文件
uchari,key_flag;
ucharset_temp_H_shi,set_temp_H_ge;//设定温度的变量
ucharset_temp_L_shi,set_temp_L_ge;//设定温度的变量
ucharset_humi_H_ge,set_humi_H_shi;//设置湿度的变量
ucharset_humi_L_ge,set_humi_L_shi;//设置湿度的变量
signedcharset_temp_H=38,set_temp_L=8;//温度上限赋值38,温度下限赋值8
signedcharset_humi_H=78,set_humi_L=38;//湿度上限赋值78,湿度下限赋值38
sbitk1=P1^0;//定义按键K1
sbitk2=P1^1;//定义按键K2
sbitk3=P1^2;//定义按键K3
sbitk4=P1^3;//定义按键K4
sbitbuzzer=P3^1;
/////////////////////////延时函数/////////////////////////////
voiddelay(ucharx)
{
uchara,b;
for(a=0;a<20;a++)
{
for(b=x;b>0;b--);
}
}
/////////////////////////显示温度和湿度//////////////////////////
voiddisp_t_h()
{
write_cmd(0x8c);
write_dat(tab_lcd_num[ds3]);//显示温度十位
write_cmd(0x8d);
write_dat(tab_lcd_num[ds4]);//显示温度个位
write_cmd(0xcc);
write_dat(tab_lcd_num[ds1]);//显示温湿度十位
write_cmd(0xcd);
write_dat(tab_lcd_num[ds2]);//显示温湿度个位
}
///////////////////////开机显示////////////////////////////////////
voiddisp_start()
{
for(i=0;i<16;i++)
{
write_cmd(0x80+i);
write_dat(tab_t[i]);//温度
}
write_cmd(0x80+0x0e);
write_dat(0xdf);
for(i=0;i<16;i++)
{
write_cmd(0xc0+i);
write_dat(tab_h[i]);//湿度
}
}
///////////////////////扫描按键////////////////////////////////
voidkey_scan()
{
if(k1==0)//按下K1
{
//设置温度上限////////////////////////////////
if(key_flag==0)//按键标志0
{
write_cmd(0x01);//清屏
write_cmd(0x80);//显示位置第一行第一列
for(i=0;i<13;i++)
write_dat(tab_set_temp_H[i]);//显示SETTEMPERATURE字符
while(k4==1)//按下K4
{
if(k2==0)//按下K2
{
while(k2==0);
set_temp_H++;//设置温度数值加
if(set_temp_H==50)//到50,清0
set_temp_H=0;
}
if(k3==0)//按下K2
{
while(k3==0);//松手检测
set_temp_H--;//设置温度数值减
if(set_temp_H==0)//到0,加为50
set_temp_H=50;
}
set_temp_H_ge=set_temp_H%10;//计算设置温度个位
set_temp_H_shi=set_temp_H/10;//计算设置温度十位
write_cmd(0xc6);
write_dat(tab_lcd_num[set_temp_H_shi]);//显示设置温度个位
write_cmd(0xc7);
write_dat(tab_lcd_num[set_temp_H_ge]);//显示设置温度十位
}
delay(200);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DHT11 数字 湿度 传感器 单片机