《基于单片机的温湿度检测控制系统设计8.docx》由会员分享,可在线阅读,更多相关《基于单片机的温湿度检测控制系统设计8.docx(34页珍藏版)》请在课桌文档上搜索。
1、编号:得州P3.IfTTl(MTOP3.2T(TRTT)P3.3同(TO)P3.4(T)P3.5(WR)P3.6PO.3/(AD3)P?1PO.4/(ADSfpjPO.5/(AD5)pjjPO.6/(ADe)国FO.7/(D711T1EX/VPP11ALE/PROC园P2.7(A15)1111lP2.6/(14)国P2.5/(Al3P?!P2.4(A12)回P2.3/(All)画P2.2/(AlO)RTlP2.1/(A9)团P2.O/(A8)AT89C51的51肿/林列图3AT89C51单片机实物图图4AT89C51单片机的片内硬件组成结构3.1.2AT89C51引脚简洁介绍总线型非总线型40
2、39口Pl.2U3Pl.3c4Pl.4c5Pl.5c6Pl.6c7Pl.7c8RST/Vpdc9P3.O/RXDU10P3.1/TXDc11P3.2/JNTOc12P3.3/fNTlc13P3.4/T0仁14P3.5T1U15P3.6/WRc16P3.7/RDEA/VPP、RST0I/O口引脚P0、Pl、P2、P3,为4个8位I/O口的外部引脚。3.1.3时钟电路AT89C51单片机各功能部件的运行都以时钟信号为准,有条不紊、一拍一拍地工作。因此时钟频率干脆影响单片机的速度,时钟电路的质量也干脆影响单片机系统的稳定性。AT89C51单片机内部有一个用于构成震荡的高增益反相放大器,它的输入端为芯
3、片引脚XTAL1,输出端为XTAL2。这两个引脚跨接石英晶体和微调电容,构成一个稳定的自己振荡器。外部时钟方式时外部时钟电源干脆接到XTALl端,XTAL2端悬空。图6时钟电路3.1.4复位电路复位是单片机的初始化操作,只需给AT89C51的复位引脚RST加上大雨2个机器周期(即24个时钟震荡周期)的高电平就可使AT89C51复位。复位电路通常采纳上自动复位和按钮复位两种方式。上电复位是通过外部复位电路给电容C充电加至RST引脚一个短的高电平信号,次信号随着VCC对电容C的充电过程而渐渐回落,即RST引脚上的高电平持续时间取决于电容C的充电时间。因此为保证系统能牢靠地复位,EST引脚上的高电平
4、必需维持足够长的时间。按键手动复位有电平和脉冲两种形式。图7复:位电路3.2传感器的设计传感器的基本特性传感器的静态特性是指对静态的输入信号,传感器的输出量与输入量之间所具有相互关系。不含时间变量的代数方程,或以输入量作横坐标,把与其对应的输出量作纵坐标而画出的特性曲线来描述。表征传感器静态特性的主要参数有:线性度、灵敏度、辨别力和迟滞等。传感器的动态特性:所谓动态特性,是指传感器在输入改变时,它的输出的特性。在实际工作中,传感器的动态特性常用它对某些标准输入信号的响应来表示。这是因为传感器对标准输入信号的响应简洁用试验方法求得,并且它对标准输入信号的响应与它对随意输入信号的响应之间存在肯定的
5、关系,往往知道了前者就能推定后者。最常用的标准输入信号有阶跃信号和正弦信号两种,所以传感器的动态特性也常用阶跃响应和频率响应来表示。3.2.2AM2301数字温湿度传感器d3J7.J+0.5(1)AM2301产品概述AM2301数字温湿度传感器是一款含有己校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的牢靠性与卓越的长期稳定性。传感器包括一个电容式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰实力强、性价比极高等优点。每个AM2301传感器都在极为精确的湿度校验室中进行校准。校准系数以程
6、序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为4针单排引脚封装。连接便利,特殊封装形式可依据用户需求而供应。(2)产品亮点超低能耗、传输距离远、全部自动化校准、采纳电容式湿敏元件、完全互换、标准数字单总线输出、卓越的长期稳定性、采纳高精度测温元件。(3)单总线接口定义GNCSDAVDD图10AM2301引脚引脚说明(VDDSDAGND):AM2301的供电电压范围为3.5V-5.5V,建议供电电压为5Vo数据线SD
7、A引脚为三态结构,用于读/写传感器数据。具体见单总线的通信协议说明。(4)接口说明建议连接线长度短于20米时用5K上拉电阻,大于20米时依据实际状况运用合适的上拉电阻。3. 3液晶显示装置设计液晶简介1602液晶也叫1602字符型液晶它是一种特地用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形(用自定义CGRAM,显示效果也不好)1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数
8、字)目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,限制原理是完全相同的,因此基于HD44780写的限制程序可以很便利地应用于市面上大部分的字符型液晶网。图111602实物图1602LCD主要技术参数:显示容量:16X2个字符芯片工作电压:4.55.5V工作电流:2.OmA(5.0V)模块最佳工作电压:5.OV字符尺寸:2.954.35(WXH)mm图121602LCD引脚图引脚功能说明:1602LCD采纳标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如下:第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接
9、地时对比度最高,对比度过高时会产生“鬼影”,运用时可以通过一个IOK的电位器调整对比度。第4脚:RS为寄存器选择,高电平常选择数据寄存器、低电平常选择指令寄存器。第5脚:RH为读写信号线,高电平常进行读操作,低电平常进行写操作。当RS和R/W共同为低电平常可以写入指令或者显示地址,当RS为低电平R/W为高电平常可以读忙信号,当RS为高电平R/W为低电平常可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平常,液晶模块执行吩咐。第714脚:DoD7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。液晶显示原理读写操作时序如图13和图14所示:图13读操作时序图14写操作时序
10、3.4光声报警系统与温湿度限制系统设计光声报警系统本系统采纳红绿LED灯作为光报警提示,当系统检测到的数据符合给定的要求时,现场始终绿灯显示;当系统检测到的数据不符合给定的要求时,现场转化为红灯报警提示;本系统采纳蜂鸣器作为声报警提示,当系统检测到的数据符合给定的要求时,现场没有蜂鸣器报警提示;当系统检测到的数据不符合给定的要求时,现场蜂鸣器报警提示。如图15图15光声报警系统电路图温湿度限制系统本系统温湿度限制系统主要组成有:风扇、加热器、喷雾器、除潮器。当系统检测到的数据不符合给定的要求时,系统启动温湿度限制系统实现恒温恒湿的目的。 风扇:负责系统的降温工作。 加热设备:负责系统的加热工作
11、。 喷雾设备:负责系统的加湿工作。 排潮设备:负责系统的去湿工作。4软件系统设计本系统软件系统设计包过:系统初始化模块,温湿度检测模块,1602LCD显示模块,报警模块,温湿度推断限制模块。系统软件总体流程图如图174.1 初始化模块系统初始化模块的主要功能是完成系统的初始化以及设定系统的工作状态,初始化部分包括以下方面的内容:1. 1.1单片机初始化以及各种引脚定义。4. 1.21602液晶初始化及工作方式。5. 1.3系统进入正常工作状态。4.2温湿度检测模块温湿度检测模块是本系统中的核心模块之一,它负责完成温度和湿度的测量及模拟量转换为数字量的全过程,这也是它为什么重要的缘由。数字式温湿
12、度传感器AM2301干脆把检测到的模拟量转化为数字量送给单片机,在经过单片机的处理,把温湿度值显示在1602液晶上。温湿度传感器的精确度值干脆影响到整个系统的检测与限制,所以本系统采纳数字式温湿度传感器AM2301采集温室内的温湿度UL4.3温湿度推断限制模块温湿度推断限制模块也是系统的核心模块之一,所谓推断限制模块,就是对当前温室内的实际温湿度与给定的温湿度范围进行比较,先进行推断,然后再进行限制,限制模块是确定系统将要进行什么工作的。如温度高于上限时须要降温,低于下限时须要升温,如湿度高于上限时须要降湿,低于下限时须要增湿,同时还要启动警报等等。温湿度推断限制部分的程序整体思路如图184.
13、41602液晶显示模块本系统采纳1602液晶显示温湿度值,当系统刚起先上电时1602液晶不显示任何数据,等待AM2301的监测数据,双行显示在1602液晶上。第一行显示:TenIPeratUre:C,其次行显示:Humidity:-%4. 5报警模块报警模块具备两项功能,即为报警灯和声音报警。报警灯模块是完成LED有规律的转换,以便从视觉上提示用户。LED是由单片机限制2个双色LED灯组成的,其转换规律为:1系统温湿度值在给定的范围时,绿色LED亮。2系统温湿度值超出给定的范围时,红色LED亮。在LED灯转换的同时,声音报警也会同时启动,可采纳延时的方式来延长声音报警的声音。警报灯由2个双色的
14、LED灯组成,一共须要2根数据线,运用单片机限制。要实现的功能是使2个双色LED灯有规律的转换,当系统上电后,系统进行实时的采样,并推断出当前温湿度与给定温湿度之间的差异,假如当前温湿度低于用户给定的下限温湿度值,则说明当前温湿度过低,系统自动启动红色警报灯,同时起先加温增湿,直至加到所需温湿度值时警报灯熄灭。反之,假如当前温湿度高于用户设定的上限温湿度值,则说明当前温湿度过高,系统也会自动启动警报灯,同时起先降温减湿,直至降到所需温湿度值时警报灯熄灭。4.6系统整体软件程序本系统采纳C语言编程,运用单片机编程软件:KeiI软件ttincludettdefineucharunsignedcha
15、r#defineuintunsignedintuinthum,temp;定义湿度、温度(全局)ucharhum_h,hum,temp_h,temp,CheCk;湿度高、低8位,温度高、低8位,校验位ucharnum,numl,bai,shi,ge,bail,shil,gel,cnt=0;/sbitdht=Pl0;sbitfine=Pl1;sbithot=Pl2;sbitPWq=Pi-3;sbitccq=Pl4;sbitbeef=P2-7;sbitredled=P26;sbitgreedled=P25;sbitICden=P34;sbitICdrS=P35;ucharcodetable=z,Te
16、mperature:*;ucharcodetabiel=,lumidity:/z;voidwrite_com(ucharcom);voidwrite_data(uchardate);voiddelay_us(uinti);voiddelay(uintz);voiddht_init();voidinterrupt_initO;voidlcd_int();ucharread_byte();voidreadhumtemp();voidzhuanhuan();voidWann.control();voidmain()主函数(interrupt_initO;lcd_int();delay(200);wh
17、ile(1)(read_hum_temp();zhuanhuan();warmcontrol();delay(3000);此处的时间不能小于3000,否则读不出!/hum_h=hum_l=temp_h=temp_l=check=temp=hum=O;)/*寸(IoUS级)*/voiddelayus(uinti)(while(i一);)/*延时(InS级)*/voiddelay(uintz)(uinti,j;for(i=z;i0;i一)for(j=110;j0;j);)*温湿度初始化(打算传送数据)*/voiddhtinit()/delay(1000);延时一会,避开不稳定区域dht=O;拉低延
18、时500微秒,发送起先信号delayus(50);dht=l;释放总线,延时30微秒delayus(4);while(!dht);拉低等待while(dht);拉高等待,即将传送数据)ucharread_byte()(ucharn,byte=O,dat;for(n=0;n8;n+)(while(!dht);delay-us(4);理论上28us延时70us,此处写26都可以dat=O;if(dht)dat=l;while(dht);byte=(byte=l)dat;/0)returnbyte;*读40位数据*/voidreadhumtemp()(dht_init0;hum_h=read_byt
19、e();读湿度hum_1=read_byte();temph=readbyte();读温度templ=readbyte();check=readbyte();/读校验while(!dht);等待低电平结束dht=l;最终拉高总线)voidzhuanhuan()提取各位数字(uchara;a=hum_h+hum_1+1emph+1emp_l;if(a=check)/Pl=templ;hum=temp-O;hum=(humhum_h)8)hum_l:temp=(tempItemph)8)temp_l;bai=temp100;shi=temp%10010;ge=temp%10;bail=hum100
20、;shil=hum%10010;gel=hum%10;)elsebai=shi=ge=bail=shil=gel=O;)*中断初始化*/voidinterrupt_init()(TMOD=OXO1;THO=(65536-10000)/256;TLO=(65536-10000)%256;EA=I;ETO=I;TRO=I;*中断处理液晶显示函数*/voidtimer()interrupt1(THO=(65536-10000)/256;TLO=(65536-10000)%256;if(cnt=2)for(num=0;num13;num+)(writedata(tablenum);delay(20);
21、)writedata(bai);write_data(shi);writedata(ge);writedata(,C);write_com(0x80+0x40);for(num1=0;numl10;numl+)writedata(tablelnum1);delay(20);)writedata(bail);writedata(shil);writedata(gel);write_data(*%,);cnt=0;)cnt+;*液晶限制*/voidICdint()ICd初始化(Icden=O;write_com(0x38);write_com(OxOe);writecom(0x06);write_com(0x80);)voidwritecom(ucharcom)/ICd写指令(Icdrs-O;P0=com;delay(5);Icden=I;delay(5);Icden=O;)voidWrite_data(UChardate)/ICd写数据(Icdrs=I;PO-date;delay(5);Icden=I;delay(5);lcden=0;)*限制报警*/voidWarincOntrOI()推断限制报警if(temp30)(hum60)推断温湿度值是否符合要求redled-O;greedled=l;beef=O;声光报警
链接地址:https://www.desk33.com/p-541789.html