【TB作品】MSP430F5529 单片机,温度控制系统,DS18B20,使用MSP430实现的智能温度控制系统

作品功能

这个智能温度控制系统基于MSP430单片机设计,能够实时监测环境温度并根据预设的温度报警值自动调节风扇和加热片的工作状态。主要功能包括:

  1. 实时显示当前温度。
  2. 通过OLED屏幕显示温度报警值。
  3. 通过按键设置温度报警值。
  4. 实际温度超过报警值时,自动开启风扇。
  5. 实际温度低于报警值时,自动开启加热片。

硬件材料

  1. MSP430 单片机
  2. DS18B20 温度传感器
  3. OLED 显示屏
  4. 风扇
  5. 加热片
  6. 按键

电子元器件如何连接

  1. DS18B20 温度传感器

    • VCC 接 3.3V
    • GND 接 GND
    • DATA 接 P1.5
  2. OLED 显示屏

    • VCC 接 3.3V
    • GND 接 GND
    • SCL 接 P2.0
    • SDA 接 P2.2
  3. 加热片

    • VCC 接 3.3V
    • GND 接 GND
    • DATA 接 P2.3
  4. 风扇

    • VCC 接 3.3V
    • GND 接 GND
    • DATA 接 P2.6
  5. 按键

    • 按键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

在这里插入图片描述

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

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

相关文章

【经验分享】嵌入式入坑经历(选段)

文章目录 你现在的工作中所用到的专业知识有哪些呢&#xff1f;为什么想转行了&#xff1f;后来为什么从事了嵌入式行业呢?你对嵌入式的兴趣是何时培养起来的?你是怎么平衡兴趣爱好和工作的关系的?平时做的事情对你现在的工作有哪些帮助?对于有志学习嵌入式开发的在校大学生…

【96】write combine机制介绍

前言 这篇文章主要介绍了write combine的机制 一、write combine的试验 1.系统配置 &#xff08;1&#xff09;、CPU&#xff1a;11th Gen Intel(R) Core(TM) i7-11700 2.50GHz &#xff08;2&#xff09;、GPU&#xff1a;XX &#xff08;3&#xff09;、link status&am…

MySQL(四) - SQL优化

一、SQL执行流程 MySQL是客户端-服务器的模式。一条SQL的执行流程如下&#xff1a; 在执行过程中&#xff0c;主要有三类角色&#xff1a;客户端、服务器、存储引擎。 大致可以分为三层&#xff1a; 第一层&#xff1a;客户端连接到服务器&#xff0c;构造SQL并发送给服务器…

Python | 排队取奶茶

队列的基本概念&#xff08;队头、队尾&#xff09;和特点&#xff08;先入先出&#xff09; 在 Python 语言中&#xff0c;标准库中的queue模块提供了多种队列的实现&#xff0c;比如普通队列和优先级队列&#xff0c;因此你可以使用queue.Queue类来创建队列&#xff0c;不过…

惠海 H5528 升降压芯片 12V24V36V48V60V75V LED恒流驱动IC 调光细腻顺滑无阶梯感

惠海H5528是一款升压、降压、升压降压的LED恒流驱动IC&#xff0c;其具备宽范围调光比且无频闪调光的特性&#xff0c;使得它在智能照明、Dali调光、0~10V调光、摄影灯照明以及补光灯照明等多种应用中具有广泛的应用前景。 这款芯片支持降压、升压和升降压拓扑的应用&#xff0…

C++面向对象程序设计 - 文件操作与文件流

在实际应用中&#xff0c;常以磁盘文件作为对象&#xff0c;即能从磁盘文件读取数据&#xff0c;也能将数据输出到磁盘文件&#xff0c;磁盘是计算机的外部存储器&#xff0c;能够长期保留信息&#xff0c;能读能写&#xff0c;可以刷新重写等等。 在C中&#xff0c;文件操作通…

Flink Rest Basic Auth - 安全认证

背景 公司目前需要将Flink实时作业云化,构建多租户实时计算平台。目前考虑为了资源高效利用,并不打算为每个租户部署一套独立的Kubernetes集群。也就意味着多个租户的作业可能会运行在同一套kubernets集群中。此时实时作业的任务就变的很危险,因为网络可能是通的,就会存在…

106.网络游戏逆向分析与漏洞攻防-装备系统数据分析-在UI中显示装备与技能信息

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

新媒体暴力起号必备因素!沈阳新媒体运营培训学校

1周涨粉10w&#xff1f;这对普通人来说可以说是天文数字&#xff0c;但只要掌握方式方法&#xff0c;普通人也能做到&#xff01; 面试经验丰富的人都深知&#xff0c;给面试官留下的第一印象相当重要&#xff0c;几乎决定了80%的面试机会。标题也是如此&#xff0c;在完成一篇…

Android SBL是什么

Android SBL&#xff08;Secondary Bootloader&#xff09;是Android系统中一个关键的组成部分&#xff0c;它属于Bootloader的二级引导程序。以下是关于Android SBL的详细解释&#xff1a; 定义&#xff1a; SBL是Secondary Bootloader的缩写&#xff0c;中文称为第二级引导程…

中国剩余定理学习

中国剩余定理( C R T CRT CRT)及其扩展( E X C R T EXCRT EXCRT)详解 基本形式 中国剩余定理给出了以下的一元线性同余方程组的解&#xff1a; { x ≡ a 1 ( m o d m 1 ) x ≡ a 2 ( m o d m 2 ) ⋮ x ≡ a n ( m o d m n ) \begin{cases} x \equiv a_1 \pmod{m_1} \\ x \eq…

力扣209.长度最小的数组

力扣209.长度最小的数组 模版滑窗求最小 class Solution {public:int minSubArrayLen(int target, vector<int>& nums) {int n nums.size(),resn1;int sum 0;for(int i0,j0;i<n;i){sum nums[i];//尽可能缩小区间while(sum - nums[j] > target){sum - num…

[经验] 蝉联一词的含义是什么 #知识分享#职场发展

蝉联一词的含义是什么 蝉联这个词起源于古代中国&#xff0c;最初是指天子连续两年以上的年号相同。后来&#xff0c;这个词被用于形容某个人或某个团体连续多次获得某种荣誉或奖项的情况。在现代生活中&#xff0c;我们常常听到某个体育运动员蝉联冠军、某个企业蝉联业绩排行榜…

荆州餐饮环保在行动:清洗油烟净化器,守护城市环境

我最近分析了餐饮市场的油烟净化器等产品报告&#xff0c;解决了餐饮业厨房油腻的难题&#xff0c;更加方便了在餐饮业和商业场所有需求的小伙伴们。 在荆州&#xff0c;餐饮业不仅是美食爱好者的天堂&#xff0c;更是城市生活的重要组成部分。然而&#xff0c;随着餐饮业的发…

基于拓扑漏洞分析的网络安全态势感知模型

漏洞态势分析是指通过获取网络系统中的漏洞信息、拓扑信息、攻击信息等&#xff0c;分析网络资产可能遭受的安全威胁以及预测攻击者利用漏洞可能发动的攻击&#xff0c;构建拓扑漏洞图&#xff0c;展示网络中可能存在的薄弱环节&#xff0c;以此来评估网络安全状态。 在网络安…

科普|大数据风险检测对申贷人有哪些好处?

大数据风险检测可以极大地提高金融机构在用户肖像、反欺诈和信用评级等方面的效率和风险控制能力&#xff0c;这是金融企业发展过程中必须结合的一种科技技术。大数据风险检测覆盖信贷领域的所有流程&#xff0c;从客户获取到身份验证&#xff0c;再到信贷中和信贷后。因此&…

Ruby语言与Python:深度比较与独特魅力探索

Ruby语言与Python&#xff1a;深度比较与独特魅力探索 在编程语言的浩瀚海洋中&#xff0c;Ruby和Python无疑是两颗璀璨的明星。它们各自拥有独特的魅力和广泛的应用领域。本文将从四个方面、五个方面、六个方面和七个方面&#xff0c;深入探讨Ruby语言和Python的异同&#xf…

sudo快可以在Windows中使用了,以下是它的内容和使用方法

sudo命令受到Linux用户的尊敬。它允许你以另一个用户的身份运行命令,通常是管理员(或者Linux中的root用户),所以正如你所想象的,它几乎经常被开发人员、技术支持代理和系统管理员使用。现在,你可以在Windows中使用它! 为什么sudo如此受人尊敬 sudo命令允许你运行任务,…

电赛报告书写

一、总体要求 &#xff08;1&#xff09;摘要&#xff1a;一页&#xff0c;小于300字 &#xff08;2&#xff09;正文&#xff1a;不超过8页 &#xff08;3&#xff09;附录&#xff1a;可以没有&#xff0c;但是不能超过2页 二、摘要书写 摘要要小于等于300字&#xff0c…

使用kubectl apply deployment 支持指定deployment 的更新脚本

使用kubectl apply deployment &#xff0c;指定deployment&#xff0c;默认更新他第一个container的镜像&#xff0c;并且给出了更新该container某些env的样例&#xff1a; DEPLOYMENT_NAME"xxx" NAMESPACEXXX xxx_ENV_VALxxxx IMAGE_VERSIONV1.0 container_name&q…