DS18b20 输出不稳定,数码管显示总是在跳。。我猜是DS18b20延时长短的问题,数码管是没问题的,求大神帮忙 5

#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharsbitwex=P2^7;sbitdux=P... #include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit wex=P2^7;
sbit dux=P2^6;
sbit DQ=P2^2;
uchar num,temp;
uchar code table1[]={0x00,0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x40,0x6c};
uchar code table2[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
void delayms(uint);
void display(uchar dat);

void delay(uint z)
{
while(z--);
}
void init_18B20()
{
uchar n;
DQ=1;
delay(10);
DQ=0;
delay(80);
DQ=1;
delay(10);
n=DQ;
delay(5);
}
void write_byte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
DQ=0;
DQ=dat&0x01;
delay(5);
DQ=1;
dat>>=1;
}
delay(5);
}
uchar read_byte()
{
uchar i,value;
for(i=0;i<8;i++)
{
DQ=0;
value>>=1;
DQ=1;
if(DQ)
value|=0x80;
delay(5);

}
return value;
}
uchar readtemperature()
{
uchar a,b;
init_18B20();
write_byte(0xcc);//跳过rom
write_byte(0x44);//驱动温度测量
delay(400);
init_18B20();
write_byte(0xcc);
write_byte(0xbe);
a=read_byte();//低8位
b=read_byte();//高8位
b<<=4;
b+=(a&0xf0)>>4;
return b;
}
void main()
{
while(1)
{
delayms(10);
display(readtemperature());
}
}

void display(uchar dat)
{
uchar shi,ge;
shi=dat/10;
ge=dat%10;
P0=0xfe;
wex=1;
wex=0;

P0=table1[shi];
dux=1;
dux=0;
delayms(5);

P0=0xfd;
wex=1;
wex=0;

P0=table1[ge];
dux=1;
dux=0;
delayms(5);

}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
展开
 我来答
侃说而今2
2012-08-07 · TA获得超过1.5万个赞
知道大有可为答主
回答量:3.2万
采纳率:36%
帮助的人:4285万
展开全部
是幸福。
你好~你的疑问就是我的任务
因为要做任务.所以才路过。。。
情不知所起,一往而深。生者可以死,死可以生。
生而不可与死,死而不可复生者,皆非情之至也。
也能表达在下对楼主的爱。

亲... 祝你幸福每一天
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
5块钱_
2012-07-30
知道答主
回答量:12
采纳率:0%
帮助的人:1.8万
展开全部
怎么样?解决了没,我刚刚也遇到这个问题,我用1602显示的,数值实在恐怖,一会负值,一会几百。LZ如果解决,劳烦跟我说说,多谢了。
PS:我用现成的程序显示是没问题的,但是用自己编写的程序才出现这种情况。
追问
没有解决,但是我的不稳定是因为十位上的数字在闪烁。。。可以吧你那好的程序法给我吗 我看看 906726786@qq.com  xieixiea
追答
刚刚看到这条消息!!!不同的开发板,对应的程序会有点差别,我的问题已经解决了,我是在读取温度前先关中断的
EA=0;
temp=ReadTemperature();
EA=1;
你要我的程序?现在网上不是大把。既然你要我就发给你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1160534037
2012-07-29 · TA获得超过181个赞
知道答主
回答量:223
采纳率:100%
帮助的人:42万
展开全部
k
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
285225370
2012-07-29
知道答主
回答量:30
采纳率:0%
帮助的人:11.7万
展开全部
生日快乐
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1554又来了
2012-07-29 · TA获得超过208个赞
知道答主
回答量:387
采纳率:100%
帮助的人:58.8万
展开全部
不懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式