智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1198|回复: 1
打印 上一主题 下一主题

[编程类] 求大神帮看下DS18B20的程序。为什么出来的数据不会变。

[复制链接]

2

主题

51

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1233
威望
599
贡献
370
兑换币
390
注册时间
2013-1-4
在线时间
132 小时
毕业学校
万里
跳转到指定楼层
1#
发表于 2013-3-8 18:42:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面是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;
}  

8

主题

442

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4937
威望
1850
贡献
1481
兑换币
215
注册时间
2011-6-22
在线时间
803 小时
2#
发表于 2013-3-8 19:18:41 | 只看该作者
你是怎样把他放在主函数里面的。。在显示后面要加while(1);死循环才能不断的检测。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-28 06:21 , Processed in 0.050500 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表