stm32毕设分享 恒温箱控制系统(源码+硬件+论文)

2024-02-26 02:10

本文主要是介绍stm32毕设分享 恒温箱控制系统(源码+硬件+论文),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 0 前言
  • 1 主要功能
  • 2 硬件设计(原理图)
  • 3 核心软件设计
  • 4 实现效果
  • 5 部分关键代码
  • 6 最后


0 前言

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

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

🚩 毕业设计 单片机恒温箱控制系统(源码+硬件+论文)

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

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

🧿 项目分享:

https://gitee.com/sinonfin/sharing

在这里插入图片描述

1 主要功能

主要功能:将温度控制在一个范围内,恒定温度的作用。使用DS18B20采集温度,当温度过高时,会自动降温,当温度过低时,会自动升温。让温度一直恒定在设置的范围内。

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

  • 2.使用LCD1602实时显示当前温度值、温度上限值、温度下限值。

  • 3.使用DS18B20采集当前环境温度值。

  • 4.使用三个按键可任意调整上下限阀值。

  • 5.当温度超过了预设上下值时,蜂鸣器会自动报警,且会自动打开升温或降温的继电器,继电器会带动加热片加热或制冷片制冷。

在这里插入图片描述

2 硬件设计(原理图)

在这里插入图片描述

PCB电路图
在这里插入图片描述

3 核心软件设计

本保温箱的温控系统研究是基于51单片机及温度传感器DS18B20来设计的,温度测量范围0到99.9摄氏度,精度为0.1摄氏度,可见测量温度的范围广,精度高的特点。可设置上下限温度,默认上限温度为38℃、默认下限温度为5℃(通过程序可以更改上下限初始值)。报警值可设置范围:最低上限报警值等于当前下限报警值,最高下限报警值等于当前上限报警值。将下限报警值调为0时为关闭下限报警功能。开启相应的继电器工作时,有指示灯可以指示相应的加热和制冷。

在这里插入图片描述

系统温度控制,是根据当前系统温度对比温度的上、下限值。从而控制系统加温及降温的控制操作,如上图所示。并且通过蜂鸣器做报警提示处理,当温度超出温度上、下限时,蜂鸣器开始报警。

4 实现效果

在这里插入图片描述

5 部分关键代码

#include<reg52.h>
#include<LCD1602.h>	//引用1602头文件
#include<DS18B20.h>	// 引用18B20头文件
#include<EEPROM.h>	//引用掉电存储头文件sbit KEY1=P3^1;	   //定义按键
sbit KEY2=P3^2;	   
sbit KEY3=P3^3;	   sbit beep=P1^4;	   //定义蜂鸣器sbit jdq1=P1^0;	   //定义继电器1
sbit jdq2=P1^1;	   //定义继电器2bit key2_flag=0;
bit key3_flag=0;
bit key4_flag=0;
bit key5_flag=0;uchar xdata rec[36];
uchar sec1=0,sec2=0;	//定义按键长按延时变量
int DS;
char RH;
char RL;
uchar xdata rec_dat[16];
uchar i,j,nu;
uchar w=0;
uint tt,yy;
bit l=0;		//按键连按标志位
bit beep1=0;void key(void);
//-------------------延时函数--------------------------
void delay(uint z)	 //延时
{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);
}
//---------------------------------------------------void Timer0_Init() //初始化定时器  
{  tt=0;yy=0;TMOD=0x11;//设置定时器0为工作方式1TH0=(65536-10000)/256;TL0=(65536-10000)%256;TH1=(65536-10000)/256;TL1=(65536-10000)%256;EA= 1;//开总中断ET0=1;//开定时器0中断ET1=1;//开定时器1中断TR0=1;//启动定时器0TR1=1;//启动定时器1
}
//--------------掉电存储-------------------------
void write()
{SectorErase(0x2000); //扇区擦除byte_write (0x2001,RH);byte_write (0x2002,RL);}void read()
{RH=byte_read(0x2001);RL=byte_read(0x2002);}
//---------------------------------------------------//--------------温度显示界面-----------------------
void show1()
{LCD1602_write(0,0x80); LCD1602_writebyte("Temper:");	if(DS>=0){if((DS/1000%10)>0)LCD1602_write(1,0x30+DS/1000%10);elseLCD1602_writebyte(" "); if((DS/100%10)>=0&&(DS/1000%10)>0)LCD1602_write(1,0x30+DS/100%10);else if((DS/100%10)>0&&(DS/1000%10)<=0)LCD1602_write(1,0x30+DS/100%10);elseLCD1602_writebyte(" "); if((DS/10%10)>=0)LCD1602_write(1,0x30+DS/10%10);LCD1602_writebyte("."); LCD1602_write(1,0x30+DS%10);LCD1602_write(1,0xdf);  LCD1602_writebyte("C"); }		else if(DS*-1>=100){LCD1602_write(0,0x87);  //从lcd1602第一行第八个位置开始显示LCD1602_writebyte("-");if((DS*-1)/100%10>0)LCD1602_write(1,0x30+(DS*-1)/100%10);elseLCD1602_writebyte(" ");if(((DS*-1)/10%10)>=0&&((DS*-1)/100%10>0))LCD1602_write(1,0x30+(DS*-1)/10%10);else if(((DS*-1)/10%10)>0&&(DS*-1)/100%10<0)LCD1602_write(1,0x30+(DS*-1)/10%10);elseLCD1602_writebyte(" ");LCD1602_writebyte("."); LCD1602_write(1,0x30+(DS*-1)%10);LCD1602_write(1,0xdf);LCD1602_writebyte("C"); 	  }else{LCD1602_write(0,0x87);  //从lcd1602第一行第八个位置开始显示LCD1602_writebyte(" ");LCD1602_writebyte("-");LCD1602_write(1,0x30+(DS*-1)/10%10);LCD1602_writebyte("."); LCD1602_write(1,0x30+(DS*-1)%10);LCD1602_write(1,0xdf);LCD1602_writebyte("C"); 	}	LCD1602_write(0,0x80+0x40);LCD1602_writebyte("H:");LCD1602_write(0,0x80+0x49);LCD1602_writebyte("L:");if(RH>=0){LCD1602_write(0,0x80+0x42);if((RH/100%10)>0)LCD1602_write(1,0x30+RH/100%10);elseLCD1602_writebyte(" "); if((RH/10%10)>=0&&(RH/100%10)>0)LCD1602_write(1,0x30+RH/10%10);else if((RH/10%10)>0)LCD1602_write(1,0x30+RH/10%10);elseLCD1602_writebyte(" "); if((RH%10)>=0)LCD1602_write(1,0x30+RH%10);}if(RH<0){LCD1602_write(0,0x80+0x42);LCD1602_writebyte("-"); if(((RH*-1)/10%10)>0)LCD1602_write(1,0x30+(RH*-1)/10%10);elseLCD1602_writebyte(" ");if(((RH*-1)/10%10)>=0&&((RH*-1)/10%10)>0)LCD1602_write(1,0x30+(RH*-1)%10);elseLCD1602_write(1,0x30+(RH*-1)%10);  }if(RL>=0){LCD1602_write(0,0x80+0x4b);if((RL/100%10)>0)LCD1602_write(1,0x30+RL/100%10);elseLCD1602_writebyte(" "); if((RL/10%10)>=0&&(RL/100%10)>0)LCD1602_write(1,0x30+RL/10%10);else if((RL/10%10)>0)LCD1602_write(1,0x30+RL/10%10);elseLCD1602_writebyte(" "); if((RL%10)>=0)LCD1602_write(1,0x30+RL%10);	}if(RL<0){LCD1602_write(0,0x80+0x4b);LCD1602_writebyte("-"); if(((RL*-1)/10%10)>0)LCD1602_write(1,0x30+(RL*-1)/10%10);elseLCD1602_writebyte(" ");if(((RL*-1)/10%10)>=0&&((RL*-1)/10%10)>0)LCD1602_write(1,0x30+(RL*-1)%10);elseLCD1602_write(1,0x30+(RL*-1)%10);  }
}		 		 
//---------------------------------------------------

6 最后

包含内容
在这里插入图片描述

🧿 项目分享:

https://gitee.com/sinonfin/sharing

这篇关于stm32毕设分享 恒温箱控制系统(源码+硬件+论文)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

OpenCV在Java中的完整集成指南分享

《OpenCV在Java中的完整集成指南分享》本文详解了在Java中集成OpenCV的方法,涵盖jar包导入、dll配置、JNI路径设置及跨平台兼容性处理,提供了图像处理、特征检测、实时视频分析等应用... 目录1. OpenCV简介与应用领域1.1 OpenCV的诞生与发展1.2 OpenCV的应用领域2

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

Python虚拟环境与Conda使用指南分享

《Python虚拟环境与Conda使用指南分享》:本文主要介绍Python虚拟环境与Conda使用指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python 虚拟环境概述1.1 什么是虚拟环境1.2 为什么需要虚拟环境二、Python 内置的虚拟环境工具

Python处理大量Excel文件的十个技巧分享

《Python处理大量Excel文件的十个技巧分享》每天被大量Excel文件折磨的你看过来!这是一份Python程序员整理的实用技巧,不说废话,直接上干货,文章通过代码示例讲解的非常详细,需要的朋友可... 目录一、批量读取多个Excel文件二、选择性读取工作表和列三、自动调整格式和样式四、智能数据清洗五、

JDK9到JDK21中值得掌握的29个实用特性分享

《JDK9到JDK21中值得掌握的29个实用特性分享》Java的演进节奏从JDK9开始显著加快,每半年一个新版本的发布节奏为Java带来了大量的新特性,本文整理了29个JDK9到JDK21中值得掌握的... 目录JDK 9 模块化与API增强1. 集合工厂方法:一行代码创建不可变集合2. 私有接口方法:接口

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

电脑系统Hosts文件原理和应用分享

《电脑系统Hosts文件原理和应用分享》Hosts是一个没有扩展名的系统文件,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应... Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应