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



gongkongedit

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



华安4

  • 精华:1帖
  • 求助:0帖
  • 帖子:15帖 | 99回
  • 年度积分:0
  • 历史总积分:160
  • 注册:2006年11月30日
发表于:2007-04-03 16:07:00
301楼
TO:digi朋友
        我的多点系统已经完成,我想提高驱动能力,你说用74LS245能行么。请回复

还有我建议初学的朋友尽量自己尝试去写一些程序,这样成功的喜悦会更浓厚,因为如果你准备走这条路肯定要迈出独自开发这一步。祝朋友们好运!(玩儿18B20吐血强烈建议用汇编)

华安4

  • 精华:1帖
  • 求助:0帖
  • 帖子:15帖 | 99回
  • 年度积分:0
  • 历史总积分:160
  • 注册:2006年11月30日
发表于:2007-04-03 16:09:00
302楼
我用74LS244试验过了还是不能通过。244可是单通道的丫。不知道么样用。呵呵

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2007-04-03 19:11:00
303楼
digi
你好,想请教你一个问题,我最近在做一个单片机测温的程序,用的是80C52连接DS18B20,采用两线制,DQ接上拉电阻:5K左右,电源为五伏.我用KEIL C编程,程序如下:
#include <reg51.h>
sbit DQ=P1^1;
#define jump_ROM 0xCC
#define start 0x44
#define read_EEROM 0xBE
unsigned char TMPH,TMPL;

void delay(unsigned int N)
{
 int i;
 for(i=0;i<N;i++);
}

bit Reset(void)
{
 unsigned char deceive_ready;
 DQ=0;
 delay(30);
 DQ=1;
 delay(2);
 deceive_ready=DQ;
 delay(28);
 return(deceive_ready);

}

bit read_bit(void)
{
 unsigned char i;
 DQ=0;
 DQ=1;
 for(i=0;i<3;i++);
 return(DQ);
}

void write_bit(unsigned char bitval)
{
 DQ=0;
 if(bitval==1)
 DQ=1;
 delay(4);
 DQ=1;
}

void write_byte(unsigned char val)
{
 unsigned char i,temp;
 for(i=0;i<8;i++)
 {
  temp=val>>i;
  temp=temp&0x01;
  write_bit(temp);
  delay(1);
 
 }
}

unsigned char read_byte(void)
{
 unsigned char i,m,receive_data;
 m=1;
 receive_data=0;
 for(i=0;i<8;i++)
 {
  if(read_bit())
 {
   receive_data=receive_data+(m<<i);
 }
 delay(6);
 }
 return(receive_data);
}

void main()
{
unsigned int i,j;
 TMOD=0x20;
 TL1=0xfd;
 TH1=0xfd;
 SCON=0xd8;
 PCON=0x00;
 TR1=1;
while(1)
    {
          if(Reset());
             {
                 write_byte(jump_ROM);
                 write_byte(start);
                 if(Reset());
                     {
                         write_byte(jump_ROM);
                         write_byte(read_EEROM);
                         TMPL=read_byte();
                         TMPH=read_byte();
                         SBUF=TMPH;
                         while(TI==0);
                         TI=0;
                         SBUF=TMPL;
                         while(TI==0);
                         TI=0;
                         for(i=0;i<1000;i++)
                             for(j=0;j<100;j++);
                     }
             }
    }

}
希望收到温度信号后通过串口发回电脑,我在DEBUG中看汇编的时序好像都没有问题了,但是总是收到0550,也就是85度,我都调整了四天了,比较郁闷,望恢复,还有,你那里有C编写的程序可以给我发一份吗,我比较一下,我的邮箱:zhoujianpingboy@sina.com,谢谢你了,哈哈

digi

  • 精华:19帖
  • 求助:0帖
  • 帖子:52帖 | 797回
  • 年度积分:0
  • 历史总积分:1171
  • 注册:2001年9月19日
发表于:2007-04-04 15:02:00
304楼
汇编程序已发送,请参考。
C不容易控制时序,你先调汇编吧,用汇编来确认硬件电路。C慢慢来,我手头没有合适的C例程。

华安4

  • 精华:1帖
  • 求助:0帖
  • 帖子:15帖 | 99回
  • 年度积分:0
  • 历史总积分:160
  • 注册:2006年11月30日
发表于:2007-04-06 17:15:00
305楼
!(玩儿18B20吐血强烈建议用汇编)

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2007-04-12 15:04:00
306楼
digi你好!我很敬重你,我用18B20测温是成功的,能否送给我一份控制温度并报警的C51程序,ou5155@126.com

digi

  • 精华:19帖
  • 求助:0帖
  • 帖子:52帖 | 797回
  • 年度积分:0
  • 历史总积分:1171
  • 注册:2001年9月19日
发表于:2007-04-12 16:06:00
307楼
晕,只是交流而已,不要说得这么郑重。温度数据都回来了,控制那一部分程序很容易搞定啊,只需要做一个判断然后将继电器置1即可,建议重复多发几次,还有报警解除做一个范围量(即回差),避免温度在控制点波动时,继电器重复工作

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2007-04-13 00:42:00
308楼

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2007-04-13 00:51:00
309楼
To digi:
      我是一个在校大学生,我做的毕业设计是基于一个18B20的温度报警电路,我的CPU采用的是89C52,我采用的显示芯片19264,-3是精度要求是0.0625,自己写的程序不知道哪有问题,到了65度不报警,而且温度显示不正确,不知道怎么了.能否借您的原程序一用
      我的邮箱:wangzeyucyy@yahoo.com.cn

digi

  • 精华:19帖
  • 求助:0帖
  • 帖子:52帖 | 797回
  • 年度积分:0
  • 历史总积分:1171
  • 注册:2001年9月19日
发表于:2007-04-13 09:40:00
310楼
汇编程序已发送,不过建议毕业设计还是以自己动手,自己找问题为好。毕竟马上就快工作了,总不能工作中一有就找人帮忙吧。提高提高自己分析问题,解决问题的能力总没有坏处。

handh65

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2006年10月11日
发表于:2007-04-13 09:49:00
311楼
我想采购18B20,请问怎样与你联系.
我的电话 0310--3271529
E-mail:handh65@sina.com

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2007-04-15 20:12:00
312楼
to digi
时间急,我想买一个2-8路多点显示温度程序,用LED OR 12232F显示,试好后保证再献给大家.ou5155@126.com,01081670645.

fanglin00

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 2回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2007年4月15日
发表于:2007-04-15 20:47:00
313楼
To digi:
      我是一名在校大学生,正在写18b20的程序,但我是用c语言的写的,可能是时序不对吧,无法正确读取温度,能把你的汇编程序发给我参考一下。谢谢!
      我的邮箱:fanglin00@sohu.com

digi

  • 精华:19帖
  • 求助:0帖
  • 帖子:52帖 | 797回
  • 年度积分:0
  • 历史总积分:1171
  • 注册:2001年9月19日
发表于:2007-04-16 09:36:00
314楼
to oubin
不好意思,我手头只有单点的程序。

to fanglin00
C读取18B20时,关键就在于控制时序。你仔细参考一下汇编

一个壮丁

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 192回
  • 年度积分:0
  • 历史总积分:206
  • 注册:2005年8月02日
发表于:2007-04-16 10:42:00
315楼
digi干脆开班讲课算了,这样也太累了。I服了you。

fanglin00

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 2回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2007年4月15日
发表于:2007-04-17 13:34:00
316楼
18B20 是不是三个脚的,1地 2信号 3正?管脚怎样判断了

digi

  • 精华:19帖
  • 求助:0帖
  • 帖子:52帖 | 797回
  • 年度积分:0
  • 历史总积分:1171
  • 注册:2001年9月19日
发表于:2007-04-17 14:22:00
317楼
to fanglin00
晕,做开发不看说明书?!!你还不如直接放弃好了……

to 壮丁
这样吧,你帮忙找场地,负责收门票。给你3成利润,何如?

phwok

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 9回
  • 年度积分:0
  • 历史总积分:9
  • 注册:2006年3月14日
发表于:2007-04-21 15:26:00
318楼
   这个帖子真是火啊,digi这几年来光一个ds18b20就不知帮了多少人,好人拉!您也帮助过我,对您再次感谢!
  不过说句实在话,这个18b20的时序真是要求太严格,前些日调一个,以前写的程序拿过来居然不好用,呵呵。
  另外,建议做个ds18b20的FAQ,要不可把digi累坏了:)

神人

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2007年4月22日
发表于:2007-04-22 19:04:00
319楼
to digi :
   你好!
   能不能给我一份DS18B20的search rom 命令,即读ROM的序列号
   谢谢
   心人知道也请告之,谢谢。
  我的邮箱是zhanyyaoguang@163.com

digi

  • 精华:19帖
  • 求助:0帖
  • 帖子:52帖 | 797回
  • 年度积分:0
  • 历史总积分:1171
  • 注册:2001年9月19日
发表于:2007-04-23 09:54:00
320楼
to phwok
不用客气,大多数时候我也仅仅只是提供一个例程,最多说说上拉电阻什么的。举手之劳而已,客气了。

to 占跃光
我这里只有单点源程序,可能帮不上你,不好意思。

热门招聘
相关主题

官方公众号

智造工程师