嵌入式毕设分享 STM32智能饮水机控制系统(源码+硬件+论文)


0 前言

🔥
这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

🚩 毕业设计 STM32的智能饮水机控制系统(源码+硬件+论文)

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:3分
  • 创新点:4分

🧿 项目分享:

https://gitee.com/sinonfin/sharing

在这里插入图片描述

1 主要功能

主要功能: 使用STM32为主控制器,LCD1602显示当前信息:水温、模式、设置水温。DS18b20检测当前饮水机水温,水位传感器检测是否有水,无水情况下蜂鸣器发出声光报警,且所有功能停止(防干烧)并显示:Water!(提醒加水)。

  • 1.使用STM32F103C8T6单片机做主控制器。

  • 2.使用LCD1602显示采集到的水温、模式、设置水温值。

  • 3.使用DS18b20检测当前饮水机水温值。

  • 4.使用水位传感器检测是否有水。

  • 5.使用继电器控制加热片加热和水泵出水。

  • 6.当无水的情况下,蜂鸣器进行声光报警提醒,并且停止所有的功能,直到检测到有水。

  • 7.四个按键分别对应:加热、出水,温度加、温度减的功能。

  • Normal:常温模式

  • Water:缺水警告

  • Hot:加热模式

  • open:水泵出水

1 设计方案

在这里插入图片描述

(1)整体方案的设计

方案所选择的芯片,在便于操作的基础上,要能够实现控制设计任务的基本要求。本文设计的智能饮水机是采用STM32F103C8T6单片机作为主控芯片,通过、DS18B20温度传感器、Water Sensor水位传感器、继电器控制、LCD1602显示、蜂鸣器报警以等功能。

(2)设计方案原理

本设计的软件设计主要包括系统主程序以及液位采集子程序、温度设定子程序等设计。整个系统程序采用模块化结构设计,程序相对比较优化易修改,调试系统软件的开发是用C语言编程实现的。

通过软件编程使单片机通过控制不同的工作模块来控制饮用水的水温,利用LM3939传感器完成将水位数据传输入单片机,通过DS18B20温度传感器将水温信息输入单片机,输入的信息经过单片机的处理经LCD1602显示器直观的显示出来。工作的模式通过按键来控制,将按键产生的高低电平的变化输入单片机,发出相应的程序,进入相应的工作模式。通过Keil C编程将各模块衔接成整体并实现各模块之间的逻辑控制。

2 硬件设计

根据系统要求及上面几个硬件设计原则,确定系统硬件原理图。系统以单片机STM32F103C8T6为中央处理单元、蜂鸣器报警、LCD液晶显示、按键设置,LM393比较器判断、DS18B20温度采集、水位传感器、继电器控制原理图如3-1所示:下面对主要的电路设计做详细介绍。系统以单片微型计算机为核心外加多种接口电路组成如图所示

在这里插入图片描述

3 软件部分设计

软件部分的主要任务是完成对整个设计的流程进行处理。首先STM32单片机进行引脚的配置,配置各个模块使用的引脚后来进行初始化,首先 DS18B20温度传感器获取当前温度,液晶初始化完成后显示当前的信息和参数,最后程序开始判断,如果饮水机内无水蜂鸣器就会进行报警提醒,防干烧。有水的情况下进行判断是常温模式还是加热模式,如果是常温就直接控制继电器进行出水,如果是加热模式判断温度是否低于下限如果低于下限先加热在控制继电器进行出水基于上述分析,系统软件设计流程如图4-2所示。各功能的控制。系统主流图如图所示。

在这里插入图片描述

4 关键代码

#include "sys.h"
#include "delay.h"
#include "lcd1602.h"
#include "ds18b20.h"
#include "gpio.h"

u8 mode=0;//ģʽ������0�dz���ģʽ��1�Ǽ���ģʽ
u8 setTemp=40;//���õ��¶�ֵ
u8 openFlag=0;//��ˮ��־

void keyscan(void)
{
	if(KEY1 == 0)//ģʽ�л�����
	{
	 	delay_ms(10);//����
		if(KEY1 == 0)
		{
		 	while(KEY1 == 0);//�ȴ������ɿ�
			mode=!mode;
			if(mode==0)LCD_Write_String(10,0,"Normal");
			else       LCD_Write_String(10,0," Hot  ");
		}
	}
	if(KEY2 == 0 && WATER_LEVEL)//��ˮ����
	{
	 	delay_ms(1);
		if(KEY2 == 0)
		{
			 RELAY2 = 1;
			 if(openFlag==0)
			 {
				  openFlag=1;
					LCD_Write_String(10,1," open ");//��ʾopen
			 }
		}
	}
	else
	{
		  if(openFlag==1)
		  {
				openFlag=0;
				LCD_Write_String(10,1,"      ");
		  }
		  RELAY2 = 0;
	}
	if(KEY3 == 0)//�Ӽ�
	{
	 	delay_ms(10);
		if(KEY3 == 0 )
		{
		 	while(KEY3 == 0);
			if(setTemp<99)setTemp++;
			LCD_Write_Char(4,1,setTemp/10+0x30);//��ʾ���õ��¶�
		  LCD_Write_Char(5,1,setTemp%10+0x30);
		}
	}
	if(KEY4 == 0)//����
	{
	 	delay_ms(10);
		if(KEY4 == 0 )
		{
		 	while(KEY4 == 0);
			if(setTemp>0)setTemp--;
			LCD_Write_Char(4,1,setTemp/10+0x30);//��ʾ���õ��¶�
		  LCD_Write_Char(5,1,setTemp%10+0x30);
		}
	}
}

int main(void)
{	
	  u16 timeCount=200;
	  u16 temperature=0;
	  u8 shanshuo=0;
	
		delay_init();	    //��ʱ������ʼ��	  
		delay_ms(500);       //�ϵ�˲�����һ����ʱ�ڳ�ʼ��
	  DS18B20_GPIO_Init(); //ds18b20���ų�ʼ��
	  DS18B20_Init();			//��ʼ��DS18B20
	  KEY_AND_RELAY_GPIO_Init();
		LCD_Init();         //��Ļ��ʼ��
	  LCD_Write_String(0,0,"TEM:00 C  Normal");//��ʾ�ַ���
	  LCD_Write_String(0,1,"SET:00 C        ");
	  LCD_Write_Char(6,0,0xDF);
	  LCD_Write_Char(6,1,0xDF);
	  LCD_Write_Char(4,1,setTemp/10+0x30);//��ʾ���õ��¶�
		LCD_Write_Char(5,1,setTemp%10+0x30);
		while(1)
		{  
			 keyscan();//����ɨ��
			 if(timeCount++>=300)//��ʱһ��ʱ�䣬��ʱ���300ms
			 {
					 timeCount=0;
				   shanshuo = !shanshuo;
				 
				   temperature=ReadTemperature();//��ȡ�¶�
					 LCD_Write_Char(4,0,temperature/10+0x30);//��ʾ�¶�
					 LCD_Write_Char(5,0,temperature%10+0x30);
				   if(!WATER_LEVEL && shanshuo)//ȱˮʱ���������εεε��죬Һ����˸��ʾ
					 {
						   LCD_Write_String(10,1,"Water!");
						   BEEP = 1;
					 }
					 else
					 {
							 if(openFlag==0)LCD_Write_String(10,1,"      ");
						   BEEP = 0;
					 }
					 if(WATER_LEVEL && mode==1 && temperature<setTemp)//����ˮ��״̬�²����Ǽ���ģʽ�¶ȵ�������ֵ������ִ�м���
					 {
							 RELAY1 = 1;			
					 }
					 else
					 {
						   RELAY1 = 0;		//����ر�	
					 }
			 }	
       delay_ms(1);
		}	
}


5 最后

在这里插入图片描述
🧿 项目分享:

https://gitee.com/sinonfin/sharing

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于STM32的智慧仓库管理系统源码实现了仓库的物品入库、出库、查询和统计等功能。该系统采用了模块化设计,使得系统的扩展性和维护性更为优秀。主要的硬件部分包括STM32单片机、数码管显示器、红外遥控器等。 该系统的主要功能包括管理员的权限管理、物品的入库和出库以及相关的操作记录、对物品状态的查询、物品的报废和损坏以及实时的库存统计等。系统还具备了一些额外的功能,如遇到非法操作时将会自动报警,同时还可以通过远程监控实时了解仓库的状态。 该系统的实现不仅提高了仓库管理的效率,还为公司的管理工作提供了更可靠和安全的保障。此外,该系统的开源代码也为后续的开发和拓展提供了重要的借鉴和参考。 基于STM32的智慧仓库管理系统源码将现代化智能技术应用于仓库管理这一传统行业,具有很大的商业前景和实际应用的价值。随着物联网和工业4.0时代的到来,该系统还可以为更高级别的智能制造和物流管理提供一个创新的方案。 ### 回答2: 基于STM32的智慧仓库管理系统源码是一种基于嵌入式系统的自动化仓储解决方案,具有智能化、自动化、高效性等特点。该系统源码是学生毕业设计的产物,可以帮助企业更好地管理其仓储业务,提高物料质量的控制,优化仓储物流,减少费用和减少人力资源的使用。 该系统源码结构对于初学者比较简单,在调试时也方便人们进行查找异常问题。整个系统分为硬件和软件两部分。硬件方面,该系统主要采用STM32系列单片机,具有强大的计算能力、大容量存储空间、高速数据传输、多种通信接口等优点。软件方面,该系统采用的是C语言编写的代码,拥有灵活性和可扩展性。 系统源码主要实现了智慧仓库的多项管理功能,例如货物的入库、出库、转移等操作,对数据的实时监测和记录,实现了多种数据交换方式。该系统的可视化操作页面,用户可以通过Web管理平台进行远程控制和监视,使仓库管理工作更简单、高效、精确。 总而言之,基于STM32的智慧仓库管理系统源码可以帮助企业实现更加智能化的仓储管理,有助于仓库管理工作的合理性和高效性,满足企业对于物流仓储的改进和高效化要求,是一款非常值得使用和深入研究的物流管理工具。 ### 回答3: 基于STM32的智慧仓库管理系统源码是一款基于STM32智能仓库管理软件,主要用于实现仓库内货物的管理、仓库设备的监控、货物的入库和出库等功能。 该仓库管理系统的源码包含了主控程序以及各种驱动程序、界面程序和通讯程序。主控程序是整个系统的核心,它通过各个设备的驱动程序控制各个设备的运行,实现对整个仓库的监控和管理。驱动程序包括温湿度传感器驱动、RFID读卡器驱动、LCD显示屏驱动等。界面程序用于与人机交互,显示当前仓库的货物信息、设备运行状态等信息。通讯程序实现了与服务器之间的通讯,可以将仓库内的信息传输到服务器上进行分析和处理。 该仓库管理系统源码的开发需要具备一定的嵌入式开发和通信协议的基础。另外,开发人员需要具备一定的项目管理和编码规范的意识,以保证源码的可维护性和可扩展性。 综上所述,基于STM32的智慧仓库管理系统源码是一款实用的仓库管理软件,它的开发需要具备一定的专业技能和开发经验。在未来的自动化仓库管理中,该软件将有着广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值