基于单片机的温湿度检测系统_第1页
基于单片机的温湿度检测系统_第2页
基于单片机的温湿度检测系统_第3页
基于单片机的温湿度检测系统_第4页
基于单片机的温湿度检测系统_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计控学院CollegeofcomputerandcontrolengineeringQiqiharuniversity电气工程课程设计报告题目:寝室温湿度检测装置的设计系别电气工程系适用班级电气12级指导教师时间学生姓名提交日期摘要随着人们生活水平的提高,人们对健康提出了更高的要求,空气中的湿度通过各种直接或间接途径影响了我们的舒适感,空气中的湿度过大或过小都会对人体健康不利。在日常生活中,温湿度监控系统应用很广泛,例如:机房、档案馆、材料加工场等场所,乃至我们的寝室,温湿度与健康密切关联,都必须控制环境的温度和相对湿度,使其保持在一定的范围。使用DHT11可以灵活的检测环境的温湿度,由用户设定一定的阈值,实时监测显示,并且可以根据用户要求设定报警装置,当温湿度超过一定的范围时,立即报警。基于此,我设计了一款用51单片机控制的温湿度监控系统,操作简单,使用方便。关键词:温湿度;51单片机;DHDT11目录TOC\o"1-3"\h\u2420摘要I198第1章绪论1317291.1本论文的背景和意义1303981.2本论文的根本内容1210801.3方案设计1268051.3.1温湿度监控系统满足的根本要求1170371.3.2系统功能原理图221739第2章硬件设计366692.1电路原理图35442.2电路原理图介绍3243042.3蜂鸣器电路局部说明459122.4晶振电路局部说明465982.51602模块电路说明429402.6湿度传感器DHT11介绍560242.7技术参数说明69355第3章软件设计7112593.1软件设置实现的功能711363.2软件流程图750第4章实验板测试818751结论95647参考文献1024806附录11第1章绪论1.1本论文的背景和意义室内温湿监控系统的设计是一个对现实生活非常实用,本课题研究的主要内容是设计制作对室内温湿度的监督与控制,相当于简易空调的制作,了解空调系统,运用原理设计制作方案;运用物理知识制作控制温湿变化设备;传感器获取外界温湿度参数,51单片机编程控制,实现智能化设计;并用仿真软件对控制效果进行仿真研究。随着科技的飞速开展和普及,高性能设备越来越多,各行各业对温湿度的要求也越来越高。传统的温湿度监测模式是以人为根底,依靠人工轮流值班,人工巡回查看等方式来测量和记录环境状况信息。在这种模式下,不仅效率低下不利于人才资源的充分利用,而且缺乏科学性,许多重大事故都是由人为因素造成的,人工维护缺乏完整的管理系统。而问世监控系统就可以解决这样人才资源浪费,管理不及时的问题,这是由于它的智能化设计所决定的。它的工作步骤如下:感应环境温湿度;单片机判断感应到的温湿度是否异常;假设感应到的温湿度异常,实行措施进行调节;判断异常是否超过预设时间,假设超过预设时间,那么输出异常信号报警;判断异常是否处理完毕,假设处理完毕,解除报警。这样就可以利用控制器对机房温湿度进行监控,从而实现环境温湿度管理的实时性和有效性。故本次设计对于类似工程还具有普遍意义。1.2本论文的根本内容本设计完成的是温室的温湿度监测系统,利用单片机设一个温湿度检测系统,对给定的温湿度进行测试并实时显示,并怕不断当时的温度或湿度是否在规定的范围内,假设不是,测启动报警系统。1.3方案设计1.3.1温湿度监控系统满足的根本要求a.温度检测范围0-50度,相对湿度20%-90%;b.可以根据实际用途设定温湿度报警值;c.监测数据可以通过模块显示;1.3.2系统功能原理图根据设计要求确定了系统的总体方案,整个方案由单片机、湿温度传感器、显示模块、报警器等五局部组成。系统功能原理图如图1所示。湿度传感器温度传感器湿度传感器温度传感器单片机单片机蜂鸣器LCD显示蜂鸣器LCD显示图1-1系统功能原理图第2章硬件设计2.1电路原理图单片机是整个系统的控制中枢,它指挥外围器件协调工作,从而完成特定功能。硬件实现上采用模块化设计,每个模块只实现一个功能,最好将各个模块连接在一起。这种设计比拟简单的就可以实现,电路原理图如图2-1所示:图2-1电路原理图2.2电路原理图介绍本系统主要硬件有电源电路、温湿度传感器、蜂鸣器、晶振电路、复位电路、LCD显示电路、且控制电路的核心器件是由STC红晶科技公司生产的STC11F04E单片机,属于MCS-51列,STC11F04E是一种低功耗、高性能的CMOS8位微控制器,具有8K在系统可编程FLASH存储器;相比传统的51系列速度更快,且在本设计中充分利用了该单片机的资源不浪费I/O口。片上Flash允许程序存储器在线编程。这些优点使得STC11F04E为众多嵌入式控制应用系统提供高灵活、超有效的解决方案,价格低廉,性能可靠,抗干扰强,因此广泛应用在工业控制和嵌入式中。系统的蜂鸣器电路、晶振电路、复位电路如图2-1、图2-2、图2-3所示:图2-2蜂鸣器电路图2-3晶振电路图2-4复位电路2.3蜂鸣器电路局部说明蜂鸣器额定电流小于30mA,其中使用三极管驱开工作,为了减少功耗本实验采用9012晶体管。2.4晶振电路局部说明晶振电路采用11.095MHz的无源晶振,微调电容大小取30PF。2.51602模块电路说明显示模块选用1602字符型液晶模块,是目前应用比拟广泛的液晶屏之一,电路如图2-5所示。图2-51602液晶显示电路2.6湿度传感器DHT11介绍DHT11数字温湿度传感器是一款含有已校准熟悉信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在即为精确的湿度校验室中进行校准。校准系数以程序的形式存在OTP内存中,传感器内部在检测型号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为给类应用甚至最为苛刻的应用场合的最正确选择。产品为4针单排引脚封装,连接方便。DHT11应用电路如图2-6:图2-6DHT11应用电路2.7技术参数说明a.供电电压:3.3~5.5VDC;b.输出:单总线数字信号;c.测量范围:湿度20-90%RH,温度0~50℃;d.测量精度:湿度+-5%RH,温度+-2℃;e.分辨率:湿度1%RH,温度1℃;f.互换性:可完全互换;g.长期稳定性:<±1%RH/年;第3章软件设计3.1软件设置实现的功能系统单片机代码采用C语言编写,以KeiuVision4为开发环境。系统软件实现的功能:a.通过LCD显示温湿度值;b.比拟检测到的温湿度值和报警值,发现超限蜂鸣器立即报警;3.2软件流程图根据这些功能,系统软件流程图如图3-1所示:1602初始化1602初始化延时延时读取温湿度值读取温湿度值读取成功读取成功1602显示数据1602显示数据报警,发出信号是否超限 Y报警,发出信号是否超限延时 N延时图3-1系统软件流程图第4章实验板测试通过测试实验板,已根本到达预定目的,测评如下:1.预先设置温度阈值是30摄氏度,湿度阈值是30%TH;2.温度测试:通电后,温度显示室内值,用手捂住DHT11,使显示器到达30,此时蜂鸣器立即报警;3.湿度测试:紧接着温度测试,用嘴吹气增加DHT11的湿度,使其到达阈值30,蜂鸣器立即报警;通过测试,实验板根本完成预定的目标,即完成了温湿度的检测,且能在设定的阈值范围内报警,到达了预期的效果。结论由于采用的是高效单片机作为核心,DHT11可以灵活的检测环境的温湿度,由用户设定一定的阈值,实时监测显示;此温湿度控制仪具有精度高、本钱低、体积小、接口简单等优点,还具有良好抗干扰能力。加上优化程序,使得本系统具有很高的实用性。单片机的应用如今已经在工业、电子等方方面面展示出了它的优越性,利用单片机在设计电路逐渐成了趋势,它与外围的简单电路再加上优化程序就可以构建任意的产品,使得本设计成为现实。随着单片机的日益开展,它必将在未来显示出更大的活力,为电子设计增加更多精彩。在设计过程中,由于时间和本人能力的限制,设计中存在一些需要改良和优化的地方。测量精度有待进一步提高,软件设计也存在不合理之处。但从设计过程中,对于单片机有更进一步的认识,对用于单片机仿真的软件操作能力也明显提高,也对温湿度检测系统有了更深刻的理解,对protel99se和Altiumdesigner仿真软件有了更明确的认识,通过此设计,对在实验板在制作过程中出现的各种问题的解答提高了自己的思考能力和动力能力。端正了做事的心态,不能有半点马虎,细节决定成败,做事应该滴水不漏,认认真真,踏踏实实,对以后的日常生活和工作都受益匪浅。参考文献[1]谢自美.电子线路设计*实验*测试[M].华中科技大学出版社.[2]张友德等.单片微型机原理、应用和实验[M].电子工业出版社.[3]吴经国等.单片机应用技术[M].中国电力出版社.[4]李群芳.单片机微型计算机与接口技术[M].电子工业出版社.[5]闫石.数字电子技术根底[M].高等教育出版社.[6]黄智伟.全国大学生电子设计竞赛训练教程[M].电子工业出版社.[7]周立功.单片机实验与实践[M].北京航空航天大学出版社.附录附录1程序源代码/*******************************************************************************///DHT11温湿度测试程序//P0作为LCD的数据控制口,P2.0作为DHT11data总线,P2.1作为状态显示//用三根杜邦线连到开发板/********************************************************************************/#include<reg52.h>#include<intrins.h>typedefunsignedcharunint8;typedefunsignedcharunint16;unsignedcharstr1[]={""};unsignedcharstr2[]={""};unsignedcharcodedis1[]={"2-#H:"};unsignedcharcodedis2[]={"618T:"};sbitTRH=P3^7;//温湿度传感器DHT11数据接入sbitST=P3^1;//状态显示,是为了方便调试,具体使用的时候可以不要sbitSF=P3^2;sbitLCD_RS=P3^3;sbitLCD_RW=P3^4;sbitLCD_EN=P3^5;unint8TH_data,TL_data,RH_data,RL_data,CK_data;unint8TH_temp,TL_temp,RH_temp,RL_temp,CK_temp;unint8com_data,untemp,temp;unint8respond;/*********************************************************************************/voiddelayNOP(){_NOP_();_NOP_();_NOP_();_NOP_(); _NOP_();_NOP_();_NOP_();_NOP_(); _NOP_();_NOP_();_NOP_();_NOP_();}/*********************************************************************************//*********************************************************************************///毫秒级延时子程序/*********************************************************************************/voiddelay_ms(unsignedcharms){unsignedchari;while(ms--){for(i=0;i<150;i++){_NOP_();_NOP_();_NOP_();_NOP_();_NOP_();_NOP_();_NOP_();_NOP_();}}}/*********************************************************************************//*********************************************************************************///5us级延时程序/*********************************************************************************/voiddelay_us(){unint8i;i--;i--;i--;i--;i--;i--;}/********************************************************************************//********************************************************************************///测试LCD忙碌状态//lcd_busy()为1时,忙,等待。lcd_busy()为0时,闲,可写指令与数据。/********************************************************************************/bitlcd_busy(){ bitresult;LCD_RS=0;LCD_RW=1;LCD_EN=1;delayNOP();result=(bit)(P1&0x80);LCD_EN=0;return(result);}/*******************************************************************************//*******************************************************************************///写入指令数据到LCD/*******************************************************************************/voidlcd_wcmd(unsignedcharcmd){while(lcd_busy());LCD_RS=0;LCD_RW=0;LCD_EN=0;_NOP_();_NOP_();P1=cmd;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;}/*****************************************************************************//*****************************************************************************///写显示数据到LCD//RS=高电平,RW=低电平,E=高脉冲,D0-D7=数据。/*****************************************************************************/voidlcd_wdata(unsignedchardat){while(lcd_busy());LCD_RS=1;LCD_RW=0;LCD_EN=0;P1=dat;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;}/****************************************************************************//****************************************************************************///LCD初始化设定/****************************************************************************/voidlcd_init(){ delay_ms(15);lcd_wcmd(0x38);//16*2显示,5*7点阵,8位数据delay_ms(5);lcd_wcmd(0x38);delay_ms(5);lcd_wcmd(0x38);delay_ms(5);lcd_wcmd(0x0c);//显示开,关光标delay_ms(5);lcd_wcmd(0x06);//移动光标delay_ms(5);//lcd_wcmd(0x01);//去除LCD的显示内容,如果屏幕过暗,可将这俩句删除//delay_ms(5);}/****************************************************************************//****************************************************************************///设定LCD显示位置/****************************************************************************/voidlcd_dis_pos(unsignedcharpos){lcd_wcmd(pos|0x80);//数据指针=80+地址变量}/****************************************************************************//****************************************************************************///收发信号检测,数据读取/****************************************************************************/charreceive(){unint8i;ST=0;com_data=0;for(i=0;i<=7;i++){respond=2;while((!TRH)&&respond++);delay_us();delay_us();delay_us(); delay_us();delay_us();delay_us(); delay_us();delay_us();delay_us();if(TRH){temp=1;respond=2;while((TRH)&&respond++);}elsetemp=0;com_data<<=1;com_data|=temp;}return(com_data);}/****************************************************************************//****************************************************************************///湿度读取子程序//温度高8位==TL_data//温度低8位==TH_data//湿度高8位==RH_data//湿度低8位==RH_data//校验8位==CK_data//调用的程序有delay();,Delay_5us();,RECEIVE();/***************************************************************************/voidread_TRH(){//主机拉低18msTRH=0;delay_ms(36);TRH=1;//DATA总线由上拉电阻拉高主机延时20usdelay_us();delay_us();delay_us();delay_us(); delay_us();delay_us();delay_us();//delay_us();//delay_us();delay_us();delay_us();delay_us();//主机设为输入判断从机响应信号TRH=1;//判断DHT11是否有低电平响应信号如不响应那么跳出,响应那么向下运行if(!TRH){respond=2;//判断DHT11发出80us的低电平响应信号是否结束while((!TRH)&&respond++);respond=2;//判断从机是否发出80us的高电平,如发出那么进入数据接收状态while(TRH&&respond++);//数据接收状态RH_temp=receive();RL_temp=receive();TH_temp=receive();TL_temp=receive();CK_temp=receive();TRH=1;ST=1;//数据校验untemp=(RH_temp+RL_temp+TH_temp+TL_temp);if(untemp==CK_temp){RH_data=RH_temp;RL_data=RL_temp;TH_data=TH_temp;TL_data=TL_temp;CK_data=CK_temp;}}//湿度整数局部 if(((RH_data/10>2||TH_data/10>2))||((TH_data%10<5&&TH_data/10<2))) { SF=0; delay_ms(50); SF=1; } else SF=1;str1[0]=(char)(0X30+RH_data/10);str1[1]=(char)(0X30+RH_data%10);str1[2]=0x2e;//小数点//湿度小数局部str1[3]=(char)(0X30+RL_data/10);str1[5]=0X25;//"%"str1[6]=0X52;//"R"str1[7]=0X48;//"H"//温度整数局部str2[0]=(char)(0X30+TH_data/10);str2[1]=(char)(0X30+TH_data%10);str2[2]=0x2e;//小数点//温度小数局部str2[3]=(char)(0X30+TL_data/10);str2[5]=0XDF;//"'"str2[6]=0X43;//"C"}/****************************

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论