基于51单片机智能农业大棚恒温恒湿Proteus仿真(源码+仿真+全套资料)
资料编号:134
视频讲解:
功能介绍:
采用51单片机作为主控芯片,可以采集当前的温湿度,并且LCD1602显示,可以通过按键设置温湿度的上下阈值,当超过此设置阈值,蜂鸣器进行报警,并且继电器启动相对应的功能,比如低于温度设置的最低值,开启加温,高于温度设置的最高值,开启降温;,比如低于湿度设置的最低值,开启加湿,高于湿度设置的最高值,开启去湿,全套资料齐全:
部分程序展示示例:
//定义四个输出端口sbitLed_jiashi=P3^6;//加湿sbitLed_qushi=P3^4;//去湿sbitLed_jiangwen=P3^2;//降温sbitLed_shengwen=P3^3;//升温//定义三个设置按键sbitKey_SET=P2^0;sbitKey_ADD=P2^1;sbitKey_SUB=P2^2;sbitKey_OK?=P2^3;//定义24C02数据口sbitSCL=P1^0;sbitSDA=P1^1;//定义DHT11数据口sbitDATA=P1^7;sbitbuzz=P3^5;//定义LCD1602端口sbitE=P1^3;//1602使能引脚//sbitRW=P2^6;//1602读写引脚?sbitRS=P1^2;//1602数据/命令选择引脚//定义全局变量
/*sbitLed_jiashi=P1^4;//加湿sbitLed_qushi=P1^5;//去湿sbitLed_jiangwen=P1^6;//降温sbitLed_shengwen=P1^7;//升温//定义三个设置按键sbitKey_SET=P1^0;sbitKey_ADD=P1^1;sbitKey_SUB=P1^2;sbitKey_OK?=P1^3;//定义24C02数据口sbitSCL=P2^1;sbitSDA=P2^0;//定义DHT11数据口sbitDATA=P3^7;sbitbuzz=P3^2;
//定义LCD1602端口sbitE=P2^7;//1602使能引脚//sbitRW=P2^6;//1602读写引脚?sbitRS=P2^6;//1602数据/命令选择引脚sbitRW=P2^5;?*/
ucharU8FLAG,U8temp,U8comdata,U8RH_data_H_temp,U8RH_data_L_temp,U8T_data_H_temp,U8T_data_L_temp,U8checkdata_temp;ucharU8RH_data_H,U8RH_data_L,U8T_data_H,U8T_data_L,U8checkdata;ucharMode,humidity,temperature;charTH,TL,HH,HL;bitbdataFlagStartRH,hot,cold,humid,dry,BJ,flag_1,flag_2;//flag_1温度标志是否发短信,flag_2标志湿度报警是否发短信
#defineNULL0#defineRsBuf_N?120
unsignedcharidataRsBuf[RsBuf_N];?//定义串口接收数据缓冲区ucharRsPoint;unsignedchar?dianhuahaoma[12]="";
//定时器0初始化voidTimer0_Init(){?ET0=1;//允许定时器0中断?TMOD=0x21;?//定时器工作方式选择?TL0=0xFF;TH0=0x4B;//定时器赋予初值?TR0=1;//启动定时器}
//定时器0中断voidTimer0_ISR(void)interrupt1using0{?ucharRHCounter;?TL0=0xFF;?TH0=0x4B;//定时器赋予初值?RHCounter++;?if(RHCounter==0&&BJ==1)?buzz=!buzz;?elseif(BJ==0)?buzz=1;?//每2秒钟启动一次温湿度转换if(RHCounter>=40){FlagStartRH=1;RHCounter=0;}}