找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3244|回复: 4
收起左侧

单线挂载多路ds18b20的单片机源程序

[复制链接]
ID:68356 发表于 2018-1-13 16:01 | 显示全部楼层 |阅读模式
单线挂载多个ds18b20源码,一份读取单个ds18b20 rom,一份挂载多个ds18b20的,程序里只挂载了两个,修改一下可以挂载多个,lcd1602显示读取的温度
0.jpg
单片机源程序如下:
  1. #include"ds18b20.h"
  2. uchar rom[2][8]={
  3. {0x28,0x6e,0xe4,0x4d,0x06,0x00,0x00,0xa7},
  4. {0x28,0xff,0xa3,0xfd,0xa4,0x16,0x05,0xc8}};
  5. int temp[2];
  6. void dsinit()
  7. {
  8.    uchar i;
  9.    dsport=0;
  10.    i=90;
  11.    while(i--);
  12.    dsport=1;
  13.    i++;
  14.    i++;
  15.    while(dsport);
  16.    while(!dsport);
  17.    i++;
  18.    i++;
  19. }
  20. void dssendbit(bit x)
  21. {
  22.    uchar i;
  23.    dsport=0;
  24.    i++;
  25.    i++;
  26.    dsport=x;
  27.    i=9;
  28.    while(i--);
  29.    dsport=1;
  30.    i++;
  31.    i++;
  32. }
  33. bit dsreadbit()
  34. {
  35.    uchar i;
  36.    bit x=0;
  37.    dsport=0;
  38.    i++;
  39.    i++;
  40.    dsport=1;
  41.    i++;
  42.    i++;
  43.    if(dsport)
  44.    {
  45.       x=1;
  46.    }
  47.    i=9;
  48.    while(i--);
  49.    return x;
  50. }
  51. void dssendbyte(uchar byte)
  52. {
  53.    uchar n;
  54.    for(n=0;n<8;n++)
  55.    {
  56.       dssendbit(byte&0x01);
  57.           byte>>=1;
  58.    }
  59. }
  60. uchar dsreadbyte()
  61. {
  62.    uchar n,dat;
  63.    for(n=0;n<8;n++)
  64.    {
  65.       dat>>=1;
  66.           if(dsreadbit())
  67.           {
  68.              dat|=0x80;
  69.           }
  70.    }
  71.    return dat;
  72. }
  73. /*void dsconvert()
  74. {
  75.    uchar i;
  76.    dsinit();
  77.    dssendbyte(0xcc);
  78.    dssendbyte(0x44);
  79.    i++;
  80.    i++;
  81.    while(!dsport);
  82.    i++;
  83.    i++;
  84. }
  85. void dsreadtempcom()
  86. {
  87.    dsinit();
  88.    dssendbyte(0xcc);
  89.    dssendbyte(0xbe);
  90. }*/
  91. void dsreadtemp()
  92. {
  93.    uchar tml,tmh,n,v,i;
  94.    for(n=0;n<2;n++)
  95.    {
  96.    dsinit();
  97.    dssendbyte(0x55);
  98.    for(v=0;v<8;v++)
  99.    {
  100.       dssendbyte(rom[n][v]);
  101.    }
  102.    dssendbyte(0x44);
  103.    i++;
  104.    i++;
  105. ……………………

  106. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
单线挂载多路ds18b20.zip (75.52 KB, 下载次数: 69)

评分

参与人数 2黑币 +55 收起 理由
dingqinhong + 5 很给力!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:32289 发表于 2018-1-13 20:02 | 显示全部楼层
这个可以有,下载来看看。
回复

使用道具 举报

ID:68356 发表于 2018-1-14 02:57 | 显示全部楼层
本帖最后由 xiuyueyuan2013 于 2018-1-14 13:23 编辑

那个搜索警报的命令0xec怎么用,高手指导下哈,自己没看懂pdf说明
回复

使用道具 举报

ID:420182 发表于 2018-11-16 20:53 | 显示全部楼层
改了端口,但为什么没法显示序列号啊 rom
回复

使用道具 举报

ID:569657 发表于 2019-9-9 08:57 | 显示全部楼层
感谢楼主
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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