1. 实物图

2. 64位(激)光刻只读存储器

开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码

光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的



3. 温度寄存器

高字节的前5位是符号位,如果测得的温度大于0,这5位为‘0’,只要将测到的数值乘以0.0625即可得到实际温度;如果温度小于0,这5位为‘1’,测到的数值需要先减1再取反再乘以0.0625即可得到实际温度

4. 温度与数据关系

12-bit精度,0x550 * 0.0625 = 85

5. 精度寄存器

6. ROM指令表

7. RAM指令表

8. 时序图

初始化:

1.数据线拉到低电平“0”

2.延时480微秒(该时间的时间范围可以从480到960微秒)

3.数据线拉到高电平“1”

4.延时等待80微秒。如果初始化成功则在15到60微秒时间内产生一个由DS18B20所返回的低电平“0”。根据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环

5.若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第3步的时间算起)最少要480微秒

读:

1.将数据线拉低“0”

2.延时1微秒

3.将数据线拉高“1”,释放总线准备读数据

4.延时15微秒

5.读数据线的状态得到1个状态位,并进行数据处理

6.延时45微秒

7.重复1~6步骤,直到读完一个字节

写:

1.数据线先置低电平“0”

2.延时1微秒

3.按从低位到高位的顺序发送数据(一次只发送一位)

4.延时60微秒

5.将数据线拉到高电平

6.延时1微秒

7.重复1~6步骤,直到发送完整的字节

9. 举例

sbit DSPORT = P3 ^ 7;

u8 ds18b20Init()
{
u8 i = 0;
DSPORT = 0;
i = 70;
while(i--); //642us
DSPORT = 1;
i = 0; while(DSPORT)
{
delay1ms(1);
i++;
if(i > 5)
{
return 0;
}
} return 1;
} void ds18b20Write(u8 d)
{
u8 i = 0, j = 0; for(j = 0; j < 8; j++)
{
DSPORT = 0;
i++; //延时
DSPORT = d & 0x01;
i = 6;
while(i--); //延时68us
DSPORT = 1;
d >>= 1;
} return;
} u8 ds18b20Read()
{
u8 i = 0, j = 0;
u8 d = 0, t = 0; for(j = 8; j > 0; j--)
{
DSPORT = 0;
i++; //延时
DSPORT = 1;
i++;
i++;
t = DSPORT;
d = (d >> 1) | (t << 7);
i = 4;
while(i--);
} return d;
} void ds18b20ChangeTemp()
{
ds18b20Init();
delay1ms(1);
ds18b20Write(0xcc); //忽略ROM
ds18b20Write(0x44); //温度转换 return;
} void ds18b20ReadTemp()
{
ds18b20Init();
delay1ms(1);
ds18b20Write(0xcc);
ds18b20Write(0xbe); //读取RAM return;
} int readTemp()
{
int temp = 0;
u8 tmph = 0, tmpl = 0; ds18b20ChangeTemp();
ds18b20ReadTemp(); tmpl = ds18b20Read(); //低字节
tmph = ds18b20Read(); //高字节 temp = tmph;
temp <<= 8;
temp |= tmpl; return temp;
}

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

  1. 树莓派 Zero W+温度传感器DS18B20

    树莓派 Zero W+温度传感器DS18B20 作者:陈拓chentuo@ms.xab.ac.cn 2018.05.28/2018.06.01 0.  概述 用树莓派 Zero W读取DS18B20温 ...

  2. ARM Linux驱动篇 学习温度传感器ds18b20的驱动编写过程

    ARM Linux驱动篇 学习温度传感器ds18b20的驱动编写过程 原文地址:http://www.cnblogs.com/NickQ/p/9026545.html 一.开发板与ds18b20的入门 ...

  3. 【蓝桥杯单片机11】单总线温度传感器DS18B20的基本操作

    [蓝桥杯单片机11]单总线温度传感器DS18B20的基本操作 广东职业技术学院 欧浩源 单总线数字温度传感器DS18B20几乎成了各类单片机甚至ARM实验板的标配模块来,在蓝桥杯的往届省赛和国赛中,这 ...

  4. 使用DS18B20设计温控系统

    datasheet真的是得看看啊,比如DS18B20,不然程序都不好写,美国DALLAS半导体公司推出的数字化温度传感器DS18B20采用单总线协议,即与单片机接口仅需要一个IO口,无需任何外部原件, ...

  5. ds18b20采集温度并上报服务器

    交叉编译器:arm-linux-gcc-4.5.4 Linux内核版本:Linux-3.0 主机操作系统:Centos 6.5 开发板:FL2440 温度传感器:ds18b20 注:此程序的客户端是在 ...

  6. ds18b20驱动及应用程序

    ---------------------------------------------------------------------------------------------------- ...

  7. Arduion学习(三)驱动温度传感器

    一.实验目的: 1.将温度值打印显示在串口监视器 1.将温度值打印显示在串口,不同温度段显示不同的灯光,并在温度过高或过低时利用蜂鸣器报警. 二.实验准备: 1.查阅相关资料,了解本次实验所用到的引脚 ...

  8. 【AllJoyn专题】基于AllJoyn和Yeelink的传感器数据上传与指令下行的研究

    接触高通物联网框架AllJoyn不太久,但确是被深深地吸引了.在我看来,促进我深入学习的原因有三点:一.AllJoyn开源,对开源的软硬件总会有种莫名的喜爱,虽然或许不会都深入下去:二.顺应潮流,物联 ...

  9. 树莓派Zero W添加音频输出

    编译:陈拓 chentuo@ms.xab.ac.cn 2018.06.07/2018.07.14 原文:Adding Basic Audio Ouput to Raspberry Pi Zero ht ...

随机推荐

  1. Python在for循环中更改list值的方法

    一.在for循环中直接更改列表中元素的值不会起作用: 如: l = list(range(10)[::2]) print (l) for n in l: n = 0 print (l) 运行结果: [ ...

  2. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_16-异常处理-可预知异常处理-自定义异常类型和抛出类

    在common工程创建捕获异常的类:CustomException Runtime叫做运行异常.在代码中抛出的话 对我们的代码没有可侵入性 如果在代码上抛出 如果改成Exception 这时候就会有错 ...

  3. save()和savaorupdate的区别

    hibernate的保存 hibernate对于对象的保存提供了太多的方法,他们之间有很多不同,在这里细说一下,以便区别: 一.预备知识:     在所有之前,说明一下,对于hibernate,它的对 ...

  4. WordPress自定义循环

    我们在学WordPress的时候,最常用到的就是循环了.写模板的时候,多数的时间都是和循环打交道的.如果你不能很详细的了解WordPress的循环,是很难写出模板来的. 而WordPress自定义循环 ...

  5. centos7:ssh免密登陆设置

    1.使用root用户登录,进入到目录/root/.ssh 2.执行命令:ssh-keygen -t rsa 一路回车,完成后会在目录/root/.ssh下面生成文件 id_rsa和id_rsa.pub ...

  6. SQL注入(字符型)

       靶场:sqli-labs @SQLi最重要的一点:别上来就对着输入框注入,完整语句写出来,始终在语句中写完整的,最后把完整的一部分截取出来作为输入 @URL编码:为避免歧义,URL中,如 %2b ...

  7. Qt——鼠标拖动缩放窗口源码

    #ifndef MOVEWIDGET_H #define MOVEWIDGET_H #include <QWidget> #include <QEvent> class Mov ...

  8. 最新 顺网科技java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.顺网科技得等10家互联网公司的校招Offer,因为某些自身原因最终选择了顺网科技.6.7月主要是做系统复习.项目复盘.Lee ...

  9. 最新 完美世界java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.完美世界等10家互联网公司的校招Offer,因为某些自身原因最终选择了完美世界.6.7月主要是做系统复习.项目复盘.Leet ...

  10. pacemaker入门

    原文链接:https://blog.csdn.net/a964921988/article/details/82628478 因为数据库部署在Linux上,需要做数据库集群实现高可用,而所有的Post ...