网站域名服务错误,WordPress链接点击次数统计,一键生成logo免费网站,四川设计公司目录
一、主要功能
二、硬件资源
三、程序编程
四、实现现象 一、主要功能
基于51单片机#xff0c;采样DHT11温湿度传感器检测温湿度#xff0c;通过LCD1602显示 4*4按键矩阵可以设置温度湿度阈值#xff0c;温度大于阈值则开启水泵#xff0c;湿度大于阈值则开启风扇…目录
一、主要功能
二、硬件资源
三、程序编程
四、实现现象 一、主要功能
基于51单片机采样DHT11温湿度传感器检测温湿度通过LCD1602显示 4*4按键矩阵可以设置温度湿度阈值温度大于阈值则开启水泵湿度大于阈值则开启风扇 并且通过串口实时打印温湿度信息。
二、硬件资源
基于KEIL5编写C代码PROTEUS8.15进行仿真全部资源在页尾提供安装包。
编辑
三、程序编程
#include REGX52.H#includeintrins.h#includestdio.h#include Delay.h#include LCD1602.h#include MatrixKey.h#define uchar unsigned char#define uint unsigned intsbit Temp_dataP2^6; //DHT11sbit beep P3^4;
sbit out1 P2^7;
sbit out2 P3^7;
sbit out3 P3^2;
sbit out4 P3^3;unsigned char KeyNum;unsigned char rec\_dat\_lcd0\[6\];unsigned char rec\_dat\_lcd1\[6\];unsigned char rec\_dat\_lcd2\[6\];unsigned char rec\_dat\_lcd3\[6\];unsigned int rec\_dat\[4\];unsigned int password,count; //static int wdyz50,sdyz800;//温度、湿度、气压static uchar wd,sd;static int moshi0;void ajpd();void DHT11\_delay\_us(unsigned char n);void DHT11\_delay\_ms(unsigned int z);void DHT11\_start();unsigned char DHT11\_rec\_byte();void DHT11\_receive();void beep\_warning();//延时msvoid DHT11\_delay\_ms(unsigned int z){ unsigned int i,j; for(iz; i0; i--) for(j110; j0; j--);
}//延时us --2*n5usvoid DHT11\_delay\_us(unsigned char n){ while(--n);
}//DHT11起始信号void DHT11_start(){Temp\_data1; DHT11\_delay_us(10);Temp\_data0; DHT11\_delay_ms(50);//这个延时不能过短,18ms以上,实际在仿真当中要想读到数据延时要在延时参数要在40以上才能出数据Temp\_data1; DHT11\_delay\_us(30);//这个延时不能过短}//接收一个字节unsigned char DHT11\_rec_byte(){ unsigned char i,dat0; for(i0; i8; i){ while(!Temp\_data); DHT11\_delay_us(8);dat 1; if(Temp_data1){dat 1;} while(Temp_data);} return dat;
}//接收温湿度数据void DHT11\_receive(){ unsigned int R\_H,R\_L,T\_H,T\_L; unsigned char RH,RL,TH,TL,revise; DHT11\_start();Temp\_data1; if(Temp\_data0){ while(Temp_data0); //等待拉高DHT11\_delay\_us(40); //拉高后延时80usR\_HDHT11\_rec_byte(); //接收湿度高八位R\_LDHT11\_rec_byte(); //接收湿度低八位T\_HDHT11\_rec_byte(); //接收温度高八位T\_LDHT11\_rec_byte(); //接收温度低八位reviseDHT11\_rec\_byte(); //接收校正位DHT11\_delay\_us(25); //结束if((R\_HR\_LT\_HT\_L)revise) //校正{RHR_H;RLR_L;THT_H;TLT_L;} /*数据处理方便显示*/rec_dat\[0\]RH;rec_dat\[1\]RL;rec_dat\[2\]TH;rec_dat\[3\]TL;}}void dht11(){ DHT11\_delay\_ms(150); DHT11\_receive(); sprintf(rec\_dat\_lcd0,%d,rec\_dat\[0\]); sprintf(rec\_dat\_lcd1,%d,rec\_dat\[1\]); sprintf(rec\_dat\_lcd2,%d,rec\_dat\[2\]); sprintf(rec\_dat\_lcd3,%d,rec\_dat\[3\]); DHT11\_delay_ms(100);// //湿度LCD\_ShowString(2,5,rec\_dat_lcd0); //湿度低位LCD\_ShowString(2,4,rec\_dat_lcd1); //湿度高位//温度LCD\_ShowString(2,1,rec\_dat_lcd2); //温度低位LCD\_ShowString(2,0,rec\_dat_lcd3); //温度高位wd rec\_dat\[3\]*10 rec\_dat\[2\];sd rec\_dat\[1\]*10 rec\_dat\[0\];}void beep_warning()//蜂鸣器警报并且电机转动{ if(wdwdyz){out1 1;out2 0;beep 1; printf(温度异常请维修人员来查看\\r\\n); } else {out1 0;out2 0;} if(sd sdyz){beep 1;out3 1;out4 0; printf(湿度异常请维修人员来查看\\r\\n); } else{out3 0;out4 0;} if(wdwdyz || sdsdyz ){ beep 1;} else if(wd wdyz sd sdyz){beep 0;}
}//串口初始化void init_com(void){TMOD 0x20; //设T0为方式1GATE1SCON0x50; //开启串口TH10xFD; //波特率是9600bpsTL10xFD;TR11; //开启定时器TI1;EA1;
}void main() //主函数{ init\_com(); LCD\_Init(); //显示屏初始化beep 0; do{ dht11(); //温湿度获取ajpd(); //按键判断beep_warning(); //状态判断} while(1);
}void ajpd()//按键判断{KeyNum MatrixKey();//键盘输入的值进行传递if(KeyNum){ if(moshi 0){ if(KeyNum 10) //把按键的范围定义在0~9{ if(count 3){password*10; //出水量左移一位password KeyNum % 10; //获取一位出水量count; //计次对应出水量位数} LCD_ShowNum(1,1,password,3); //LCD更新显示} //确认键if(KeyNum 11) //把11表示确认,对阈值进行确认{ LCD_ShowNum(1,1,password,3); //LCD更新显示wdyz password; //温度阈值} //取消键if(KeyNum 12){password 0;count 0; LCD_ShowNum(1,1,password,3); //LCD更新显示} if(KeyNum 13) //q切换{moshi;password 0;count 0; if(moshi1){moshi 0;}}} else if(moshi 1){ if(KeyNum 10) //把按键的范围定义在0~9{ if(count 3){password*10; //出水量左移一位password KeyNum % 10; //获取一位出水量count; //计次对应出水量位数} LCD_ShowNum(1,5,password,3); //LCD更新显示} //确认键if(KeyNum 11) //把11表示确认,对阈值进行确认{ LCD_ShowNum(1,5,password,3); //LCD更新显示sdyz password;} //取消键if(KeyNum 12){password 0;count 0; LCD_ShowNum(1,5,password,3); //LCD更新显示} if(KeyNum 13) //q切换{moshi;password 0;count 0; if(moshi1){moshi 0;}}}} }四、实现现象
具体动态效果看B站演示视频
B站演示视频
基于单片机的智能浇花系统
全部资料源程序、仿真文件、安装包、演示视频、串口演示视频 链接: https://pan.baidu.com/s/1qslNKA2Ae1augE-kXnlecQ?pwdky52 提取码: ky52