【TB作品】MSP430F5529 单片机,智能温控系统,DS18B20

作品功能

本项目设计并实现了一个基于MSP430单片机的智能温控系统。系统可以实时显示当前温度,并且可以根据设置的临界值对环境进行加热或降温。主要功能如下:

  1. 实时显示当前温度。
  2. 显示并调整温度临界值,临界值可在20~35摄氏度之间调节。
  3. 当前温度高于(临界值+1)摄氏度时,绿灯亮,表示降温状态。
  4. 当前温度低于(临界值-1)摄氏度时,加热片工作,表示加热状态。
  5. 当前温度高于35摄氏度时,蜂鸣器报警。
  6. 设置温度临界值高于30摄氏度时,红灯亮,提醒避免设置温度过高。

作品的硬件材料

  1. MSP430F5529 单片机
  2. DS18B20温度传感器
  3. OLED显示屏(IIC接口)
  4. 绿灯(LED) 板子上有
  5. 红灯(LED) 板子上有
  6. 无源蜂鸣器
  7. 加热片

电子元器件连接

各元器件的连接如下:

  • DS18B20:VCC - VCC, DS - P15, GND - GND
  • OLED:GND - GND, VCC - VCC, SCL - P20, SDA - P22
  • 蜂鸣器:VCC - VCC, GND - GND, IN - P36
  • 加热片:VCC - VCC, GND - GND, IN - P23
  • 按键:P21, P11
  • 绿灯:P47
  • 红灯:P10

部分代码


int main(void)
{
    unsigned char dis[10];
    unsigned char time_cyc = 0;

    WDTCTL = WDTPW + WDTHOLD; /* Stop WDT */

    /* 初始化显示 */
    OLED_Init(); /* OLED初始化 */
    OLED_ShowString(0, 0, "DS18B20:");
    OLED_ShowString(0, 4, "SET:");
    display_set_temp();


    /*按键端口 */
    P1DIR &= ~BIT1;
    P1SEL &= ~BIT1;
    P1REN |= BIT1;
    P1OUT |= BIT1;

    P2DIR &= ~BIT1;
    P2SEL &= ~BIT1;
    P2REN |= BIT1;
    P2OUT |= BIT1;

    /* 绿灯端口 */
    P4DIR |= BIT7;

    /* 红灯端口 */
    P1DIR |= BIT0;

    /* 蜂鸣器端口  P3.6*/
    P3SEL |= BIT6;                       // P3.5-7.6 option select
    P3DIR |= BIT6;                       // P3.5-7.6 outputs

    /* 加热片端口 */
    P2DIR |= BIT3;

    while (1)
    {
        delay_ms(10);
        time_cyc = (time_cyc + 1) % 30;
        if (time_cyc == 1) /* 30 个10ms执行一次 */
        {
            temp_value = get_one_temperature(); /* 读取温度 */
            dis[0] = temp_value % 1000 / 100 + '0';
            dis[1] = temp_value % 100 / 10 + '0';
            dis[2] = '.';
            dis[3] = temp_value % 10 + '0';
            dis[4] = 'C';
            dis[5] = 0;
            OLED_ShowString(0, 2, dis);
        }

        /* 以下是根据温度控制 */
        if (temp_value > (set_temp + 10)) /* 3 实际温度高于(临界值+1)后绿灯亮表示降温。 */
        {
            P4OUT |= BIT7; /* 高电平 绿灯点亮 */
            P2OUT |= BIT3; /* 加热片不工作 */
            OLED_ShowString(0, 6, "cooling");
        }
        else if (temp_value < (set_temp - 10)) /* 4 实际温度低于(临界值-1)后加热片工作表示加热。 */
        {
            P4OUT &= ~BIT7; /* 绿灯不亮 */
            P2OUT &= ~BIT3; /* 低电平 加热片工作 */
            OLED_ShowString(0, 6, "heating");
        }
        else
        {
            P4OUT &= ~BIT7; /* 绿灯不亮 */
            P2OUT |= BIT3; /* 加热片不工作 */
            OLED_ShowString(0, 6, "        ");
        }
        /* 5 实际温度高于35摄氏度无源蜂鸣器报警。 */
        if (temp_value > 350)
        {
            TBCCR6 = 500; //打开蜂鸣器 /* PWM占空比 500/1000  蜂鸣器响 */
        }
        else
        {
            TBCCR6 = 0; //关闭打开蜂鸣器
        }

        /* 6 设置温度时候,临界值高于30摄氏度,红灯亮,提醒避免设置温度过高。 */
        if (set_temp > 300)
        {
            P1OUT |= BIT0; /* 高电平 红灯点亮 */
        }
        else
        {
            P1OUT &= ~BIT0;
        }

        /* 以下是按键处理   2 显示临界值,按键可以加减临界值,临界值在20~35之间可调。 */
        //按键1检测处理
        if (!(P1IN & BIT1))
        {
            while (!(P1IN & BIT1))
                ;
            if (set_temp < 350)
            {
                set_temp += 10;
            }
            display_set_temp();
        }
        //按键2检测处理
        if (!(P2IN & BIT1))
        {
            while (!(P2IN & BIT1))
                ;
            if (set_temp > 200)
            {
                set_temp -= 10;
            }
            display_set_temp();
        }

    }
}



全部代码


https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32-呼吸灯仿真

目录 前言: 一.呼吸灯 二.跑马灯 三. 总结 前言: 本篇的主要内容是关于STM32-呼吸灯的仿真,包括呼吸灯,跑马灯的实现与完整代码,欢迎大家的点赞,评论和关注. 接上http://t.csdnimg.cn/mvWR4 既然已经点亮了一盏灯,接下来就可以做更多实验了, 一.呼吸灯 在上一个的基础上…

力扣560. 和为 K 的子数组

Problem: 560. 和为 K 的子数组 文章目录 题目描述思路复杂度Code 题目描述 思路 1.初始化一个哈希表preSum&#xff0c;用于记录前缀和及其出现次数,ans记录和为k的子数组数量、sum_i记录当前前缀和&#xff1b; 2.将前缀和为 0 的情况存入哈希表&#xff0c;表示前缀和为 0 出…

C# 绘图及古诗填字

绘图 绘图的结果如下&#xff1a; 绘图部分主要使用了 Bitmap、Graphics 具体的函数是 MakeMap 入参说明 string bg : 背景图 Rectangle rect &#xff1a;绘图区域 int row_count &#xff1a;行数 int col_count &#xff1a;列数 string fn &#xff1a;保存到的文件 …

前端三大件速成 05 javascript(1)js组成、引入、基本语法

文章目录 一、js组成二、js的引入三、基本语法1、变量2、基本规范3、关键字4、数据类型&#xff08;1&#xff09;基本数据类型&#xff08;2&#xff09;引用数据类型&#xff08;3&#xff09;数据类型转换&#xff08;4&#xff09;typeof运算符 5、运算符6、流程控制&#…

数据结构与算法笔记:基础篇 - 散列表(下):为什么散列表和链表经常会一起使用?

概述 已经学习了这么多章节了&#xff0c;你有没有发现&#xff0c;两种数据结构&#xff0c;散列表和链表&#xff0c;经常会被放在一起使用。你还记得&#xff0c;前面的章节中都有哪些地方讲到散列表和链表的组合使用吗&#xff1f; 在链表那一节&#xff0c;我讲到如何用…

MAVEN:自定义模板Archetype的创建

目录 一、简介 二、具体步骤 三、 vscode通过模板创建项目 四、通过IDEA创建 一、简介 有时候MAVEN自带的模板库并不能满足我们创建项目的需求&#xff0c;为了能够快速创建项目&#xff0c;免去每次复杂的配置&#xff0c;所以我们需要自定义模板库&#xff0c;本次操作基于…

nss刷题(4)

1、[SWPUCTF 2021 新生赛]easyrce <?php error_reporting(0); highlight_file(__FILE__); if(isset($_GET[url])) { eval($_GET[url]); } ?> if(isset($_GET[url])) isset函数用来检测url变量是否存在&#xff1b;$_GET函数获取变量数据 eval($_GET[url]); eval函数用…

数据挖掘--数据预处理

数据清理 缺失值 如果数据集含有分类属性&#xff0c;一种简单的填补缺失值的方法为&#xff0c;将属于同一类的对象的该属性值的均值赋此缺失值&#xff1b;对于离散属性或定性属性&#xff0c;用众数代替均值。更复杂的方法&#xff0c;可以将其转换为分类问题或数值预测问…

Liunx环境下redis主从集群搭建(保姆级教学)02

Redis在linux下的主从集群配置 本次演示使用三个节点实例一个主节点&#xff0c;两个从节点&#xff1a;7000端口&#xff08;主&#xff09;&#xff0c;7001端口&#xff08;从&#xff09;&#xff0c;7002端口&#xff08;从&#xff09;&#xff1b; 主节点负责写数据&a…

[译文] LLM安全:3.网络LLM攻击及提示注入知识普及(PortSwigger)

这是作者新开的一个专栏&#xff0c;主要翻译国外知名安全厂商的技术报告和安全技术&#xff0c;了解它们的前沿技术&#xff0c;学习它们威胁溯源和恶意代码分析的方法&#xff0c;希望对您有所帮助。当然&#xff0c;由于作者英语有限&#xff0c;会借助LLM进行校验和润色&am…

SpringBoot+Vue幼儿园管理系统(前后端分离)

技术栈 JavaSpringBootMavenMyBatisMySQLVueElement-UI 系统角色 教师用户管理员 功能截图

Plotly : 超好用的Python可视化工具

文章目录 安装&#xff1a;开始你的 Plotly 之旅基本折线图&#xff1a;简单却强大的起点带颜色的散点图&#xff1a;数据的多彩世界三维曲面图&#xff1a;探索数据的深度气泡图&#xff1a;让世界看到你的数据小提琴图&#xff1a;数据分布的优雅展现旭日图&#xff1a;分层数…

立创小tips

立创小tips 原理图中 1-修改图纸属性 保存完&#xff0c;绘制原理图的界面就出现了&#xff0c;然后我们鼠标点击原理图的边缘变成红色就可以高边表格的属性了。 2-鼠标右键可以移动整个原理图 3-查看封装 点击任意一个元器件&#xff0c;在右侧就会显示封装属性&#xff…

[word] word图片环绕方式怎么设置? #经验分享#笔记#媒体

word图片环绕方式怎么设置&#xff1f; 在文档中图片排版是很常见的&#xff0c;在图片排版的过程中我们如何利用小技巧快速处理呢&#xff1f;下面给大家分享word图片环绕方式怎么设置的操作方法&#xff0c;一起来学习下吧&#xff01; 1、修改图片环绕方式 在Word文档中图…

【背包-BM70 兑换零钱(一)】

题目 BM70 兑换零钱(一) 描述 给定数组arr&#xff0c;arr中所有的值都为正整数且不重复。每个值代表一种面值的货币&#xff0c;每种面值的货币可以使用任意张&#xff0c;再给定一个aim&#xff0c;代表要找的钱数&#xff0c;求组成aim的最少货币数。 如果无解&#xff0c;…

python数据分析-心脏瓣膜手术风险分析与预测

研究背景 人的心脏有四个瓣膜&#xff0c;主动脉银、二尖、肺动脉和三尖源 不管是那一个膜发生了病变&#xff0c;都会导致心脏内的血流受到影响&#xff0c;这就是通常所说的心脏期膜病&#xff0c;很多是需要通过手术的方式进行改善的。随着人口老龄化的加剧,&#xff0c;心…

[word] word批注怎么删除 #学习方法#媒体

word批注怎么删除 word批注怎么删除&#xff1f;Word批注主要是用注释和评论文档内容&#xff0c;不管是学习上还是职场上都会用到批注&#xff0c;现在就来教大家快速删除批注的技巧。 1.删除一条批注&#xff1a;选中要删除的批注后&#xff0c;点击【批注】下的删除按钮&a…

277 基于MATLAB GUI火灾检测系统

基于MATLAB GUI火灾检测系统&#xff0c;可以实现图片和视频的火苗检测。火焰识别的三个特征&#xff1a;1个颜色特征&#xff0c;2个几何特征颜色特征&#xff1a;HSV颜色空间下&#xff0c;对三个通道值进行阈值滤波&#xff0c;几何特征1&#xff1a;长宽比&#xff0c;几何…

高考志愿填报选专业,兴趣、擅长、热门就业怎么选?

高考成绩发布后&#xff0c;接下来的重任就是填报志愿&#xff0c;在有限的时间里&#xff0c;选择好学校&#xff0c;选个专业确实不容易。很多人都说填报志愿要从兴趣方面来着手....那么兴趣靠谱吗&#xff1f; 选专业可以根据兴趣吗&#xff1f; 在应试教育的大环境中&…

Java学习-JDBC(一)

JDBC 概念 JDBC(Java Database Connectivity)Java数据库连接JDBC提供了一组独立于任何数据库管理系统的APIJava提供接口规范&#xff0c;由各个数据库厂商提供接口的实现&#xff0c;厂商提供的实现类封装成jar文件&#xff0c;也就是我们俗称的数据库驱动jar包JDBC充分体现了…