智能车制作

标题: 求大神帮看下DS18B20的程序。为什么出来的数据不会变。 [打印本页]

作者: 神马青年啊    时间: 2013-3-8 18:42
标题: 求大神帮看下DS18B20的程序。为什么出来的数据不会变。
下面是DS18B20的初始化和读写程序

#define uchar unsigned char
#define uint unsigned int
#define DQ PORTE_PE0

void delay1(uint i)
{while(i--)
;
}

void init(void)
{uchar n;
DDRE=0xff;
DQ=1;
DQ=0;
delay1(600);
DQ=1;
DDRE=0x00;
delay1(8);
n=DQ;
DDRE=0xff;
delay1(200);
DQ=1;
}
void write_byte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{DQ=0;
  
  DQ=dat&0x01;
  
  DQ=1;
  dat>>=1;
}
DQ=1;
  delay1(4);
}

uint read_byte(void)
{uint i,value;
DQ=1;
for(i=0;i<8;i++)
{DQ=0;
value>>=1;
DQ=1;
DDRE=0x00;
if(DQ)
value|=0x80;
delay1(40);
DDRE=0xff;
}
return value;
}
uint readtemp(void)
{
uint a,b;
uint c;
init();
write_byte(0xcc);
write_byte(0x44);
delay1(300);
init();
write_byte(0xcc);
write_byte(0xbe);
a=read_byte();
b=read_byte();
b<<=4;
b+=(a&0xf0)>>4;
c=b;
return c;
}  

作者: 冰葑世纪    时间: 2013-3-8 19:18
你是怎样把他放在主函数里面的。。在显示后面要加while(1);死循环才能不断的检测。




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2