这段程序是书上看来的,可keil仿真不了,我把程序倒数2,3,4行去掉,就可以了,可在数码馆上显示的温度好象不正确,各位大哥帮小弟分析分析
#define uchar unsigned char
#define uint unsigned int
float f_temp;
uint get_temp()//读取寄存器中存取的温度
{
uchar a,b;
dsreset();//DS18B20复位,初始化函数
delay(1);
tempwritebyte(0xcc);//写跳过读ROM指令
tempwritebyte(0xbe);//写温度转换指令
a=tempread();//读底8位
b=tempread();//读高8位
temp=b;
temp<<=8; //两个字节组合为一个字节
g=temp|a;
f_temp=g*0.0625;//温度在寄存器中为12位,分辩率为0.0625
temp=f_temp*10+0.5;//乘以10表示小数点后面只取1位,加0.5是四舍五入
f_temp=f_temp+0.05;
return temp;//temp是整形
} |