首页 > 其他分享 >14.基于51单片机的智能花盆设计(实物)

14.基于51单片机的智能花盆设计(实物)

时间:2024-12-14 23:28:55浏览次数:9  
标签:界面 14 松土 51 单片机 最小值 键值 按键 函数

14.基于51单片机的智能花盆设计(实物)

通过百度网盘分享的文件:资料详解
链接:https://pan.baidu.com/s/1zPXLcLmqZAljkgMeU2RT7w?pwd=597l 
提取码:597l 

设计简介:

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

单片机:STC89C52

功能:

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

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

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

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

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

4 系统程序设计

4.1 编程软件介绍

本设计所用到的编程软件为Keil5,其界面如图4-1所示:

图4-1 Keil5开发界面

本设计所使用的编程环境是Keil5,相对于其他软件编程环境,Keil5更加的轻便快捷,操作更加的简单,深受广大嵌入式软件开发者的喜爱。Keil5支持多种芯片,包括51单片机、STM32、HC32、NXP等,生成的HEX文件,可通过烧录器直接烧录到单片机中,非常方便。另外,Keil5编译有三种,一种是单编,一种是部分编译,还有一种是全部编译,这样给开发人员更多的选择,并且编译的结果,显示在界面的最下方,供开发者查找错误。

4.2 主程序流程设计

系统的主流程图如图4-2所示;在主程序中:首先对各个模块进行初始化,随后进入while主循环,在主循环中,首先进入第一个函数按键函数,该函数主要分为两部分,第一部分为调用按键扫描函数获取相关按键键值,第二部分通过相关按键进行相应的处理操作,比如切换界面、手动松土、调整温度最小值、湿度最小值、光照最小值、调整松土时间和输液时间、手动补光;紧接着进入第二个函数监测函数,通过调用温度、湿度和光照检测模块获取温度、湿度和光照的值;紧接着进入第三个函数显示函数,根据不同的显示标志位显示不同的界面,比如主界面显示当前温度、湿度和光照的值,其他界面显示松土和输液时间、温度、湿度和光照的最小值等;紧接着进入第四个函数处理函数,判断测量值是否在阈值内,若不在,则相应的继电器工作,若松土或输液倒计时结束则开始松土或输液;最后,通过一个延时函数和计数公式,限制各函数扫描时间。其部分主程序源码如下所示:

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)

     {

          (部分代码省略)

           ……

}

        }

图4-2 程序总体流程图

4.3 按键函数流程设计

按键函数子流程图如图4-3所示;按键设置函数首先通过按键扫描函数,获取按键按下的相关信息,通过不同的键值,进行相应变量的改变。如果获取的键值为1,进行界面的切换。如果获取的键值为2,在界面0时,手动松土;在界面1时,温度最小值+1;在界面2时,湿度最小值+1;在界面3时,光照最小值+1;在界面4时,松土时间+1;在界面5时,输液时间+1。如果获取的键值为3,在界面0时,手动补光;在界面1时,温度最小值-1;在界面2时,湿度最小值-1;在界面3时,光照最小值-1;在界面4时,松土时间-1;在界面5时,输液时间-1。如果获取的键值为4,切换界面。其部分程序源码如下所示:

void Key_function(void)

{

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

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

      {

             switch(key_num)

             {

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

                           flag_display++;

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

                                  flag_display = 0;

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

                    break;

(部分代码省略)

……

         }

}

}

 

 

标签:界面,14,松土,51,单片机,最小值,键值,按键,函数
From: https://blog.csdn.net/2402_89220103/article/details/144357273

相关文章

  • MySQL中这14个神仙功能,惊艳到我了!!!
    大家好,我是苏三,又跟大家见面了。前言我最近几年用MYSQL数据库挺多的,发现了一些非常有用的小玩意,今天拿出来分享到大家,希望对你会有所帮助。1.group_concat在我们平常的工作中,使用groupby进行分组的场景,是非常多的。比如想统计出用户表中,名称不同的用户的具体名称有哪些?......
  • maven docker-maven-plugin 发布docker 20241214
    1、docker开启远程访问 端口 2375  docker主机:192.168.177.128vi/usr/lib/systemd/system/docker.service#修改ExecStart这行ExecStart=/usr/bin/dockerd-Htcp://0.0.0.0:2375 #重新加载配置文件[root@localhost~]#systemctldaemon-reload#重启服务[......
  • 2024-2025-1 20241403《计算机基础与程序设计》第十二周学习总结
    2024-2025-120241403《计算机基础与程序设计》第十二周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标指针与一维,二维数......
  • [20241214]Oracle 多线程测试(补充).txt
    [20241214]Oracle多线程测试(补充).txt--//补充测试altersystemkillsession'sid,serial#'immediate;杀线程的情况是否可行。1.环境:SYS@book>@ver2==============================PORT_STRING                  :x86_64/Linux2.4.xxVERSION     ......
  • 2024-12-14:K 周期字符串需要的最少操作次数。用go语言,给定一个长度为n的字符串 word
    2024-12-14:K周期字符串需要的最少操作次数。用go语言,给定一个长度为n的字符串word和一个整数k,k是n的因数。每次操作可以选择两个下标i和j,使得i和j都可以被k整除,然后用从j开始的长度为k的子串替换从i开始的长度为k的子串。要使得word成为一个K周期字符串,需要进行最少的操作次数......
  • 【决策单调性】P3648 [APIO2014] 序列分割 题解
    题目链接:P3648[APIO2014]序列分割(注:由于本题解的状态转移方程需要用到\(k\),所以原题中的\(k\)对应本题解中的\(m\)。)给你一个长度为\(n\)的序列\(A_1,A_2,...,A_n\),一开始把它看作一个块。初始你的分数为\(0\),现在你需要进行下列操作恰好\(m\)次:选一个块,并从一处......
  • STM32单片机芯片与内部20 中断管理
    目录一、中断/异常的响应序列1、入栈2、取向量3、更新寄存器二、异常返回三、嵌套中断四、咬尾中断五、晚到异常六、异常返回值七、中断延迟八、异常相应期间的faults1、入栈期间2、出栈期间3、取向量期间4、无效返回时        前面有提到定时器中断......
  • STM32单片机芯片与内部21 电源管理——低功耗 睡眠模式 停止模式 待机模式
    目录一、SMT32电源框图1、ADC电源与参考电压VDDA2、调压器供电电路VDD/1.8V3、备份域电路二、电源监控器1、上电复位与掉电复位(POR与PDR)2、可编程电压检测器PVD三、功耗模式1、睡眠模式2、停止模式3、待机模式        电源对电子设备的重要性不言而喻,它......
  • NKOJ 1407 地毯填补问题
    NKOJ1407地毯填补问题思路分治算法经典题。实现方法把公主看成障碍物,填的地毯也是障碍物。观察题目发现迷宫大小为\(2^k\times2^k\)格,每次正好可以四等分。每次填充的地毯正好填三格,正好留下一格障碍物。代码#include<bits/stdc++.h>#defineintlonglongusi......
  • 代码随想录算法训练营第四十六天|LeetCode647.回文串、LeetCode516.最长回文子序列
    前言打卡代码随想录算法训练营第49期第四十六天 ε(*′・∀・`)з゙首先十分推荐学算法的同学可以先了解一下代码随想录,可以在B站卡哥B站账号、代码随想录官方网站代码随想录了解,卡哥清晰易懂的算法教学让我直接果断关注,也十分有缘和第49期的训练营大家庭一起进步。LeetCode647......