网上关于DS18B20的资料很多,但是光有程序,没有讲解,导致身边很多同学即使拿到源码也无从下手,故写此篇文章,一方面接收DB18B20,一方结合原理详细讲解源码的意义。

器件原理:

原理图:
        基本上所有的重要信息都在这张图上啦。很独特的一个点就是数据输入输出是共用一个管脚DQ的。
对于唯一的数据口,需要一定的执行顺讯:

执行序列

如图,每一次操作都必须满足上述顺序,若是缺少或者混乱,器件将不会返回值。

初始化:

       通过单总线的所有执行操作处理都从一个初始化序列开始。初始化序列包括一个从总线控制器发出的复位脉冲和其后由从机发出的存在脉冲,存在脉冲让总线控制器知道DB18B20存在且已经做好操作准备。

ROM指令:

       这里采用单从机模式(只有一个DB18B20),只挑取几个比较重要的指令做以说明

READ ROM[33h](读取ROM指令):

         只有在总线上存在单只DS18B20的时候才能使用这条命令。该命令允许总线控制器在不使用搜索ROM指令的情况下读取从机的64位片序列码。如果总线上有不止一只从机,当所有从机试图同时传送信号时就会发生数据冲突。

SKIP ROM[CCh](忽略ROM指令) :

          这条指令允许总线控制器不用提供64位ROM编码就是用功能指令。例如,总线控制器可以先发出一条忽略ROM指令,然后发出温度转换指令[44h],从而完成温度转换操作。注意:当只有一直从机在总线上时,无论如何,忽略ROM指令之后只能跟着发出一条读取暂存器指令[BEh]。

功能指令:

        在总线控制器发给欲连接的DS18B20一条ROM指令后,跟着可以发送一条DS18B20功能指令。这些命令允许总线控制器读写DS18B20的暂存器,发起温度转换和识别电源模式。

CONVERT T[44h](温度转换指令):

          这条命令用以启动一次温度转换。温度转换指令被执行,产生的温度转换结果数据以2个字节的形式被存储在告诉暂存器中,而后DS18B20保存等待状态。如果DS18B20以外部电源供电,总线控制器在发出该命令后跟着发出读时序,DS18B20如果处于转换中,将在总线上返回0,若温度转换完成,则返回1。

READ SCRATCHPAD(读取暂存器指令):

这条命令读取暂存器的内容。读取将从字节0开始,一直进行下去,直到第9字节(字节8)读完,如果不想读完所有字节,控制器可以在任何时间发出复位命令来终止读取。

时序:

        时序对于器件来说是很重要的,如果时序不对,器件就不能正常工作。 

复位序列:复位和存在脉冲:

        和DS18B20间 的任何通讯都需要以初始化序列开始。一个复位脉冲跟着一个存在脉冲表明DS18B20已经准备好发送和接收数据。在初始化序列期间,总线控制器拉低总线并保持480us以发出(TX)一个复位脉冲,然后释放总线,进入接受状态(RX)。单总线由5K上拉电阻拉倒高电平。当DS18B20探测到I/O引脚上的上升沿后,等待15~60us,然后发出一个由60~240us低电平信号构成的存在脉冲。
        初始化时序见图:

VHDL语言编写DS18B20温度传感器程序详解相关推荐

  1. DS18B20温度传感器原理详解及例程代码、漏极开路

    [常用传感器]DS18B20温度传感器原理详解及例程代码_Z小旋的博客-CSDN博客_ds18b20温度传感器 传感器引脚及原理图 DS18B20传感器的引脚及封装图如下: DS18B20一共有三个引 ...

  2. 单片机c语言程序流程图,ds1302时钟程序详解,ds1302程序流程图(C程序)

    ds1302时钟程序详解 DS1302 的控制字如图2所示.控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RA ...

  3. 如何用C语言编写PHP扩展的详解

    来源:http://www.jb51.net/article/38381.htm 本篇文章是对用C语言编写PHP扩展进行了详细的分析介绍,需要的朋友参考下 1:预定义 在home目录,也可以其他任意目 ...

  4. 用eclipse编写第一个程序详解(hello world)

    1.首先我们打开eclipse,显示的是下面这个画面 2.我们找到左上角的File,进行操作:File->new->Project,出现下面这个画面 3.双击Java Project,这里 ...

  5. 从程序详解拒绝服务***

    从程序详解拒绝服务*** 拒绝服务(Denial of Service,  DoS)***是最简单的网络***形式之一,它只阻止对服务或资源的访问,而不是试图窃取信息.DoS***有两种常见的形式:使 ...

  6. 大二c语言期末考试题库及详解答案,大学C语言期末考试练习题(带详解答案)...

    <大学C语言期末考试练习题(带详解答案)>由会员分享,可在线阅读,更多相关<大学C语言期末考试练习题(带详解答案)(55页珍藏版)>请在金锄头文库上搜索. 1.一. 单项选择题 ...

  7. c语言线性表库函数大全,数据结构(C语言版)-线性表习题详解

    <数据结构(C语言版)-线性表习题详解>由会员分享,可在线阅读,更多相关<数据结构(C语言版)-线性表习题详解(23页珍藏版)>请在人人文库网上搜索. 1.数 据 结 构 ,线 ...

  8. linux系统设置服务开机启动3种方法,Linux开机启动程序详解

    linux系统设置服务开机启动 方法1:.利用ntsysv伪图形进行设置,利用root登陆 终端命令下输入ntsysv 回车:如下图 方法2:利用命令行chkconfig命令进行设置 简要说明一下ch ...

  9. gets和fgets函数及其区别,C语言gets和fgets函数详解

    gets和fgets函数及其区别,C语言gets和fgets函数详解 每当讨论 gets 函数时,大家不由自主地就会想起 1988 年的"互联网蠕虫",它在 UNIX 操作系统的 ...

最新文章

  1. Python爬虫开发与项目实践
  2. 常用算法25讲,拿走不谢!
  3. 从2019年-2021年的各大顶会论文,看动态神经网络的发展
  4. caffe添加层:Focal Loss的caffe实现
  5. C语言三个数排序,普通方法及进阶(不引入第三变量交换数值法)
  6. 关于最新版FCKeditor上传漏洞错误解决办法
  7. python中字典的键是唯一的吗_Python怎么通过字典的键和值做一个登录程序?
  8. 2020年最好用的手机是哪一款_2020,哪款5G手机最值得入手?
  9. 详细介绍MPLS路由协议的相关概念知识
  10. 类中定义接口-匿名内部类
  11. NodeJs之npm
  12. android源码下编译自有工程通用make模板
  13. 傻瓜式一键破解MD5加密
  14. Linux网络基础知识
  15. Openjudge1.2答案
  16. 河南省计算机基础考试题库,计算机基础考试题库
  17. 2021雪花飘新年倒计时源码
  18. 微信小程序开发:绑定手机号获取验证码功能
  19. cocos2dx[3.x](11)——拖尾渐隐效果MotionStreak
  20. 小学最简单的计算机微课PPT,小学音乐微课课件

热门文章

  1. 大专文凭,一个人,我是如何月入3万的
  2. Win11如何修改hosts文件?Win11修改hosts文件的方法
  3. 美埃科技科创板上市:半年营收5.7亿募资近10亿 市值51亿
  4. countif和sum套用_Excel成长记——sumif与countif的区别
  5. springboot项目引用QQWry.Dat解析IP地址
  6. 小样本不符合正态_金莎相亲对象不符合择偶标准,男生单眼皮小眼睛,但她还是沦陷了|金莎|择偶|伊能静|单眼皮...
  7. 常用MD5解密工具,仅限于密码学研究
  8. android蓝牙锁,android 蓝牙锁应用实例开发(一) 简介-Go语言中文社区
  9. 文心千帆:PPT 制作、数字人主播一键开播等数十种应用场景惊艳到我了,下面给出简介和使用指南,快去使用起来吧
  10. OpenStack QoS介绍