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

相关推荐
FreakStudio9 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
✎ ﹏梦醒͜ღ҉繁华落℘14 天前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
u1521096484914 天前
S.S.Audio PRO A2音频隔离器
嵌入式硬件·音视频·实时音视频·视频编解码·视频
zd84510150014 天前
RS485 总线详解
单片机·嵌入式硬件
半条-咸鱼14 天前
【STM32】I2C协议原理、HAL读写与OLED显示操作
嵌入式硬件·c·信息与通信
wohoo_wangzi15 天前
苏州晟雅泰电子:关于W25Q128JVSIQ这个芯片物料的参数,规格及应用领域
嵌入式硬件
✎ ﹏梦醒͜ღ҉繁华落℘15 天前
编程基础 --高内聚,低耦合
c语言·单片机
科芯创展15 天前
1A,1MHz,30VIN,XZ4115,降压恒流LED驱动芯片
单片机·嵌入式硬件
集芯微电科技有限公司15 天前
四通道2A输出集成功率电感降压模块专为紧凑型方案设计
人工智能·单片机·嵌入式硬件·生成对抗网络·计算机外设
踏着七彩祥云的小丑15 天前
嵌入式测试学习第 37 天:异常场景测试:断电、拔插、干扰、非法指令
单片机·嵌入式硬件·学习