打印

DS18B20

[复制链接]
1604|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#include<reg52.h>
#define  uchar   unsigned char
#define  uint    unsigned int
uchar    code    table1[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共阴数码管表//
//uchar    code    table2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfb,0x87,0xff,0xef};//共阴数码管带小数点的显示//
sbit     DQ=P3^0;
sbit     w0=P2^0;
sbit     w1=P2^1;
sbit     w2=P2^2;
sbit     w3=P2^3;
void   delay(n)
{
   while(n--);
}
void   delayms(uchar n)
{
   uchar  i,j;
   for(i=0;i<n;i++)
      for(j=0;j<110;j++);
}  
   
//======DS18B20的初始化======////
void  int18b20()
{
    DQ=1;
    delay(2);//延时时间要求短
    DQ=0;
    delay(100);//要求延时时间大于480us//
    DQ=1;
    delay(40);//时间短一点   
}
//====读一个字节======//
void  write_18b20(uchar com)//写指令的程序
{
   uchar  i,j;
   
  for(i=0;i<8;i++)
    { DQ=0;
     j++;j++;
  DQ=com&0x01;
  j++;j++;j++;
  com>>=1;
  delay(10);
  DQ=1;
}
}
///=======读一个字节=====///
uchar  read_18b20()
{
   uchar  j,i,dat=0;
   for(i=0;i<8;i++)
     {  
       dat>>=1;
    DQ=0;
    j++;
    DQ=1;
    if(DQ)
    dat=dat|0x80;
    delay(1);//小延时//
    DQ=1;
  }
   return(dat);
}
///======温度读取并且转换的程序=====/
uchar shuju()
{   
    int temp1,temp2;
float  temp;
int18b20();
write_18b20(0xCC);
write_18b20(0x44);
delayms(100);
//等待数据转化完成//
int18b20();
write_18b20(0xCC);
write_18b20(0xBE);
temp1=read_18b20();//先读取的低位数据//
temp2=read_18b20();
temp2<<=8;
temp2=temp2|temp1;
if(temp<0xffff)
   {temp2=temp2;}
  else
   {temp2=~temp2;temp2=+1;}
temp=temp2*0.625;
return(temp);
}
//=======显示=========//
void  display()
{
     uint  temp;
     temp=shuju();
  w1=1;
  w2=1;
  w3=1;
   w1=0;
  P0=table1[temp/100];
  delayms(10);
  w1=1;
  w2=0;
  P0=table1[temp%100/10];
  delayms(10);
  w2=1;
  w3=0;
  P0=table1[temp%10];
  delayms(10);
  w3=1;
}
//延时//
void  main()
{
     delayms(2);
  int18b20();
while(1)
{   
   delayms(30);        
   display();//数据的显示//(温度)
}
} 弄了好久,一直没有成功,,求各路大神帮忙解决。

相关帖子

沙发
flyingfishw| | 2013-3-19 20:13 | 只看该作者
ds18b20上拉电阻小了,一般4.7k。用10k也可以。数据交换应该是全局变量,不是局部变量。这个你试一下看,我也是新手。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

55

帖子

0

粉丝