打印

求助:DS18B20温度数据转换?

[复制链接]
1949|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

粉丝