资讯详情

STM32开发手册-DS18B20 数字温度传感器实验

DS18B20 是由 DALLAS 半导体公司推出的一种接口的温度传感器

与统一的热敏电阻等测温元件相比,它是一种体积小、电压宽适用、接口简单的新型
数字温度传感器。一线总线结构具有简单经济的特点,用户可以轻松构建传感器网络,
从而引入测量系统建设的新概念,测量温度范围为 -55~ 125 ℃ ,精度为± 0.5 ℃。现场温
直接以一线总线的数字方式传输,大大提高了系统的抗干扰性。它可以直接读取被测温度,
简单的编程可以根据实际要求实现 9~l2 位数值读数法。 3~5.5V 的电压
范围,采用多种包装形式,使系统设计灵活方便,设置分辨率和用户设置的报警温度
储在 EEPROM 中、掉电后仍保存。

//等待 DS18B20 的回应 //返回 1:未检测到 DS18B20 的存在 //返回 0:存在 u8 DS18B20_Check(void)  {  u8 retry=0; DS18B20_IO_IN();//SET PG11 INPUT  while (DS18B20_DQ_IN&&retry<200) { retry  ; delay_us(1); }; if(retry>=200)return 1; else retry=0;  while (!DS18B20_DQ_IN&&retry<240) {retry  ; delay_us(1); }; if(retry>=240)return 1;  return 0; } //从 DS18B20 读取一个位 //返回值:1/0 u8 DS18B20_Read_Bit(void)  {  u8 data; DS18B20_IO_OUT();//SET PG11 OUTPUT  DS18B20_DQ_OUT=0;  delay_us(2);  DS18B20_DQ_OUT=1;  DS18B20_IO_IN();//SET PG11 INPUT delay_us(12); if(DS18B20_DQ_IN)data=1;  else data=0;  delay_us(50);   return data; } //从 DS18B20 读一个字节 ///返回值:读取的数据 u8 DS18B20_Read_Byte(void)  {   u8 i,j,dat;  dat=0; for (i=1;i<=8;i  )  {  j=DS18B20_Read_Bit();  dat=(j<<7)|(dat>>1);  }   return dat; }  STM32F4 开发指南(HAL 库版)  ALIENTEK 探索者 STM32F407 开发板教程 462 ///写字节到 DS18B20 //dat:要写的字节 void DS18B20_Write_Byte(u8 dat)  {   u8 j;  u8 testb; DS18B20_IO_OUT();//SET PG11 OUTPUT;  for (j=1;j<=8;j  )  {  testb=dat&0x01;  dat=dat>>1;  if (testb)   {  DS18B20_DQ_OUT=0;// Write 1  delay_us(2);   DS18B20_DQ_OUT=1;  delay_us(60);   }  else   {  DS18B20_DQ_OUT=0;// Write 0  delay_us(60);   DS18B20_DQ_OUT=1;  delay_us(2);   }  } } //开始温度转换 void DS18B20_Start(void)  {   DS18B20_Rst();  DS18B20_Check();  DS18B20_Write_Byte(0xcc);// skip rom  DS18B20_Write_Byte(0x44);// convert }  //初始化 DS18B20 的 IO 口 DQ 同时检测 DS 的存在 //返回 1:不存在 //返回 0:存在  u8 DS18B20_Init(void) { GPIO_InitTypeDef GPIO_Initure; __HAL_RCC_GPIOG_CLK_ENABLE(); //开启 GPIOB 时钟 GPIO_Initure.Pin=GPIO_PIN_9; //PG9

标签: 240f传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台