| 这段程序是书上看来的,可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是整形
 }
 |