【Proteus仿真】【STM32单片机】智能浴室水温调控仪设计

news2024/11/19 9:24:54

文章目录

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


一、功能简介

本项目使用Proteus8仿真STM32单片机控制器,使用LCD1602、DS18B20、继电器加热、电机模块等。

系统运行后,LCD1602显示DS18B20采集温度值、温度上限阈值。
开启加水,一段时间后开启加热,当水位到达后停止注水,继续
加热到设定温度,可通过K1、K2键对温度上限设置,
若检测温度大于或等于上限,关闭加热装置;
若温度低于上限,开启加热装置;

主要功能如下:
1、水温,水位实时检测
2、水温设定,超限关闭加热
3、继电器控制加热、注水
4、LCD1602液晶显示


二、软件设计

/*
作者:嗨小易(QQ:3443792007)
*/


//系统参数初始化
void sys_parm_init(void)
{
	//初始自动模式
	sys_ctrl.mode=0;
	//温度上限值
	sys_ctrl.temph=37;
	sys_ctrl.sign=0;//默认温度符号为正	
}

//开机界面显示
void sys_open_show(void)
{
	lcd1602_clear();
	lcd1602_show_string(0,0,"Temp:      C");
	lcd1602_show_string(0,1,"Set TH:  C");		
}

//系统参数设置
void sys_parm_set(void)
{
	u8 key=0;

	key=KEY_Scan(0);
	
	//温度上限设置
	if(key==KEY1_PRESS)//加	
	{
		sys_ctrl.temph+=THRESHOLD_STEP;
		if(sys_ctrl.temph>TEMP_MAX)sys_ctrl.temph=0;		
	}
	else if(key==KEY2_PRESS)//减	
	{
		sys_ctrl.temph-=THRESHOLD_STEP;
		if(sys_ctrl.temph<TEMP_MIN)sys_ctrl.temph=0;		
	}
}

//系统数据采集
void sys_data_get(void)
{
	static u8 i=0;

	while(1)
	{	
		i++;
		//间隔采集温度
		if(i%1==0)
		{
			sys_ctrl.temp=DS18B20_GetTemperture()*10;//放大10倍,保留小数点后1位
			if(sys_ctrl.temp<0)
			{
				sys_ctrl.sign=1;//负温度符号
				sys_ctrl.temp=-sys_ctrl.temp;
			}		
			else 
				sys_ctrl.sign=0;//正温度符号	
		}
				
		break;
	}
}

//系统数据显示
void sys_data_show(void)
{
	u8 buf[6];

	//正常界面显示温度
	while(1)
	{
		//温度符号显示
		if(sys_ctrl.sign==1)	
			lcd1602_show_num(5,0,'-',0);			
		else
			lcd1602_show_num(5,0,' ',0);	
		//温度显示
		buf[0]=sys_ctrl.temp/1000+0x30;
		if(buf[0]==0x30)buf[0]=' ';
		buf[1]=sys_ctrl.temp%1000/100+0x30;	
		if(buf[0]==' ' && buf[1]==0x30)buf[1]=' ';		
		buf[2]=sys_ctrl.temp%1000%100/10+0x30;
		buf[3]='.';
		buf[4]=sys_ctrl.temp%1000%100%10+0x30;
		buf[5]='\0';
		lcd1602_show_string(6,0,buf);

		//温度上限显示	
		lcd1602_show_nums(7,1,sys_ctrl.temph,2,1);

		break;	
	}		
}

//系统功能控制
void sys_fun_ctrl(void)
{
	static u8 flag=0;
	
	while(1)
	{
		//如果液位到达,停止加水
		if(YW_SWITCH==0 && flag==0)
		{
			delay_ms(10);
			if(YW_SWITCH==0)
			{
				ZS_RELAY(1);//停止加水
				flag=1;
			}
		}
		//如果温度到达设定温度,停止加热
		if(sys_ctrl.temp>=sys_ctrl.temph*10)
		{
			JR_RELAY(1);//停止加热
		}
		else
		{
			JR_RELAY(0);//开始加热
		}
		
		break;
	}		
}


//应用控制系统
void appdemo_show(void)
{
	u8 i=10;
	
	LED_Init();
	KEY_Init();
	lcd1602_init();
	DS18B20_Init();
	jr_zs_gpio_init();
	yw_switch_gpio_init();
	sys_parm_init();//系统参数初始化
	//等待温度数据稳定
	while(i--)
	{
		sys_ctrl.temp=DS18B20_GetTemperture()*10;
		delay_ms(100);	
	}
	sys_open_show();//系统开机显示
	ZS_RELAY(0);//开始加水
	delay_ms(2000);
	JR_RELAY(0);//开始加热

	while(1)
	{
		sys_data_get();//系统数据采集
		sys_data_show();//系统数据显示
		sys_parm_set();//系统参数设置
		sys_fun_ctrl();//系统功能控制	
	}
}



三、实验现象

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

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

在这里插入图片描述


联系作者

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/77381.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PostgreSQL实战之物理复制和逻辑复制(四)

目录 PostgreSQL实战之物理复制和逻辑复制&#xff08;四&#xff09; 4 流复制监控 4.1 pg_stat_replication 4.2 监控主备延迟 4.3 pg_stat_wal_receiver PostgreSQL实战之物理复制和逻辑复制&#xff08;四&#xff09; 4 流复制监控 4.1 pg_stat_replication 主库上主…

Dual-Path Fusion:遥感融合

DPFN: A Dual-Path Fusion Network for Pan-Sharpening &#xff08;一种用于泛锐化的双路径融合网络&#xff09; 大多数现有深上用于pan-sharpening方法的几个公认的问题&#xff0c;如光谱失真和足够的空间纹理增强。针对这些问题&#xff0c;提出了一种新的双路径融合网络…

浙大全日制英文MBA项目申请的五大关键词

2023级开始&#xff0c;浙大全日制英文MBA项目全面登场&#xff01;对于这个项目的了解&#xff0c;大多数考生还不是特别清楚&#xff0c;因为很多考生更加关注的是“全日制”而非英文MBA本身的情况&#xff0c;如果还是带着以往对中文全日制MBA项目的理解来申请这个项目&…

《Linux运维实战:使用Percona Server for MongoDB物理备份与恢复Mongodb数据》

一、备份与恢复方案 Percona Server for MongoDB 是一个免费的、增强的、完全兼容的、源代码可用的、带有企业级功能的MongoDB Community Edition的替代品。它不需要对MongoDB应用程序或代码进行更改。Percona Server for MongoDB支持版本 > 3.6 。 说明&#xff1a;当前环…

【通知】《生成对抗网络GAN原理与实践》代码开源,勘误汇总!

有三上个月出版了新书《生成对抗网络GAN&#xff1a;原理与实践》&#xff0c;Generative Adversarial Networks&#xff08;中文名生成对抗网络&#xff0c;简称GAN&#xff09;自从被提出来后&#xff0c;其发展就非常迅猛&#xff0c;几乎已经被应用于所有CNN可以使用的领域…

Js逆向教程21-vscode无环境联调

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; Js逆向教程21-vscode无环境联调 一、环境安装 电脑安装visual code 电脑安装node.js 二、nodejs环境调试 vscode打开一个文件夹并创…

valet-windows

现在win可以用valet了&#xff0c;安装开始 环境参考 1》安装PHP 版本7.4.32 2》安装composer 2.4 安装valet 1》composer global require cretueusebiu/valet-windows 2》valet install 3》这里有2中方法&#xff0c;本人选择link valet link [name] 浏览器中输入 name.te…

[附源码]计算机毕业设计健身房预约平台Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

20221210英语学习

今日新词&#xff1a; authorize v.授权, 批准 layoff n.临时解雇, 操作停止, 活动停止期间 jazz adj.爵士音乐的, 不调和的, (色彩等)花哨恶俗的 overlap v.&#xff08;与…&#xff09;交叠&#xff0c;部分重叠&#xff1b;时间交叠&#xff1b;有共同之处 subject n.…

Matlab中的数据类型

数据类型 MATLAB中的数据类型主要包括数值类型、逻辑类型、字符串、函数句柄、结构体和
单元数组类型。这6种基本的数据类型都是按照数组形式存储和操作的。另外&#xff0c;MATLAB
中还有两种用于高级交叉编程的数据类型&#xff0c;分别是用户自定义的面向对象的用户类类型…

【考研数据】二.2021年BJTU计算机学院考研录取数据分析

欢迎订阅本专栏:《北交计算机复试经验》 订阅地址:https://blog.csdn.net/m0_38068876/category_12110003.html 【考研数据】一.2020年BJTU计算机学院考研录取数据分析【考研数据】二.2021年BJTU计算机学院考研录取数据分析【考研数据】三.2022年BJTU计算机学院考研录取数据分…

web端 无插件 实时视频预览

一&#xff0c;需求 项目需要在web上对相机采集的图片进行编码成视频&#xff0c;然后进行实时预览。以前调研的方案有以下两种&#xff1a; 1&#xff0c;客户端安装ocx插件&#xff0c;浏览器调用插件进行解码&#xff0c;渲染。但是浏览器支持有限&#xff0c;只有ie支持&…

【建议收藏】五年程序员写给小白看的Python基础知识

32000字的长文&#xff0c;建议先收藏后阅读&#xff0c;如果能够点赞转发那就太感谢啦~ 话不多说&#xff0c;我们正式开始。 安装 Python 在开始学习 python 之前&#xff0c;我们先要安装 python。安装 python 的步骤根据不同的操作系统会有些差异&#xff0c;以下是几种…

TensorFlow之分类模型-3

1 基本概念 2 文本分类与情感分析 3 TF模型仓库的使用 本章节主要使用TensorFlow模型仓库与keras技术框架联合开发对IMDB数据集的机器学习&#xff0c;TensorFlow模型仓库提供模型直接下载使用&#xff0c;链接地址如下所示&#xff1a; https://hub.tensorflow.google.cn/ …

关于远程debug的一些事

首先&#xff0c;远程debug需要项目的启动&#xff0c;我这边采用的是docker构建镜像的方式&#xff0c;也可以使用传统jar包命令的方式&#xff1b;然后需要明确一个东西&#xff0c;就是远程debug暴露的端口不是项目端口&#xff0c;而是jvm端口。 这边给出我构建镜像使用的d…

Neodynamic JSPrintManager for Blazor

Neodynamic JSPrintManager for Blazor NeodynamicJSprintManager for Blazor是一个客户端打印和扫描方案&#xff0c;设计用于任何Blazor服务器和WebAssembly项目。通过编写纯.NET C#代码&#xff0c;JSPrintManager for Blazor允许您轻松地将原始数据、文本和本机命令以及已知…

一个简单的HTML网页——传统节日春节网页(HTML+CSS)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

JUC并发编程02——AQS源码剖析

1.AQS介绍 相信每个Java Coder 都使用过或者至少听说过AQS, 它是抽象队列同步器AbstractQueuedSynchronizer 的简称&#xff0c;在juc包下。它提供了一套可用于实现锁同步机制的标准框架&#xff0c;其维护了一个volatile修饰的共享变量state和 一个FIFO(先进先出)线程等待队列…

SpringBoot实战:整合Swagger3实现在线Api文档

Swagger-UI 是 HTML、Javascript、CSS 的一个集合&#xff0c;可以动态地根据注解生成在线 Api 文档&#xff1b;swagger-bootstrap-UI 则可以美化 swagger-ui&#xff0c;页面更清爽&#xff01;本篇就是实现 SpringBoot 整合 Swagger3 实现在线 Api 文档。 项目源码实现前分支…

物联网开发笔记(58)- 使用Micropython开发ESP32开发板之控制2.90寸电子墨水屏模块黑白套件

一、目的 这一节我们学习如何使用我们的ESP32开发板来控制2.90寸电子墨水屏模块&#xff08;黑白套件&#xff09;。 二、环境 ESP32 2.90寸 电子墨水屏模块 Thonny IDE 几根杜邦线 接线方法&#xff1a; 三、墨水屏驱动 此处注意注意&#xff1a;不同的型号、不同厂家的墨…