102-基于stm32单片机水质监测PH酸碱度检测系统Proteus仿真+程序源码

本文主要是介绍102-基于stm32单片机水质监测PH酸碱度检测系统Proteus仿真+程序源码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一:功能介绍

1、采用stm32单片机+LCD1602+PH传感器+浊度传感器+按键+蜂鸣器+电机,制作一个水质监测PH酸碱度检测系统;

2、通过按键设置水质PH值和水质浊度的浊度阈值;

3、当PH值或者浊度值超过设置阈值,蜂鸣器进行报警,自动开启电机进行换水;

4、LCD1602显示采集的PH值和浊度值、以及按键设置的超限阈值

二:仿真演示视频+程序简要讲解:(程序有中文注释,新手容易看懂)

102-基于stm32单片机水质监测PH酸碱度浑浊度检测系统Proteus仿真+程序源码+讲解视频

三:设计软件介绍

本设计使用C语言编程设计,程序代码采用keil5编写,程序有中文注释,新手容易看懂,仿真采用Proteus软件进行仿真演示视频使用的是Proteus8.9版本;资料包里有相关软件包,可自行下载安装。

四:程序打开方法

特别注意:下载资料包以后一定要先解压!(建议解压到桌面上,文件路径太深会导致程序打开异常),解压后再用keil5打开。

8b32099a7fbe9f04dcaeef46b5944fd6.png

a2db06604ffecd8439fb82cbe7e0ccfb.png

程序部分展示,有中文注释,新手容易看懂
//按键扫描,获取按键状态k1 = GPIO_ReadInputDataBit(GPIOC , GPIO_Pin_0);k2 = GPIO_ReadInputDataBit(GPIOC , GPIO_Pin_1);k3 = GPIO_ReadInputDataBit(GPIOC , GPIO_Pin_2);k4 = GPIO_ReadInputDataBit(GPIOC , GPIO_Pin_3);//表明按下 if(k1 == 0){K1Flag = 1;}else{//释放后进行响应if(K1Flag ){K1Flag = 0;PH++;if(PH>13) PH=13;    }}//表明按下 if(k2 == 0){K2Flag = 1;}else{//释放后进行响应if(K2Flag ){K2Flag = 0;PH--;if(PH<1) PH=1;}}  //表明按下  if(k3 == 0){K3Flag = 1;}else{//释放后进行响应if(K3Flag ){K3Flag = 0;ZD++;if(ZD>100) ZD=100;}}//表明按下  if(k4 == 0){K4Flag = 1;}else{//释放后进行响应if(K4Flag ){K4Flag = 0;ZD--;if(ZD<1) ZD=1;}}  
}
int main(void)
{int ADC_num1,ADC_num2;int temp1,temp2;GPIO_Configuration();//初始化ADC1_GPIO_Config();ADC_Config();     Init1602(); IO_out();WrByte1602(0,1,' '); //字符显示WrByte1602(0,2,'P'); WrByte1602(0,3,'H'); WrByte1602(0,4,'='); WrByte1602(1,1,' '); WrByte1602(1,2,'Z'); WrByte1602(1,3,'D'); WrByte1602(1,4,'='); WrByte1602(0,9,'S'); WrByte1602(0,10,'E'); WrByte1602(0,11,'T'); WrByte1602(0,12,'='); WrByte1602(1,9,'S'); WrByte1602(1,10,'E'); WrByte1602(1,11,'T'); WrByte1602(1,12,'=');   delay_ms(500);while(1){ADC_num1=Get_ADC(ADC_Channel_0);//读取PH度temp1=ADC_num1*15/4096;       ADC_num2=Get_ADC(ADC_Channel_1);//读取浊度temp2=ADC_num2*100/4096;WrByte1602(0,5,AsciiCode[temp1%1000/100]);//显示PHWrByte1602(0,6,AsciiCode[temp1%100/10]);WrByte1602(0,7,AsciiCode[temp1%10]);

:仿真文件(采用Proteus打开)

4bc98d7325f7a496686a650242e682b9.png

f1504375d59a33f18d9da5985c1a821b.png

02f3637026c6cd2cb5c565beb76245b2.png

六:资料清单展示(文件中包含的相关资料)

54704d8d5af9e80d4c7c27454e13b1a7.png

百度云盘资料下载链接

这篇关于102-基于stm32单片机水质监测PH酸碱度检测系统Proteus仿真+程序源码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/312661

相关文章

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

Spring 中 BeanFactoryPostProcessor 的作用和示例源码分析

《Spring中BeanFactoryPostProcessor的作用和示例源码分析》Spring的BeanFactoryPostProcessor是容器初始化的扩展接口,允许在Bean实例化前... 目录一、概览1. 核心定位2. 核心功能详解3. 关键特性二、Spring 内置的 BeanFactory

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac