求助:DS18B20温度数据转换?

[复制链接]
2594|0
 楼主| rong212121 发表于 2010-1-16 17:09 | 显示全部楼层 |阅读模式
这段程序是书上看来的,可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是整形
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

221

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部