相关文章:http://blog.csdn.net/zhangxuechao_/article/details/74991985

举例

void DS18B20_in()
{
GPIO_InitTypeDef gpio =
{
GPIO_Pin_11,
GPIO_Speed_50MHz,
GPIO_Mode_IPD
}; GPIO_Init(GPIOG, &gpio);
} void DS18B20_out()
{
GPIO_InitTypeDef gpio =
{
GPIO_Pin_11,
GPIO_Speed_50MHz,
GPIO_Mode_Out_PP
}; GPIO_Init(GPIOG, &gpio);
} u8 DS18B20_check()
{
u8 flag = 0; DS18B20_in(); while(ds18b20_in == 1)
{
flag++;
if(flag > 100)
{
return 1;
}
delay_us(1); //一次循环1us
} flag = 0;
while(ds18b20_in == 0)
{
flag++;
if(flag > 240)
{
return 1;
}
delay_us(1);
} return 0;
} u8 DS18B20_reset()
{
DS18B20_out(); ds18b20_out = 0;
delay_us(500);
ds18b20_out = 1;
delay_us(1); return DS18B20_check();
} u8 DS18B20_init()
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE); return DS18B20_reset();
} u8 DS18B20_read_bit()
{
DS18B20_out(); ds18b20_out = 0;
delay_us(1); ds18b20_out = 1; //释放总线
delay_us(1); DS18B20_out();
delay_us(15); return ds18b20_in;
} u8 DS18B20_read()
{
u8 i = 0;
u8 r, tmp; for(i = 0; i < 8; i++)
{
tmp = DS18B20_read_bit();
r = (tmp << 7 | r >> 1); delay_us(45);
ds18b20_out = 1;
delay_us(1);
}
return r;
} void DS18B20_write(u8 d)
{
u8 i = 0;
u8 tmp = 0;
DS18B20_out(); for(i = 0; i < 8; i++)
{
tmp = d & 0x01;
d >>= 1; ds18b20_out = 0;
delay_us(1); if(tmp == 0)
{
delay_us(60);
}
else
{
ds18b20_out = 1;
delay_us(60);
} ds18b20_out = 1;
delay_us(1);
} } void DS18B20_ChangeTemp()
{
DS18B20_write(0xcc); //忽略ROM
DS18B20_write(0x44); //温度转换 return;
} void DS18B20_ReadTemp()
{
DS18B20_write(0xcc);
DS18B20_write(0xbe); //读取RAM return;
} u16 readTemp()
{
int temp = 0;
u8 tmph = 0, tmpl = 0; DS18B20_reset(); //必须的
DS18B20_ChangeTemp(); DS18B20_reset(); //必须的
DS18B20_ReadTemp(); tmpl = DS18B20_read(); //低字节
tmph = DS18B20_read(); //高字节 temp = tmph;
temp <<= 8;
temp |= tmpl; return temp;
} int main(void)
{
while(DS18B20_init() != 0)
{
printf("DS18B20_init failed.\n");
delay_ms(500);
}
while(1)
{
led1 = ~led1; r = readTemp(); if((r & 0xf800) == 0xf800)
{
r = (~r) + 1;
temp = r * (-0.0625);
}
else
{
temp = r * 0.0625;
} printf("temp %.2f\n", temp); delay_ms(1000);
}
}

stm32 ds18b20 温度传感器的更多相关文章

  1. DS18B20温度传感器知识点总结

    2018-01-1818:20:48 感觉自己最近有点凌乱,一个很简单的问题都能困扰自己很久.以前能很好使用和调试的DS18B20温度传感器,今天愣是搞了很久,妈卖批. 仅仅一个上拉电阻就困扰了我很久 ...

  2. 单线制DS18B20温度传感器LED数码管显示当前的温度值

    /******************************************* 程序功能:利用单线制DS18B20温度传感器 LED数码管显示当前的温度值 ***************** ...

  3. DS18b20温度传感器基础使用

    认识管脚 认识唯一标示的64位地址序列号 寄存器数据译码成温度值(下面只针对12位转化的,还有9..10等其他位的转化方式,不同位的转化,其精度也不同) 传感器存储器 配置寄存器使用说明 DS18b2 ...

  4. 总结:如何驱动DS18B20温度传感器

    DS18B20时序分析: 以下是STM32的驱动代码: #include "bsp_ds18b20.h" static void DS18B20_GPIO_Config(void) ...

  5. stm32 内部温度传感器的配置

    STM32的内部温度传感器和ADCx—IN16输入通道相连接.且温度传感器推荐采样时间为17.1us,支持的温度范围为:-40~125度,精度比较差,± 5℃左右. 计算温度值:T(℃) ={(V25 ...

  6. 「雕爷学编程」Arduino动手做(39)——DS18B20温度传感器

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  7. 单片机学习(十二)1-Wire通信协议和DS18B20温度传感器

    目录 一.DS18B20 1. DS18B20简介 2. 电路原理图 3. 内部结构 内部完整结构框图 存储器结构 二.单总线(1-Wire BUS) 1. 单总线简介 2. 电路规范 3. 单总线的 ...

  8. nanopi的ds18b20温度传感器测试

    参考(抄袭)资料在这里 先接线,3.3v,gnd,数据输出脚,我是PG11 vim /boot/armbianEnv.txt overlays=w1-gpio param_w1_pin=PG11 pa ...

  9. 使用天祥TX-1C调试DS18B20温度传感器的收获

    翻查DS18B20的DataSheet编写操作函数,其过程遇到了不少坎,记下来备查. 对于单总线的DS18B20芯片,首先严格按照时序图写出正确的“写0”.“写1”和“读0.1”的基础函数,再以此写出 ...

随机推荐

  1. com.alibaba.fastjson.JSONObject;的使用

    转: com.alibaba.fastjson.JSONObject;的使用 2018-11-04 23:51:23 mameng1998 阅读数 6404更多 分类专栏: java   1  POM ...

  2. 阶段5 3.微服务项目【学成在线】_day18 用户授权_14-细粒度授权-我的课程细粒度授权-需求分析

    3.3 我的课程细粒度授权 3.3.1 需求分析 1.我的课程查询,细粒度授权过程如下: 1)获取当前登录的用户Id 2)得到用户所属教育机构的Id 3)查询该教学机构下的课程信息 最终实现了用户只允 ...

  3. java数据类型,取值范围,引用类型解析

      与javascript不同,Java是强类型语言,在定义变量前需要声明数据类型.主要分两种数据类型:基本数据类型和引用数据类型. 1.基本数据类型分析: 基本数据类型 数值型 整数型 byte字节 ...

  4. web手工项目01-系统组织框架-测试流程-需求评审-测试计划与方案

    回顾 SVN(定义,作用,使用操作) 软件缺陷(定义,表现形式,原因和根源,基本内容,跟踪流程) JIRA(基本介绍,使用者,工作流,问题,使用) 学习目标 掌握WAMP的环境搭建 掌握熟悉项目的步骤 ...

  5. python2.6.6升级python2.7.14

    Centos 6.8系统镜像默认安装的 python 环境是 2.6.6,线上需求需要升级到 2.7.14 版本,网上找了相关资料,升级 python 版本比较容易,但 yum/pip 等命令的使用也 ...

  6. Vue.js学习TodoMVC小Demo

    实现效果如下: 把玩了添加和删除功能,代码如下: index.html: <!doctype html> <html lang="en"> <head ...

  7. pcntl_waitpid函数解释

    pcntl_waitpid 等待或返回fork的子进程状态.多进程的主进程创建了子进程,那主进程如何确认子进程的状态呢. 假如主进程需要根据子进程的状态做不同的处理呢, 这里的状态包括子进程被kill ...

  8. PostgreSQL学习笔记——摘要

    因为PostgreSQL和MySQL.DB2等数据库均遵循SQL语法,所以这篇随笔仅记录一些PostgreSQL中和别的数据库有差别或之前学习中遗漏的地方,以及一些我觉得比较重点的地方. 通过psql ...

  9. jenkins插件Configuration Slicing plugin批量修改配置

    作用 批量修改jenkins上job配置

  10. Ubuntu下配置LVS【h】

    以后服务器只用CentOS和Ubuntu.下午用redhat装个lvs装了一下午都没搞好,TNND的.果断用Ubuntu,不到两个小时就搞定了. 原文参见: http://kamengwang.blo ...