【TB作品】MSP430G2553单片机,读取dht11,读取ds18b20,温度报警器

功能

读取dht11温湿度显示到oled
读取ds18b20温度显示到oled
按键修改温度上限
温度超出温度上限就蜂鸣器报警

硬件接法

oled接法 0.96 寸 7针 oled

// GND 电源地
// VCC 3.3v电源
// D0 P23(时钟)
// D1 P24(数据)
// RES 接P21
// DC 接P22
// CS 接P20

ds18b20
// GND 电源地
// VCC 3.3v电源
// DATA P1.5

DHT11
// GND 电源地
// VCC 3.3v电源
// DATA P1.4

按键1 P1.6
按键2 P1.7

有源蜂鸣器低电平触发 接P1.3

部分代码


int main(void) {uchar o;uchar count = 0;uint warn_temp = 270;      //报警温度WDTCTL = WDTPW + WDTHOLD;                 // Stop WDTif (CALBC1_8MHZ == 0xFF)				// If calibration constant erased{while (1);                               // do not load, trap CPU!!}DCOCTL = 0;                          // Select lowest DCOx and MODx settingsBCSCTL1 = CALBC1_8MHZ;                    // Set rangeDCOCTL = CALDCO_8MHZ;                     // Set DCO step + modulation */P1DIR |= BIT3;                     //BEEPP1OUT |= BIT3;                     //CLOSEP1DIR &= ~(BIT6 + BIT7); //KEY1 KEY2P1REN |= BIT6 + BIT7;P1OUT |= BIT6 + BIT7;OLED_Init();        //初始化OLEDOLED_Clear();OLED_ShowString(40, 0, "SYSTEM");DS18b20_Init();//初始化显示报警温度memset(dis_str, 0, 15);count = 0;dis_str[count++] = warn_temp % 1000 / 100 + '0';dis_str[count++] = warn_temp % 100 / 10 + '0';dis_str[count++] = '.';dis_str[count++] = warn_temp % 10 + '0';dis_str[count++] = 'C';dis_str[count++] = 0;OLED_ShowString(0, 4, dis_str);while (1) {temp_value = get_one_temperature();o = start_DHT11();if (o) {memset(dis_str, 0, 15);count = 0;dis_str[count++] = temp_value % 1000 / 100 + '0';dis_str[count++] = temp_value % 100 / 10 + '0';dis_str[count++] = '.';dis_str[count++] = temp_value % 10 + '0';dis_str[count++] = 'C';dis_str[count++] = ' ';dis_str[count++] = ' ';dis_str[count++] = DHT11RH_Data_H % 100 / 10 + '0';dis_str[count++] = DHT11RH_Data_H % 10 + '0';dis_str[count++] = '%';dis_str[count++] = 'R';dis_str[count++] = 'H';dis_str[count++] = 0;OLED_ShowString(0, 2, dis_str);}if ((P1IN & BIT6) == 0) {delay_ms(3);if ((P1IN & BIT6) == 0) {
//				while ((P1IN & BIT6) == 0)
//					;warn_temp++;//初始化显示报警温度memset(dis_str, 0, 15);count = 0;dis_str[count++] = warn_temp % 1000 / 100 + '0';dis_str[count++] = warn_temp % 100 / 10 + '0';dis_str[count++] = '.';dis_str[count++] = warn_temp % 10 + '0';dis_str[count++] = 'C';dis_str[count++] = 0;OLED_ShowString(0, 4, dis_str);}}if ((P1IN & BIT7) == 0) {delay_ms(3);if ((P1IN & BIT7) == 0) {
//				while ((P1IN & BIT7) == 0)
//					;warn_temp--;//初始化显示报警温度memset(dis_str, 0, 15);count = 0;dis_str[count++] = warn_temp % 1000 / 100 + '0';dis_str[count++] = warn_temp % 100 / 10 + '0';dis_str[count++] = '.';dis_str[count++] = warn_temp % 10 + '0';dis_str[count++] = 'C';dis_str[count++] = 0;OLED_ShowString(0, 4, dis_str);}}if (temp_value > warn_temp) {P1OUT &= ~BIT3;} else {P1OUT |= BIT3;                     //CLOSE}delay_ms(10);}}

全部代码

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

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

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

相关文章

LeetCode25_K个一组翻转链表

. - 力扣(LeetCode) 一、题目描述 二、过程模拟 1. 第一步 2. 第二步:子链表分组 3. 第三步:断开前后两组 4. 第四步:翻转start到end的部分 5. 第五步:连接翻转好的前半部分和未翻转的后半部分&#xff…

怎么把照片转成jpg

将照片转换成JPG格式是一个相对简单的过程,适用于大多数设备和操作系统。以下是一些常见的方法: 一、在Windows系统中转换照片格式 使用画图工具 打开你想要转换的照片,右击选择“打开方式”里面的“画图”工具。在画图工具的界面上&#xf…

《世界很喧嚣,做自己就好》有感

仅仅只用了两个中午一个晚上就看完了《世界很喧嚣,做自己就好》,不能说看完,应该说浏览完。决定要看这本书,仅仅只是因为它的书名。前几章还认真看,后面越来越快,再后来一目十行,只重点关注黑色…

设备树接口函数

0.前言 在前一篇博客里面,写设备树语法介绍和接口函数的时候,写到一半发现csdn有篇幅限制,现在在此篇进行补充。 之前的文章路径如下 驱动开发之设备树语法-CSDN博客 1.接口函数 1.1.of_property_read_xx_array 函数 int of_property_r…

富格林:正确抵制黑幕被骗陷阱

富格林指出,投资现货黄金对于新手投资者来说是一项有挑战性的任务,但其中最难的还属如何正确抵制黑幕被骗陷阱。事实上,我们可以采取一系列的措施来正确抵制黑幕被骗陷阱。有哪些措施可以帮助我们呢?下面富格林就给大家讲讲。 许…

Python笔记 - *args和**kwargs

探索Python的*args和**kwargs 在Python中,函数可以接受任意数量的参数,而这要归功于*args和**kwargs的强大功能。这两个特性使得函数在处理不同数量的输入时变得更加灵活和高效。在这篇博客中,我们将详细介绍*args和**kwargs,并展…

Redis键值数据库详解(科普面试必看)

目录 一、引言 二、Redis概述 三、Redis的特性 四、Redis的数据结构 五、Redis的应用场景 六、Redis的优化措施 一、引言 在当今大数据和云计算的时代,高效、稳定的数据存储与检索系统成为保障系统性能和可靠性的重要基础。键值数据库(Key-Value …

找回以前的视频:技术与实践3个指南

你们有没有发现现在视频已经成为我们生活中不可或缺的一部分了?不管是在工作场合做演示、在学习时看教学视频,还是在休闲娱乐时追剧看电影,视频都扮演着超级重要的角色。 然而误删或手机故障的发生很可能将以前的视频清除。本文将深入探讨手…

LeetCode 每日一题 数学篇 LCR 182.动态口令

某公司门禁密码使用动态口令技术。初始密码为字符串 password,密码更新均遵循以下步骤: 设定一个正整数目标值 target将 password 前 target 个字符按原顺序移动至字符串末尾 请返回更新后的密码字符串。 char* dynamicPassword(char* password, int …

「实战应用」如何用图表控件LightningChart JS创建SQL仪表板应用(一)

LightningChart JS是Web上性能特高的图表库,具有出色的执行性能 - 使用高数据速率同时监控数十个数据源。 GPU加速和WebGL渲染确保您的设备的图形处理器得到有效利用,从而实现高刷新率和流畅的动画,常用于贸易,工程,航…

深入了解JVM命令:优化Java应用的利器

目录 前言JVM架构概述常用JVM命令 javajavacjpsjstackjmapjstatjinfojcmd 命令详解及使用场景 java命令javac命令jps命令jstack命令jmap命令jstat命令jinfo命令jcmd命令 高级JVM调优 GC调优内存调优性能监控和分析 总结 前言 JVM不仅仅是一个执行Java字节码的运行时环境&…

10-探索 Intersection Observer API:高效管理元素可见性

探索 Intersection Observer API:高效管理元素可见性 笔记分享 在前端开发中,处理元素的可见性是一个常见的需求,尤其是在实现懒加载、无限滚动或检测广告曝光度等场景中。传统的方法通常依赖于 scroll 事件和 getBoundingClientRect 方法&a…

【ES】docker安装ES7.14.0+es-head

# 拉取镜像 docker pull elasticsearch:7.14.0 # 运行 --- # 拷贝数据用于挂载 docker cp -a es:/usr/share/elasticsearch/config/. /volume/es/config # 启动容器 docker run -p 9200:9200 -p 9300:9300 --privilegedtrue --name es -e "discovery.typesingle-node&quo…

【递归、搜索与回溯】递归、搜索与回溯准备+递归主题

递归、搜索与回溯准备递归主题 1.递归2.搜索3.回溯与剪枝4.汉诺塔问题5.合并两个有序链表6.反转链表7.两两交换链表中的节点8.Pow(x, n)-快速幂(medium) 点赞👍👍收藏🌟🌟关注💖💖 你…

Docker基础篇之本地镜像发布到阿里云

文章目录 1. 本地镜像发布到阿里云的流程2. 阿里云开发平台3. 将自己的本地镜像推送到阿里云 1. 本地镜像发布到阿里云的流程 阿里云ECS Docker生态如下图所示: 2. 阿里云开发平台 在控制台找到容器和镜像服务: 然后创建一个个人实例: 下面…

深圳垣象科技golang期望19K一面挂

垣象科技是一个初创公司,我们看好制造业数字化这个大方向,希望搭建一个云平台,通过创新的产品和服务,提高电子及高科技行业产品创新的能力和研发的效率 一面(挂) 总体来说项目答得不好,h5 拖拽…

Spring为什么不支持static字段注入

Spring不支持直接依赖注入到静态变量中。在Spring框架中,依赖注入是一个核心概念,它允许开发者将对象间的依赖关系定义转移到容器中,由容器负责管理这些依赖关系。然而,当涉及到静态变量时,情况就变得复杂了。 首先从…

适用于 Windows 10 的 5 个最佳数据恢复工具

很多时候,由于存储设备故障或意外删除数据,有时您需要在Windows 10操作系统中恢复数据。大多数人不熟悉在Windows 10下恢复数据的过程。由于这个原因,他们经常认为这是不可能的。事实是,有很多工具可用于Windows 10数据恢复。今天…

Clickhouse 的分布式架构说明——Clickhouse 架构篇(五)

文章目录 前言架构特点及对比ClickHouse分布式架构的优点ClickHouse分布式架构的缺点ClickHouse与Hadoop的分布式架构对比 基本概念集群副本分片 ClickHouse的复制表引擎创建复制表复制表复制复制表查询 ClickHouse分布式表引擎分布式表查询原理分布式表的数据写入方案分布式表…

Plotting World Map in Python

1. 方法一 pygal Plotting World Map Using Pygal in Python import pygal # create a world map worldmap pygal.maps.world.SupranationalWorld() # set the title of map worldmap.title Continents# adding the continents worldmap.add(Africa, [(africa)]) worl…