STM32单片机+DS18B20测温传感器+OLED屏幕+蜂鸣器报警+温度数据发送到串口调试助手+源代码

目录

一、DS18B20测温传感器介绍

二、DS18B20测温传感器接线说明

三、测试说明、DS18B20测温传感器驱动代码

四、串口调试助手把采集的DS18B20测温数据发送出来

五、源代码

六、串口调试助手软件

七、DS18B20温度传感器原理图资料


一、DS18B20测温传感器介绍

        DS18B20数字温度传感器是DALLAS公司生产的单总线器件,用它来组成一个测温系统具有线路简单,体积小,在一根通信线上可以挂很多这样的数字温度传感器,十分方便。

        温度传感器种类众多,应用在高精度、高可靠性的场合时DALLAS公司生产的DS18B20温度传感器当仁不让。超小的体积,超低的硬件开销,抗干扰能力强,精度高,附加功能强,使得DS18B20更受欢迎。DS18B20的优势更是我们学习单片机技术和开发温度相关小产品的不二选择。了解工作原理和应用可以拓宽您对单片机开发的思路。

1、通信采用1-Wire接口
2、每个DS18B20都有唯一的64位序列码储存在板载ROM中
3、无需外部元件
4、可从数据线供电,电源范围为3.0V ~ 5.5V。
5、可测量的温度范围在-55℃ ~ +125℃
6、在-10~+85℃范围内精确度为±0.5℃
7、温度计分辨率可设置为9~12位,12位时分辨率对应为0.0625℃ 

二、DS18B20测温传感器接线说明

1.VCC 接 3.3V

2.GND 接 地

3.DQ 接 PB1引脚

三、测试说明、DS18B20测温传感器驱动代码

编译环境:keil5

测试单片机: STM32F103C8T6

功能:功能1:设定温度阈值,超过温度阈值触发蜂鸣器报警

           功能2:发送温度数据串到口调试助手上进行显示

DS18B20.c文件编写驱动代码如下:

#include "stm32f10x.h"                  // Device header
#include "Delay.h"


#define DQ_H     GPIO_SetBits(GPIOB,GPIO_Pin_1)        			//PB1
#define DQ_L     GPIO_ResetBits(GPIOB,GPIO_Pin_1)						
#define DQ_Read  GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1)    //PB1

uint8_t flag=0;

void DS18B20_Init(void) 																		//PB1³õʼ»¯
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;             //DQ=PB1
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStructure);
}

void DS18B20_Output(void)                
{
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;             
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStructure);
}

void DS18B20_Input(void)      
{
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;             
	GPIO_Init(GPIOB, &GPIO_InitStructure);
}

uint8_t DS18B20_Reset(void)      //¸´Î»
{
	uint8_t flag;
	DS18B20_Output();
	DQ_H;
	Delay_us(5);
	
	DQ_L;
	Delay_us(480);
	DQ_H;
	Delay_us(60);
	DS18B20_Input();
	flag=DQ_Read;
	Delay_us(480);
	DS18B20_Output();
	DQ_H;
	return flag;
}

void DS18B20_WriteData(uint8_t data)    
{
	for(uint8_t i=0;i<8;i++)
	{
		DS18B20_Output();  //Êä³ö״̬
		DQ_L;
		Delay_us(2);
		if(data&0x01)    
		{
			DQ_H;
		}
		else
		{
			DQ_L;
		}
		Delay_us(60);
		DQ_H;
		data = data>>1;
	}
	
}

uint8_t DS18B20_ReadData(void)   
{
	uint8_t data =0;
	
	for(uint8_t i=0;i<8;i++)
	{
		data=data>>1;
		DS18B20_Output();   
		DQ_L;
		Delay_us(2);
		DQ_H;
		Delay_us(2);
		DS18B20_Input();  
		if(DQ_Read)
			data|=0x80;     
		Delay_us(60);
	}
	return data;
}

uint16_t DS18B20_ReadTemp(void)   
{
	uint8_t DL,DH;
	uint16_t data;	
	uint16_t Temperature=0;
	flag=0;
	DS18B20_Reset();            
	DS18B20_WriteData(0XCC);      
	DS18B20_WriteData(0X44);     
	Delay_ms(750);               
	DS18B20_Reset();            
	DS18B20_WriteData(0XCC);      
	DL=DS18B20_ReadData();        
	DH=DS18B20_ReadData();       
	data=DH;
	data=data<<8;
	data|=DL;
	if((data&0XF800)==0XF800)   
	{
		data=~data+0X01;
		flag=1;
	}
		
	Temperature=data * 0.0625*10;
	return Temperature;
}

DS18B20.h文件,对驱动函数经行了声明:

#ifndef __DS18B20_H
#define __DS18B20_H

void DS18B20_Init(void);
uint16_t DS18B20_ReadTemp(void);
uint8_t DS18B20_Reset(void);
extern uint8_t flag;

#endif

四、串口调试助手把采集的DS18B20测温数据发送出来

printf("温度= +%d.%d ℃\r\n",Temp/10%100,Temp%10);

五、源代码

《STM32单片机+DS18B20测温传感器+OLED屏幕+蜂鸣器报警+温度数据发送到串口调试助手》源代码资源-CSDN文库

六、串口调试助手软件

串口调试助手-keil5调试工具资源-CSDN文库

七、DS18B20温度传感器原理图资料

 DS18B20温度传感器原理图、模块资料资源-CSDN文库

  • 32
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

STM32单片机定制

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值