温湿度控制器(上下限继电器)设计报告_第1页
温湿度控制器(上下限继电器)设计报告_第2页
温湿度控制器(上下限继电器)设计报告_第3页
温湿度控制器(上下限继电器)设计报告_第4页
温湿度控制器(上下限继电器)设计报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

温湿度掌握器设计报告应用价值。一、性能特点0℃--100℃,湿度测量范围0%RH—90%RH,可以满足一般需要。假设要求更宽测量范围,只需更换温湿度传感器型号,硬件电路及软件程序全兼容。温湿度测量响应时间快、长期稳定性好。承受先进的专用微处理器芯片STC89C52,牢靠性高,抗干扰力量强。EEPROMAT24C04,使存储的温度上下限和湿度上下限可以掉电永久保存。可以通过四个按键便利地实现温湿度上下限的调整。当温度或湿度超限后,报警信号点亮相应报警灯。外部设备。二、功能说明1、实时测量当前温度值和湿度值,在液晶屏动态显示。2、可以显示当前允许温度范围,在液晶屏显示,如“20-45”表示允许温度2045摄氏度。3、可以显示当前允许湿度范围,在液晶屏显示,如“15-60”表示允许湿度15%60%。4、当温度低于温度下限时,低温报警灯亮,掌握继电器动作。5、当温度高于温度上限时,高温报警灯亮,掌握继电器动作。6、当湿度低于湿度下限时,低湿报警灯亮,掌握继电器动作。7、当湿度高于湿度上限时,高湿报警灯亮,掌握继电器动作。8至温度下限、温度上限、湿度下限、湿度上限相应的位置闪耀,再通过Up键和Down键调整数值,调整完毕连续按设置键进入正常状态。中,具体方法是按保存键,此时当前设置此次运行有效,关电后恢复原先设定值。三、硬件设计1、设计框图本争论设计的温湿度掌握器框图如图1所示。DHT11DHT11温湿度传感器温度、湿度数据掌握继电器LCD显示温湿度值STC89C52单片机温湿度上限外部EEPROM按键输入LED报警1温湿度掌握器方框图图中STC89C52单片机每2秒钟从DHT11温湿度传感器中读入温度和湿度,在液晶屏上即时显示。液晶屏上同时可以显示温湿度上下限值,该上下限设置值保存外外部EEPROM存储器中,掉电不失,并且可以通过四只按键上调或下调。号通过三极管驱动继电器,以掌握外部风机或加热器。2、温湿度传感器器及检测电路图2 DHT11温湿度传感器外型及管脚DHT1123.5--5.5V。传感器上电后,要等待1s以越过不稳定状态在此期间不要发送任DHT11典型应用电路如图3所示,其连接电路简洁,只需要占用掌握器一个I/O20米时用5K上拉电阻,大于20米时依据实际状况使用适宜的上拉电阻,图3 DHT11典型应用电路DHT11数字湿温度传感器承受单总线数据格式,即单个数据引脚端口完成输入输出双向传输。其数据包由5Byte〔40Bit〕40bit,表1 DHT11数据格式3、单片机电路STC89C52单片机特点增加型8051/8051;工作电压:5.5V-3.5V〔5V〕;工作频率范围:0~40MHz,80510~80MHz;用户应用程序空间4K//8K/16k/32K/64K字节;1280RAM;/弱上拉〔8051I/O〕;ISP〔在系统可编程〕/IAP〔在应用可编程〕,无需专用编程器/仿真器。每个I/O口驱动力量均可到达20mA,但整个芯片最大不要超过120mA;可通过串口〔P3.0/P3.1〕直接下载用户程序,数秒即可完成一片;EEPROM看门狗;12M1K〕;时钟源:外部高精度晶体/时钟,内部R/C振荡器;R/C振荡器还是外部晶体/时钟;R/C振荡器频率为:5.0V单片机为:11MHz~17MHz;/计数器,16T0T12,但有独立波特率发生器做串行通讯的波特2PCA216外部中断I/O口4路,传统的下降沿中断或低电平触发中断,并增支持PCA,PowerDown通用全双工异步串行口(UART);工作温度范围:-40~+85℃(工业级)/0~75℃(商业级);封装:PDIP-40,PLCC-44。STC89C52单片机管脚及封装40DIP45图4 STC89C52管脚图图5 单片机最小系统(4)单片机电路STC89C526信,读取温湿度数据。键,用以调整温湿度上下限值并保存数据。L2L3L4L56单片机系统原理图4、显示电路显示局部承受SMC1602液晶屏进展数据显示,其主要技术参数为:表2 液晶屏技术指标接口信号说明如表3所示。表3 液晶屏接口信号说明与单片机接口电路如图7所示。图7 LCD与单片机接口电路5、温湿度上限存储AT24C04K1—K4、K2、K3、K4AT24C04IIC8图8 EEPROM存储电路6、继电器驱动电路当温湿度数据超过正常范围时,单片机发出继电器动作信号。该低电平信号9所示。图9 继电器电路四、Portel电路图设计Protel是目前国内最流行的通用EDA软件,它是将电路原理图设计、PCB板图设计、电路仿真和PLD设计等多个有用工具软件组合后构成的EDA工作平台,是第一个将EDA软件设计成基于Windows的普及型产品。它集成了软件界面、仿真功能和 PLD设计和信号完整性分析,在此根底上Protel99SE 又增加了一些的功能,用户使用更加便利敏捷。 Protel的功能格外强大,在电子电路设计领域占有极其重要的地位。它以其强大功能和有用性,渐渐获得宽阔硬件设计人员的青睐,是目前众多 EDA设计软件中用户最多的产品之一。Protel软件组成Protel软件主要由电路原理图设计模块、印制电路板设计模块〔 PCB设计模块、电路信号仿真模块和PLD规律器件设计模块等组成,各模块具有强大的功能,可以很好的实现电路设计与分析。原理图设计模块〔Schematic〕电路原理图是表示电气产品或电路工作原理的重要技术文件,电路原理图主要由代表各种电子器件的图形符号、线路和结点组成。图4.1所示为一张电路原理图。该原理图是由Schematic模块设计完成的。Schematic模块具有如下功能:丰富而敏捷的编辑功能、在线库编辑及完善的库治理功能、强大的设计自动化功能、支持层次化设计功能等。印制电路板设计模块〔PCB〕印制电路板〔PCB〕制板图是由电路原理图到制作电路板的桥梁。设计了电路原理图后,需要依据原理图生设计成印制电路板的制板图,然后在依据制板图制作具体的电路板。印制电路板设计模块具有如下主要功能和特点:可完成简单印制电路板〔 PCB〕的设计;便利而又敏捷的编辑功能;强大的设计自动化功能;在线式库编辑及完善的库治理;完备的输出系统等。电路信号仿真模块电路信号仿真模块是一个功能强大的数字 /模拟混合信号电路仿真器,能供给连续的模拟信号和离散的数字信号仿真。它运行在Protel EDA/Client 集成环境下,与Protel Advanced Schematic 原理图输入程序协同工作,作为AdvancedSchematic 的扩展,为用户供给了一个完整的从设计到验证仿真设计环境。在Protel中进展仿真,只需从仿真用元器件库中放置所需的元器件,连接好原理图,加上鼓励源,然后单击防真按钮即可自动开头。五、软件编程1、软件流程图本设计软件主程序流程图如图13所示。数据初始化数据初始化定时器初始化显示初始化进入后台while循环否有转换标志吗?是温湿度转换超过阈值吗?是报警并驱动继电器否温湿度数值显示有键按下吗?是按键处理否13主程序流程图2、主程序main.c主程序编写,其他程序略。#include<reg52.h>头文件和一些宏定义#include<reg52.h>#include“1602.h“#include“1602.h“#include“dht.h“#include“dht.h“#include“2402.h“#include“2402.h“////LED灯sbitL2=P1^3;sbitL2=P1^3;sbitL3=P1^4;sbitL3=P1^4;sbitL4=P1^5;sbitL4=P1^5;sbitL5=P1^6;sbitL5=P1^6;sbitKey_SET=P3^2;sbitKey_SET=P3^2;//设置键sbitKey_UP=P3^3;sbitKey_UP=P3^3;//加键sbitKey_DOWN=P3^4;sbitKey_DOWN=P3^4;//减键sbitsbitKey_SAVE=P3^5;//保存键sbitRelay=P2^0;sbitRelay=P2^0;//定义标识//定义标识volatilebitFlagStartRH=0; //volatilebitFlagStartRH=0; //开头温湿度转换标志volatilebitFlagKeyPress=0;//volatilebitFlagKeyPress=0;//有键按下////定义温湿度传感器用外部变量externU8 externU8 externU8 U8count,U8temp;externU8 U8count,U8temp;externU8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;externU8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;externexternU8U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;externU8 U8comdata;externU8 U8comdata;externU8 count,count_r;externU8 count,count_r;U16temp;U16temp;S16temperature,humidity;S16temperature,humidity;S16idataTH,TL,HH,HL; //S16idataTH,TL,HH,HL; //温度上限和湿度上限char*pSave;char*pSave;U8U8keyvalue,keySET,keySAVE,keyUP,keyDOWN;////定义变量U16U16RHCounter;U8FlagSet,hide;U8FlagSet,hide;//数据初始化//数据初始化voidData_InitvoidData_InitRHCounter=0;{RHCounter=0;L2=1;L2=1;L3=1;L3=1;L4=1;L4=1;TH=40;TH=40;TLTL=20;HHHH=85;HL=20;HL=20;keyvalue=0;keyvalue=0;keySET=1;keySET=1;=1;keyUP=1;keyUP=1;keyDOWN=1;keyDOWN=1;FlagSet=0;FlagSet=0;hide=0;hide=0;}////0初始化voidvoidTimer0_InitET0=1;//ET0=1;//0中断TMODTMOD=1;//定时器工作方式选择TL0=0x06;TL0=0x06;TH0=0xf8;TH0=0xf8;//定时器赐予初值TR0=1;TR0=1;//启动定时器}////0中断voidTimer0_ISR(void)interrupt1using0voidTimer0_ISR(void)interrupt1using0TL0=0x06;{TL0=0x06;TH0=0xf8;TH0=0xf8;//定时器赐予初值RHCounter++;RHCounter++;////设闪耀标志if(RHCounter>400)hide=0;if(RHCounter>400)hide=0;elsehide=1;elsehide=1;////每2秒钟启动一次温湿度转换if(RHCounter>=800)if(RHCounter>=800){{FlagStartRH=1;FlagStartRH=1;RHCounter=0;RHCounter=0;}}}////存入设定值、voidSave_SettingvoidSave_SettingpSave= (char*)&TL;//pSave= (char*)&TL;//88位wrteeprom(0,*pSave);wrteeprom(0,*pSave);//存温度上限值TH低8位DELAY(500);DELAY(500);pSave++;pSave++;wrteeprom(1,*pSave);wrteeprom(1,*pSave);//存温度上限值TH高8位DELAY(500);DELAY(500);pSave= (char*)&TH;pSave= (char*)&TH;wrteeprom(2,*pSave);wrteeprom(2,*pSave);//存温度下限值TL8位DELAY(500);DELAY(500);pSave++;pSave++;wrteeprom(3,*pSave);wrteeprom(3,*pSave);//存温度下限值TL8位DELAY(500);DELAY(500);pSave= (char*)&HL; pSave= (char*)&HL; wrteeprom(4,*pSave);wrteeprom(4,*pSave);//存湿度上限值HH低8位DELAY(500);DELAY(500);pSave++;pSave++;wrteeprom(5,*pSave);wrteeprom(5,*pSave);//存湿度上限值HH高8位DELAY(500);DELAY(500);pSave= (char*)&HH;pSave= (char*)&HH;wrteeprom(6,*pSave);wrteeprom(6,*pSave);//存湿度下限值HL低8位DELAY(500);DELAY(500);pSave++;pSave++;wrteeprom(7,*pSave);wrteeprom(7,*pSave);//存湿度下限值HL高8位DELAY(500);DELAY(500);}////载入设定值、voidLoad_SettingvoidLoad_SettingpSave= (char*)&TL;{pSave= (char*)&TL;*pSave++=rdeeprom(0);*pSave++=rdeeprom(0);*pSave=rdeeprom(1);*pSave=rdeeprom(1);pSave=(char*)&TH;pSave=(char*)&TH;*pSave++=rdeeprom(2);*pSave++=rdeeprom(2);*pSave=rdeeprom(3);*pSave=rdeeprom(3);pSave= (char*)&HL;pSave= (char*)&HL;*pSave++=rdeeprom(4);*pSave++=rdeeprom(4);*pSave=rdeeprom(5);*pSave=rdeeprom(5);pSave=(char*)&HH;pSave=(char*)&HH;*pSave++=rdeeprom(6);*pSave++=rdeeprom(6);*pSave=rdeeprom(7);*pSave=rdeeprom(7);if((TL>99)||(TL<0))TL=20;if((TL>99)||(TL<0))TL=20;if((TH>99)||(TH<0))TH=40;if((TH>99)||(TH<0))TH=40;if((HL>99)||(HL<0))HH=20;if((HL>99)||(HL<0))HH=20;ifif((HH>99)||(HH<0))HH=85;}voidKeyProcess(uintnum)voidKeyProcess(uintnum){switch(num)//switch(num)//键盘设置功能:通过设置键和加、减键修改当前设置,只有按下保存键才存盘,否则掉电不保存。{{case1:case1:FlagSet++;FlagSet++;if(FlagSet>4)if(FlagSet>4){{FlagSet=0;FlagSet=0;L1602_char(1,12,TL/10+48);L1602_char(1,12,TL/10+48);L1602_char(1,13,TL%10+48);L1602_char(1,13,TL%10+48);L1602_char(1,15,TH/10+48);L1602_char(1,15,TH/10+48);L1602_char(1,16,TH%10+48);L1602_char(1,16,TH%10+48);L1602_char(2,12,HL/10+48);L1602_char(2,12,HL/10+48);L1602_char(2,13,HL%10+48);L1602_char(2,13,HL%10+48);L1602_char(2,15,HH/10+48);L1602_char(2,15,HH/10+48);L1602_char(2,16,HH%10+48);L1602_char(2,16,HH%10+48);}}break;break;case2:case2://加键按下if(FlagSet==1) if(FlagSet==1) {{if(TL<100) TL++;if(TL<100) TL++;L1602_char(1,12,TL/10+48);L1602_char(1,12,TL/10+48);L1602_char(1,13,TL%10+48);L1602_char(1,13,TL%10+48);}}if(FlagSet==2) if(FlagSet==2) if(TH<100) TH++;{if(TH<100) TH++;{L1602_char(1,15,TH/10+48);L1602_char(1,15,TH/10+48);L1602_char(1,16,TH%10+48);L1602_char(1,16,TH%10+48);}}if(FlagSet==3) if(FlagSet==3) {{if(HL<100) HL++;if(HL<100) HL++;L1602_char(2,12,HL/10+48);L1602_char(2,12,HL/10+48);L1602_char(2,13,HL%10+48);L1602_char(2,13,HL%10+48);}}if(FlagSet==4) if(FlagSet==4) {{if(HH<100) HH++;if(HH<100) HH++;L1602_char(2,15,HH/10+48);L1602_char(2,15,HH/10+48);L1602_char(2,16,HH%10+48);L1602_char(2,16,HH%10+48);}}break;break;case3:case3://减键按下if(FlagSet==1) if(FlagSet==1) {{if(TL>0) TL--;if(TL>0) TL--;L1602_char(1,12,TL/10+48);L1602_char(1,12,TL/10+48);L1602_char(1,13,TL%10+48);L1602_char(1,13,TL%10+48);}}if(FlagSet==2) if(FlagSet==2) {{if(TH>0) TH--;if(TH>0) TH--;L1602_char(1,15,TH/10+48);L1602_char(1,15,TH/10+48);L1602_char(1,16,TH%10+48);L1602_char(1,16,TH%10+48);}}if(FlagSet==3) if(FlagSet==3) {{if(HL>0) HL--;if(HL>0) HL--;L1602_char(2,12,HL/10+48);L1602_char(2,12,HL/10+48);L1602_char(2,13,HL%10+48);L1602_char(2,13,HL%10+48);}}if(FlagSet==4) if(FlagSet==4) {{if(HH>0) HH--;if(HH>0) HH--;L1602_char(2,15,HH/10+48);L1602_char(2,15,HH/10+48);L1602_char(2,16,HH%10+48);L1602_char(2,16,HH%10+48);}}break;break;case4://保存键按下case4://保存键按下Save_Setting;Save_Setting;FlagSet=0;FlagSet=0;break;break;default:default:break;break;}}}/********************************************************************/**********************************************************************名称:Main**功能:主函数***********************************************************************/***********************************************************************/voidmainvoidmainU16i,j,testnum;{U16i,j,testnum;EA=0;EA=0;Timer0_Init; //Timer0_Init; //0初始化Data_Init;Data_Init;EA=1;EA=1;L1602_init;L1602_init;L1602_string(1,1,“T&H “);L1602_string(1,1,“T&H “);L1602_string(2,1,“ControlSystem! “);L1602_string(2,1,“ControlSystem! “);////延时for(i=0;i<1000;i++)for(i=0;i<1000;i++)for(j=0;j<1000;j++)for(j=0;j<1000;j++){;}{;}////清屏L1602_string(1,1,““);L1602_string(2,1,““);L1602_string(1,1,“Tem:C- “);L1602_string(2,1,“Hum:%- “);////载入温度上限和湿度上限设定值Load_Setting;Load_Setting;L1602_char(1,12,TL/10+48);L1602_char(1,12,TL/10+48);L1602_char(1,13,TL%10+48);L1602_char(1,13,TL%10+48);L1602_char(1,15,TH/10+48);L1602_char(1,15,TH/10+48);L1602_char(1,16,TH%10+48);L1602_char(1,16,TH%10+48);L1602_char(2,13,HL%10+48);L1602_char(2,12,HL/10+48);L1602_char(2,13,HL%10+48);L1602_char(2,12,HL/10+48);L1602_char(2,15,HH/10+48);L1602_char(2,15,HH/10+48);L1602_char(2,16,HH%10+48);L1602_char(2,16,HH%10+48);while(1)while(1){{////温湿度转换标志检查if(FlagStartRH==1)if(FlagStartRH==1){{TR0=0;TR0=0;testnum=RH;testnum=RH;FlagStartRH=0;FlagStartRH=0;TR0=1;TR0=1;////读出温湿度,只取整数局部humidity=U8RH_data_H;humidity=U8RH_data_H;temperature=U8T_data_H;temperature=U8T_data_H;////显示温湿度L1602_int(1,5,temperature);L1602_int(1,5,temperature);L1602_int(2,5,humidity);L1602_int(2,5,humidity);}}////闪耀显示if(hide==1)if(hide==1){{switch(FlagSet)switch(FlagSet){{case0: break;case0: break;case1:case1:L1602_string(1,12,“ “);L1602_string(1,12,“ “);break;break;case2:case2:L1602_string(1,15,“ “);L1602_string(1,15,“ “);break;break;case3:case3:L1602_string(2,12,“ “);L1602_string(2,12,“ “);break;break;case4:case4:L1602_string(2,15,“ “);L1602_string(2,15,“ “);break;break;}}}}elseelse{{L1602_char(1,13,TL%10+48);L1602_char(1,12,TL/10+48);L1602_char(1,13,TL%10+48);L1602_char(1,12,TL/10+48);L1602_char(1,15,TH/10+48);L1602_char(1,15,TH/10+48);L1602_char(1,16,TH%10+48);L1602_char(1,16,TH%10+48);L1602_char(2,12,HL/10+48);L1602_char(2,12,HL/10+48);L1602_char(2,13,HL%10+48);L1602_char(2,13,HL%10+48);L1602_char(2,15,HH/10+48);L1602_char(2,15,HH/10+48);L1602_char(2,16,HH%10+48);L1602_char(2,16,HH%10+48);}}////温湿度掌握////温度低于下限if(temperature<TL) L2=0;if(temperature<TL) L2=0;elseelseL2=1;////温度高于上限if(temperature>TH) L3=0;if(temperature>TH) L3=0;elseelseL3=1;////湿度低于下限if(humidity<HL )if(humidity<HL )L4=0;elseelseL4=1;////湿度高于上限if(humidity>HH)if(humidity>HH)L5=0;elseelseL5=1;////掌握继电器动作if((temperature<TL)||(temperature>TH)||(humidity<HL)||(humidity>HH)) Relay=0;if((temperature<TL)||(temperature>TH)||(humidity<HL)||(humidity>HH)) Relay=0;else Relay=1;else Relay=1;////键盘查询,在弹起时响应if((Key_SET)&&(keySET==0)){FlagKeyPress=1;keyvalue=1;}if((Key_SET)&&(keySET==0)){FlagKeyPress=1;keyvalue=1;}elseif((Key_UP)&&(keyUP==0)){FlagKeyPress=1;keyvalue=2;} //elseif((Key_UP)&&(keyUP==0)){FlagKeyPress=1;keyvalue=2;} //上 键值2elseelseif((Key_DOWN)&&(keyDOWN==0)){FlagKeyPress1;keyvalue3;}//3{FlagK

温馨提示

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

评论

0/150

提交评论