重新写一次吧,或者把if(DQ==1)那一行全部删除再重新写一次。因为你的程序在if(DQ==1)那一行多了两个字符(可能你的电脑里看不到,你复制到另一电脑里就可以看到了。这种情况我也有试过)。(PS:同意一下楼上的。)如下面图:
你是用的Kell么?
函数定义不全啊
uchar Readtemperachar(void)
{
}
我也用过ds18B20,这个东西对时序要求很严,但是连接方便
你的IF前边多了两个字符,可能在你输入的时候用的是汉子输入法所以编译出错,在Keil里能看得见 几个小方块 删了就行了
#include
#define uint unsigned int
#define uchar unsigned char
sbit DQ=P2^2;
sbit LCDEN=P3^4;
sbit LCDRS=P3^5;
sbit DULA=P2^6;//关数码管
sbit WELA=P2^7;//关数码管
/*读一个字节*/
Readtemperachar(void)
{ uchar i=0;
uchar tempera_dat=0;//返回温度值
for(i=8;i>0;i--)
{
DQ=0;
tempera_dat=tempera_dat>>1;//因读上来时从高8位开始
DQ=1;//释放总线
if(DQ==1)
{
tempera_dat=tempera_dat|0x80;
}
delay(4);
}
return(tempera_dat);
}
复制回去就行了