智能车制作
标题:
求大神帮看下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