基于-单片机温湿度检测仪设_第1页
基于-单片机温湿度检测仪设_第2页
基于-单片机温湿度检测仪设_第3页
基于-单片机温湿度检测仪设_第4页
基于-单片机温湿度检测仪设_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、-PAGE . z基于单片机的温湿度检测仪的设计环境的温湿度对保管好图书,延长图书寿命有很大关系。因为图书纸由于存放年深日久而缓慢变质,这种变化过程称为自然老化。高温、潮湿、低温和枯燥对档案的破坏作用是很缓慢的,我们肉眼感觉不到,但日积月累,不适宜的温湿度对纸质档案的危害就表现出来。温湿度对档案制成材料的影响很大,高温高湿会使纸水解、老化速度加快,会使危害档案制成材料的霉菌、细菌繁殖,会使光化作用增强,会使有害气体、灰尘吸附能力增大。因此, 这就要求我们采取科学的保护措施,控制与调节库房温湿度,减缓档案制成材料的损坏速度,最大限度地延长档案寿命。档案作为一种不可生资源,对于国家各个领域的开展都

2、有着重要的保存和参考价值。根据科学的数据证实,大多数蛀虫和霉菌的生存温度在10摄氏度以上,低于这个温度,害虫即丧失活动能力和停顿繁殖,而相对湿度在65%以下,多数霉菌就无常发育。因此,有条件的收藏室,书画库房温度宜控制在10到18摄氏度,相对湿度应控制在50%-65%之间,这样可以抑制害虫、霉菌的生长繁殖,有利于书画纸的保养。倘假设将相对湿度降至45%以下,并持续较长的时间,纸又会因枯燥而脆裂,造成物理性朽坏。所以,保持相对湿度50%-65%以及10-18摄氏度的温湿度环境,是对书画保藏的一个严格要求。温度是表示物体冷热程度的物理量,微观上来讲是物体分子热运动的剧烈程度。在整个宇宙当中,温度无

3、处不存在。无论在地球上还是在月球上,也无论是在炽热的太阳上还是在阴冷的冥王星上,这一切无不由于空间位置的不同而存在着温度的差异。湿度是表示大气枯燥程度的物理量。在一定的温度下在一定体积的空气里含有的水汽越少,则空气越枯燥;水汽越多,则空气越潮湿。空气的干湿程度叫做湿度。在此意义下,常用绝对湿度、相对湿度、比拟湿度、混合比、饱和差以及露点等物理量来表示。湿度表示气体中的水蒸汽含量,有绝对湿度和相对湿度两种表示方法。绝对湿度是一定体积的空气中含有的水蒸气的质量,一般其单位是克/立方米,绝对湿度的最大限度是饱和状态下的最高湿度;相对湿度是绝对湿度与最高湿度之间的比,它的值显示水蒸气的饱和度有多高。温

4、度、湿度和人类的生产、生活有着密切的关系,同时也是工业生产中最常见最根本的工艺参数,例如机械、电子、石油、化工等各类工业中广泛需要对温度、湿度的检测与控制。并且随着人们生活水平的提高,人们对自己的生存环境越来越关注,而空气中温湿度的变化与人体的舒适度和情绪都有直接的影响,所以对温度、湿度的检测就非常有必要了。目 录 TOC t 01_章,1,09_进入目录的一级标题,1,02_节,2,03_条,3,00_绪论 结论 附录,1 摘要一、温、湿度测量的目的及要求二、设计所需元件清单三、单片机实现温、湿度测量3.1 原理图及说明3.2 设计理念及实现方法四、温、湿度传感器及液晶显示12864简介及应

5、用4.1温、湿度传感器4.2液晶显示12864简介及应用五、各个模块设计流程图5.1温度测量程序流程图5.2湿度测量程序流程图5.3显示程序流程图六、VC、VB界面显示结论参考文献附录一、源程序代码附录二、硬件实现与仿真图摘要随着科学技术的日新月异,人类社会取得了长足的进步!在居家生活、工农业生产、气象、环保、国防、科研、航天等部门,经常需要对环境中的湿度和温度进展测量及控制。本设计设计了一个智能化的温湿度测量应用系统。本系统采用技术成熟的DHT11作为测量湿度和温度的传感器。控制系统芯片采用技术成熟,功能强大、价位低廉群众化的AT89C51单片机。DHT11数字温湿度传感器是一款含有已校准数

6、字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。每个DHT11传感器都在准确的湿度校验箱中进展校准。校准系数以程序的形式储存在OTP存中,传感器部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。LCD显示电路,声光报警电路都由AT89C51单片机控制。同时设计了能给系统提供稳定工作电压的电源电路。为了提高系统的抗干扰性能,对湿度、温度的检测采用了硬件抗干扰和软件抗干扰的综合方法。最后设计了系统各个功能局部的软

7、件程序。由本设计课题做成的温湿度检测系统构造简单、价格廉价、量程宽,具有较高的可靠性、平安性及实用性。AbstractWith the rapid development of science and technology, human society has achieved great progress! In the life that occupy the home, industry, agriculture, national defense, weather, environmental protection and scientific research departments

8、, such as aerospace, often need to the environment humidity and temperature measurement and control. The design of an intelligent humidity measuring the application systems. The system adopts the technology DHT11 as measuring the humidity and temperature sensor. Control system chip adopt mature tech

9、nology, powerful, price cheap popular AT89C51. Each DHT11 sensors are accurate calibration of humidity in calibration. In the form of calibration coefficient of the program memory, OTP stored in sensor signal detection in the internal process to call these calibration factor. Wired system, system in

10、tegration serial interface bees easy. LCD display circuit, sound-light alarm circuit controlled by AT89C51. The system can be designed to provide a stable working voltage of power supply circuit. In order to improve the system of anti-jamming performance of temperature, humidity, using the hardware

11、and software anti-interference synthesis method. Finally the design of the system software program each function. By this design task to make the temperature and humidity of the detection system structure is simple, cheap price, wide range, high reliability, safety and practicality.一、温湿度测量的目的及要求1、作品

12、设计目的在图书馆中,书籍的保护对温、湿度要求非常严格。对于面积不同的房间由于气流及图书分布的影响,图书的种类的影响,温湿度值可能会有较大的区别。所以应根据图书馆各个房间的实际面积在房间加装温湿度传感器,以实时客观检测房间的温、湿度。在监控本系统,温湿度一体化传感器将把检测到的温湿度值实时传送到监控主机中,并在监控界面上以图形形式直观地表现出来。管理员可实时了解房间各点的实际温湿度值,一旦房间实际温、湿度值越限,系统将自动弹出报警框并触发报警,提示管理员通过调节送风口的位置、数量,设定空调的运行温湿度值,尽可能让房间各点的温湿度趋向合理,确保房间设备的平安正常运行。 2、作品设计容及要求1设计一

13、个温湿度侧量电路,要求:(1)用51单片机通过编程来控制温湿度的显示(2)液晶要准确显示外界的温、湿度的大小(3)具有超温、湿度测量报警装置2用中、小规模集成电路组成测量系统,并在实验仪器(可在面包板)上进展组装、调试。3画出各单元电路图、整机功能框图和逻辑电路图,写出设计和实验总结报告二、设计所需元件清单电源液晶显示显示器51单片机芯片1块。DHT11湿度传感器1个排阻2排 电阻假设干20pf电容假设干蜂鸣器1个。32768HZ时钟晶体1个回弹开关1个按钮开关2个三、单片机实现温湿度测量1、原理图容下所示:由控制器单片机51、复位电路、DHT11温湿度检测系统、报警电路及12864显示系统组

14、成。片机2、湿度模块控制流程图:3、显示模块流程图:4、DHT11的温度报警子程序图:5、万年历程序流程图:五、设计总结VC界面显示图参考文献侯建军. 电子技术根底实验、综合设计与课程设计.:高教 2007,10第一版童诗白,华成英模拟电子技术根底:清华大学教研组编阎石数字电子技术根底。:清华大学教研组编朝青单片机原理及接口技术 :航空航天大学2005,10.第三版蔡方凯单片机原理及基于单片机的嵌入式系统设计 中国水利水电2007永枫单片机应用实训教程电子科技大学出版,2005自美电子线路设计、实验、测试华中理工大学,2000郭天祥十天学会单片机。电子工业,2021.aosong./Html/

15、DownView.aspID=15&SortID=4附录一 /*/远程监测的工厂温湿度检测仪/*/*include*define uchar unsigned char*define uint unsigned int/*端口定义*/sbit LCD_RS=P35; /存放器选择输入sbit LCD_RW=P36;/液晶读/写控制sbit LCD_EN=P34;/液晶使能控制sbit LCD_PSB=P37;/串/并方式控制sbit s1=P20;/调时开/关sbit s2=P21;/调时+sbit s3=P22;/调时-sbit buzzer=P27;/蜂鸣器sbit P2_6=P26; /

16、P2.6口为通讯口连接DHT11typedef unsigned char U8;typedef unsigned int U16;char sec,min,hour,week,day=1,month=1,year;uchar a,flag,flag2;uchar s1num;uchar code dis1=2000年01月01日;uchar code dis2=00时00分00秒;uchar code dis3=温度:00 星期日;uchar code dis4=湿度:00 上传.;uchar code dis5=0*20,0*20,0*ce,0*c2,0*b1,0*a8,0*be,0*af

17、; /空温报警uchar code dis6=0*20,0*20,0*ca,0*aa,0*b1,0*a8,0*be,0*af; /空湿报警uchar code dis7=0*ce,0*c2,0*ca,0*aa,0*b1,0*a8,0*be,0*af; /温湿报警uchar code dis8=0*20,0*20,0*c9,0*cf,0*b4,0*ab,0*2e,0*2e; /空上传.uchar code dis*=0*c8,0*d5,0*d2,0*bb,0*b6,0*fe,0*c8,0*fd,0*cb,0*c4,0*ce,0*e5,0*c1,0*f9;/日,一,二,三,四,五,六(两个字节为一

18、个汉字)/定义区/U8 U8FLAG,k;U8 U8count,U8temp;U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata,U8T_data_H1,U8T_data_L1,U8RH_data_H1,U8RH_data_L1;U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;U8 U8data;U8 outdata5; /定义发送的字节数 U8 indata5;U8 count, count_r=0;

19、U8 str5=ZPF ;U16 U16temp1,U16temp2;/*延时1ms子函数*/void delay(uint z)uint *,y;for(*=z;*0;*-)for(y=110;y0;y-);/*延时子函数*/void Delay2(U16 j) U8 i; for(;j0;j-)for(i=0;i27;i+);/*延时10us子函数*/void Delay_10us(void)U8 i;i-;i-;i-;i-;i-;i-;/*发送字符串子函数*/SendData(U8 *a)outdata0 = a0; outdata1 = a1;outdata2 = a2;outdata

20、3 = a3;count = 1;SBUF=outdata0;/*写指令子函数*/*RS=0,RW=0,E=0,D0-D7=指令码*/void write_(uchar )LCD_RS=0;LCD_RW=0;LCD_EN=0;P0=;delay(5);LCD_EN=1;delay(5);LCD_EN=0;/*写数据子函数*/*RS=1,RW=0,E=0,D0-D7=数据*/void write_dat(uchar dat)LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=dat;delay(5);LCD_EN=1;delay(5);LCD_EN=0;/*设定显示位置*/void lc

21、d_pos(uchar *,uchar Y)uchar pos;if(*=0) *=0*80;else if(*=1) *=0*90;else if(*=2) *=0*88;else if(*=3) *=0*98;pos=*+Y;write_(pos);/*LCD初始化设定*/void init()LCD_PSB=1; /并口方式write_(0*30); /根本指令操作delay(5);write_(0*0c); /显示开,关光标delay(5);write_(0*01); /去除LCD的显示容delay(5);TMOD=0*21;TH0=0*4c;TL0=0*00;ET0=1;EA=1;T

22、R0=1;TH1 = 253; / 设置初值TL1 = 253;TR1 = 1; / 开场计时SCON = 0*50; /工作方式1,波特率9600bps,允许接收 ES = 1;EA = 1; / 翻开所以中断 TI = 0;RI = 0;SendData(str); /发送到串口 Delay2(1); /*写年月日子函数*/void write_ymd(uchar add,uchar dat)uchar shi,ge;shi=dat/10;ge=dat%10;write_(0*80+add);write_dat(0*30+shi);write_dat(0*30+ge);/*写时分秒子函数*

23、/void write_hms(uchar add,uchar dat)uchar shi,ge;shi=dat/10;ge=dat%10;write_(0*90+add);write_dat(0*30+shi);write_dat(0*30+ge);/*温度显示子函数*/void write_tem(uchar add)write_(0*88+add);write_dat(str2);write_dat(str3); /*湿度显示子函数*/void write_hum(uchar add)write_(0*98+add);write_dat(str0);write_dat(str1); vo

24、id (void)U8 i;for(i=0;i8;i+) U8FLAG=2;while(!P2_6)&U8FLAG+);Delay_10us();Delay_10us();Delay_10us();U8temp=0;if(P2_6)U8temp=1;U8FLAG=2;while(P2_6)&U8FLAG+);/超时则跳出for循环 if(U8FLAG=1)break;/判断数据位是0还是1 / 如果高电平高过预定0高电平值则数据位为 1 U8data=1;U8data|=U8temp; /*温湿度读取子函数*/void RH(void)/主机拉低18ms P2_6=0;Delay2(180);

25、P2_6=1;/总线由上拉电阻拉高 主机延时20usDelay_10us();Delay_10us();Delay_10us();Delay_10us();/主机设为输入 判断从机响应信号 P2_6=1;/判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行 if(!P2_6) /T ! U8FLAG=2;/判断从机是否发出 80us 的低电平响应信号是否完毕 while(!P2_6)&U8FLAG+);U8FLAG=2;/判断从机是否发出 80us 的高电平,如发出则进入数据接收状态while(P2_6)&U8FLAG+);/数据接收状态 ();U8RH_data_H_temp=U8

26、data;();U8RH_data_L_temp=U8data;();U8T_data_H_temp=U8data;();U8T_data_L_temp=U8data;();U8checkdata_temp=U8data;P2_6=1;/数据校验 U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);if(U8temp=U8checkdata_temp)U8RH_data_H1=U8RH_data_H_temp;U8RH_data_L1=U8RH_data_L_temp;U8T_data_H1=U8

27、T_data_H_temp;U8T_data_L1=U8T_data_L_temp;U8checkdata=U8checkdata_temp;U8RH_data_H=U8RH_data_H1/10;U8RH_data_L=U8RH_data_H1%10;U8T_data_H=U8T_data_H1/10;U8T_data_L=U8T_data_H1%10;/*键盘扫描子函数*/ void keyscan()if(s1=0)delay(5);/延时5ms去抖动!if(s1=0)while(!s1);s1num+;if(s1num=1)TR0=0;write_(0*80+1);write_(0*0

28、f);if(s1num=2)write_(0*80+3);if(s1num=3)/TR0=0; 上一次已经停了。write_(0*80+5);/write_(0*0f);if(s1num=4)/TR0=0; 上一次已经停了。write_(0*90+0);/write_(0*0f);if(s1num=5)/TR0=0; 上一次已经停了。write_(0*90+2);/write_(0*0f);上一次光标已闪烁if(s1num=6)/TR0=0; 上一次已经停了。write_(0*90+4);/write_(0*0f);上一次光标已闪烁if(s1num=7)write_(0*88+7);if(s1

29、num=8)s1num=0;TR0=1;write_(0*0c);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_(0*80+1);if(s1num=2)month+;if(month=13)month=1;/刷新月!write_ymd(3,month);write_(0*80+3);if(s1num=3)day+;if(day=32)day=1;/刷

30、新日!write_ymd(5,day);write_(0*80+5);if(s1num=4)hour+;if(hour=24)hour=0;/刷新时!write_hms(0,hour);write_(0*90+0);if(s1num=5)min+;if(min=60)min=0;/刷新分!write_hms(2,min);write_(0*90+2);if(s1num=6)sec+;if(sec=60)sec=0;/刷新秒!write_hms(4,sec);write_(0*90+4);if(s1num=7)uchar i;week+;if(week=7)week=0;/刷新星期! i=2*w

31、eek;while(i2*week+2)write_dat(dis*i);i+; write_(0*88+7);/*按键计数减*/if(s3=0)delay(5);if(s3=0)while(!s3);/消抖,否则就会一下加很多/*调节修改显示的位置*/if(s1num=1)year-;if(year=-1)year=99;write_ymd(1,year);write_(0*80+1);if(s1num=2)month-;if(month=0)month=12;write_ymd(3,month);write_(0*80+3);if(s1num=3)day-;if(day=0)day=31;

32、write_ymd(5,day);write_(0*80+5);if(s1num=4)hour-;if(hour=-1)hour=23;write_hms(0,hour);write_(0*90+0);if(s1num=5)min-;if(min=-1)min=59;write_hms(2,min);write_(0*90+2);if(s1num=6)sec-;if(sec=-1)sec=59;write_hms(4,sec);write_(0*90+4);if(s1num=7)uchar i;week-;if(week=-1)week=6;i=2*week;while(i2*week+2)w

33、rite_dat(dis*i);i+;write_(0*88+7);/*蜂鸣器报时和流水灯全闪时间长短*/void delay1(uint temp1) uint i,j;for(i=0;i0;j-)/display();延时应包含这两个子函数,否则只显示一个数,即不扫描keyscan();buzzer=buzzer;/不是buzzer=0;而且两个循环才是一叫一停P1=P1;/八个流水灯全闪烁void main()uchar i;init();/*从第一行第一个字符的位置开场显示*/lcd_pos(0,0);i=0;while(dis1i!=0)write_dat(dis1i);i+;/*从

34、第二行第一个字符的位置开场显示*/lcd_pos(1,0);i=0;while(dis2i!=0)write_dat(dis2i);i+;/*从第三行第一个字符的位置开场显示*/lcd_pos(2,0);i=0;while(dis3i!=0)write_dat(dis3i);i+;/*从第四行第一个字符的位置开场显示*/lcd_pos(3,0);i=0;while(dis4i!=0)write_dat(dis4i);i+;while(1)keyscan();/*让蜂鸣器间隔报小时数*/if(min=0&sec=0) delay1(2*hour);if(hour=23&min=59&sec=59

35、)/if(hour=0) delay1(2*24);开机就会叫24下,故采用23 59 59delay1(2*(hour+1);RH();if(s1num=0&flag2=1) /串口显示程序 / str0=U8RH_data_H+0*30; str1=U8RH_data_L+0*30; str2=U8T_data_H+0*30; str3=U8T_data_L+0*30; str4=U8checkdata+0*30; SendData(str) ; /发送到串口 /读取模块数据周期不易小于 2S write_tem(3); write_hum(3); if(U8T_data_H2)/温度=30度,蜂鸣器间隔叫,一边的四灯亮 P1=0*0f;buzzer=0;delay(200);P1=0*ff;buzzer=1; if(U8RH_data_H8)/湿度=90度,蜂鸣器间隔叫,一边的四灯亮 P1=0*f0;buzzer=0;delay(200);P1=0*ff;buzzer=1; if(U8T_data_H2|U8RH_da

温馨提示

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

评论

0/150

提交评论