100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 基于51单片机智能农业大棚恒温恒湿Proteus仿真(源码+仿真+全套资料)

基于51单片机智能农业大棚恒温恒湿Proteus仿真(源码+仿真+全套资料)

时间:2020-02-24 11:31:23

相关推荐

基于51单片机智能农业大棚恒温恒湿Proteus仿真(源码+仿真+全套资料)

资料编号:134

视频讲解:

134-基于51单片机智能农业大棚监测恒温恒湿Proteus仿真(源码+仿真+全套资料)

功能介绍:

采用51单片机作为主控芯片,可以采集当前的温湿度,并且LCD1602显示,可以通过按键设置温湿度的上下阈值,当超过此设置阈值,蜂鸣器进行报警,并且继电器启动相对应的功能,比如低于温度设置的最低值,开启加温,高于温度设置的最高值,开启降温;,比如低于湿度设置的最低值,开启加湿,高于湿度设置的最高值,开启去湿,全套资料齐全:

部分程序展示示例:

//定义四个输出端口

sbit Led_jiashi=P3^6; //加湿

sbit Led_qushi=P3^4; //去湿

sbit Led_jiangwen=P3^2; //降温

sbit Led_shengwen=P3^3; //升温

//定义三个设置按键

sbit Key_SET = P2^0;

sbit Key_ADD = P2^1;

sbit Key_SUB = P2^2;

sbit Key_OK = P2^3;

//定义24C02数据口

sbit SCL = P1^0;

sbit SDA = P1^1;

//定义DHT11数据口

sbit DATA = P1^7;

sbit buzz=P3^5;

//定义LCD1602端口

sbit E=P1^3; //1602使能引脚

//sbit RW=P2^6; //1602读写引脚

sbit RS=P1^2; //1602数据/命令选择引脚

//定义全局变量

/*

sbit Led_jiashi=P1^4; //加湿

sbit Led_qushi=P1^5; //去湿

sbit Led_jiangwen=P1^6; //降温

sbit Led_shengwen=P1^7; //升温

//定义三个设置按键

sbit Key_SET = P1^0;

sbit Key_ADD = P1^1;

sbit Key_SUB = P1^2;

sbit Key_OK = P1^3;

//定义24C02数据口

sbit SCL = P2^1;

sbit SDA = P2^0;

//定义DHT11数据口

sbit DATA = P3^7;

sbit buzz=P3^2;

//定义LCD1602端口

sbit E=P2^7; //1602使能引脚

//sbit RW=P2^6; //1602读写引脚

sbit RS=P2^6; //1602数据/命令选择引脚

sbit RW=P2^5;

*/

uchar U8FLAG,U8temp,U8comdata,U8RH_data_H_temp,U8RH_data_L_temp,U8T_data_H_temp,U8T_data_L_temp,U8checkdata_temp;

uchar U8RH_data_H,U8RH_data_L,U8T_data_H,U8T_data_L,U8checkdata;

uchar Mode,humidity,temperature;

char TH,TL,HH,HL;

bit bdata FlagStartRH,hot,cold,humid,dry,BJ,flag_1,flag_2;//flag_1温度标志是否发短信,flag_2标志湿度报警是否发短信

#define NULL 0

#define RsBuf_N 120

unsigned char idata RsBuf[RsBuf_N]; //定义串口接收数据缓冲区

uchar RsPoint;

unsigned char dianhuahaoma[12]="15046397767\0";

//定时器0初始化

void Timer0_Init()

{

ET0 = 1; //允许定时器0中断

TMOD = 0x21; //定时器工作方式选择

TL0 = 0xFF;

TH0 = 0x4B; //定时器赋予初值

TR0 = 1; //启动定时器

}

//定时器0中断

void Timer0_ISR (void) interrupt 1 using 0

{

uchar RHCounter;

TL0 = 0xFF;

TH0 = 0x4B; //定时器赋予初值

RHCounter++;

if(RHCounter%10==0&&BJ==1)

buzz=!buzz;

else if(BJ==0)

buzz=1;

//每2秒钟启动一次温湿度转换

if (RHCounter >= 40)

{

FlagStartRH = 1;

RHCounter = 0;

}

}

资料下载链接/s/1z4Q-lcaWweHXWPqxMO_lYA?pwd=ihl9

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。