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. VBA添加下拉菜单

    Sub createMenus() Dim cmdBar As CommandBar Dim cmdMenu As CommandBarPopup Dim cmdBtn As CommandBarBu ...

  2. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_01-页面静态化需求分析

    上半部分就是静态化 业务流程如下: 1.获取模型数据 2.制作模板 3.对页面进行静态化 4.将静态化生成的html页面存放文件系统中 5.将存放在文件系统的html文件发布到服务器

  3. MLN Alchemy

    1. 前言: 本文主要参考Alchemy Tutorial, washington主页上挂出的所有Alchemy项目(包括Alchemy1.0, Alchemy2.0, AlchemyLite)都无法 ...

  4. 怎么理解linux作业(job),与进程(process)的关系

    1.相关概念: shell :命令解释器,其实就是一个脚本语言解释器,有很多种(bash,ash,tcsh等),最常用的是bash. job(作业): 是相对shell 来说的,在shell中执行一条 ...

  5. HDU 1159 最长公共子序列

    Common Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  6. Vue Cli 3 初体验(全面详解)

    vue新出了 vue cli 3,并直接改名为 @vue/cli,今天就来盘他. 首先介绍等啰里啰嗦的就不写了,贴个link吧. Vue CLi3 github Vue CLi web 要是想先了解下 ...

  7. 【ARM-Linux开发】打包解包命令

    tar命令 解包:tar zxvf FileName.tar 打包:tar czvf FileName.tar DirName gz命令 解压1:gunzip FileName.gz 解压2:gzip ...

  8. 最新 浪潮java校招面经 (含整理过的面试题大全)

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

  9. 33.TCP协议概念/scapy模块doos攻击

    TCP协议概念/scapy模块: 1,TCP/IP四层协议: 2,TCP数据包的构成: TCP FLAGS:TCP数据包标志位 U:URG,紧急比特 A:ACK,确认比特 P:PSH,推送比特 S:S ...

  10. list列表相关操作

    ] ] ] : :-]print(s10)# a.sort(reve# rse=True)# print(a)# a.reverse()# print(a) lst = [], 'wusir','cg ...