ImageVerifierCode 换一换
格式:DOC , 页数:7 ,大小:81KB ,
资源ID:6975467      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-6975467.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DS18B20_ROM编码的搜索算法.doc)为本站会员(wspkg9802)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

DS18B20_ROM编码的搜索算法.doc

1、DS18B20 ROM 编码的搜索算法当温度传感器均挂与单线总线上时,对单线总线上的DS18B20正确寻址是其正常地测量温度先决条件,而识别ROM编码是对单线总线上的DS18B20正确寻址唯一方法。所以对单线总线上的DS18B20 ROM编码搜索与识别是必须的。1)“单线总线 ”通信协议“单线总线”是一种在一条总线(这条总线只有一条口线)具有单主机多从机的总线系统,在“ 单线总线 ”可挂多个从机系统。 为了不引起逻辑上的冲突,所有从机系统“ 单线总线”接口都是漏极开路的,多个从机系统输出信号在总线上实现线与。因此在使用时必须对总线外加上拉电阻。为保证数据的完整性,所有的单线总线器件都要遵循严格

2、的通信协议。“单线总线”通信协议定义了复位脉冲、应答脉冲、写时序和读时序等几种信号类型(具体的时序参考3.1节,这里不再做具体介绍)。所有的单总线命令序列(如初始化,ROM命令,RAM 命令 )都是由这些基本的信号类型组成的。在这些信号中,除了应答脉冲外,其它均由主机发出,并且发送的所有命令和数据都是字节的低位在前。2)DS18B20 ROM 搜索命令当单线总线上挂有多个 DS18B20 时,系统对总线上器件的数量和每个器件的 ROM 的识别与搜索是通过 DS18B20 ROM 搜索命令与算法配合来实现的。下面具体介绍 ROM 搜索命令的工作过程。对 64 位 ROM 编码识别从最低位开始,

3、ROM 编码的每一位搜索过程可总结为“两读一写 ”:读一位,读该位补码,写一位。总线主机在 ROM 编码每一位上完成这三步就可以获得一个器件的ROM 编码。 “两读”总线主机发布 ROM 搜索命令后执行一次读,总线上所有器件就把它们各自 ROM 编码的第一位放到总线来做做出响应。这次读获得的数据是所有器件放在总线上数据的“ 与” 。再执行一次读,因为 ROM 搜索命令正在执行所以总线上所有器件把各自 ROM 编码的第一位的补码放在总线上,第二次读获得的数据也是所有器件放在总线上数据的“与” 。对第一位的 “两读”就此完成。之后主机再次进行的“ 两读” 则是针对 ROM 编码的第二位,以此类推。

4、从“两读” 获得的数据有以下解释,见表 3-1表 3-1 “两读”获得的数据解释“两读”数据 “两读”数据解释00 有器件在总线上,总线上所有器件在此数据位上发生冲突01 有器件在总线上,总线上所有器件在此数据位均为 010 有器件在总线上,总线上所有器件在此数据位均为 111 没有有器件在总线上 “一写”对 ROM 编码的某一位“两读”之后对该位进行“ 一写” 操作。 “一写”操作写的数据则要根据“ 两读” 获得的数据来确定,如果 “两读” 数据为 00 则表示总线上器件在该位上数据发生冲突, “一写” 写的数据此种情况下具有 “排除”的作用,如果器件 ROM 编码在该位上的数据与“一写”写

5、的数据相同则继续保持与总线的联系。如果不相同则此器件从总线上“排除” ,不再响应主机发布的命令,直到主机进行下一次复位。如果“两读” 数据为 01 则表示总线上所有器件在该位上均位0,为保持器件与总线的联系“一写” 操作主机应写 0 。同理为“两读”数据为 10主机则应写 1。3)DS18B20 ROM 编码的搜索算法在一条“单线总线 ”上的挂有多片 DS18B20 情况下,对 ROM 编码的搜索与识别主要是通过“ 两读” 数据为 00 时 “一写” 操作的 “排除”作用来实现的。多次“排除”作用后就可以使总线上只剩下唯一的一个器件仍与总线保持联系。如何“排除”这需要算法的配合。下面具体介绍

6、DS18B20 ROM 编码的搜索算法。先确立几个定义:对 “两读” 数据为 00 的 ROM 编码位,之后“ 一写”操作主机要写的数据定义为“00 写位” ;所有 00 写位的集合定义为 “00 写位组”。那么搜索算法所要解决的问题就是:确立一个 00 写位组,确保搜索命令能够搜索到一个唯一的 ROM 编码,并在完成一次搜索后对 00 写位组做出更新以确保下次的搜索命令能够搜索到一个唯一的 ROM 编码并且不会搜索到已经搜索到的ROM 编码,直到完成总线上所有的器件的 ROM 编码搜索。在给出搜索算法规则前再确立几个定义:00 写位组中最高 ROM 编码位对应的 00 写位定义为“ 最高 0

7、0 写位” ;00 写位组中邻近最高 00 写位的 00 写位定义位“次高 00 写位” ;如果更新后的 00 写位组不足以搜索到一个唯一的 ROM编码,则添加新的 00 写位,这个新的 00 写位定义位“新 00 写位” 。DS18B20 ROM 编码的搜索算法规则: 第一次搜索确立一个 00 写位组,其中所有 00 写位全部为 0。 每次搜索后更新 00 写位组并从最高 00 写位开始更新。 00 写位组更新规则:如果最高 00 写位为 0 则改最高 00 写位为 1,更新完成。如果最高 00 写位为 1,则弃去最高 00 写位并把次高 00 写位作为新的最高 00 写位。 如果出现新 0

8、0 写位,新 00 写位一律为 0 并作为新的最高 00 写位。 如果 0 写位组全为 1 则搜索所有器件的 ROM 编码,搜索结束。4)单线总线上DS18B20 ROM 编码的搜索与识别功能函数对一条“单线总线 ”上多片 DS18B20 ROM 编码搜索与识别具体由 C51 编写的函数 uchar SearchRomID(uchar RomIDn8)来实现。函数的返回值是总线上查找到的器件个数,总线上所有器件的 ROM 编码存入二维数组 RomIDn8。其中 n 为总线上允许挂器件的最大值。文中取 16。先对程序中的几个重要变量做一写说明:_00wbit:一维数组,用来存储 00 写位组全部

9、内容。它的长度由总线上允许挂器件的最大值决定。每写一个 00 写位都可以“排除 ”至少一个总线上的器件,当总线上器件数为 n 是,_00wbit 数组的长度应为 n-1。当然这是最坏情况下的取值,很多情况下_00wbit 数组的长度小于这个值,这时不用的 _00wbit 数组位用 2 来填充。Rom64:一维数组,临时存储 64 位 ROM 编码。b:搜索结束标志位。R1,R2:“两读”数据位。程序代码如下:uchar SearchRomID(uchar RomID168)uchar xdata Rom64;uchar i,j,R1,R2,a,b,c,d;uchar _00wbit15=2;

10、/初始化 00 写位组全部为填充位 2for(i=0 ,c=0;i=1;RomIDij/8|=0x80;else RomIDij/8=1;for(a=0,c=7;c=0;c-) /更新 00 写位数组if(_00wbitc=2) /跳过 00 写位组中的填充位continue;if(_00wbitc=0break;else if(_00wbitc=1)/最高 00 写位为 1if(c!=0) /为 1 的 00 写位不为 00 写位组的最低位a+=1;/记录不为 00 写位组的最低位且为 1 的连续 00 写位个数continue;elseb=1; /00 写位组全部为 1,搜索结束置标志位b

11、reak;else if(_00wbitc=0/赋次高 00 写位为 1for(;a0;a-)/连续弃去为 1 的最高 00 写位c+=1;_00wbitc=2;break;if(b=1) break; /搜索结束标志位为 1 跳出return(i+1);/返回总线上器件个数单线总线上DS18B20 ROM编码的搜索与识别功能函数流程图如图 3-7所示。图 3-7 单线总线上 DS18B20 ROM 编码的搜索与识别功能函数流程图单线总线上DS18B20 ROM编码的搜索与识别功能函数程序各函数包含于头文件SearchRomID.h中,在主函数中加入宏定义 #include“SearchRomID.h“。

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报