1-Wire总线与DS18B20应用仿真(图)

发布者:Xiaoxue666最新更新时间:2008-07-16 来源: 今日电子关键字:多点测温  总线接口  配置寄存器  数字温度传感器  ACSLL  protues 手机看文章 扫描二维码
随时随地手机看文章

  作为一种单主机多从机的总线系统,在一条1-Wire总线上可挂接的从器件数量几乎不受限制。为了不引起逻辑上的冲突,所有从器件的1-Wire总线接口都是漏极开路的,因此在使用时必须对总线外加上拉电阻(一般取5kΩ左右)。主机对1-Wire总线的基本操作分为复位、读和写三种,其中所有的读写操作均为低位在前高位在后。复位、读和写是1-Wire总线通信的基础,下面通过具体程序详细介绍这3种操作的时序要求。(程序中DQ代表1-Wire总线,定义为P1.0,uchar定义为unsigned char)

  1 1-Wire总线的复位

  复位是1-Wire总线通信中最为重要的一种操作,在每次总线通信之前主机必须首先发送复位信号。如程序1.1所示,产生复位信号时主机首先将总线拉低480~960μs然后释放,由于上拉电阻的存在,此时总线变为高电平。1-Wire总线器件在接收到有效跳变的15~60μs内会将总线拉低60~240μs,在此期间主机可以通过对DQ采样来判断是否有从器件挂接在当前总线上。函数Reset()的返回值为0表示有器件挂接在总线上,返回值为1表示没有器件挂接在总线上。

  程序1.1 总线复位

  uchar Reset(void)

  {

  uchar tdq;

  DQ=0; //主机拉低总线

  delay480μs(); //等待480μs

  DQ=1; //主机释放总线

  delay60μs(); //等待60μs

  tdq=DQ; //主机对总线采样

  delay480μs(); //等待复位结束

  return tdq; //返回采样值

  }

  2 1-Wire总线的写操作

  由于只有一条I/O线,主机1-Wire总线的写操作只能逐位进行,连续写8次即可写入总线一个字节。如程序1.2所示,当MCS-51单片机的时钟频率为12MHz时,程序中的语句_nop_();可以产生1μs的延时,调用此函数时需包含头文件“intrins.h”。向1-Wire总线写1bit至少需要60μs,同时还要保证两次连续的写操作有1μs以上的间隔。若待写位wbit为0则主机拉低总线60μs然后释放,写0操作完成。若待写位wbit为1,则主机拉低总线并在1~15μs内释放,然后等待60μs,写1操作完成。

  程序1.2 向总线写1bit

  void Writebit(uchar wbit)

  {

  _nop_();

  //保证两次写操作间隔1μs以上

  DQ=0;

  _nop_();

  //保证主机拉低总线1μs以上

  if(wbit)

  {

  //向总线写1

  DQ=1;

  delay60μs();

  }

  else

  {

  //向总线写0

  delay60μs();

  DQ=1;

  }

  }

  3 1-Wire总线的读操作

  与写操作类似,主机对1-Wire总线的读操作也只能逐位进行,连续读8次,即可读入主机一个字节。从1-Wire总线读取1bit同样至少需要60μs,同时也要保证两次连续的读操作间隔1μs以上。如程序1.3所示,从总线读数据时,主机首先拉低总线1μs以上然后释放,在释放总线后的1~15μs内主机对总线的采样值即为读取到的数据。

  程序1.3 从总线读1bit

  uchar Readbit()

  {

  uchar tdq;

  _nop_();

  //保证两次连续写操作间隔1μs以上

  DQ=0;

  _nop_();

  //保证拉低总线的时间不少于1μs

  DQ=1;

  _nop_();

  tdq=DQ;

  //主机对总线采样

  delay60μs();

  //等待读操作结束

  return tdq;

  //返回读取到的数据

  }

  数字温度传感器DS18B20

  1 DS18B20的基本特性

  ● 采用1-Wire总线接口,可以方便实现多点测温。

  ● 与主机连接方便,除5kΩ的总线上拉电阻外无须其他额外器件。

  ● 电源电压范围为3.0~5.5V,与3.3V和5V数字系统均可很好地兼容。

  ● 测量范围为-55~+125℃,分辨率为9~12位可编程。

  ● 通过编程可设置温度报警上下限,设置值掉电不丢失。

  ● 内部集成了用于器件寻址的64bit光刻ROM编码。

  2 DS18B20中的存储器

  在DS18B20中共有三种存储器,分别是ROM、RAM、EEPROM,每种存储器都有其特定的功能,可查阅相关资料。

  3 1-Wire总线ROM功能命令

  在DS18B20内部光刻了一个长度为64bit的ROM编码,这个编码是器件的身份识别标志。当总线上挂接着多个DS18B20时可以通过ROM编码对特定器件进行操作。ROM功能命令是针对器件的ROM编码进行操作的命令,共有5个,长度均为8bit(1Byte)。

  ①读ROM(33H)

  当挂接在总线上的1-Wire总线器件接收到此命令时,会在主机读操作的配合下将自身的ROM编码按由低位到高位的顺序依次发送给主机。总线上挂接有多个DS18B20时,此命令会使所有器件同时向主机传送自身的ROM编码,这将导致数据的冲突。

  ②匹配ROM(55H)

  主机在发送完此命令后,必须紧接着发送一个64bit的ROM编码,与此ROM编码匹配的从器件会响应主机的后续命令,而其他从器件则处于等待状态。该命令主要用于选择总线上的特定器件进行访问。

  ③跳过ROM(CCH)

  发送此命令后,主机不必提供ROM编码即可对从器件进行访问。与读ROM命令类似,该命令同样只适用于单节点的1-Wire总线系统,当总线上有多个器件挂接时会引起数据的冲突。

  ④查找ROM(F0H)

  当主机不知道总线上器件的ROM编码时,可以使用此命令并配合特定的算法查找出总线上从器件的数量和各个从器件的ROM编码。

  ⑤报警查找(ECH)

  此命令用于查找总线上满足报警条件的DS18B20,通过报警查找命令并配合特定的查找算法,可以查找出总线上满足报警条件的器件数目和各个器件的ROM编码。

  4 DS18B20器件功能命令

  与1-Wire总线相关的命令分为ROM功能命令和器件功能命令两种,ROM功能命令具有通用性,不仅适用于DS18B20也适用于其他具有1-Wire总线接口的器件,主要用于器件的识别与寻址;器件功能命令具有专用性,它们与器件的具体功能紧密相关。下面是DS18B20的器件功能命令。

  ①启动温度转换(44H)

  该命令发送完成后,主机可以通过调用Readbit()函数判断温度转换是否完成,若Readbit()的返回值为0则表示转换正在进行,若Readbit()的返回值为1则表示转换完成。

  ②读RAM(BEH)

  该命令发送完成后,主机可以通过调用Readbit()函数将DS18B20中RAM的内容从低位到高位依次读出。

  ③写RAM(4EH)

  该命令发出后,主机随后写入1-Wire总线的3字节将依次被存储到DS18B20的报警上限、报警下限和配置寄存器中。

  ④复制RAM(48H)

  该命令会将DS18B20的报警上限、报警下限和配置寄存器中的内容复制到EEPROM中。该命令发出后,主机可以通过调用Readbit()函数判断复制操作是否完成,若Readbit()的返回值为1,则表示复制操作完成。

  ⑤回读EEPROM(B8H)

  该命令会将存储在EEPROM中的报警上限、报警下限和配置寄器的内容回读到RAM中,主机可以通过调用Readbit()函数判断回读操作是否完成,若Readbit()的返回值为1则表示回读操作完成。DS18B20在上电时会自动进行一次回读操作。

  

  

  图1 主机与DS18B20的通信流程图

  5 主机与DS18B20的通信流程

  如图1所示,主机通过1-Wire总线接口对DS18B20的每次访问都以复位信号和ROM功能命令开始,访问的结束位置是不确定的,这与具体的功能命令相关。图中圆角矩形中的操作与主机发送的功能命令相对应,随着功能命令的不同圆角矩形中的操作有时可以被省略。对总线上的DS18B20来说,复位信号意味着又一次通信的开始,器件对此的响应是拉低总线以告知主机自身的存在,然后准备接收ROM功能命令。

  多点测温系统仿真实例

  DS18B20是一种比较廉价的温度传感器,其封封装形式如图2所示。在Proteus中包含有DS18B20的仿真模型,这使得相关程序的调试变得简单方便。下面以一个实例介绍用Proteus仿真多点测温系统的步骤。

  

  

  图2 DS18B20封装形式

  ① 绘制仿真原理图

  如图3所示,在本实例中以单片机AT89C52和8个DS18B20构成了一个多点测温系统。为了有足够的空间存储各个DS18B20的ROM编码和温度值,在实例中用一片8KB的SRAM芯片6116对单片机的RAM进行了扩展。

  ②设置DS18B20仿真模型的属性

  首先右击选中protues编辑区中的DS18B20仿真模型然后再左击,此时弹出如图4所示的属性设置对话框。其中,Family Code是器件的家族码,对于DS18B20来说是28H。ROM Serial Number对应于器件的48bit序列号,格式为十六进制,在填写过程中要保证同一条1-Wire总线上所有仿真模型的ROM Serial Number都不相同。Automatic Serialization设置为No时仿真模型将使用ROM Serial Number中的序列号,设置为Yes时模型的序列号将由仿真环境自动生成,在此设置为Yes,这样可以免去手动修改ROM Serial Number的麻烦。Current Value中是仿真模型当前的温度值。Cranularity中是单击仿真模型的温度值增减按钮时温度值的改变量,在此设置为1.1。其他选项保持默认即可。单击OK按钮,设置完成。

  

  

  图3 多点测温系统仿真原理图

  ③编制源程序

  主机是通过Reset()、Readbit()、Writebit()三种基本操作与1-Wire总线进行通信的,只要这三个函数的时序准确,那么对于有一定C语言编程基础的用户来说程序其他部分的编写将不是难事,按照前面介绍的流程向总线发送功能命令并进行相应读写操作即可。多点测温系统编程的难点在于器件的查找,系统上电时主机首先要查找总线上挂接着多少个1-Wire器件并将各个器件的ROM编码读入单片机的RAM中,这需要一套复杂的算法,限于篇幅关于此算法在此不再详述。本仿真实例大体工作过程如图3右下角注释部分所示,“查找总线上所有器件的ROM编码并存储”这一步可以由uchar B20ReadROM(uchar B20ROM[]函数完成,该函数的返回值是查找到的器件数目,各个器件的ROM编码将存储在二维数组B20ROM[]中。

  

  

  图4 DS18B20仿真模型属性设置

  “统一开始温度转换”的通信流程为:发送复位信号;发送跳过ROM(CCH)命令;发送启动温度转换(44H)命令。

  “逐器件读取温度值”的通信流程为:发送复位信号;发送匹配ROM(55H)命令;发送第i(i=0~7)个器件的ROM编码;发送读RAM(BEH)命令;读取2字节,其中低字节在前,高字节在后,读取到的值符合温度值数据格式。

  ④在Proteus中添加监视变量

  为了检验程序运行的正确与否,通常的做法是将运行结果通过单片机的UART接口输出到虚拟终端上,这种方法的缺点是会占用一定的单片机资源,在此介绍另外一种程序调试技巧——监视变量。在Proteus的运行状态下点击Debug→Watch Window会弹出监视窗口(Watch Window),然后按下Alt+A键会弹出如图5所示的添加存储器条目对话框(Add Memory Item)。所谓监视变量也就是监视相应存储单元中的内容,图5中

  

  

  图5 添加存储器条目对话框

  

  Memory用于选择待监视变量所在的存储器;Name用于填写变量名称,为了含义清晰该名称最好与源程序中定义的变量名称一致;Address用于填写待监视变量的地址;Data Type和Display Fomat用于设置数据格式和显示格式。设置完成后单击Add按钮即可添加一个监视变量。在本实例中将测量到的温度值转化成ACSLL码字符串的格式存储在二维数组TempBuffer中,因此Data Type选择为ASCLLZ String,Watch Window的最终结果如图6所示。Value一栏中显示的即为8个DS18B20测量到的温度值,单击仿真模型的温度增减按钮温度值的改变会自动映射在Watch Window中。

  

  

  图6 监视窗口

  图6中TempBuffer[i](i=0~7)的地址在Keil中可以按以下步骤得到:

  ● 单击Keil工具栏中的按钮,进入调试状态。

  ● 通过View→Output Window菜单调出Keil的Output Window,并选中Command标签。

  ● 在Output Window的命令输入区输入TempBuffer[i]然后回车即可得到TempBuffer[i]的地址,在本实例中i=0~7。对于非数组类型的变量在输入时需要在变量名前加取地址符号&,如图7所示。

 

关键字:多点测温  总线接口  配置寄存器  数字温度传感器  ACSLL  protues 引用地址:1-Wire总线与DS18B20应用仿真(图)

上一篇:PCI总线数据输出板驱动程序的开发(图)
下一篇:基于Bang-Bang控制的温湿度调节系统(图)

推荐阅读最新更新时间:2024-03-31 00:01

iPhone12并非压轴大戏,苹果自研芯片Macbook有望下月问市
苹果提交给欧亚经济委员会的认证文档中包含两款全新的Macbook,这在很大程度上证实苹果下月将发布搭载自研苹果硅芯片的全新Macbook。 本周苹果的iPhone 12发布会已经尘埃落定,人们注意力大可以转向苹果即将发布搭载苹果硅芯片的笔记本电脑上来。下个月苹果不仅将发布全新的mac OS操作系统,也将发布搭载自研芯片的MacBook笔记本电脑。苹果的最新文档证实,这类产品肯定会出现。 相关产品的细节和型号来自苹果向欧亚经济委员会提供的认证文档。 文档中的许多清单是针对现有Mac电脑。考虑到macOS 11 Big Sur即将发布,以及苹果公司将在新款Mac电脑上安装更新后的操作系统,相关认证也适用于那些使用新
[家用电子]
iPhone12并非压轴大戏,苹果自研芯片Macbo<font color='red'>ok</font>有望下月问市
苹果:取代15寸机型的16英寸MacBook Pro 9月量产,
有关 16 英寸 MacBook Pro 的传闻,在本周继续发酵。福布斯报道称,苹果将于 9 月开始生产 16 英寸,并逐步淘汰旧款 15 英寸机型。在上周末致投资者的一份报告中,IHS Markit 分析师 Jeff Lin 表示,尚未发布的苹果 16 英寸 MacBook Pro 笔记本,将于今年 9 月开始生产,初期产量目标为 3.9 万台 / 月。 Lin 在一封电子邮件中暗示,此举意味着苹果长期以来的 15.4 英寸机型的终结。其认为旧款产线将悉数转移到 16 英寸平台上,OEM 与面板供应商已经给出了初步的解读。 至于苹果将如何打造全新的 16 英寸 MacBook Pro,目前还有些难猜。有传闻称,该公司会保
[嵌入式]
思博伦解决方案在InteropTokyo2013演示OpenFlow1.3互操作性
全球领先的网络、服务及设备测试解决方案供应商思博伦通信近日宣布,SpirentTestCenter在2013年度东京Interop(InteropTokyo2013)上进行了OpenFlow 1.3互操作性测试的公开演示。 思博伦在日本的独家分销商Toyo公司使用SpirentTestCenter对OpenFlow控制器进行了仿真,并将其与参与此次互操作性测试的数家厂商开发的多种OpenFlow交换机连接。SpirentTestCenter强大的分析能力验证了交换机和控制器的连接性,以及OpenFlow1.3的端对端流量转发能力和性能。此次互操作性演示充分展示了OpenFlow 1.3在商用部署中的准备状况,并荣获2013年度
[测试测量]
发力定位和AR领域,Facebook收购Scape
Strategy Analytics最新发布的研究报告指出,Facebook在2020年2月收购了视觉定位创始公司Scape Technologies,这有望改善Facebook在地图和增强现实(AR)方面的工作。此次收购可能使Facebook与谷歌、HERE、Mapbox和TomTom等其它定位和地图平台竞争。这些公司都旨在提供下一代地图来支持各个领域的现实世界增强现实体验,同时还协助诸如自动驾驶汽车、机器人和其他互联对象之类的机器导航。 Strategy Analytics执行总监David MacQueen表示:“尽管Facebook没有对收购小公司发表评论,但我们认为Scape Technologies将改变Faceb
[物联网]
MSP430串口波特率寄存器配置
在写串口通信时,经常因为时钟频率或波特率更改,需要重新配置波特率寄存器,以MSP430F5438A为例,记录一下寄存器配置方法: //============================= void Hal_Uart_Init(void) { P3SEL|=RXD+TXD; // P3.4,5 = USCI_A0 TXD/RXD UCA0CTL1 |= UCSWRST; // **Put state machine in reset** UCA0CTL1 |= UCSSEL__SMCLK; // CLK = UCSSEL__SMCLK ,8192000Hz UCA0B
[单片机]
基于MSP430系列单片机的CAN总线接口转换卡设计
1 引言 控制器局域网(Controller Area Network,简称CAN)是德国奔驰公司20世纪80年代为解决汽车众多控制设备与仪器仪表之间的数据交换开发的一种串行通信协议。它作为现场总线的一种广泛应用于各种工业现场,根据不同的需要或以主从方式、或以多主方式工作。CAN总线使用的通信介质为双绞线或其他电缆,传输速率可达lMb/s。 CAN总线与其他通信网的不同之处有二:一是报文传送中不包含目标地址,它是以全网广播为基础,各接收站根据报文中反映数据性质的标识符过滤报文,该收的收下,不该收的弃而不用。其好处是可在线上网下网、即插即用和多站接收;二是特别强化了对数据安全性的关注,满足控制系统及其他较高数据要求的系统需求。鉴
[单片机]
基于MSP430系列单片机的CAN<font color='red'>总线接口</font>转换卡设计
基于CY7C646xx的通用串行总线接口
1 USB简介     UBS(Universal Serial Bus)是一种标准的计算机与外设的连接接口,1995年问世,并由Compaq,Digital Equipment Corp.(现属Compaq),IBM,Intel,Microsoft,NEC及Northern Telecom七家计算机与通信工业领域的领先公司组成的联盟定义和推广。1996年,该联盟公布了USB 1.1规范。其后,随着USB的完善和应用的需求,促进了高速USB2.0规范在1999年发布。目前已经成为外设的流行接口选择。     USB具有诸多特性和特点。USB统一了各种接口设备的连接头,如通信接口、打印机接口、显示器接口、音响输入/输出设备、
[嵌入式]
NOKIA移动电话液晶显示模块LPH7366原理及其应用
摘要:LPH7366是一种低功耗、串行通信接口液晶显示模块,可广泛应用于移动电话或便携式设备的液晶显示系统中。文中介绍了LPH7366显示模块的功能原理及操作方式,给出了基于MCS51单片机的控制软件程序。 关键词:液晶显示;移动电话;单片机;LPH7366 1 引言 LPH7366是NOKIA公司生产的可用于其6150、6100等系列移动电话的液晶显示模块,国内厂家也生产有类似的兼容产品。该产品除应用于移动电话外,也可广泛应用于各类便携式设备的显示系统。与其它类型的产品相比,该模块具有以下特点: ●采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,包括电源和地在内的信号线仅有9条。 ●采用多种串行通信协议进行
[电源管理]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新安防电子文章
换一换 更多 相关热搜器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 视频监控 智能卡 防盗报警 智能管理 处理器 传感器 其他技术 综合资讯 安防论坛

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved