请教ds18b20 点击:22436 | 回复:415



gongkongedit

    
  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2004-02-26 09:29:00
楼主
我正在做ds18b20的多点测量实验,但是输出的温度有时正确有时错误(为85度),不知道是什么原因?另外我采用外接电源的方法,没有mos强的上拉,不知道会不会有影响?



sky216

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 2回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2004年4月21日
发表于:2004-05-09 16:18:00
101楼
to digi   我用ds18b20测量单点温度,采用外部Vdd供电方式, 单片机AT89C51的P3.3接DQ,DQ同时通过上拉电阻接5V;GND接地;Vdd接5v。但是测出的温度总不正确,请问这是什么原因造成的。

digi

  • 精华:19帖
  • 求助:0帖
  • 帖子:52帖 | 797回
  • 年度积分:0
  • 历史总积分:1171
  • 注册:2001年9月19日
发表于:2004-05-09 17:13:00
102楼
to sky216 硬件接线没问题,那么读数问题有很多种原因。需要再介绍现场状况才能做判断,可能的原因很多:读取时序不对,现场有干扰,芯片来源等等

gmsyxf

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 4回
  • 年度积分:0
  • 历史总积分:7
  • 注册:2004年4月14日
发表于:2004-05-11 19:48:00
103楼
to digi 我的DS18B20多点测温程序还是没有调试出来,不能统一转换,依次读取,转换完毕后只能读到第一个匹配的温度,第二个匹配的传感器温度无法读出来。我认真看了也找不到原因,我现在怀疑是否引线太长了(20米),产生干扰。或者是这2个DS18B20是假货。如果在找不到原因只好抽时间跑去广州再买2个试试了。不知可否发个多点程序参考一下,谢谢! yuanxiongfei@21cn.com

digi

  • 精华:19帖
  • 求助:0帖
  • 帖子:52帖 | 797回
  • 年度积分:0
  • 历史总积分:1171
  • 注册:2001年9月19日
发表于:2004-05-12 09:46:00
104楼
to 51MCU 不好意思,我手头也没有多点测温的程序。正常状况下20米的引线并不长,通常是没有问题。有几种可能,程序逻辑不对(可能性较大,注意检查),器件问题(除了需确保正品外,还需注意购买B6版的18B20)

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2004-05-16 12:07:00
105楼
to all: 哪位朋友多点测量做好了,能否借参阅一下? 有问题大家共同交流,luohuguang@126.com

pgb

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2004年5月23日
发表于:2004-05-18 22:03:00
106楼
TO ALL 我也是 哪位朋友多点测量做好了,能否借参阅一下? pgb1213@tom.com

虫2

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 3回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2004年5月19日
发表于:2004-05-19 09:18:00
107楼
大家好! 我是一个初学者,再做毕业设计。用ds18b20连8031实现多路温度检测。 想请教一下再那可以查到有关资料。我不了解ds18b20怎么用 谢谢!!!

daizh2000

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2004年5月21日
发表于:2004-05-21 14:23:00
108楼
我的程序读不出来.谁能把程序(已通过)发给我看看吗。这是我的程序不能正确显示,你也可以帮我看看那里错了。谢谢了!!!这是我毕业设计中的一段。

daizh2000

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2004年5月21日
发表于:2004-05-21 14:25:00
109楼
我的程序读不出来.谁能把程序(已通过)发给我看看吗。这是我的程序不能正确显示,你也可以帮我看看那里错了。谢谢了!!!这是我毕业设计中的一段。很紧急!!1 ;温度转换和读取 ;|---------------------------获取单个ds1820转化的温度值的应用程序,P1.3接ds1820 | TEMPER_L EQU 16H TEMPER_H EQU 15H TEMPER_NUM EQU 17H TEMPER_P EQU 18H DQ BIT P1.3 ORG 0000H AJMP MAIN ORG 0020H MAIN: MOV SP,#60H LCALL GET_TEMP SJMP $ GET_TEMP: CLR EA ;使用ds1820一定要禁止任何中断产生 LCALL INT ;调用初使化子程序 MOV A,#0CCH LCALL WRITE ;送入跳过ROM命令 MOV A, #44H LCALL WRITE ;送入温度转换命令 LCALL INT ;温度转换完全,再次初使化ds1820 MOV A,#0CCH LCALL WRITE ;送入跳过ROM命令 MOV A,#0BEH LCALL WRITE ;送入读温度暂存器命令 LCALL READ MOV TEMPER_L,A ;读出温度值低字节存入TEMPER_L LCALL READ MOV TEMPER_H,A ; 读出谩度值高字节存入TEMPER_H LCALL TEMPER_COV ;将从DS18B20中读出的温度数据进行转换 SETB EA RET INT:CLR EA ;初始化ds1820子程序 L0:CLR DQ ;ds1820总线为低复位电平 MOV R2,#200 L1:CLR DQ DJNZ R2,L1 ;总线复位电平保持400us SETB DQ ;释放ds1820总线 MOV R2,#30 L4:DJNZ R2,L4 ;释放ds1820总线保持60us CLR C ;清存在信号 ORL C,DQ JC L0 ;存在吗?不存在则重新来 MOV R6,#80 L5:ORL C,DQ JC L3 DJNZ R6,L5 SJMP L0 L3:MOV R2,#240 L2:DJNZ R2,L2 RET WRITE:CLR EA ;向ds1820写操作命令子程序 MOV R3,#8 ;写入ds1820的bit数,一个字节8个bit WR1:SETB DQ MOV R4,#8 RRC A ;把一个字节data(A)分成8个bit环移给 C CLR DQ ;开始写入ds1820总线要处于复位(低)状态 WR2:DJNZ R4,WR2 ;ds1820总线复位保持16us MOV DQ,C ;写入一个bit MOV R4,#20 WR3:DJNZ R4,WR3 ;等待40us DJNZ R3,WR1 ;写入下一个bit SETB DQ ;重新释放ds1820总线 RET READ: CLR EA MOV R6,#8 ;连续读8个bit RE1:CLR DQ ;读前总线保持为低 MOV R4,#4 NOP SETB DQ ;开始读总线释放 RE2:DJNZ R4,RE2 ;持续8us MOV C,DQ ;从ds1820总线读得一个bit RRC A ;把读得的位值环移给 A MOV R5,#30 RE3:DJNZ R5,RE3 ;持续60us DJNZ R6,RE1 ;读下一个bit SETB DQ ;重新释放ds1820总线 RET ;-------------------将从DS18B20中读出的温度数据进行转换 TEMPER_COV:MOV TEMPER_P,#80H MOV A,TEMPER_L ;判定小数点后精度 JNB ACC.3,TEMPER_COV0 MOV TEMPER_P,#85H TEMPER_COV0:MOV A,#0F0H ANL A,TEMPER_L ; 舍去温度低位中小数点后的四位温度数值 SWAP A MOV TEMPER_NUM,A MOV A,TEMPER_H ANL A,#07H SWAP A ORL A,TEMPER_NUM MOV TEMPER_NUM,A ; 保存变换后的温度数据 ;-------------------将16进制的温度数据转换成压缩BCD码 MOV A,TEMPER_NUM MOV B,#100 DIV AB MOV TEMPER_NUM,A ;TEMPER_NUM存入百位 MOV A,#10 XCH A,B DIV AB ;A是BCD码的十位B是个位 MOV TEMPER_H,A MOV TEMPER_L,B ;-------------------显示温度部分 MOV R0,TEMPER_NUM ;百位 MOV R1,#01H LCALL TRT MOV R0,TEMPER_H ;十位 MOV R1,#02H LCALL TRT MOV R0,TEMPER_L ;个位 MOV R1,#03H LCALL TRT MOV R0,TEMPER_P ;小数 MOV R1,#04H LCALL TRT RET ;TRT为发送LED显示子程序

dadxxx

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 7回
  • 年度积分:0
  • 历史总积分:37
  • 注册:2003年10月27日
发表于:2004-05-21 16:35:00
110楼
pls dont send more letter to me!

pgb

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2004年5月23日
发表于:2004-05-23 23:33:00
111楼
TO digital 你好,请教一下DS18B20的报警搜索命令ECH是怎么用的?怎么实现报警功能? 谢谢。

digi

  • 精华:19帖
  • 求助:0帖
  • 帖子:52帖 | 797回
  • 年度积分:0
  • 历史总积分:1171
  • 注册:2001年9月19日
发表于:2004-05-31 10:31:00
112楼
to pgb 一般不建议在18B20上作报警设定,建议在单片机或者是PC上做报警设定。

pgb

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2004年5月23日
发表于:2004-06-08 20:30:00
113楼
请教digi先生 一个DS18B20正常运行时,读/写速度大致是多少?在同一根线上最多可以接多少片DS18B20?

digi

  • 精华:19帖
  • 求助:0帖
  • 帖子:52帖 | 797回
  • 年度积分:0
  • 历史总积分:1171
  • 注册:2001年9月19日
发表于:2004-06-10 16:47:00
114楼
18B20读写时间非常短,只是转换时间长点(750ms)。同一根线上理论上连接数目好像是无限吧,但一般不建议接太多传感器,通常在几十只左右。 你大概是想做一个什么样的东西?

pgb

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2004年5月23日
发表于:2004-06-11 11:02:00
115楼
to digi 谢谢digi先生!我看很多点温度系统都用到DS18B20,我只想了解一下. 非常感谢digi先生.

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2004-06-16 22:15:00
116楼
18B20 B6和B7的主要区别在哪里?

digi

  • 精华:19帖
  • 求助:0帖
  • 帖子:52帖 | 797回
  • 年度积分:0
  • 历史总积分:1171
  • 注册:2001年9月19日
发表于:2004-06-17 09:22:00
117楼
to pgb 不用客气。 to wzq DS18B20现阶段出问题的是B7版本,其故障现象大致为:三线连接时,上下电时可能会死机。2004年生产的DS18B20均为B7版本,在传感器正面可以看到如“0410B7”的字样,0410为生产年份和星期:04代表2004年,10代表第10周;B7即为版本号。 另,问问题前最好先看看旧贴。

gmsyxf

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 4回
  • 年度积分:0
  • 历史总积分:7
  • 注册:2004年4月14日
发表于:2004-07-02 19:49:00
118楼
To digi   我是一个业余单片机爱好者,我从帖子上了解到你给大家很多的帮助,给他们发送了不少DS18B20程序,不知能否也发个18b20的单点汇编程序给我参考一下,我自己编调试不通,请多多指教,非常感谢!    我的信箱是gmsyxf@21cn.com

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2004-07-07 11:59:00
119楼
请教各位:我用PIC16C73B单片机做的测控温系统,只有一个18B20采用三线测量,有独立的VCC和GND,数据线通过单片机可强上拉,系统测温都很正常,但工作一段时间或受到火花干扰后,读不到18B20的应答信号,当把18B20的VCC断开再上电后,工作又正常了!不知道什么原因?请各位指教! 邮箱YJJ_22941@SOHU.COM 谢谢!

gmsyxf

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 4回
  • 年度积分:0
  • 历史总积分:7
  • 注册:2004年4月14日
发表于:2004-07-08 08:36:00
120楼
To digi: 谢谢!邮件已经收到,非常感谢!我马上看看.

热门招聘
相关主题

官方公众号

智造工程师