找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9792|回复: 3
收起左侧

单片机读取DS18B20序列号c51程序

[复制链接]
ID:75926 发表于 2015-4-3 23:49 | 显示全部楼层 |阅读模式
本帖最后由 xiaos 于 2015-4-3 23:52 编辑

      DS18B20中有一个64位光刻ROM,按说明书说法,开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
    读取ROM方法:先复位DS18B20,成功后执行读取ROM命令(33H),然后将这64位以8个字节的方式存入数组,最后用LCD或LED逐个字节显示出来。下面是读取ROM的主程序:
程序中用到的函数头文件下载:http://www.51hei.com/mcu/2082.html
  1. void main()
  2. {
  3. uchar i;
  4. uint j=200;
  5. rest_ds18b20();//复位
  6. write_ds18b20(0x33); //读序列号
  7. for(i=0;i<8;i++)
  8.   Rom_18B20[i]=read_ds18b20();
  9.     while(1)
  10.     {
  11.   for(i=0;i<8;i++)
  12.   {
  13.    while(j--)
  14.     dis(i,16,Rom_18B20[i]/16,Rom_18B20[i]%16,16,16);//数码管显示
  15.    j=200;
  16.   }
  17.     }
  18. }
复制代码


    在读取ROM实验中发现:仿真或实际电路实验第0字节均为28,这情有可原,因为这是DS的产品类型标号。但第5、6字节均为00,无论仿真或实际电路实验都是如此。如果真的这样,那第5、6字节就失去意义了,64位ROM其实就只有48位了。真的吗?
回复

使用道具 举报

ID:98370 发表于 2015-12-8 21:40 | 显示全部楼层
里面还有吗
回复

使用道具 举报

ID:60379 发表于 2015-12-8 22:25 | 显示全部楼层
是对的,比如:28 74 93 7F 02 00 00 DE

28 57 8D 7F 02 00 00 EF
28 D5 8E 7F 02 00 00 25
28 83 A7 7F 02 00 00 B2
回复

使用道具 举报

ID:194184 发表于 2017-4-27 14:38 | 显示全部楼层
学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表