51单片机课程设计,数字温度计
}
/******************************************************/ /* 获取温度函数 /
/*****************************************************/ void get_temperature(bit flag) {
uchar a=0,b=0,c=0,d=0; uint i;
ds18b20_init(); ds18b20_write(0xcc); ds18b20_write(0x44); 结果存入内部RAM
//向DS18B20发跳过读ROM命令 //写启动DS18B20进行温度转换命令,转换
if(flag==1)
{ //首次启动DS18B20进行温度转换需要500ms,若转换时间不够就出错,读出的是85度的错误值。 display1(1); //用开机动画耗时 度
}
else
ds18b20_delayms(1); ds18b20_init(); ds18b20_write(0xcc); ds18b20_write(0xbe); a=ds18b20_read(); b=ds18b20_read(); if(flag==1)
//读内部RAM (LSB) //读内部RAM (MSB) //局部位变量f=1时读上下线报警温
{
max=ds18b20_read(); min=ds18b20_read();
//读内部RAM (TH) //读内部RAM (Tl)
}
if((max&0x80)==0x80) //若读取的上限温度的最高位(符号位)为‘1’表明是负温度
{f_max=1;max=(max-0x80);} //将上限温度符号标志位置‘1’表示负温度,将上限温度装换成无符号数。