当前位置: 首页 > news >正文

【Proteus仿真】【STM32单片机】全自动养护智能生态雨林缸

文章目录

  • 一、功能简介
  • 二、软件设计
  • 三、实验现象
  • 联系作者


一、功能简介

本项目使用Proteus8仿真STM32单片机控制器,使用按键、LCD1602液晶、DS18B20模块、PCF8591 ADC、浑浊传感器、PH传感器、液位传感器、继电器、水泵、酸碱调节剂、加热降温装置等。
主要功能:
系统运行后,LCD1602显示温度、液位、浑浊度、PH浓度值;
可通过按键K3进入阈值设置模式,K3键用于切换选择温度阈值、浑浊度、PH浓度,
K1和K2用于调节对应阈值,K4用于确定并返回主界面。
如果温度高于上限,打开降温装置;如果温度低于下限,打开加热装置;
如果温度正常,关闭加热和降温装置;
如果水位低于下限,停止抽水,打开加水装置;
如果水位高于上限,停止加水;如果水位正常范围内,
浑浊高于上限,打开抽水装置;
PH高于上限,打开酸性调节剂;PH低于下限,打开碱性调节剂;


二、软件设计

/*
作者:嗨小易(QQ技术交流群:570487280)*///系统数据获取
void sys_data_get(void)
{static u8 i=0;while(1){//温度获取i++;if(i%5==0)sys_ctrl.temp=DS18B20_GetTemperture();//浑浊获取sys_ctrl.turbid=pcf8591_read_adcvalue(0);sys_ctrl.turbid=pcf8591_read_adcvalue(0);sys_ctrl.turbid=cal_map(sys_ctrl.turbid,0,255,0,99);//PH获取sys_ctrl.ph=pcf8591_read_adcvalue(1);sys_ctrl.ph=pcf8591_read_adcvalue(1);sys_ctrl.ph=cal_map(sys_ctrl.ph,0,255,0,140);//液位获取sys_ctrl.level=pcf8591_read_adcvalue(2);sys_ctrl.level=pcf8591_read_adcvalue(2);sys_ctrl.level=cal_map(sys_ctrl.level,0,255,0,99);			break;}
}//系统数据设置
void sys_data_set(void)
{u8 key=0;key=KEY_Scan(0);//模式设置if(key==KEY3_PRESS){sys_ctrl.mode++;if(sys_ctrl.mode>5)sys_ctrl.mode=1;sys_parm_set_show();//系统参数设置显示}if(sys_ctrl.mode!=0){//在设置模式下,加if(key==KEY1_PRESS){	switch(sys_ctrl.mode){case 1://PH下 sys_ctrl.phl++;if(sys_ctrl.phl>140)sys_ctrl.phl=0;break;case 2://PH上 sys_ctrl.phh++;if(sys_ctrl.phh>140)sys_ctrl.phh=0;break;case 3://温度下 sys_ctrl.templ++;if(sys_ctrl.templ>99)sys_ctrl.templ=0;break;case 4://温度上 sys_ctrl.temph++;if(sys_ctrl.temph>99)sys_ctrl.temph=0;break;case 5://浑浊度 sys_ctrl.turbidh++;if(sys_ctrl.turbidh>99)sys_ctrl.turbidh=0;break;}				}//在设置模式下,减else if(key==KEY2_PRESS){switch(sys_ctrl.mode){case 1://PH下 sys_ctrl.phl--;if(sys_ctrl.phl<0)sys_ctrl.phl=140;break;case 2://PH上 sys_ctrl.phh--;if(sys_ctrl.phh<0)sys_ctrl.phh=140;break;case 3://温度下 sys_ctrl.templ--;if(sys_ctrl.templ<0)sys_ctrl.templ=99;break;case 4://温度上 sys_ctrl.temph--;if(sys_ctrl.temph<0)sys_ctrl.temph=99;break;case 5://浑浊度sys_ctrl.turbidh--;if(sys_ctrl.turbidh<0)sys_ctrl.turbidh=99;break;}}//确定else if(key==KEY4_PRESS){sys_ctrl.mode=0;sys_open_show();//系统开机界面显示		}	}
}//系统功能控制
void sys_fun_ctrl(void)
{//正常工作模式下if(sys_ctrl.mode==0){//如果温度高于上限,打开降温装置if(sys_ctrl.temp>sys_ctrl.temph)JW_PIN=0;//如果温度低于下限,打开加热装置else if(sys_ctrl.temp<sys_ctrl.templ)JR_PIN=0;//如果温度正常,关闭加热和降温装置else {JW_PIN=1;JR_PIN=1;}//如果水位低于下限,停止抽水,打开加水装置if(sys_ctrl.level<sys_ctrl.levell){JS_PIN=0;CS_PIN=1;}//如果水位高于上限,停止加水else if(sys_ctrl.level>sys_ctrl.levelh)JS_PIN=1;//如果水位正常范围内else{//浑浊高于上限,打开抽水装置if(sys_ctrl.turbid>sys_ctrl.turbidh)CS_PIN=0;else CS_PIN=1;}//PH高于上限,打开酸性调节剂if(sys_ctrl.ph>sys_ctrl.phh){SXTJ_PIN=0;JXTJ_PIN=1;}//PH低于下限,打开碱性调节剂else if(sys_ctrl.ph<sys_ctrl.phl){SXTJ_PIN=1;JXTJ_PIN=0;	}else{SXTJ_PIN=1;JXTJ_PIN=1;		}				}	
}//应用控制系统
void appdemo_show(void)
{u8 i=10;sys_parm_init();//系统参数初始化KEY_Init();ctrl_pin_init();pcf8591_init();DS18B20_Init();lcd1602_init();//LCD1602初始化//等待数据稳定while(i--){//温度获取sys_ctrl.temp=DS18B20_GetTemperture();delay_ms(100);}sys_open_show();//系统开机界面显示while(1){sys_data_get();//系统数据获取sys_data_show();//系统数据显示sys_data_set();//系统数据设置sys_fun_ctrl();//系统功能控制		}
}

三、实验现象

B站演示视频:https://space.bilibili.com/444388619

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

联系作者

视频地址:https://space.bilibili.com/444388619/video
专注于51单片机、STM32、国产32、DSP、Proteus、arduino、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

相关文章:

【Proteus仿真】【STM32单片机】全自动养护智能生态雨林缸

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使用按键、LCD1602液晶、DS18B20模块、PCF8591 ADC、浑浊传感器、PH传感器、液位传感器、继电器、水泵、酸碱调节剂、加热降温装置等。 主要功能&am…...

GBT32960 协议编解码器的设计与实现

GBT32960 协议编解码器的设计与实现 引言 在车联网领域&#xff0c;GBT32960 是一个重要的国家标准协议&#xff0c;用于新能源汽车与监控平台之间的数据交互。本文将详细介绍如何使用 Rust 实现一个高效可靠的 GBT32960 协议编解码器。 整体架构 编解码器的核心由三个主要组…...

SolidWorks 转 PDF3D 技术详解

在现代工程设计与制造流程中&#xff0c;不同软件间的数据交互与格式转换至关重要。将 SolidWorks 模型转换为 PDF3D 格式&#xff0c;能有效解决模型展示、数据共享以及跨平台协作等问题。本文将深入探讨 SolidWorks 转 PDF3D 的技术原理、操作流程及相关注意事项&#xff0c;…...

OpenMCU(二):GD32E23xx FreeRTOS移植

概述 本文主要描述了GD32E230移植FreeRTOS的简要步骤。移植描述过程中&#xff0c;忽略了Keil软件的部分使用技巧。默认读者熟练使用Keil软件。本文的描述是基于OpenMCU_FreeRTOS这个工程&#xff0c;该工程已经下载放好了移植GD32E230 FreeRTOS的所有文件 OpenMCU_FreeRTOS工程…...

Codeforces Round 835 (Div. 4)题解ABCDEFG

Problem - A - Codeforces 题意&#xff1a;你有 t 组数据&#xff0c;每组有两两不同的三个数 a,b,c&#xff0c;现在需要你求出他们的中位数。 思路&#xff1a;模拟即可 // Code Start Here int t;cin >> t;while(t--){vector<int> a(3);for(int i 0;i<3…...

NO1.C++语言基础|四种智能指针|内存分配情况|指针传擦和引用传参|const和static|c和c++的区别

1. 说⼀下你理解的 C 中的四种智能指针 智能指针的作用是管理指针&#xff0c;可以避免内存泄漏的发生。 智能指针就是一个类&#xff0c;当超出了类的作用域时&#xff0c;就会调用析构函数&#xff0c;这时就会自动释放资源。 所以智能指针作用的原理就是在函数结束时自动释…...

SQLite Having 子句详解

SQLite Having 子句详解 引言 SQLite 是一款轻量级的数据库管理系统,广泛应用于移动设备、嵌入式系统和各种桌面应用程序。在 SQL 查询中,HAVING 子句是用于过滤结果集的关键部分,尤其是在使用 GROUP BY 子句进行分组操作时。本文将详细解析 SQLite 中的 HAVING 子句,包括…...

Python数据分析面试题及参考答案

目录 处理 DataFrame 中多列缺失值的 5 种方法 批量替换指定列中的异常值为中位数 使用正则表达式清洗电话号码格式 合并两个存在部分重叠列的 DataFrame 将非结构化 JSON 日志转换为结构化表格 处理日期列中的多种非标准格式(如 "2023 年 12 月 / 05 日") 识…...

Spring Boot 3 整合 MinIO 实现分布式文件存储

引言 文件存储已成为一个做任何应用都不可回避的需求。传统的单机文件存储方案在面对大规模数据和高并发访问时往往力不从心&#xff0c;而分布式文件存储系统则提供了更好的解决方案。本篇文章我将基于Spring Boot 3 为大家讲解如何基于MinIO来实现分布式文件存储。 分布式存…...

ubuntu20 安装python2

1. 确保启用了 Universe 仓库 在某些情况下&#xff0c;python2-minimal 包可能位于 Universe 仓库中。你可以通过以下命令启用 Universe 仓库并更新软件包列表&#xff1a; bash复制 sudo add-apt-repository universe sudo apt update 然后尝试安装&#xff1a; bash复制…...

2025.3.3总结

周一这天&#xff0c;我约了绩效教练&#xff0c;主要想了解专业类绩效的考核方式以及想知道如何拿到一个更好的绩效。其他的岗位并不是很清楚&#xff0c;但是专业类的岗位&#xff0c;目前采取绝对考核&#xff0c;管理层和专家岗采取相对考核&#xff0c;有末尾淘汰。 通过…...

多线程-JUC源码

简介 JUC的核心是AQS&#xff0c;大部分锁都是基于AQS扩展出来的&#xff0c;这里先结合可重入锁和AQS&#xff0c;做一个讲解&#xff0c;其它的锁的实现方式也几乎类似 ReentrantLock和AQS AQS的基本结构 AQS&#xff0c;AbstractQueuedSynchronizer&#xff0c;抽象队列…...

ICLR 2025|香港浸会大学可信机器学习和推理课题组专场

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; AITIME 01 ICLR 2025预讲会团队专场 AITIME 02 专场信息 01 Noisy Test-Time Adaptation in Vision-Language Models 讲者&#xff1a;曹晨涛&#xff0c;HKBU TMLR Group一年级博士生&#xff0c;目前关注基础…...

docker引擎备份及解决拉取失败的问题

总结一下本文&#xff0c;docker引擎不是越多越好&#xff0c;此外阿里云的容器引擎加速可适用大多数情况。 docker引擎备份 仅使用阿里云 docker引擎备份&#xff0c;唯一使用的镜像地址是我的阿里云docker镜像加速地址&#xff0c;效果好&#xff08;注意下面的阿里云镜像加…...

Django项目实战

1、安装django 查看包安装的位置 pip镜像源 镜像源名称镜像地址​清华源​https://pypi.tuna.tsinghua.edu.cn/simple​阿里云​https://mirrors.aliyun.com/pypi/simple​腾讯云​https://mirrors.cloud.tencent.com/pypi/simple​华为云​https://repo.huaweicloud.co…...

【ThreeJS Basics 1-6】Camera

文章目录 Camera 相机PerspectiveCamera 透视相机正交相机用鼠标控制相机大幅度转动&#xff08;可以看到后面&#xff09; 控制组件FlyControls 飞行组件控制FirstPersonControls 第一人称控制PointerLockControls 指针锁定控制OrbitControls 轨道控制TrackballControls 轨迹球…...

SpringBoot-模拟SSE对话交互

SpringBoot-模拟SSE对话交互 后端使用SSE进行会话&#xff0c;前端使用Html模拟大模型的问答交互->【前端】【后端】 1-学习目的 本项目代码仓库&#xff1a;https://gitee.com/enzoism/springboot_sse 1-核心知识点 1&#xff09;什么是SSE协议->客户端发起一次请求&am…...

删除链表的倒数第N个节点 力扣19

一、题目 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]示例 3&a…...

IvorySQL v4 逻辑复制槽同步功能解析:高可用场景下的数据连续性保障

功能简介 IvorySQL v4 基于 PostgreSQL 17&#xff0c;引入了逻辑复制槽同步至热备份数据库的功能。这一改进有效解决了旧版本中主数据库与备份数据库切换后逻辑复制中断的问题。对于那些追求数据高可用性和业务连续性的数据库来说&#xff0c;这无疑是一个重大的利好消息。它…...

vxe-table开启表尾和el-collapse-transition不兼容,动画卡顿

调用控制台 发现是el-collapse-transition内置的计算高度函数计算的高度总是会高一点 直接放弃使用el-collapse-transition 使用下面的div包裹住vxe-table 我的table是渲染出来的会有多个 <el-button click"group.messShow !group.messShow" type"text&q…...

esp-hosted 方案深度解析:从架构选型到性能调优实战

1. 为什么选择esp-hosted方案&#xff1f; 如果你正在为嵌入式系统寻找稳定可靠的无线连接方案&#xff0c;esp-hosted绝对值得考虑。这个由乐鑫推出的开源方案&#xff0c;本质上是通过ESP32系列芯片为Linux主机或MCU设备提供Wi-Fi和蓝牙连接能力。我曾在多个工业物联网项目中…...

基于comsol仿真的手性超表面圆二色性分析及其在圆偏振光照射下的响应研究

手性超表面圆二色性comsol仿真 左右旋圆偏振光照射超表面的仿真&#xff0c; 圆二色性的计算 comsol光学仿真最近在折腾手性超表面的仿真&#xff0c;发现用COMSOL搞圆二色性&#xff08;CD&#xff09;计算这事挺有意思的。特别是左右旋圆偏振光打上去之后&#xff0c;结构的手…...

教你 .NET Core API 怎么和数据库表一一对应

不用复杂理论,直接照做就能成功! 一、核心规则(记住这 4 句) 类 = 表 类名 = 表名 属性 = 字段 属性名 = 字段名 二、一步一步教你对应(超级简单) 1)数据库有一张表 → 你就写一个类 例如你数据库里有表: sql Users (Id int primary key identity,Name nvarchar(5…...

Markdown Viewer浏览器扩展完全指南:从安装到高级配置

Markdown Viewer浏览器扩展完全指南&#xff1a;从安装到高级配置 【免费下载链接】markdown-viewer Markdown Viewer / Browser Extension 项目地址: https://gitcode.com/gh_mirrors/ma/markdown-viewer Markdown Viewer是一款功能丰富的浏览器扩展&#xff0c;专为提…...

Windows任务栏透明化技术解析:TranslucentTB架构设计与优化实践

Windows任务栏透明化技术解析&#xff1a;TranslucentTB架构设计与优化实践 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB TranslucentT…...

JPEXS Free Flash Decompiler与Web3.0存储:去中心化SWF文件管理的终极指南

JPEXS Free Flash Decompiler与Web3.0存储&#xff1a;去中心化SWF文件管理的终极指南 【免费下载链接】jpexs-decompiler JPEXS Free Flash Decompiler 项目地址: https://gitcode.com/gh_mirrors/jp/jpexs-decompiler JPEXS Free Flash Decompiler是一款功能强大的开源…...

HP-Socket版本发布后用户反馈分析:情感、主题与趋势

HP-Socket版本发布后用户反馈分析&#xff1a;情感、主题与趋势 【免费下载链接】HP-Socket High Performance TCP/UDP/HTTP Communication Component 项目地址: https://gitcode.com/gh_mirrors/hp/HP-Socket HP-Socket作为一款高性能TCP/UDP/HTTP通信组件&#xff0c;…...

蓝桥杯 电池分组

...

Babel polyfill配置全解析:为什么你的Next.js项目在IE11还是报错?

Babel polyfill配置全解析&#xff1a;为什么你的Next.js项目在IE11还是报错&#xff1f; 在2023年的前端生态中&#xff0c;浏览器兼容性依然是个令人头疼的问题。最近接手一个企业级Next.js项目时&#xff0c;我遇到了一个典型场景&#xff1a;开发环境一切正常&#xff0c;但…...

VS2022项目复制后报错打不开?别慌,手把手教你用记事本5分钟修复.sln文件

VS2022项目复制后报错打不开&#xff1f;记事本5分钟修复.sln文件全指南 刚复制完的VS2022项目一打开就报错&#xff1f;解决方案资源管理器一片空白&#xff1f;别急着重装或放弃&#xff0c;这很可能只是.sln文件中的路径需要手动更新。作为经历过数十次类似问题的开发者&…...