首页 分享 基于单片机的智能浇花系统

基于单片机的智能浇花系统

来源:花匠小妙招 时间:2024-11-11 00:34

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象

一、主要功能

基于51单片机,采样DHT11温湿度传感器检测温湿度,通过LCD1602显示
4*4按键矩阵可以设置温度湿度阈值,温度大于阈值则开启水泵,湿度大于阈值则开启风扇
并且通过串口实时打印温湿度信息。

二、硬件资源

基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。

三、程序编程

#include <REGX52.H>

#include<intrins.h>

#include<stdio.h>

#include "Delay.h"

#include "LCD1602.h"

#include "MatrixKey.h"

#define uchar unsigned char

#define uint unsigned int

sbit Temp_data=P2^6;

sbit 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 wdyz=50,sdyz=800;

static uchar wd,sd;

static int moshi=0;

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();

void DHT11_delay_ms(unsigned int z)

{

unsigned int i,j;

for(i=z; i>0; i--)

for(j=110; j>0; j--);

}

void DHT11_delay_us(unsigned char n)

{

while(--n);

}

void DHT11_start()

{

Temp_data=1;

DHT11_delay_us(10);

Temp_data=0;

DHT11_delay_ms(50);

Temp_data=1;

DHT11_delay_us(30);

}

unsigned char DHT11_rec_byte()

{

unsigned char i,dat=0;

for(i=0; i<8; i++)

{

while(!Temp_data);

DHT11_delay_us(8);

dat <<=1;

if(Temp_data==1)

{

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_data=1;

if(Temp_data==0)

{

while(Temp_data==0);

DHT11_delay_us(40);

R_H=DHT11_rec_byte();

R_L=DHT11_rec_byte();

T_H=DHT11_rec_byte();

T_L=DHT11_rec_byte();

revise=DHT11_rec_byte();

DHT11_delay_us(25);

if((R_H+R_L+T_H+T_L)==revise)

{

RH=R_H;

RL=R_L;

TH=T_H;

TL=T_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(wd>wdyz)

{

out1= 1;

out2= 0;

beep = 1;

printf("温度异常,请维修人员来查看rn");

}

else

{

out1= 0;

out2= 0;

}

if(sd > sdyz)

{

beep = 1;

out3 = 1;

out4= 0;

printf("湿度异常,请维修人员来查看rn");

}

else

{

out3 = 0;

out4 = 0;

}

if(wd>wdyz || sd>sdyz )

{

beep = 1;

}

else if(wd < wdyz && sd <sdyz)

{

beep = 0;

}

}

void init_com(void)

{

TMOD =0x20;

SCON=0x50;

TH1=0xFD;

TL1=0xFD;

TR1=1;

TI=1;

EA=1;

}

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)

{

if(count < 3)

{

password*=10;

password += KeyNum % 10;

count++;

}

LCD_ShowNum(1,1,password,3);

}

if(KeyNum == 11)

{

LCD_ShowNum(1,1,password,3);

wdyz = password;

}

if(KeyNum == 12)

{

password = 0;

count = 0;

LCD_ShowNum(1,1,password,3);

}

if(KeyNum == 13)

{

moshi++;

password = 0;

count = 0;

if(moshi>1)

{

moshi = 0;

}

}

}

else if(moshi == 1)

{

if(KeyNum <= 10)

{

if(count < 3)

{

password*=10;

password += KeyNum % 10;

count++;

}

LCD_ShowNum(1,5,password,3);

}

if(KeyNum == 11)

{

LCD_ShowNum(1,5,password,3);

sdyz = password;

}

if(KeyNum == 12)

{

password = 0;

count = 0;

LCD_ShowNum(1,5,password,3);

}

if(KeyNum == 13)

{

moshi++;

password = 0;

count = 0;

if(moshi>1)

{

moshi = 0;

}

}

}

}

}

四、实现现象

具体动态效果看B站演示视频:

全部资料(源程序、仿真文件、安装包、演示视频、串口演示视频):

百度网盘资料下载https://pan.baidu.com/s/1Oenm7MTkS9fApPHFD9tyqw?pwd=dvcy

相关知识

基于51单片机的智能浇花系统
基于51单片机的智能浇花系统设计
基于单片机智能浇花控制系统设计
基于51单片机的智能浇花系统的设计与实现
基于单片机智能自动浇花控制系统设计
基于单片机智能花卉灌溉浇花浇水检测系统设计
基于单片机自动智能浇花浇水控制系统设计
基于单片机的智能自动浇花浇水控制系统设计
基于单片机的智能浇花(灌溉)系统设计
基于51单片机的智能浇花系统(可做毕设)

网址: 基于单片机的智能浇花系统 https://www.huajiangbk.com/newsview478119.html

所属分类:花卉
上一篇: 智能浇花系统设计 第一天
下一篇: 51单片机自动浇水系统 51单片

推荐分享