【51单片机】【protues仿真】基于51单片机自动浇花系统

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、LCD1602液晶显示土壤湿度值

2、按键设置土壤湿度阈值

3、土壤湿度值低于下限时,蜂鸣器报警并驱动水泵浇水

4、土壤湿度值高于上限时停止浇水

二、使用步骤

基于51单片机的自动浇花系统是一种通过土壤湿度传感器检测环境湿度,并自动控制水泵进行灌溉的智能装置。

三、硬件资源

1、51单片机核心模块

2、按键模块

3、土壤湿度传感器、数模转换模块

4、蜂鸣器模块

5、继电器模块

6、LCD1602显示模块

四、软件设计

#include <reg51.H>

#include "intrins.h"

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

#define LCDIO P0 //液晶屏数据口

//ADC0832的引脚

sbit ADCLK =P1^1; //ADC0832 clock signal

sbit ADDIO =P1^3; //ADC0832 k in

sbit ADCS =P1^4; //ADC0832 chip seclect

sbit rs=P1^0; //定义1602 RS

sbit lcden=P1^2; //定义1602 EN

sbit key1=P3^0; //设定

sbit key2=P3^1; //加

sbit key3=P3^2; //减

sbit motor=P3^7; //继电器接口

sbit speak=P1^5; //蜂鸣器接口

uchar key; //设定指针

uint RH=400,RL=200;//水位上下限

float temp_f;

ulong temp;

uchar v;

uchar count,s1num;

uchar code table[]= "soil hum: ";

uchar code table1[]="RH: % ";

uchar getdata; //获取ADC转换回来的值

/*********************************************/

void delay(uint z) //延时

{

uint x,y;

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

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

}

/**********************************************/

void write_com(uchar com)

{

rs=0;

// rd=0;

lcden=0;

P0=com;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

/*********************************************/

void write_date(uchar date)

{

rs=1;

lcden=0;

P0=date;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

void lcdinit()

{

lcden=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

}

/***********************************************/

void init()

{

uchar num;

for(num=0;num<15;num++)

{

write_date(table[num]);

delay(5);

}

write_com(0x80+0x40);

for(num=0;num<15;num++)

{

write_date(table1[num]);

delay(5);

}

}

/********************************************************/

void displayRH() //下限显示

{write_com(0xc0+3);

write_date(RH/100%10+0x30);//上限百位

write_date(RH/10%10+0x30);//上限十位

//write_date('.');

//write_date(RH%10+0x30);

}

void displayRL() //下限显示

{write_com(0xca);

write_date('R');

write_date('L');

write_date(':');

write_date(RL/100%10+0x30);

write_date(RL/10%10+0x30);

write_date('%');

}

/**************************************************/

void main(void)

{

lcdinit();

init();

displayRH(); //显示上限

displayRL(); //显示下限

delay(50);

delay(50); //延时片刻(可不要)

delay(50); //延时

delay(50);

Conut(); //显示函数

delay(150);

while(1)

{

Conut();

keyscan();

if(temp>RH)

{motor=1;

}

else if(temp<RL)

{motor=0;

}

if(temp<RL) //小于下限启动报警并浇水

{speak=0; //启动报警

delay(150); //延时

speak=1;

}

keyscan(); //按键检测

delay(150); //延时50MS

}

}

五、实验现象

演示视频:

https://www.bilibili.com/video/BV1DYYyz5E39/https://www.bilibili.com/video/BV1DYYyz5E39/

相关推荐
一个平凡而乐于分享的小比特2 分钟前
单片机内部时钟 vs 外部时钟详解
单片机·嵌入式硬件·内部时钟·外部时钟
xyx-3v24 分钟前
RK3506G移植APM飞控的可行性
单片机·学习
才鲸嵌入式35 分钟前
香山CPU(国产开源)的 SoC SDK底层程序编写,以及其它开源SoC芯片介绍
c语言·单片机·嵌入式·arm·cpu·verilog·fpga
d111111111d1 小时前
编码器测速详情解释:PID闭环控制
笔记·stm32·单片机·嵌入式硬件·学习·算法
福大大架构师每日一题1 小时前
ollama v0.13.4 发布——全新模型与性能优化详解
stm32·嵌入式硬件·性能优化·ollama
保护我方头发丶2 小时前
ESP功能介绍
c语言·嵌入式硬件
国科安芯2 小时前
AS32A601型MCU芯片如何进行IAP升级?
网络·单片机·嵌入式硬件·安全·risc-v·安全性测试
啃硬骨头2 小时前
Aurix TC387 Ethernet代码解析之七_MAC的LwIP初始化4
单片机·嵌入式硬件
詩不诉卿2 小时前
超简单stm32cubemx+lwip+yt8512c工程搭建记录
stm32·单片机·嵌入式硬件
亿道电子Emdoor2 小时前
【Arm】MCU和SOC的区别
arm开发·单片机·嵌入式硬件