看一下晶振对了没有,这个很关键
对了,你怎么这样写程序啊,这样显示的时间会不均衡的,即每位数码管显示的时间不一样,会带来一个暗一个亮,特别是当你想加点其它功能,比如说按键,采AD等等时,你会发现显示的不正常
先确定你的显示部分是正常的,然后再调试18B20的程序
18B20的程序比较啰嗦,用虚拟示波器查看下波形
protues仿真ds18b20与实际不符是正常的。
读ds18B20的读完后少DQ=1;底下是在proteus上及实物可以用
uchar ReadOneByte()
{
uchar i,dat=0;
DQ = 1;
_nop_();
for(i=0;i<8;i++)
{
DQ = 0;
dat >>= 1;
DQ = 1;
_nop_();
_nop_();
if(DQ)
dat |= 0X80;
Delay(30);
DQ = 1; // 你的程序少了这个
}
return dat;
}