【Proteus仿真】【51单片机】水质监测报警系统设计
文章目录
- 一、功能简介
- 二、软件设计
- 三、实验现象
- 联系作者
一、功能简介
本项目使用Proteus8仿真51单片机控制器,使用按键、LED、蜂鸣器、LCD1602、PCF8591 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仿真】【51单片机】水质监测报警系统设计
文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器,使用按键、LED、蜂鸣器、LCD1602、PCF8591 ADC、PH传感器、浑浊度传感器、DS18B20温度传感器、继电器模块等。 主要功能: 系统运行后&…...
TensorFlow2.0教程3-CNN
` 文章目录 基础CNN网络读取数据卷积层池化层全连接层模型配置模型训练CNN变体网络简单的深度网络添加了其它功能层的深度卷积NIN网络文本卷积基础CNN网络 读取数据 import numpy as np import tensorflow as tf import tensorflow.keras as keras import tensorflow.keras.la…...
flink1.18.0 sql-client报错
报错 Flink SQL> > > select * from t1; [ERROR] Could not execute SQL statement. Reason: java.lang.ClassNotFoundException: org.apache.kafka.clients.consumer.OffsetResetStrategy 解决 注意 一定要重启flink服务 否则还会报错: Flink SQL> select *…...
基于ssm的校园快递物流管理系统(java+jsp+ssm+javabean+mysql+tomcat)
博主24h在线,想要源码文档部署视频直接私聊,9.9拿走! 基于javawebmysql的ssm校园快递物流管理系统(javajspssmjavabeanmysqltomcat) 运行环境: Java≥8、MySQL≥5.7、Tomcat≥8 开发工具: eclipse/idea/myeclipse/s…...
C++:this指针和构造与析构的运用
目录 一,this指针 二,构造函数 三,析构函数 四,析构与构造的调用 一,this指针 首先,我们先观察以下类: #include <iostream> using namespace std; class Date { public: void In…...
通用工作站设计方案 :807-ORI-S3R500 -多路PCIe3.0的单CPU通用工作站
ORI-S3R500 -多路PCIe3.0的单CPU通用工作站 (研华工业计算机IPC-610,IPC940 升级款) 一、机箱功能和技术指标: 系统 系统型号 ORI-SR500 主板支持 EEB(12*13)/CEB(12*10.5)/ATX(12*9.6)/Mi cro ATX 前置硬盘 最大支持2个3.5寸1个2.5寸SATA …...
机器学习写代码时遇到的问题(23.11.9)
AttributeError: module ‘backend_interagg‘ has no attribute ‘FigureCanvas‘ 导包的时候改一下 import matplotlib matplotlib.use(TkAgg) import matplotlib.pyplot as plt UserWarning: Glyph 27425 (\N{CJK UNIFIED IDEOGRAPH-6B21}) missing from current font. …...
C#学习系列之事件
C#学习系列之事件 前言事件发布者和订阅者事件触发和注册事件声明事件订阅事件触发使用 总结 前言 基础学习。 事件 发布者和订阅者 发布者:通知某件事情发生的。 订阅者:对某件事情关注的。 事件触发和注册 触发:事件发生就通知所有关…...
list部分接口模拟实现(c++)
List list简介list基本框架list构造函数list_node结构体的默认构造list类的默认构造 push_back()iteartor迭代器迭代器里面的其他接口const迭代器通过模板参数实现复用operator->() insert()erase()clear()析构函数迭代器区间构造拷贝构造operator() list简介 - list可以在…...
数据结构(C语言) 实验-栈与字符串
删除子串 字符串采用带头结点的链表存储,设计算法函数void delstring(linkstring s, int i,int len) 在字符串s中删除从第i个位置开始,长度为len的子串。 void delstring(linkstring s, int i, int len) {linkstring p,q,r;int cnt 1;p s->next;wh…...
xLua Lua访问C#注意事项(七)
调用成员方法 注意:调用成员方法,第一个参数需要传该对象,建议用冒号语法 loacl camera CS.UnityEngine.GameObject.Find("Main Camera") --冒号语法 camera:GetComponent("Camera") --点语法 camera.GetComponent(camera,"…...
vue3+antv2.x的画布
报错信息: TypeError: Cannot destructure property component of registry_1.shapeMaps[node.shape] as it is undefined. at VueShapeView.renderVueComponent (http://192.168.10.35:9029/node_modules/.vite/deps/antv_x6-vue-shape.js?v49fbfab0:5569:19…...
Docker部署ubuntu1804镜像详细步骤
Docker部署ubuntu1804镜像详细步骤 ubuntu镜像库地址:https://hub.docker.com/_/ubuntu/tags?page1&ordering-name 拉取镜像(默认为最新版本): docker pull ubuntu或,拉取指定版本镜像: docker pull…...
mac 卸载第三方输入法
输入法设置里的移除,并不是真的卸载,点击还是能添加回来 在活动监视器里强制退出此输入法在访达界面使用快捷键 ShiftcommandG在弹出的对话框内输入以下路径(/资源库/Input Methods),再点击下面的前往找到你要卸载的输…...
可观察性在软件测试中的重要性
当今应用生态系统的需求和加速的数字化转型使可观察性成为人们关注的焦点。可观察性提供了对应用程序行为和技术生态系统的深入可见性,并支持更快、更明智的决策。由于缺乏可观察性,软件开发团队倾向于对生产系统行为、潜在性能瓶颈或未来故障场景做出假…...
Delphi TCP服务端监听端口获取客户端RFID网络读卡器上传的刷卡数据
本示例使用设备介绍:液显WIFI无线网络HTTP协议RFID云读卡器可编程实时可控开关TTS语-淘宝网 (taobao.com) unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ComCtrls, ScktComp, StdCtrls, ScktCom…...
javaSE学习笔记(一)概述、语法
目录 前言 一、概述 1.java语言发展史 2.Java语言版本 3.Java语言平台 4.Java语言特点 5.Java语言跨平台原理-可移植性 6.JRE和JDK的概述 7.JDK的下载和安装 7.1安装的细节 7.2可能出现的问题 7.3验证安装是否成功 8.JDK安装路径下的目录解释 9.path环境变量的作…...
接口开发之使用C#插件Quartz.Net定时执行CMD任务工具
C#制作定时任务工具执行CMD命令 概要准备知识点实现原理thinkphp配置winform执行CMD命令读取ini配置文件定时任务Quartz.Net 完整代码Job.csIniFunc.csForm1.csconfig.ini简易定时任务工具雏形 概要 很多时候写接口上线后还会遇到很多修改,类似JAVA,C#,delphi制作的…...
XSS脚本(存储型xss获取肉鸡的cookies)
XSS脚本(存储型xss获取肉鸡的cookies) 存储型XSS就是在能够提交上传的文本框中提交一些标签代码,这段代码被插入到页面中,肉鸡每次点击这个页面时都会有弹框弹出。(只要点击就会弹框) 反射性XSS顾名思义插入…...
【React】04.MVC模式和MVVM模式
React是Web前端框架 1、目前市面上比较主流的前端框架 ReactAngular(NG框架)Vue 主流的思想: 不在直接去操作DOM,而是改为“数据驱动思想” 操作DOM思想: 操作DOM比较消耗性能[主要原因就是,可能会导…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
