【Proteus仿真】【STM32单片机】便携式恒温箱设计

2023-10-31 10:12

本文主要是介绍【Proteus仿真】【STM32单片机】便携式恒温箱设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

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


一、功能简介

本项目使用Proteus8仿真STM32单片机控制器,使用报警模块、LCD1602显示模块、DS18B20温度模块、加热制冷模块、按键模块、HC05蓝牙模块等。

主要功能:
系统运行后,LCD1602显示传感器检测的温度值;
可通过按键K3设置恒定温度,K1和K2进行加减调节,恒定温度范围是0-10,设定好后可再次按下K3保存。系统会根据当前温度与目标温度比对,通过PID算法控制加热或制冷工作。若温度高于报警上限或低于报警下限值则蜂鸣器报警。检测温度会实时将数据通过串口传输到手机终端显示。


二、软件设计

/*
作者:嗨小易(QQ:3443792007)*///系统数据显示
void sys_data_show(void)
{u8 buf[6];u16 temp=sys_ctrl.temp;static u8 i=0;while(1){//温度显示if(sys_ctrl.temp>=0){buf[0]=' ';	}else {temp=-sys_ctrl.temp;buf[0]='-';	}buf[1]=temp/100+0x30;buf[2]=temp%100/10+0x30;buf[3]='.';buf[4]=temp%100%10+0x30;buf[5]='\0';lcd1602_show_string(5,0,buf);//温度阈值显示lcd1602_show_nums(8,1,sys_ctrl.temph,2,0);//阈值闪烁指示if(sys_ctrl.mode!=0){lcd1602_show_string(8,1,"  ");delay_ms(50);lcd1602_show_nums(8,1,sys_ctrl.temph,2,0);}//串口终端输出i++;if(i%20==0){USART1_SendString("\r\n当前温度:");USART1_SendString(buf);USART1_SendString("°C\r\n");}	break;			}
}//系统数据设置
void sys_data_set(void)
{u8 key=0;key=KEY_Scan(0);//阈值模式设置if(key==KEY3_PRESS){sys_ctrl.mode=!sys_ctrl.mode;}//阈值设置模式下,K1和K2加减if(sys_ctrl.mode!=0){//加if(key==KEY1_PRESS){sys_ctrl.temph++;if(sys_ctrl.temph>10)sys_ctrl.temph=0;pid.target_val=sys_ctrl.temph;}//减else if(key==KEY2_PRESS){sys_ctrl.temph--;if(sys_ctrl.temph<0)sys_ctrl.temph=10;pid.target_val=sys_ctrl.temph;}	}
}//系统功能控制
void sys_fun_ctrl(void)
{float duty;
//	u8 buf[4];
//	u8 temp=0;//在正常运行模式下if(sys_ctrl.mode==0){sys_ctrl.pid_val=(float)sys_ctrl.temp/10;//PID调节sys_ctrl.pid_val=pid_realize(sys_ctrl.pid_val);if(sys_ctrl.pid_val>=0){sys_ctrl.flag=0;duty=sys_ctrl.pid_val;}else {sys_ctrl.flag=1;duty=-sys_ctrl.pid_val;	}
//		//观察PID调节值
//		temp=duty;
//		buf[0]=temp/100+0x30;
//		buf[1]=temp%100/10+0x30;
//		buf[2]=temp%100%10+0x30;
//		buf[3]='\0';
//		USART1_SendString("\r\nPID值:");
//		USART1_SendString(buf);
//		USART1_SendString("\r\n");//升温PWM调节if(sys_ctrl.flag==0){TIM_SetCompare2(TIM2,duty);TIM_SetCompare3(TIM2,0);}//降温PWM调节else{TIM_SetCompare3(TIM2,duty);TIM_SetCompare2(TIM2,0);}//如果温度高于报警上限,或低于报警下限,蜂鸣器报警if(sys_ctrl.temp>=ALARM_TEMP_MAX*10 || sys_ctrl.temp<=ALARM_TEMP_MIN*10){beep_alarm(1,1000);}}	
}//应用控制系统
void appdemo_show(void)
{u8 i=10;sys_parm_init();//系统参数初始化KEY_Init();BEEP_Init();DS18B20_Init();lcd1602_init();//LCD1602初始化pwm_init(100-1,800-1);//读取温度数据,等待稳定while(i--){sys_ctrl.temp=DS18B20_GetTemperture()*10;delay_ms(100);	}USART1_Init(9600);sys_open_show();//系统开机界面显示while(1){sys_data_get();//系统数据获取sys_data_show();//系统数据显示sys_data_set();//系统数据设置sys_fun_ctrl();//系统功能控制		}
}

三、实验现象

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

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


联系作者

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

这篇关于【Proteus仿真】【STM32单片机】便携式恒温箱设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

便携式气象仪器的主要特点

TH-BQX9】便携式气象仪器,也称为便携式气象仪或便携式自动气象站,是一款高度集成、低功耗、可快速安装、便于野外监测使用的高精度自动气象观测设备。以下是关于便携式气象仪器的详细介绍:   主要特点   高精度与多功能:便携式气象仪器能够采集多种气象参数,包括但不限于风速、风向、温度、湿度、气压等,部分高级型号还能监测雨量和辐射等。数据采集与存储:配备微电脑气象数据采集仪,具有实时时钟、数据存

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

SprinBoot+Vue网络商城海鲜市场的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者,全网30w+

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD