两个DS18B20温度传感器与单片机连接。
/********************主程序***********************************/
void main()
{
float n,m;
n=read_temp();
m=read_temp_1();
while(1)
{
if(m>n)
{Bao_1();}
else
{Bao();}
}
}
******************读取温度值的程序*****************
float read_temp_1()/*读取温度值并转换*/
{uchar a,b;
ds1820rst_1();
ds1820wr_1(0xcc);//*跳过读序列号*/
ds1820wr_1(0x44);//*启动温度转换*/
ds1820rst_1();
ds1820wr_1(0xcc);//*跳过读序列号*/
ds1820wr_1(0xbe);//*读取温度*/
a=ds1820rd_1();
b=ds1820rd_1();
tvalue_1=b;
tvalue_1<<=8;
tvalue_1=tvalue_1|a;
if(tvalue_1<0x0fff)
tflag=0;
else
{tvalue_1=~tvalue_1+1;
tflag=1;
}
tvalue_1=tvalue_1*(0.625);//温度值扩大10倍,精确到1位小数
return(tvalue_1);
}
********************读取温度值程序********************
float read_temp()/*读取温度值并转换*/
{uchar a,b;
ds1820rst();
ds1820wr(0xcc);//*跳过读序列号*/
ds1820wr(0x44);//*启动温度转换*/
ds1820rst();
ds1820wr(0xcc);//*跳过读序列号*/
ds1820wr(0xbe);//*读取温度*/
a=ds1820rd();
b=ds1820rd();
tvalue=b;
tvalue<<=8;
tvalue=tvalue|a;
if(tvalue<0x0fff)
tflag=0;
else
{tvalue=~tvalue+1;
tflag=1;
}
tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数
return(tvalue);
} |