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

【Proteus仿真】【Arduino单片机】水质监测报警系统设计

文章目录

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


一、功能简介

本项目使用Proteus8仿真Arduino单片机控制器,使用按键、LED、蜂鸣器、LCD1602、ADC、PH传感器、浑浊度传感器、DS18B20温度传感器、继电器模块等。

主要功能:
系统运行后,LCD1602显示温度、浑浊度、PH浓度值;
可通过按键K3进入阈值设置模式,K3键用于切换选择温度阈值、浑浊度、PH浓度,K1和K2用于调节对应阈值,K4用于确定并返回主界面。
当温度高于上限,温度高指示,打开降温,蜂鸣器报警;
当浑浊高于上限,浑浊度高指示,蜂鸣器报警;
当PH高于上限,PH上限指示,蜂鸣器报警;
当PH低于下限,PH下限指示,蜂鸣器报警;
当PH正常,关闭指示和报警。


二、软件设计

/*
作者:嗨小易(QQ:3443792007)*///系统数据显示
void sys_data_show(void)
{u8 buf[5];while(1){//正常模式显示if(sys_ctrl.mode==0){//温度显示buf[0]=sys_ctrl.temp/100+0x30;buf[1]=sys_ctrl.temp%100/10+0x30;buf[2]='.';buf[3]=sys_ctrl.temp%100%10+0x30;buf[4]='\0';lcd1602_show_string(5,0,buf);//浑浊度显示lcd1602_show_nums(4,1,sys_ctrl.turbid,2,0);//PH显示buf[0]=sys_ctrl.ph/100+0x30;buf[1]=sys_ctrl.ph%100/10+0x30;buf[2]='.';buf[3]=sys_ctrl.ph%100%10+0x30;buf[4]='\0';lcd1602_show_string(12,1,buf);	}//阈值设置显示else{//PH下限值显示buf[0]=sys_ctrl.phl/100+0x30;buf[1]=sys_ctrl.phl%100/10+0x30;buf[2]='.';buf[3]=sys_ctrl.phl%100%10+0x30;buf[4]='\0';lcd1602_show_string(3,0,buf);//PH上限值显示buf[0]=sys_ctrl.phh/100+0x30;buf[1]=sys_ctrl.phh%100/10+0x30;buf[2]='.';buf[3]=sys_ctrl.phh%100%10+0x30;buf[4]='\0';lcd1602_show_string(8,0,buf);//温度阈值显示buf[0]=sys_ctrl.temph/100+0x30;buf[1]=sys_ctrl.temph%100/10+0x30;buf[2]='.';buf[3]=sys_ctrl.temph%100%10+0x30;buf[4]='\0';lcd1602_show_string(3,1,buf);//浑浊度阈值显示lcd1602_show_nums(13,1,sys_ctrl.turbidh,2,0);//阈值设定,数据位置闪烁switch(sys_ctrl.mode){case 1://PH下lcd1602_show_string(3,0,"    ");delay_ms(100);buf[0]=sys_ctrl.phl/100+0x30;buf[1]=sys_ctrl.phl%100/10+0x30;buf[2]='.';buf[3]=sys_ctrl.phl%100%10+0x30;buf[4]='\0';lcd1602_show_string(3,0,buf);break;case 2://PH上lcd1602_show_string(8,0,"    ");delay_ms(100);buf[0]=sys_ctrl.phh/100+0x30;buf[1]=sys_ctrl.phh%100/10+0x30;buf[2]='.';buf[3]=sys_ctrl.phh%100%10+0x30;buf[4]='\0';lcd1602_show_string(8,0,buf);break;case 3://温度lcd1602_show_string(3,1,"    ");delay_ms(100);buf[0]=sys_ctrl.temph/100+0x30;buf[1]=sys_ctrl.temph%100/10+0x30;buf[2]='.';buf[3]=sys_ctrl.temph%100%10+0x30;buf[4]='\0';lcd1602_show_string(3,1,buf);break;case 4://浑浊lcd1602_show_string(13,1,"  ");delay_ms(100);lcd1602_show_nums(13,1,sys_ctrl.turbidh,2,0);break;	}}break;			}
}//系统数据设置
void sys_data_set(void)
{u8 key=0;static oneflag=0;key=key_scan(0);//模式设置if(key==KEY3_PRESS){sys_ctrl.mode++;if(sys_ctrl.mode>=5)sys_ctrl.mode=1;if(oneflag==0){oneflag=1;_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.temph++;if(sys_ctrl.temph>999)sys_ctrl.temph=0;break;case 4://浑浊 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.temph--;if(sys_ctrl.temph<0)sys_ctrl.temph=999;break;case 4://浑浊 sys_ctrl.turbidh--;if(sys_ctrl.turbidh<0)sys_ctrl.turbidh=99;break;}}//确定else if(key==KEY4_PRESS){sys_ctrl.mode=0;oneflag=0;sys_open_show();//系统开机界面显示		}	}
}//系统功能控制
void sys_fun_ctrl(void)
{//正常工作模式下if(sys_ctrl.mode==0){//温度高于上限,温度高指示,打开降温,蜂鸣器报警if(sys_ctrl.temp>sys_ctrl.temph){LED_TPH=0;JW_RELAY=0;beep_alarm(10,1000);}else{LED_TPH=1;JW_RELAY=1;}//浑浊高于上限,浑浊度高指示,蜂鸣器报警if(sys_ctrl.turbid>sys_ctrl.turbidh){LED_HZH=0;beep_alarm(10,1000);	}else{LED_HZH=1;}//PH高于上限,PH上限指示,蜂鸣器报警if(sys_ctrl.ph>sys_ctrl.phh){LED_PHH=0;beep_alarm(10,1000);}//PH低于下限,PH下限指示,蜂鸣器报警else if(sys_ctrl.ph<sys_ctrl.phl){LED_PHL=0;beep_alarm(10,1000);	}else{LED_PHH=1;LED_PHL=1;	}				}		
}

三、实验现象

B站演示视频:https://space.bilibili.com/444388619
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

联系作者

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

相关文章:

【Proteus仿真】【Arduino单片机】水质监测报警系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用按键、LED、蜂鸣器、LCD1602、ADC、PH传感器、浑浊度传感器、DS18B20温度传感器、继电器模块等。 主要功能&#xff1a; 系统运行后&#xf…...

随机问卷调查数据的处理(uniapp)

需求&#xff1a;问卷调查 1.返回的数据中包含单选、多选、多项文本框、单文本框、图片上传 2.需要对必填的选项进行校验 3.非必填的多项文本框内容 如果不填写 不提交 表单数据格式 res{"code": 0,"msg": null,"data": [{"executeDay&…...

开源分布式搜索引擎ElasticSearch结合内网穿透远程连接

文章目录 前言1. Windows 安装 Cpolar2. 创建Elasticsearch公网连接地址3. 远程连接Elasticsearch4. 设置固定二级子域名 前言 简单几步,结合Cpolar 内网穿透工具实现Java 远程连接操作本地分布式搜索和数据分析引擎Elasticsearch。 Cpolar内网穿透提供了更高的安全性和隐私保…...

Leetcode2928. 给小朋友们分糖果 I

Every day a Leetcode 题目来源&#xff1a;2928. 给小朋友们分糖果 I 解法1&#xff1a;暴力 枚举 3 位小朋友的糖果数&#xff0c;范围为 [0, limit]&#xff0c;分别记为 i、j、k。 当满足 i j k n 时&#xff0c;答案 1。 代码&#xff1a; /** lc appleetcode.c…...

go-zero开发入门之网关往rpc服务传递数据2

go-zero 的网关服务实际是个 go-zero 的 API 服务&#xff0c;也就是一个 http 服务&#xff0c;或者说 rest 服务。http 转 grpc 使用了开源的 grpcurl 库&#xff0c;当网关需要往 rpc 服务传递额外的数据&#xff0c;比如鉴权数据的时候&#xff0c;通过 http 的 header 进行…...

Cron介绍,以及常见的cron表达式

目录 一.cron介绍 1.什么是Cron&#xff1f; 2.Cron语法 时间字段的取值范围如下&#xff1a; 时间字段支持以下特殊字符&#xff1a; 下面是一些示例&#xff1a; 3.虚拟机安装cron(centos7展示) 二.常见的cron表达式 一.cron介绍 1.什么是Cron&#xff1f; Cron是一个…...

智能优化算法应用:基于协作搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于协作搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于协作搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.协作搜索算法4.实验参数设定5.算法结果6.…...

分布式训练通信NCCL之Ring-Allreduce详解

&#x1f380;个人主页&#xff1a; https://zhangxiaoshu.blog.csdn.net &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️&#xff0c;如有错误敬请指正! &#x1f495;未来很长&#xff0c;值得我们全力奔赴更美好的生活&…...

os_util 工具类和方法的实现

一、前置说明 总体目录&#xff1a;《从 0-1 搭建企业级 APP 自动化测试框架》上节回顾&#xff1a;在 init_appium_and_devices 的实现思路分析 小节中&#xff0c;分析了实现 init_appium_and_devices 的思路&#xff0c;梳理出了必要的工具类和方法。本节目标&#xff1a;完…...

uview表单校验带星号

uView表单校验带星号可以通过设置required属性来实现。在uView中&#xff0c;可以使用组件来实现表单校验&#xff0c;具体步骤如下&#xff1a; 1、在需要校验的表单元素上添加required属性&#xff0c;例如&#xff1a; <u-form :model"detailInfo" ref"d…...

vue+element实现动态表格:根据后台返回的属性名和字段动态生成可变表格

现有一个胡萝卜厂生产不同品种的胡萝卜&#xff0c;为了便于客户了解产品&#xff0c;现需在官网展示胡萝卜信息。现有的萝卜信息&#xff1a;编号&#xff08;id&#xff09;、名称&#xff08;name&#xff09;、保质期&#xff08;age&#xff09;、特点&#xff08;remark&…...

云渲染UE4像素流送搭建(winows、ubuntu单实例与多实例像素流送)

windows/ubuntu20.4下UE4.27.2像素流送 像素流送技术可以将服务器端打包的虚幻引擎应用程序在客户端的浏览器上运行&#xff0c;用户可以通过浏览器操作虚幻引擎应用程序&#xff0c;客户端无需下载虚幻引擎&#xff0c;本文实现两台机器通过物理介质网线实现虚幻引擎应用程序…...

Unity VR Pico apk安装失败:INSTALL_FAILED_UPDATE_INCOMPATIBLE

我的报错&#xff1a; PICO4企业版。安装apk&#xff0c;报错“安装失败。&#xff08;所属的Unity项目打包的apk&#xff0c;被我在同一台pico4安装了20次&#xff09; 调试方法&#xff1a; PIco4发布使用UNITY开发的Vr应用&#xff0c;格式为apk&#xff0c;安装的时候发生…...

Prompt 提示工程学习笔记

一、Prompt设计的四个关键要素&#xff1a; 任务描述、输入数据、上下文信息、提示风格 &#xff08;1&#xff09;任务描述&#xff1a;描述想要让LLM遵循的指令。描述应详细清晰&#xff0c;可进一步使用关键词突出特殊设置&#xff0c;从而更好地指导LLM工作。 &#xff0…...

STM32实现三个小灯亮

led.c #include"led.h"void Led_Init(void) {GPIO_InitTypeDef GPIO_VALUE; //???RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//???GPIO_VALUE.GPIO_ModeGPIO_Mode_Out_PP;//???? ????GPIO_VALUE.GPIO_PinGPIO_Pin_1|GPIO_Pin_2|GPIO_P…...

1861_什么是H桥

Grey 全部学习内容汇总&#xff1a; GitHub - GreyZhang/g_hardware_basic: You should learn some hardware design knowledge in case hardware engineer would ask you to prove your software is right when their hardware design is wrong! 1861_什么是H桥 H桥电路可以…...

【计算机四级(网络工程师)笔记】操作系统运行机制

目录 一、中央处理器&#xff08;CPU&#xff09; 1.1CPU的状态 1.2指令分类 二、寄存器 2.1寄存器分类 2.2程序状态字&#xff08;PSW&#xff09; 三、系统调用 3.1系统调用与一般过程调用的区别 3.2系统调用的分类 四、中断与异常 4.1中断 4.2异常 &#x1f308;嗨&#xff…...

Swagger快速入门

1、Swagger快速入门 1.1 swagger介绍 官网&#xff1a;https://swagger.io/ Swagger 是一个规范和完整的Web API框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 功能主要包含以下几点: A. 使得前后端分离开发更加方便&#xff0c;有利于团队协作…...

数据结构之<堆>的介绍

1.简介 堆是一种特殊的数据结构&#xff0c;通常用于实现优先队列。堆是一个可以被看作近似完全二叉树的结构&#xff0c;并且具有一些特殊的性质&#xff0c;根据这些性质&#xff0c;堆被分为最大堆&#xff08;或者大根堆&#xff0c;大顶堆&#xff09;和最小堆两种。 2.…...

使用Ubuntu22+Minikube快速搭建K8S开发环境

安装Vmware 这一步&#xff0c;可以参考我的如下课程。 安装Ubuntu22 下载ISO镜像 这里我推荐从清华镜像源下载&#xff0c;速度会快非常多。 下载地址&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04.3/ 如果你报名了我的这门视频课程&#xf…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...