0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于51单片机的智能花盆设计

白茶茶668 来源:白茶茶668 作者:白茶茶668 2023-08-01 00:52 次阅读

项目名:

基于单片机智能花盆设计

单片机:STC89C52

功能:

1、通过显示屏显示花盆中土壤的温度、湿度,花盆外光照强度;

2、通过按键切换显示屏的界面,设置土壤最小温度值、最小湿度值,花盆外光照强度值,输液倒计时,松土倒计时;

3、通过土壤湿度传感器检测土壤湿度,通过DS18B20检测土壤温度;

4、通过继电器控制加热片,水泵,输液,补光灯;

5、通过步进电机来实现松土;

wKgaomTH5tqAV4B0AAQ1lveAWqA823.png

部分程序:

#include "main.h"

#include "lcd1602.h"

#include "key.h"

#include "ds18b20.h"

#include "adc.h"

#include "motor.h"

#include "timer.h"



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

变量定义

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

uchar key_num = 0; //按键扫描标志位

uchar flag_display = 0; //显示模式标志位

bit flag_display_cut = 0; //切换界面标志位

uint time_num = 0; //10ms计数变量

uint temp_value = 0; //温度值

uchar temp_min = 10; //最小温度值

uint humi_value = 0; //湿度值

uchar humi_min = 30; //最小湿度值

uint light_value = 0; //光照强度值

uchar light_min = 50; //最小光照强度值

uchar time_songtu = 0; //松土时间

uint time_minus_songtu = 0; //松土倒计时时间

uchar time_shuye = 0; //输液时间

uint time_minus_shuye = 0; //输液倒计时时间

extern bit flag_songtu_begin; //松土开始标志位

extern bit flag_songtu_finish; //松土完成标志位

extern bit flag_shuye_begin; //输液开始标志位

extern bit flag_shuye_finish; //输液完成标志位



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

函数声明

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

void Delay_function(uint x); //延时函数

void Key_function(void); //按键函数

void Monitor_function(void); //监测函数

void Display_function(void); //显示函数

void Manage_function(void); //处理函数



/****

******* 主函数

*****/

void main()

{

Lcd1602_Init(); //LCD1602初始化

Delay_function(50);

lcd1602_clean(); //清屏

Delay_function(50);

Ds18b20_Init(); //DS18B20初始化

Delay_function(50);

Timer0_Init(); //定时器0初使化

Delay_function(50);


while(1)

{

Key_function(); //按键函数

Monitor_function(); //监测函数

Display_function(); //显示函数

Manage_function(); //处理函数


Delay_function(10); //延时10ms

time_num++; //间隔10ms计时变量+1

if(time_num >= 5000) //计时累加到5000,重新从0开始累加

{

time_num = 0;

}

}

}


/****

******* 延时 x ms函数

*****/

void Delay_function(uint x)

{

uint m,n;

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

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

}


/****

*******按键函数

*****/

void Key_function(void)

{

key_num = Chiclet_Keyboard_Scan(0); //按键扫描

if(key_num != 0) //有按键按下

{

switch(key_num)

{

case 1: //按键1,切换界面

flag_display++;

if(flag_display >= 6) //一共6个界面

flag_display = 0;


lcd1602_clean(); //按一下,清屏一次

break;


case 2:

switch(flag_display)

{

case 0: //界面为0时,手动松土

Motor_Foreward();

break;


case 1: //界面为1时,修改温度最小值+1

if(temp_min < 99)

temp_min++;

break;

case 2: //界面为2时,修改湿度最小值+1

if(humi_min < 99)

humi_min++;

break;

case 3: //界面为3时,修改光照最小值+1

if(light_min < 99)

light_min++;

break;

case 4: //界面为4时,修改松土时间+1

time_songtu++;

time_minus_songtu = time_songtu*60;

break;

case 5: //界面为5时,修改输液时间+1

time_shuye++;

time_minus_shuye = time_shuye*60;

break;


default:

break;

}

break;

case 3: //按键3

switch(flag_display)

{

case 0: //界面为0时,手动输液

RELAY_SHUYE = 0; //闭合输液继电器,开始输液

Delay_function(3000); //输液三秒

RELAY_SHUYE = 1; //断开输液继电器,停止输液

break;


case 1: //界面为1时,修改温度最小值-1

if(temp_min > 0)

temp_min--;

break;

case 2: //界面为2时,修改湿度最小值-1

if(humi_min > 0)

humi_min--;

break;

case 3: //界面为3时,修改光照最小值-1

if(light_min > 0)

light_min--;

break;

case 4: //界面为4时,修改松土时间-1

if(time_songtu > 0)

{

time_songtu--;

time_minus_songtu = time_songtu*60;

}

break;

case 5: //界面为5时,修改输液时间-1

if(time_shuye > 0)

{

time_shuye--;

time_minus_shuye = time_shuye*60;

}

break;


default:

break;

}

break;

case 4: //按键4,切换界面

flag_display_cut = ~flag_display_cut;

lcd1602_clean(); //按一下,清屏一次

break;


default:

break;

}

}

}

wKgZomTH5tuACJthAAJgjJJ9BdU096.png

wKgZomTH5tyASY-JAAZ65dpYf3o323.png

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 继电器
    +关注

    关注

    131

    文章

    5027

    浏览量

    146067
  • 单片机
    +关注

    关注

    6001

    文章

    43978

    浏览量

    620871
  • 51单片机
    +关注

    关注

    269

    文章

    5649

    浏览量

    120707
收藏 人收藏

    评论

    相关推荐

    基于51单片机智能水表

    谁有关于51单片机系列智能水表的资料?急急急!!!
    发表于 05-02 19:33

    【GoKit申请】基于GoKit开发板的智能花盆

    申请理由:比较喜欢这样既简单又有逼格这样的板子,自己也做过些的智能家居。而且对于单片机开发比较熟悉,但对于手机APP的开发学习还不够深入,想借此机会好好学习学习。项目描述:由于时间的原因初步设想是先做一个简单的智能
    发表于 09-22 09:54

    51单片机基本电路

    51单片机基本电路,51单片机完整系统电路8051单片机外围硬件电路,包括电源电路,去藕电路,复位电路,红外电路,计数电路等,更多的
    发表于 07-14 06:09

    智能车教程单片机原理及应用

    智能车教程单片机原理及应用(C语言版)4.ppt智能车教程制作过程单片机原理及应用 (C语言版)第4章单片机C语言及程序设计 第4章
    发表于 07-14 08:34

    基于51单片机实现智能家居产品

    51单片机也可以实现一个小小的智能家居√(smart-home)开源所有代码♥文章目录♥51单片机也可以实现一个小小的
    发表于 09-08 06:21

    如何实现基于51单片机智能台灯的设计?

    如何实现基于51单片机智能台灯的设计?
    发表于 10-21 08:19

    基于51单片机智能小车设计

    基于51单片机智能小车,可以实现循迹、避障、APP控制等功能;顺便提了一下自己大学的“造车”史!
    发表于 11-18 09:18

    如何利用51单片机实现智能衣柜的设计

    模拟开关衣柜;标签:51单片机、DHT11、LCD1602基于单片机智能衣柜-实物设计 - 电子校园编号: CP-51-2021-056-
    发表于 11-19 06:27

    基于51单片机的蓝牙智能台灯设计

    基于51单片机的蓝牙智能台灯目录 基于51单片机的蓝牙智能台灯功能:系统组成:设计思路:...
    发表于 12-01 07:36

    怎样去设计基于STM32F103C8T6单片机智能花盆远程浇水系统

    基于STM32F103C8T6单片机智能花盆远程浇水补光设计一、产品介绍1、本产品由STM32F103C8T6单片机核心电路+温湿度传感器DHT11电路+LCD1602液晶显示电路+继电器控制电路
    发表于 12-06 06:29

    基于51单片机智能小车设计

    目标:使智能小车沿如图路线行走一,所需零件1,车体,车轮2,51单片机3,驱动模块:LM298N该模块可以同时给单片机和电机供电...
    发表于 01-05 08:27

    基于单片机智能花盆的设计资料分享

    设计简介:本设计是基于单片机智能花盆,主要实现以下功能:LCD1602显示当前温度、土壤湿度以及光照值继电器控制加热、水泵、输液以及补光步进电机模拟松土可通过按键设置温度、土壤湿度、光照度、松土
    发表于 01-24 07:05

    基于51单片机循迹智能小车

    基于51单片机循迹智能小车基于51单片机循迹智能小车基于51
    发表于 11-13 15:55 0次下载

    468【毕设课设】基于STM32单片机远程智能花盆GSM短信浇水补光设计

    468【毕设课设】基于STM32单片机远程智能花盆GSM短信浇水补光设计
    发表于 11-23 18:21 29次下载
    468【毕设课设】基于STM32<b class='flag-5'>单片机</b>远程<b class='flag-5'>智能</b><b class='flag-5'>花盆</b>GSM短信浇水补光设计

    基于单片机智能花盆

    设计简介:本设计是基于单片机智能花盆,主要实现以下功能:LCD1602显示当前温度、土壤湿度以及光照值 继电器控制加热、水泵、输液以及补光 步进电机模拟松土 可通过按键设置温度、土壤湿度、光照度
    发表于 11-29 10:36 18次下载
    基于<b class='flag-5'>单片机</b>的<b class='flag-5'>智能</b><b class='flag-5'>花盆</b>