完整版基于单片机的温湿度检测系统毕业设计论文.docx
- 文档编号:28777299
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:24
- 大小:569.19KB
完整版基于单片机的温湿度检测系统毕业设计论文.docx
《完整版基于单片机的温湿度检测系统毕业设计论文.docx》由会员分享,可在线阅读,更多相关《完整版基于单片机的温湿度检测系统毕业设计论文.docx(24页珍藏版)》请在冰豆网上搜索。
完整版基于单片机的温湿度检测系统毕业设计论文
XX大学电子设计
(题目:
基于单片机的温湿度检测系统设计)
设计小组组员:
李岩杨保佳燕祥
前言
温度是表示物体冷热程度的物理量,微观上来讲是物体分子热运动的剧烈程度。
在整个宇宙当中,温度无处不存在。
无论在地球上还是在月球上,也无论是在炽热的太阳上还是在阴冷的冥王星上,这一切无不由于空间位置的不同而存在着温度的差别。
湿度是表示大气干燥程度的物理量。
在一定的温度下在一定体积的空气里含有的水汽越少,则空气越干燥;水汽越多,则空气越潮湿。
空气的干湿程度叫做“湿度”。
在此意义下,常用绝对湿度、相对湿度、比较湿度、混合比、饱和差以及露点等物理量来表示。
湿度表示气体中的水蒸汽含量,有绝对湿度和相对湿度两种表示方法。
绝对湿度是一定体积的空气中含有的水蒸气的质量,一般其单位是克立方米,绝对湿度的最大限度是饱和状态下的最高湿度;相对湿度是绝对湿度与最高湿度之间的比,它的值显示水蒸气的饱和度有多高。
温度、湿度和人类的生产、生活有着密切的关系,同时也是工业生产中最常见最基本的工艺参数,例如机械、电子、石油、化工等各类工业中广泛需要对温度、湿度的检测与控制。
并且随着人们生活水平的提高,人们对自己的生存环境越来越关注,而空气中温湿度的变化与人体的舒适度和情绪都有直接的影响,所以对温度、湿度的检测就非常有必要了。
摘要
随着科学技术的日新月异,人类社会取得了长足的进步!
在居家生活、工农业生产、气象、环保、国防、科研、航天等部门,经常需要对环境中的湿度和温度进行测量及控制。
本设计设计了一个智能化的温湿度测量应用系统。
本系统采用技术成熟的DHT11作为测量湿度和温度的传感器。
控制系统芯片采用技术成熟,功能强大、价位低廉大众化的STC89C52单片机。
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。
它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。
每个DHT11传感器都在精确的湿度校验箱中进行校准。
校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。
单线制串行接口,使系统集成变得简易快捷。
LCD显示电路由STC89C52单片机控制。
同时设计了能给系统提供稳定工作电压的电源电路。
为了提高系统的抗干扰性能,对湿度、温度的检测采用了硬件抗干扰和软件抗干扰的综合方法。
最后设计了系统各个功能部分的软件程序。
由本设计课题做成的温湿度检测系统结构简单、价格便宜、量程宽,具有较高的可靠性、安全性及实用性。
目录
摘要
一、温、湿度测量的目的及要求
二、设计所需元件清单
三、单片机实现温、湿度测量
3.1原理图及说明
3.2设计理念及实现方法
四、温、湿度传感器及液晶显示12864简介及应用
4.1温、湿度传感器
4.2液晶显示12864简介及应用
五、各个模块设计流程图
5.1温度测量程序流程图
5.2湿度测量程序流程图
5.3显示程序流程图
六、VC、VB界面显示
结论
参考文献
附录一、源程序代码
附录二、硬件实现与仿真图·················································
一、温湿度测量的目的及要求
1、作品设计目的
在重要的设备房间中,设备对温、湿度等运行环境的要求非常严格。
对于面积较大的房间,由于气流及设备分布的影响,温湿度值可能会有较大的区别。
所以应根据主房间实际面积在房间加装温湿度传感器,以实时客观检测房间内的温、湿度。
在监控本系统,温湿度一体化传感器将把检测到的温湿度值实时传送到监控主机中,并在监控界面上以图形形式直观地表现出来。
管理员可实时了解房间各点的实际温湿度值,一旦房间内实际温、湿度值越限,系统将自动弹出报警框并触发报警,提示管理员通过调节送风口的位置、数量,设定空调的运行温湿度值,尽可能让房间各点的温湿度趋向合理,确保房间设备的安全正常运行。
2、作品设计内容及要求
1.基本要求:
(1)能够检测环境温度;
(2)能够检测环境湿度;
(3)显示检测结果;
2.发挥部分:
(1)附带时间显示功能;
(2)间隔固定时间进行检测,间隔时间可调(以分钟为单位);
(3)对检测结果进行储存,可对历史检测结果进行查询;
(4)可与上位机通信,储存检测结果,生成温度变化曲线;
二、设计所需元件清单
Ø5V电源
Ø万用表
Ø杜包线若干。
Ø12864液晶显示各1块。
ØSTC89C52单片机芯片1块。
ØDHT11湿度传感器1个
Ø排阻2排电阻若干
Ø20pf电容若干
Ø蜂鸣器1个。
Ø32768HZ时钟晶体1个
Ø回弹开关1个
Ø按钮开关2个
三、单片机实现温湿度测量
1、原理图容下所示:
由控制器单片机STC89C52、复位电路、DHT11温湿度检测系统及12864显示系统组成。
2、控制系统芯片采用技术成熟,功能强大、价位低廉大众化的STC89C52单片机。
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。
它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。
传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接;采用12864LCD显示温湿度同时应用VC界面显示数据使温湿度变化便于观测。
四、温、湿度传感器及12864显示简介
一、DHT11湿度传感器简介
DHT11的供电电压为3-5.5V。
传感器上电后,要等待1s以越过不稳定状态在此期间无需发送任何指令。
电源引脚(VDD,GND)之间可增加一个100nF的电容,用以去耦滤波。
DATA用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次
通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:
一次完整的数据传输40bit,高位先出。
数据格式:
8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。
1、总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。
DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后,读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可,总线由上拉电阻拉高。
2、总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1.格式见下面图示.如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常.当最后一bit数据传送完毕后,DHT11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。
二、12864液晶显示简介
1、12864液晶接口说明:
(1)液晶2、3端为电源和地;19、20为背光电源;
(2)液晶4端为液晶对比度调节端,在首次使用时,在液晶上电情况下,调节至液晶上面一行显示出黑色小格为止;
(3)液晶8端为向液晶控制器写数据写命令端;
(4)液晶5、6端为读写选择端,此处我们不读取数据则接地
(5)液晶7端为使能信号端
(6)液晶9端为复位端
2、12864读写时序图如下:
读写操作时序
数据与命令时序
3、基本操作时序
(1)读状态:
输入:
RS=L,RW=H,E=H输出:
D0~D7=状态字
(2)写指令:
输入:
RS=L,RW=L,D0~D7=指令码,E=高脉冲输出:
无
(3)读数据:
输入:
RS=H,RW=H,E=H输出:
D0~D7=数据
(4)写数据:
输入:
RS=H,RW=L,D0~D7=数据,E=高脉冲输出:
无
4、初始化过程(复位过程)指令:
(1)延时15毫秒
(2)写指令38H;显示模式设置
(3)写指令08H;显示关闭
(4)写指令01H;显示清屏
(5)写指令06H;显示光标移动设置
(6)写指令0CH;显示开及光标设置
五、各个模块流程设计图
1、温度模块控制流程图:
2、湿度模块控制流程图:
3、显示模块流程图:
五、设计总结
方案一基于DHT11温湿度传感器和VisualBasic上位机界面的设计
由于使所检测的温湿度更具有实际用途,我们决定采用无线收发模块采集温湿度数据,然后发送到单片机,由单片机控制12864液晶显示器显示温湿度数据,工作人员能实时通过12864液晶记录产品的温湿度值,并通过串口通信将数据传送到PC机上,管理人员就能“足不出户”地监测各个仓库的情况。
为什么采用DHTX系列的温湿度传感器?
由于SHTX系列的温湿度传感器价格在25-80元个之间,而DHT系列普遍较为便宜,一般在10元个以下,故经过相关资料的查询,最终选择了性价比较高的DHT11作为此次设计的温湿度传感器。
有利就有弊,DHT11然而在最为常用的电路仿真软件Proteus中都没有其仿真元件,也就是说只有直接通过硬件仿真来实现了,这无疑增加了设计的难度,因为直接通过硬件仿真并不能确保硬件焊接的电路没有一点错误,而用电路仿真软件Proteus就只要考虑程序的问题,大大减少了设计的困难,降低了难度。
具体设计的步骤:
在网上和图书馆查阅有关温湿度传感器的相关资料及有关参考程序;
结合有关DHT11温湿度传感器的相关典型硬件连接电路来焊接网购的DHT11元件,组成一个小型功能模块;
根据所查资料,编写相应程序,用能写汉字的12864液晶来即时显示检测传回的数据,然后就下载到硬件中不断调试程序直到传回的数据稳定显示为止;
考虑到数据的实时性,因此将液晶万年历也集成显示在12864液晶上,同时将温湿度和时间的信息显示出来。
为了更好的管理仓库,设定了温湿度报警装置,当温度和湿度其中有一种超过设定的范围时就会使流水灯的一旁的四个灯全闪烁,温湿度分别各四个为一排灯,同时蜂鸣器滴答报警。
当两者共同超过时就会同时报警。
同时也考虑到温湿度传感器的串口通信功能和在实际远程控制温湿度中的应用,又通过查阅相关书籍,自学了VisualBasic来用电脑的上位机界面显示12864液晶上温湿度数据,进行远程监控。
以下说明每一步骤中遇到的问题和解决的方法:
步骤1:
由于DHT11远没有SHTX系列的温湿度传感器应用广泛,因此查阅资料既困难又极其重要,因为这是对新事物从陌生到熟悉的过程。
只有了解它,我们才能操作它,用它来为我们服务。
最后将XX的相关信息查询完后终于苦尽甘来,一两个程序和元件资料包让我逐渐一点一点了解了它,操作它就指日可待了。
步骤2:
在下图所示的电路图中,由于电路简单,我们直接将DHT11插在单片机最小系统板相对应的插口上。
步骤3、4:
由于编写程序时,没有考虑到串口通信中传回PC的数据的十六进制与显示字符之间的数据处理关系,导致在串口助手软件中只显示了传回的最后一个十六进制数所对应的ASCⅡ的字符,找到问题的解决关键所在后,经过数的分位与字符显示后,成功的显示了传回的温度、湿度的数据,让我们距离成功只差一小步了。
接下来的任务就是显示在12864液晶上,根据之前单独在其上显示过液晶万年历的基础,知道只要将DHT11检测的数据进行相应处理后并且与液晶万年历的显示集成一起送显示就行了。
理论虽简单,但实际在下载到芯片中检测现象时,我们发现分别单独显示两者的数据没有问题,但集成在一块显示不久就会花屏的现象,问题出在刷新汉字时,指针光标的位置修改错误所导致的。
之后经过重新写回指针后就达到了较为满意的效果。
步骤5:
根据查阅相关VisualBasic的书籍后知道,只要将传到串口助手上的数据经过在VisualBasic的相关控件中编写代码就能将数据通过VisualBasic软件显示出来,并且能实现高层管理人员对工厂运作情况的一个远程控制。
在具体编写中,学习到由于程序中的一个MSComm控件只能对应一个串行端口,故在绘制VB的界面图时,只能在一个MSComm中显示温度与湿度两个数据,这就使得在两个MSComm中分别显示温度与湿度成为泡影,因为只有一个串口上传,但又要很明显的区分出来,而不能将两者紧挨着显示以免误看,故将MSComm控件的MultiLine属性设置为Ture即可,这样方框就调整为刚好在两行分别显示数据的形式便达到了目的。
MSComm的代码:
PrivateSubMSComm1_OnComm()
DimrecAsString
SelectCaseMSComm1mEvent
CasecomEvReceive
rec=MSComm1.Input
Text1.Text=rec
MSComm1.InBufferCount=0
EndSelect
EndSub
TextBox的代码:
PrivateSubForm_Load()
MSComm1.Settings="9600,N,8,1"
MSComm1mPort=3
MSComm1.InBufferSize=8
MSComm1.OutBufferSize=2
IfMSComm1.PortOpen=TrueThenMSComm1.PortOpen=False
MSComm1.RThreshold=4
MSComm1.SThreshold=2
MSComm1.InputLen=0
MSComm1.InputMode=comInputModeText
IfMSComm1.PortOpen=FalseThenMSComm1.PortOpen=True
MSComm1.InBufferCount=0
Me.Caption="温湿度显示"
EndSub
VB界面的显示
方案二基于DHT11温湿度传感器的VisualC++上位机界面的设计
由于DHT11的温度误差为±2℃,仓库温度要求不高因此我们设计了适用范围一般的DHT11来检测温度和湿度,避免了精度不高,提高了检测的准确性。
遇到的问题和解决的方法:
由于要将温度值和液晶万年历同时在12864的液晶上显示,这就会使两者的显示数据出现混叠的现象,因为液晶万年历每一秒的刷新频率和DHT11的检测数据刷新频率不一致所导致的,为此我们只要检测的温度值每一秒钟刷新一次即可。
VC界面显示图
参考文献
[1]侯建军.电子技术基础实验、综合设计与课程设计.北京:
高教出版社2007,10(第一版)
[2]童诗白,华成英.模拟电子技术基础.北京:
清华大学教研组编.
[3]阎石.数字电子技术基础。
北京:
清华大学教研组编.
[4]李朝青.单片机原理及接口技术北京:
航空航天大学出版社.2005,10.(第三版)
[5]蔡方凯.单片机原理及基于单片机的嵌入式系统设计中国水利水电出版社2007.
[6]张永枫.单片机应用实训教程.西安电子科技大学出版,2005.
[7]谢自美.电子线路设计、实验、测试.华中理工大学出版社,2000.
[8]郭天祥.十天学会单片机。
电子工业出版社,2008.
()
{
if(s1==0)
{
delay(5);延时5ms去抖动!
if(s1==0)
{
while(!
s1);
s1num++;
if(s1num==1)
{
TR0=0;
write_com(0x80+1);
write_com(0x0f);
}
if(s1num==2)
{
write_com(0x80+3);
}
if(s1num==3)
{
TR0=0;上一次已经停了。
write_com(0x80+5);
write_com(0x0f);
}
if(s1num==4)
{
TR0=0;上一次已经停了。
write_com(0x90+0);
write_com(0x0f);
}
if(s1num==5)
{
TR0=0;上一次已经停了。
write_com(0x90+2);
write_com(0x0f);上一次光标已闪烁
}
if(s1num==6)
{
TR0=0;上一次已经停了。
write_com(0x90+4);
write_com(0x0f);上一次光标已闪烁
}
if(s1num==7)
{
write_com(0x88+7);
}
if(s1num==8)
{
s1num=0;
TR0=1;
write_com(0x0c);
}
}
}
if(s1num!
=0)
{
***按键计数加***
if(s2==0)
{
delay(5);
if(s2==0)
{
while(!
s2);消抖,否则就会一下加很多
***调节修改显示的位置***
if(s1num==1)
{
year++;
if(year==99)
year=0;
刷新年!
write_ymd(1,year);
write_com(0x80+1);
}
if(s1num==2)
{
month++;
if(month==13)
month=1;
刷新月!
write_ymd(3,month);
write_com(0x80+3);
}
if(s1num==3)
{
day++;
if(day==32)
day=1;
刷新日!
write_ymd(5,day);
write_com(0x80+5);
}
if(s1num==4)
{
++;
if(min==60)
min=0;
刷新分!
write_);
write_com(0x90+2);
}
if(s1num==6)
{
sec++;
if(sec==60)
sec=0;
刷新秒!
write_--;
if(min==-1)
min=59;
write_);
write_com(0x90+2);
}
if(s1num==6)
{
sec--;
if(sec==-1)
sec=59;
write_();
}
buzzer=~buzzer;不是buzzer=0;而且两个循环才是一叫一停
P1=~P1;八个流水灯全闪烁
}
}
voidmain()
{
uchari;
init();
***从第一行第一个字符的位置开始显示***
lcd_pos(0,0);
i=0;
while(dis1[i]!
='\0')
{
write_dat(dis1[i]);
i++;
}
***从第二行第一个字符的位置开始显示***
lcd_pos(1,0);
i=0;
while(dis2[i]!
='\0')
{
write_dat(dis2[i]);
i++;
}
***从第三行第一个字符的位置开始显示***
lcd_pos(2,0);
i=0;
while(dis3[i]!
='\0')
{
write_dat(dis3[i]);
i++;
}
***从第四行第一个字符的位置开始显示***
lcd_pos(3,0);
i=0;
while(dis4[i]!
='\0')
{
write_dat(dis4[i]);
i++;
}
while
(1)
{
keyscan();
***让蜂鸣器间隔报小时数***
if(min==0&&sec==0)
{
delay1(2*==59&&sec==59)
{
if(++;
if(min==60)
{
min=0;
);
}
write_hms(4,sec);
}
}
***串口发送中断子函数****
voidRSINTR()interrupt4using2
{
if(TI==1)发送中断
{
TI=0;
if(count!
=5)发送完5位数据
{
SBUF=outdata[count];
count++;
}
}
}
附录二
硬件实现
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 基于 单片机 温湿度 检测 系统 毕业设计 论文