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

【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设计,视频分享,技术交流。

相关文章:

  • 城市内涝积水的原因有哪些?万宾科技内涝积水监测仪工作原理
  • JSON方法实现深拷贝存在的问题
  • 2022年12月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • JavaScript中的Math
  • Ionic组件 ion-list ion-list-header
  • Python中的Socket编程
  • scrapy发json的post请求
  • 双十一“静悄悄”?VR购物拉满沉浸式购物体验
  • C# OpenCvSharp 基于直线检测的文本图像倾斜校正
  • Python爬虫——入门爬取网页数据
  • Wix使用velo添加Google ads tag并在form表单提交时向谷歌发送事件
  • AI由许多不同的技术组成,其中一些最核心的技术如下
  • 【手动创建UIWindow Objective-C语言】
  • 使用 pubsub-js 进行消息发布订阅
  • Django——orm模块创建表关系
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • emacs初体验
  • JavaScript学习总结——原型
  • JavaScript中的对象个人分享
  • Java多态
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Redux 中间件分析
  • Solarized Scheme
  • spring boot 整合mybatis 无法输出sql的问题
  • springboot_database项目介绍
  • tweak 支持第三方库
  • 产品三维模型在线预览
  • 初识 webpack
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 服务器之间,相同帐号,实现免密钥登录
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 数据结构java版之冒泡排序及优化
  • 新版博客前端前瞻
  • 用 Swift 编写面向协议的视图
  • 责任链模式的两种实现
  • 【干货分享】dos命令大全
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • #100天计划# 2013年9月29日
  • #pragma data_seg 共享数据区(转)
  • (13)Hive调优——动态分区导致的小文件问题
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (汇总)os模块以及shutil模块对文件的操作
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)我也是一只IT小小鸟
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .net core Swagger 过滤部分Api
  • .net framework profiles /.net framework 配置
  • .Net Web窗口页属性
  • .NET 中 GetProcess 相关方法的性能