K_A11_002 基于STM32等单片机驱动DS18B20串口与OLED0.96双显示

news2025/1/10 2:03:22

K_A11_002 基于STM32等单片机驱动DS18B20 串口与OLED0.96双显示

  • 一、资源说明
  • 二、基本参数
    • 1.参数
    • 2.引脚说明
  • 三、驱动说明
    • 时序
    • 对应程序:
  • 四、部分代码说明
    • 1、接线说明
      • 1.1、STC89C52RC+DHT11模块
      • 1.2、STM32F103C8T6+DHT11模块
  • 五、基础知识学习与相关资料下载
  • 六、视频效果展示与程序资料获取
  • 七、注意事项
  • 八、接线说明
    • STC89C52RC
    • STM32F103C8T6

请添加图片描述

一、资源说明

单片机型号测试条件模块名称代码功能
STC89C52RC晶振11.0592MDS18B20模块STC89C52RC驱动DS18B20模块串口与OLED0.96双显示
STM32F103C8T6晶振8M/系统时钟72MDS18B20模块STM32F103C8T6驱动DS18B20模块串口与OLED0.96双显示

其他资料目录 直戳跳转

二、基本参数

1.参数

请添加图片描述

2.引脚说明

DS18B20模块引脚说明
VCC(+)正极 5V供电
OUT串行数据,单总线
GND(-)负极 接GND

三、驱动说明

时序

请添加图片描述
请添加图片描述
请添加图片描述

对应程序:

以51为例

uint8_t Ds18b20Init(void)
{
	uint8_t i;
	DSPORT = 0;			 //将总线拉低480us~960us
	i = 70;	
	while(i--);//延时642us
	DSPORT = 1;			//然后拉高总线,如果DS18B20做出反应会将在15us~60us后总线拉低
	i = 0;
	while(DSPORT)	//等待DS18B20拉低总线
	{
		DelayMs(1);
		i++;
		if(i>5)//等待>5MS
		{
			return 0;//初始化失败
		}
	
	}
	return 1;//初始化成功
}

/*******************************************************************************
* 函 数 名         : Ds18b20WriteByte
* 函数功能		   : 向18B20写入一个字节
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/

void Ds18b20WriteByte(uint8_t dat)
{
	uint16_t i, j;

	for(j=0; j<8; j++)
	{
		DSPORT = 0;	     	  //每写入一位数据之前先把总线拉低1us
		i++;
		DSPORT = dat & 0x01;  //然后写入一个数据,从最低位开始
		i=6;
		while(i--); //延时68us,持续时间最少60us
		DSPORT = 1;	//然后释放总线,至少1us给总线恢复时间才能接着写入第二个数值
		dat >>= 1;
	}
}
/*******************************************************************************
* 函 数 名         : Ds18b20ReadByte
* 函数功能		   : 读取一个字节
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/


uint8_t Ds18b20ReadByte(void)
{
	uint8_t byte, bi;
	uint16_t i, j;	
	for(j=8; j>0; j--)
	{
		DSPORT = 0;//先将总线拉低1us
		i++;
		DSPORT = 1;//然后释放总线
		i++;
		i++;//延时6us等待数据稳定
		bi = DSPORT;	 //读取数据,从最低位开始读取
		/*将byte左移一位,然后与上右移7位后的bi,注意移动之后移掉那位补0。*/
		byte = (byte >> 1) | (bi << 7);						  
		i = 4;		//读取完之后等待48us再接着读取下一个数
		while(i--);
	}				
	return byte;
}

四、部分代码说明

1、接线说明

需要自定义引脚可在此处更改,STM32要自定义引脚的话也要注意引脚时钟使能的更改

1.1、STC89C52RC+DHT11模块

//DS18B20模块引脚定义

sbit DSPORT=P1^0;

//OLED0.96模块引脚定义
sbit SCL=P1^3; //串行时钟
sbit SDA=P1^2; //串行数据

1.2、STM32F103C8T6+DHT11模块

//DS18B20模块引脚定义 GPIOB_5
#define  DS18B20_DAT_1   		GPIO_SetBits(GPIOB,GPIO_Pin_5)
#define  DS18B20_DAT_0   		GPIO_ResetBits(GPIOB,GPIO_Pin_5)
#define  DS18B20_DAT_Read   GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_5)

//OLED0.96模块引脚定义					
/*STM32F103C8T6芯片的硬件I2C: PB6 -- SCL; PB7 -- SDA */
GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;//I2C必须开漏输出
GPIO_Init(GPIOB, &GPIO_InitStructure);

五、基础知识学习与相关资料下载

1、STC89C52RC程序下载 直戳跳转

2、STM32F103C8T6程序下载
(1)串口下载 直戳跳转
(2)ST-LINK下载 直戳跳转
(3)J-LINK下载 直戳跳转
(4)DAP-LINK下载 直戳跳转

3、OLED0.96程序说明 直戳跳转

4、串口助手下载与使用
(1)安信可调试助手使用 直戳跳转
(2) sscom33串口调试助手使用 直戳跳转
(3)STC-ISP串口调试助手使用 直戳跳转

六、视频效果展示与程序资料获取

视频连接 直戳跳转
资料获取 直戳跳转

七、注意事项

1、VCC GND请勿接反,接反易烧
2、OLED显示异常时,排除接线接触不良

八、接线说明

STC89C52RC

/************************************************************************************
//  生成日期   : 2021-6-21
//  最近修改   : 2021-11-21
//  功能描述   : DS18B20模块测试程序
//  测试条件   : STC89C52RC   晶振11.0592
接线
DS18B20--------------------------------STC89C52RC
VCC------------------------------------5V
GND------------------------------------GND
OUT------------------------------------P1^0

OLED0.96(IIC) -------------------------STC89C52RC
VCC------------------------------------3.3V
GND------------------------------------GND
SCL------------------------------------P1^3
SDA------------------------------------P1^2
*************************************************************************************/

STM32F103C8T6

/************************************************************************************
//    BILIBILI(演示视频) :众明工作室(搜索关键词:K_A11_002)
//  生成日期   : 2021-6-21
//  最近修改   : 2021-11-21
//  功能描述   : DS18B20模块测试程序
//  测试条件   : STM32F103C8T6   晶振8M  系统时钟72M
接线
DS18B20--------------------------------STM32F103C8T6
VCC------------------------------------5V
GND------------------------------------GND
OUT------------------------------------PB5


OLED0.96-------------------------------STM32F103C8T6
VCC------------------------------------3.3V
GND------------------------------------GND
SCL -----------------------------------PB6 
SDA------------------------------------PB7

*************************************************************************************/

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

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

相关文章

内核解读之内存管理(4)内存管理三级架构之page

我们前面介绍了linux内存管理的三级架构&#xff0c;node->zone->page。本节就来介绍page。 页是内核管理内存的基本单位&#xff0c;体系结构不同&#xff0c;支持的页大小也不尽相同&#xff0c;还有些体系结构甚至支持几种不同的页大小。大多数32位体系结构支持4KB的页…

【Python】爬取弹幕并保存到Excel中

hello&#xff0c;我是李华同学&#xff0c;最近开始学习爬虫&#xff0c;下面是我实现的一个得到弹幕的代码&#x1f60f;找一个URL&#x1f449;想要得到一个网站的内容&#xff0c;首先要找到你想要内容的具体位置&#xff0c;首先你先找到一个有弹幕的地方&#xff0c;找到…

linux系统重装yum工具与python环境

文章目录前言一、强制删除原有环境1.删除python2.删除yum二、安装新环境前置准备三、下载依赖命令1.内核版本7.6.1810下载python依赖包下载yum包2.内核版本7.4.1708下载python依赖包下载yum包3.内核版本7.8.2003下载python依赖包下载yum依赖包4.下载结果四、安装前言 安装之前…

swagger入门

目录 1.前后端分离的特点 2.在没有swagger之前 3.swagger的作用 4.swagger的优点 5.集成swagger 5.1 新建springboot项目 5.2 集成swagger 5.3 开发一个controller用于测试 5.4 启动服务&#xff0c;验证集成效果 6.swagger常用注解 7.swagger使用综合案例 8.会议OA之sw…

第三章 Flink DataStream API

Flink 系列教程传送门 第一章 Flink 简介 第二章 Flink 环境部署 第三章 Flink DataStream API 第四章 Flink 窗口和水位线 第五章 Flink Table API&SQL 第六章 新闻热搜实时分析系统 一、DataStream API是什么&#xff1f; Flink 中的 DataStream 程序是对数据流&a…

Android 深入系统完全讲解(2)

1 系统启动过程、嵌入式系统启动过程 这是我之前画的启动过程的图&#xff0c;这个主要就是给大家讲明白&#xff0c;启动过程整个的流程。 第一个阶段&#xff0c;bootloader 系统在上电的时候&#xff0c;系统会从固定的地方加载一段代码进入内部 ram 进行运行。这段代码 通…

【数学思维】Quasi-convex and quesi-concave

【数学思维】Quasi-convex and quesi-concaveConvex function 定义如下 f(λx(1−λ)y)≤λf(x)(1−λ)f(y)f(\lambda x(1-\lambda)y)\le \lambda f(x)(1-\lambda)f(y) f(λx(1−λ)y)≤λf(x)(1−λ)f(y)Quasi-convex function 定义如下 f(λx(1−λ)y)≤max⁡{f(x),f(y)}f(\l…

【阶段三】Python机器学习01篇:机器学习概念、机器学习类别、机器学习应用场景与机器学习基本技术:特征、标签、模型

本篇的思维导图: 机器学习概念 机器学习是AI人工智能的分支技术,而深度学习是机器学习的重要分支。 人工智能、机器学习、深度学习三者的关系 机器学习就是从数据中发现规律,机器学习的关键内涵之一在于利用计算机的运算能力从大量的数据中发现一个“函数”或…

Linux——VMware Tools的介绍及安装方法

一、VMware Tools的作用 1.最大的好处是可以直接把windows界面的文件拖进linux虚拟机内。 2.鼠标可以直接从虚拟机移动到windows等等好处。 二、VMware Tools的安装步骤 1.首先把linux虚拟机关机或退出&#xff0c;然后点击“编辑虚拟机设置”。 2.点击CD/DVD&#xff0c;…

电子、半导体废水深度除氟、除重金属的技术详解

电子半导体行业废水来源及水质特点电子废水主要是印刷线路板中每个环节产生的废水&#xff0c;如线路板上的赋铜线路、电子元器件、二极管、三极管、电容等&#xff0c;日常生活中常见的就是电脑元器件&#xff0c;如内存条、CPU、主板等。这些东西在生产成型的过程中主要通过电…

968. 监控二叉树

题目 分析 首先明确把摄像头放在叶子节点的父节点位置&#xff0c;才能充分利用摄像头的覆盖面积。 贪心算法&#xff1a; 从下到上看局部最优&#xff0c;因为下面的节点最多&#xff0c;让叶子节点的父节点安摄像头最合理&#xff0c;所用摄像头最少。 整体全局最优&#xf…

基于融合SPD+BIFPN+CBAM改进YOLOv5的奶牛检测识别分析系统开发

在我之前的几篇文章中分别应用了不同的tricks来改进yolov5模型如下&#xff1a;加入针对小目标的SPD-Conv模块《yolov5s融合SPD-Conv用于提升小目标和低分辨率图像检测性能实践五子棋检测识别》加入BIFPN特征融合模块《基于yolov5sbifpn实践隧道裂缝裂痕检测》加入注意力机制模…

[数据结构]栈和队列

目录[数据结构]栈和队列一.栈1.栈的基本概念1.2 栈的常见基本操作1.3 栈的实现1.3.1 入栈1.3.2 出栈1.3.3获取栈顶元素1.3.4 判断栈为空1.3.5 栈实现二.队列2.1 入队2.2 出队2.3 获取队首元素2.4 实现队列[数据结构]栈和队列 一.栈 1.栈的基本概念 栈&#xff08;Stack&#…

你了解真正的数字孪生吗?

数字孪生的目的是在虚拟空间构建数字化的复杂系统“镜像”&#xff0c;可以低成本、反复的从多个视角观察、控制、分析、验证和推演&#xff0c;从而帮助人们更好的在现实世界中完成设计、生产、运营等活动。 近年来&#xff0c;数字孪生技术在航空航天、工业制造、交通物流等多…

hbase2.x HBCK Report Region Holes Overlaps问题修复

Region Holes 查看该问题可通过master UI界面的HBCK Report查看 最下方RegionInfo展示了哪两个region之间存在空洞 也可以通过master日志查看 解决步骤 解决方法很简单&#xff0c;直接使用 hbck2 提供的 fixMeta 操作即可。 在 Usage 说明中能看到 fixMeta 能够修复 ‘…

【Linux】make/Makefile的使用

本文目录 背景简介 使用方法 为什么执行的指令是make和make clean呢&#xff1f; gcc如何判断文件是否需要重新执行&#xff1f; 背景简介 一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;makefifile定义了一系列的规则来指定…

16万字智慧医疗-医院信息化大数据建设 方案

【版权声明】本资料来源网络&#xff0c;知识分享&#xff0c;仅供个人学习&#xff0c;请勿商用。【侵删致歉】如有侵权请联系小编&#xff0c;将在收到信息后第一时间删除&#xff01;完整资料领取见文末&#xff0c;部分资料内容&#xff1a; 目 录 1 概述 1.1 现状分析 …

人工智能-网络编程、TCP

目录1、网络编程1.1网络介绍1.2IP地址1.3 ifconfig和ping命名1.4端口和端口号1.5端口号的分类1.6 socket介绍1.7 TCP介绍&#xff12;、TCP的网络应用程序开发2.1 python&#xff13;编码转换2.2 TCP客户端程序开发流程2.3 TCP客户端程序开发2.4 TCP服务端程序开发流程2.5 TCP…

[Android]序列化原理Parcelable

Parcelable是Android为我们提供的序列化的接口&#xff0c;Parcelable相对于Serializable的使用相对复杂一些&#xff0c;但Parcelable的效率相对Serializable也高很多&#xff0c;这一直是Google工程师引以为傲的&#xff0c;Parcelable和Serializable的效率对比Parcelable vs…

CesiumLab中对输入人工模型的格式要求 CesiumLab系列教程

人工模型数据&#xff08;或者手工模型数据&#xff09;是三维 GIS 行业发展的最早的需求来源&#xff0c;通过3dsmax&#xff0c;maya 等建模工具人工建模的数据。 ​ 编辑 人工模型 这张图是cesiumlab上对人工模型来源的流程&#xff0c;在上面我们只罗列了四个建模工具&a…