STM32F407开发板DS18B20应用案例 环球观察
X 关闭
【1】DS18B20介绍
DS18B20是一种数字温度传感器,由MaximIntegrated公司生产。它采用单总线接口,能够在广泛的温度范围内测量温度,并通过数字方式输出温度值,具有较高的精度和稳定性。
(相关资料图)
以下是DS18B20温度传感器的主要特点和操作时序:
(1)特点:
单总线接口:DS18B20使用单一的数据线进行通信,简化了连接和控制。高精度测量:具有12位的温度分辨率,可测量范围为-55°C至+125°C。数字输出:温度值以二进制形式传输,便于处理和解析。内部存储:传感器可内部存储温度数据和配置信息。低功耗:在非活动状态下,传感器可以进入睡眠模式以降低功耗消耗。(2)操作时序:DS18B20的操作时序包括复位、写入指令、读取温度等过程。下面是DS18B20的基本操作时序:
a. 复位:
主机拉低数据线,持续至少480μs作为复位信号。主机释放数据线,等待15μs以上。b. 发送指令:
主机发出写入指令(如跳过ROM指令或匹配ROM指令)。指令由主机通过数据线逐位发送,每位的有效时间为60μs。c. 读取温度:
主机发出读取温度指令。传感器将温度数据以序列的形式发送给主机,每位的有效时间为60μs。主机在接收到所有数据后,需提供适当的延迟时间进行解析和处理。【2】硬件连线说明STM32F407开发板DS18B20应用案例
开发板硬件连接:
【3】源代码在工程中添加ds18b20.c和ds18b20.h文件。
DS18B20代码如下:
#include "ds18b20.h" /* 函数功能:DS18b20IO口初始化 硬件连接:PG9 复用表示自动输出数据 通用表示手动输出数据 */ void DS18B20_Init(void) { /*1. 开时钟*/ RCC- >AHB1ENR|=1< <6;//使能PORTG时钟/*2. 初始化IO模式*/ DS18B20_OUTPUT(); } /* 函数功能:等待DS18B20的回应 返回1:未检测到DS18B20的存在 返回0:存在 */ u8 DS18B20_Check(void) { u8 retry=0; DS18B20_INPUT() //设置DS18B20输入模式 while(DS18B20_IN&&retry< 200) { retry++; DelayUs(1); }; if(retry >=200)return 1; else retry=0; while(!DS18B20_IN&&retry< 240) { retry++; DelayUs(1); }; if(retry >=240)return 1; return 0; } /* 从DS18B20读取一个字节 返回值:读到的数据 */ u8 DS18B20_ReadByte(void) { u8 i,data=0; for(i=0;i< 8;i++) { DS18B20_OUTPUT(); //初始化为输出模式 DS18B20_OUT=0; //输出0 DelayUs(2); DS18B20_OUT=1; //上拉总线电平 DS18B20_INPUT() //初始化为输入模式 DelayUs(12); data >>=1; if(DS18B20_IN) { data|=0x80; } DelayUs(50); } return data; } /* 写一个字节到DS18B20 dat:要写入的字节 */ void DS18B20_WriteByte(u8 dat) { u8 i; DS18B20_OUTPUT(); //初始化IO为输出模式 for(i=0;i< 8;i++) { if(dat&0x01) //先发低位 { DS18B20_OUT=0;//输出0 DelayUs(2); DS18B20_OUT=1;//输出1 DelayUs(60); } else { DS18B20_OUT=0;//输出0 DelayUs(60); DS18B20_OUT=1;//输出1 DelayUs(2); } dat >>=1; } } /* 从ds18b20得到温度值 精度:0.1C 返回值:温度值 (-550~1250) */ short DS18B20_Get_Temp(void) { u16 temp; u8 TL,TH; DS18B20_OUTPUT(); DS18B20_OUT=0;//输出0 //拉低DQ DelayUs(750); //拉低750us DS18B20_OUT=1; //输出1 //DQ=1 DelayUs(15); //15US DS18B20_Check(); DS18B20_WriteByte(0xcc); //跳过芯片ID检测 DS18B20_WriteByte(0x44); //转换一次温度 DS18B20_OUTPUT(); DS18B20_OUT=0; //输出0 //拉低DQ DelayUs(750); //拉低750us DS18B20_OUT=1; //输出1 //DQ=1 DelayUs(15); //15US DS18B20_Check(); DS18B20_WriteByte(0xcc);// 跳过芯片ID检测 DS18B20_WriteByte(0xbe);// 读取转换成功的温度数据 TL=DS18B20_ReadByte(); // LSB TH=DS18B20_ReadByte(); // MSB temp=((u16)TH< <8)|TL; return temp; }
Ds18b20.h代码示例
#ifndef _DS18B20_H #define _DS18B20_H #include "stm32f4xx.h" #include "sys.h" #include "delay.h" void DS18B20_Init(void); short DS18B20_Get_Temp(void); #define DS18B20_IN PGin(9) #define DS18B20_OUT PGout(9) #define DS18B20_INPUT() \\ {\\ GPIOG- >MODER&=~(0x3< <9*2);\\ GPIOG- >MODER|=0x0< <9*2;\\ GPIOG- >PUPDR&=~(0x3< <9*2);\\ GPIOG- >PUPDR|=0x1< <9*2;\\ } #define DS18B20_OUTPUT() \\ {\\ GPIOG- >MODER&=~(0x3< <9*2);\\ GPIOG- >MODER|=0x1< <9*2;\\ GPIOG- >OTYPER&=~(0x1< <9);\\ GPIOG- >OSPEEDR&=~(0x3< <9*2);\\ GPIOG- >OSPEEDR|=0x2< <9*2;\\ GPIOG- >ODR|=1< <9;\\ } #endif
Main.c文件示例
#include "stm32f4xx.h" // Device header #include "led.h" #include "delay.h" #include "key.h" #include "usart.h" #include "sys.h" #include "exti.h" #include "timer.h" #include "pwm.h" #include "ds18b20.h" int main(void) { short temp; unsigned short intT,decT; //温度值的整数和小数部分 LED_Init(); KEY_Init(); USART1_Init(84,115200); KEY_EXTI_Init(); DS18B20_Init(); while(1) { /*读取温度信息*/ temp=DS18B20_Get_Temp(); intT = temp > > 4; //分离出温度值整数部分 decT = temp & 0xF; //分离出温度值小数部分 printf("DS18B20: %d.%d *C\\r\\n",(int)intT,(int)decT); DelayMs(1000); } }
审核编辑:汤梓红
上一篇:狮子座:谁也别想小瞧我,不卑不亢,不骄不躁,我自丰盈精彩
下一篇:最后一页
X 关闭
-
STM32F407开发板DS18B20应用案例 环球观察
DS18B20是一种数字温度传感器,由MaximIntegrated公司生产。它采用单总
-
狮子座:谁也别想小瞧我,不卑不亢,不骄不躁,我自丰盈精彩
小美没想到还会再遇到阿勇,可笑地是阿勇是来她公司应聘成为她的下属,
-
《七律-七七事变记念日》(外一首) 今日看点
东北育才学校全球校友总会关注1937-2023《七律-七七事变记念日》平水韵
-
全球微资讯!灵魂拷问!江苏有城市取消限购、限售,南京要不要跟进?
灵魂拷问!江苏有城市取消限购、限售,南京要不要跟进?,限售,楼市,房
-
今日热门!很会整活!1.5K超清护眼曲屏、十面抗摔、超耐久大电池、1亿像素主摄 荣耀X50售1399元起
热闹了很久的荣耀X50终于正式上市,售价1399元起,将于7月5日21:00开启
- 1【新时代新征程新伟业——坚定不移推动高质量发展】拥抱资本市场,激发山西经济新活力_全球快消息
- 2windows产品密钥在包装盒哪里(windows产品密钥)
- 3刚刚,华科大宣布:可进校参观
- 4部分4K QLED电视没有宣传的功能 遭集体诉讼
- 5当前看点!包智勇接受纪律审查和监察调查
- 6【焦点热闻】推特迎来挑战对手!Meta(META.US)旗下Instagram推出社交应用Threads
- 7强对流天气预警 9省区市部分地区将有8至10级雷暴大风或冰雹
- 8中国女单出战温网首轮5人被淘汰!两朵小花闯进第二轮!形势严峻|世界讯息
- 9山东四市公布中小学暑假时间,假期长达7-8周
- 10当前聚焦:苹果头显减产 A股产业链“无惧”?