【TB作品】MSP430F5529 单片机,温度控制系统,DS18B20,使用MSP430实现的智能温度控制系统
作品功能
这个智能温度控制系统基于MSP430单片机设计,能够实时监测环境温度并根据预设的温度报警值自动调节风扇和加热片的工作状态。主要功能包括:
- 实时显示当前温度。
- 通过OLED屏幕显示温度报警值。
- 通过按键设置温度报警值。
- 实际温度超过报警值时,自动开启风扇。
- 实际温度低于报警值时,自动开启加热片。
硬件材料
- MSP430 单片机
- DS18B20 温度传感器
- OLED 显示屏
- 风扇
- 加热片
- 按键
电子元器件如何连接
-
DS18B20 温度传感器
- VCC 接 3.3V
- GND 接 GND
- DATA 接 P1.5
-
OLED 显示屏
- VCC 接 3.3V
- GND 接 GND
- SCL 接 P2.0
- SDA 接 P2.2
-
加热片
- VCC 接 3.3V
- GND 接 GND
- DATA 接 P2.3
-
风扇
- VCC 接 3.3V
- GND 接 GND
- DATA 接 P2.6
-
按键
- 按键1 接 P1.1 (板子上有)
- 按键2 接 P2.1 (板子上有)
代码讲解
初始化部分
初始化了OLED显示屏并在屏幕上设置了温度控制相关的汉字显示位置,同时配置了按键和传感器的端口。
WDTCTL = WDTPW + WDTHOLD; // Stop WDTOLED_Init(); // OLED初始化
// 第一排显示 "温度检测控制"
OLED_ShowCHinese(16 * 1, 0, 0);
OLED_ShowCHinese(16 * 2, 0, 1);
OLED_ShowCHinese(16 * 3, 0, 2);
OLED_ShowCHinese(16 * 4, 0, 3);
OLED_ShowCHinese(16 * 5, 0, 4);
OLED_ShowCHinese(16 * 6, 0, 5);// 第二排显示 "温度:"
OLED_ShowCHinese(16 * 0, 2, 6);
OLED_ShowCHinese(16 * 1, 2, 7);
OLED_ShowCHinese(16 * 2, 2, 8);// 第三排显示 "临界:"
OLED_ShowCHinese(16 * 0, 4, 9);
OLED_ShowCHinese(16 * 1, 4, 10);
OLED_ShowCHinese(16 * 2, 4, 11);// 显示临界值
display_num_oled(16 * 3, 4, Temp_critical_value);
主循环部分
在主循环中,系统会不断读取温度传感器的值并更新显示。如果按下按键1,增加临界值;按下按键2,减少临界值。根据当前温度和临界值的比较,自动控制风扇和加热片的开关。
while (1) {delay_ms(10);t = (t + 1) % 20;if (t == 1) {temperature = get_one_temperature(); // 读取温度display_num_oled(16 * 3, 2, temperature); // 显示温度}// 按键1:增加临界值if (!(P1IN & BIT1)) {while (!(P1IN & BIT1));if (Temp_critical_value < 400) {Temp_critical_value += 10;}display_num_oled(16 * 3, 4, Temp_critical_value); // 显示临界值}// 按键2:减少临界值if (!(P2IN & BIT1)) {while (!(P2IN & BIT1));if (Temp_critical_value > 20) {Temp_critical_value -= 10;}display_num_oled(16 * 3, 4, Temp_critical_value); // 显示临界值}// 温度控制逻辑if (temperature > (Temp_critical_value + 10)) {P2OUT |= BIT3; // 关闭加热片P2OUT &= ~BIT6; // 打开风扇OLED_ShowCHinese(16 * 0, 6, 14); // 显示"制冷"OLED_ShowCHinese(16 * 1, 6, 15); // 显示"制冷"} else if (temperature < (Temp_critical_value - 10)) {P2OUT &= ~BIT3; // 打开加热片P2OUT |= BIT6; // 关闭风扇OLED_ShowCHinese(16 * 0, 6, 12); // 显示"加热"OLED_ShowCHinese(16 * 1, 6, 13); // 显示"加热"} else {P2OUT |= BIT3; // 关闭加热片P2OUT |= BIT6; // 关闭风扇OLED_ShowString(0, 6, " ");}
}
全部代码
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2

相关文章:
【TB作品】MSP430F5529 单片机,温度控制系统,DS18B20,使用MSP430实现的智能温度控制系统
作品功能 这个智能温度控制系统基于MSP430单片机设计,能够实时监测环境温度并根据预设的温度报警值自动调节风扇和加热片的工作状态。主要功能包括: 实时显示当前温度。通过OLED屏幕显示温度报警值。通过按键设置温度报警值。实际温度超过报警值时&…...
立创小tips
立创小tips 原理图中 1-修改图纸属性 保存完,绘制原理图的界面就出现了,然后我们鼠标点击原理图的边缘变成红色就可以高边表格的属性了。 2-鼠标右键可以移动整个原理图 3-查看封装 点击任意一个元器件,在右侧就会显示封装属性ÿ…...
Html/HTML5常用标签的学习
课程目标 项目实战,肯定就需要静态网页。朝着做项目方式去学习静态网页。 01、编写第一个html工程结构化 cssjsimages/imgindex.html 归档存储和结构清晰就可以。 02、HTML标签分类 认知:标签为什么要分类,原因因为:分门别类…...
Tomcat 配置:一文掌握所有要点
引言 Apache Tomcat 是一个流行的开源 Java Servlet 容器和 Web 服务器,广泛用于开发和部署 Java Web 应用程序。正确配置 Tomcat 是确保其性能、安全性和稳定性的关键。本文将详细介绍 Tomcat 的各项配置,帮助您优化和管理 Tomcat 服务器。 一、Tomca…...
git 大文件上传失败 Please remove the file from history and try again.
根据提示执行命令 --- 查找到当前文件 git rev-list --objects --all | grep b24e74b34e7d482e2bc687e017c8ab28cd1d24b6git filter-branch --tree-filter rm -f 文件名 --tag-name-filter cat -- --all git push origin --tags --force git push origin --all --force...
骑砍2霸主MOD开发(14)-进击的巨人
一.巨人 sbyte boneIndex Skeleton.GetBoneIndexFromName(Mission.MainAgent.AgentVisuals.GetSkeleton().GetName(), "r_hand"); cp Mission.MainAgent.AgentVisuals.AddPrefabToAgentVisualBoneByRealBoneIndex("p_sword_a", boneIndex); float agent…...
Android 可拖拽的View,限制在父布局中随意拖拽;拖拽结束后可左右吸边;
实现方法一:自定义View 可随意拖动拖拽的View,限制拖动范围是父布局中; import android.content.Context; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.ViewGroup; …...
逐步更新动画混合参数(Blend)使其平滑地过渡到目标值
1.具体实现 逐步更新一个动画混合参数(Blend),使其平滑地过渡到目标值,可以实现角色动作的平滑过渡,比如从走路过渡到跑步。 private float currentBleng;private float targetBlend;public float accelerSpeed 5;//…...
【多模态/CV】图像数据增强数据分析和处理
note 多模态大模型训练前,图片数据处理的常见操作:分辨率调整、网格畸变、水平翻转、分辨率调整、随机crop、换颜色、多张图片拼接、相似图片检测并去重等 一、分辨率调整 from PIL import Image def resize_image(original_image_path, save_image_p…...
代码随想录——修建二叉搜素树(Leetcode669)
题目链接 递归 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …...
EasyExcel导出多个sheet封装
导出多个sheet 在需求中,会有需要导出多种sheet的情况,那么这里使用easyexcel进行整合 步骤 1、导入依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><d…...
【Python错误】:AttributeError: ‘generator‘ object has no attribute ‘next‘解决办法
【Python错误】:AttributeError: ‘generator’ object has no attribute next’解决办法 在Python中,生成器是一种使用yield语句的特殊迭代器,它允许你在函数中产生一个值序列,而无需一次性创建并返回整个列表。然而,…...
如何配置Feign以实现服务调试
1、引入依赖 在项目中,需要引入Spring Cloud OpenFeign的依赖。这通常是通过在pom.xml文件中添加相应的Maven依赖来完成的。例如: <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starte…...
pc之间的相互通信详解
如图,实现两台pc之间的相互通信 1.pc1和pc2之间如何进行通讯。 2.pc有mac和ip,首先pc1需要向sw1发送广播,sw1查询mac地址表,向router发送广播,router不接受广播,router的每个接口都有ip和mac,…...
Mongodb中字段的删除
学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第61篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。 本篇文章,探讨UPDATE中的操作符$unset。Mongodb数据插入后,开发人员使用$u…...
TP8 PHP 动态变量调用 (new $class())->$action($data)
动态: $class \app\table\model\Log; $action DataSave; $data [...]; // 假设这是你要保存的数据//class_exists和method_exists的检查,这段代码能够在尝试实例化类或调用方法之前,先验证类是否存在以及该类中是否存在指定的方法。如果类…...
理解JVM内存模型与Java内存模型(JMM)
理解JVM内存模型与Java内存模型(JMM) 在Java程序的运行过程中,内存管理和线程的同步是两个重要的概念。本文将深入探讨JVM内存模型(Java Virtual Machine Memory Model)和JMM(Java Memory Model࿰…...
鸿蒙OS初识
学习官网:https://www.harmonyos.com/cn/develop 准备 注册,安装软件(node:12, DevEco Studio): https://developer.harmonyos.com/cn/docs/documentation/doc-guides/software_install-0000001053582415#ZH-CN_TOP…...
发布自己的 npm 插件包:步骤与最佳实践
在 Node.js 的生态系统中,npm(Node Package Manager)是一个不可或缺的组成部分。npm 允许开发者创建、共享和使用各种库和插件。如果你有自己的 Node.js 插件或库,并且希望与全世界的其他开发者共享,那么发布到 npm 是…...
BubbleML: A Multiphase Multiphysics Dataset and Benchmarks for Machine Learning
我们使用以下六个分类标准: 研究方法: 这个标准根据如何收集和分析数据来区分研究方法。 实验研究,如参考文献[64]中的研究,涉及在受控环境中研究人员操纵变量并观察结果的物理实验。这种方法对于收集真实世界的数据很有价值,但可能成本高且耗时。模拟研究利用计算模型来模…...
HBuilderX + 极光推送踩坑实录:免费版为啥息屏收不到通知?手把手教你配置与避坑
HBuilderX与极光推送免费版避坑指南:破解息屏通知失效难题 早上八点,你的咖啡还没喝完,测试组的消息就炸开了锅——"昨晚推送的版本在息屏状态下根本收不到通知!"作为使用HBuilderX开发跨平台应用的团队,这个…...
PDF Arranger:开源PDF管理的终极解决方案,3分钟掌握高效文档处理技巧
PDF Arranger:开源PDF管理的终极解决方案,3分钟掌握高效文档处理技巧 【免费下载链接】pdfarranger Small python-gtk application, which helps the user to merge or split PDF documents and rotate, crop and rearrange their pages using an intera…...
玩转AI!用FastAPI+RAG轻松构建智能文档问答系统,代码、文档全公开!
在企业数字化转型的浪潮中,我们常遇到这样一个痛点:海量的业务文档、研究报告、技术手册堆积如山,当需要从中寻找某个特定答案时,员工往往要花费数小时甚至数天进行翻阅。这不仅是效率的浪费,更是知识资产沉睡的体现**…...
USB设备安全弹出工具终极指南:告别Windows繁琐移除,一键搞定所有存储设备
USB设备安全弹出工具终极指南:告别Windows繁琐移除,一键搞定所有存储设备 【免费下载链接】USB-Disk-Ejector A program that allows you to quickly remove drives in Windows. It can eject USB disks, Firewire disks and memory cards. It is a quic…...
VOOHU沃虎xJLSemi景略:智造时代通信基石-以太网接口PHY芯片
随着智能制造和工业物联网的高速发展,工业通信正朝着高速化、智能化的方向迈进。工业自动化设备需要实时、高效地传输大量数据,以实现精准控制和协同作业。 工业以太网现场总线凭借其高速率、高可靠性、兼容性强等优势成为工业通信的主流选择࿰…...
如何突破Cursor试用限制?3种创新方案全解析
如何突破Cursor试用限制?3种创新方案全解析 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Youve reached your trial request limit. / Too many free trial accounts used on this machine. Please upgrade to pro. We have this …...
ffmpegGUI:让FFmpeg视频处理技术大众化的跨平台图形界面工具
ffmpegGUI:让FFmpeg视频处理技术大众化的跨平台图形界面工具 【免费下载链接】ffmpegGUI ffmpeg GUI 项目地址: https://gitcode.com/gh_mirrors/ff/ffmpegGUI ffmpegGUI是一款基于FFmpeg核心技术开发的跨平台图形界面工具,旨在消除视频处理的技术…...
Maxwell16.0实战:如何用实验电流数据搞定电机仿真(附.tab文件制作技巧)
Maxwell16.0实战:实验电流数据驱动电机仿真的全流程解析 电机仿真作为现代工业设计的重要环节,其准确性直接影响产品性能评估。而将实测电流数据融入仿真流程,往往是工程师突破"理想模型"局限的关键一步。本文将系统性地拆解从实验…...
League Akari:终极英雄联盟自动化工具集——提升90%游戏效率的完整指南
League Akari:终极英雄联盟自动化工具集——提升90%游戏效率的完整指南 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit …...
HeadPose角度检测避坑指南:从原理到车载疲劳预警系统部署
HeadPose角度检测工程实战:车载疲劳预警系统的嵌入式部署精要 引言:当计算机视觉遇上行车安全 凌晨三点的高速公路上,一辆货运卡车正以80公里时速行驶。驾驶座上的王师傅眼皮开始不受控制地下垂,头部微微前倾——这个细微动作被安…...
