单片机DS18B20程序问题,奇怪!!!

2024-12-02 08:13:58
推荐回答(3个)
回答1:

重新写一次吧,或者把if(DQ==1)那一行全部删除再重新写一次。因为你的程序在if(DQ==1)那一行多了两个字符(可能你的电脑里看不到,你复制到另一电脑里就可以看到了。这种情况我也有试过)。(PS:同意一下楼上的。)如下面图:

回答2:

你是用的Kell么?
函数定义不全啊
uchar Readtemperachar(void)
{

}
我也用过ds18B20,这个东西对时序要求很严,但是连接方便

回答3:

你的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);

}

复制回去就行了