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

delay(5);

}

write_com(0x80+0x40);

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

{

write_date(table1num);

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/

相关推荐
sramdram8 小时前
MCU微控制器OA打印机方案
单片机·嵌入式硬件·mcu·mcu微控制器
天天爱吃肉82189 小时前
【电源拆解:跟着问答逐一认识开关适配器PCB元器件】
大数据·人工智能·python·功能测试·嵌入式硬件·汽车
科芯创展13 小时前
3.5A,60VIN,异步降压芯片,XZ1815
单片机·嵌入式硬件
茯苓gao13 小时前
嵌入式开发笔记:Qt信号槽机制深度解析——从原理到实战的全方位指南
开发语言·笔记·嵌入式硬件·qt·学习
浅止菌14 小时前
海思回归第二弹:瑞芯微的隐忧与对手的反击
嵌入式硬件
Kuakewei88814 小时前
PW2609A在2.6A负载下压差0.14V,温升较3A工况低11°C
单片机·嵌入式硬件
Zyed14 小时前
[FreeRTOS]Day7项目介绍
stm32·单片机·嵌入式硬件
xuxie9916 小时前
start7 电机闭环控制
单片机·嵌入式硬件
嵌入式-老费16 小时前
esp32开发与应用(播放wav音频文件)
嵌入式硬件
LCG元17 小时前
嵌入式开发踩坑排查实战:从 STM32 外设初始化到 Linux SPI 驱动的 15 类硬件疑难故障深度复盘
linux·stm32·单片机