【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/

相关推荐
零一iTEM11 分钟前
MAX98357A_音频输出测试
单片机·嵌入式硬件·开源·音视频·硬件工程
逐步前行19 分钟前
STM32_标准库结构
stm32·单片机·嵌入式硬件
不做无法实现的梦~1 小时前
PX4各个模块的作用(3)
linux·stm32·嵌入式硬件·机器人·自动驾驶
清风6666661 小时前
基于单片机的喷漆机器人自动控制系统
单片机·嵌入式硬件·机器人·毕业设计·课程设计·期末大作业
不能跑的代码不是好代码1 小时前
STM32独立看门狗(IWDG)知识点及标准库使用指南
stm32·嵌入式硬件
程序员良许1 小时前
嵌入式处理器架构
后端·单片机·嵌入式
来自晴朗的明天2 小时前
15、隔离 DC-DC 电源电路(18S12 模块)
单片机·嵌入式硬件·硬件工程
我送炭你添花2 小时前
电子世界的奇妙冒险:从一个电阻开始(系列目录)
人工智能·单片机·嵌入式硬件·fpga开发
VekiSon2 小时前
Linux内核驱动——设备树原理与应用
linux·c语言·arm开发·嵌入式硬件
国科安芯2 小时前
火箭传感器控制单元的抗辐照MCU选型与环境适应性验证
单片机·嵌入式硬件·架构·risc-v·安全性测试