一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 2188|回复: 2

[其他综合] 如何将DS18B20读取的数据转换成温度

[复制链接]
发表于 2013-5-26 08:24 来自手机 | 显示全部楼层 |阅读模式
本人菜鸟,请教下如何将DS18B20读取的高8位、低8位数据转换成一个温度变量temp供使用,temp和真实温度是直接对应的,如25.6度为256
发表于 2013-5-26 08:30 | 显示全部楼层
好像是原来写的,不知道对你有没有帮助
void Temp_read(void) //读取ds18b20
{  
Reset_18B20();  
Writebyte_18B20(0xcc); //跳过ROM
Writebyte_18B20(0xbe); //发送读取命令
L_18B20=Readbyte_18B20(); //读取低八位数据
H_18B20=Readbyte_18B20(); //读取高八位数据
if(H_18B20>0x7f) //最高位为1时温度是负 //12位精度
{
L_18B20=~L_18B20; //补码转换,取反加一
H_18B20=~H_18B20+1;
fg=1; //读取温度为负时fg=1
}
else fg=0;
zhengshu=L_18B20/16+H_18B20*16; //整数部分
xiaoshu1=(L_18B20&0x0f)*10/16; //小数第一位
xiaoshu2=(L_18B20&0x0f)*100/16%10;//小数第二位
/*if(H_18B20>0x01) //最高位为1时温度是负 //9位精度
{
L_18B20=~L_18B20+1; //补码转换,取反加一
fg=1; //读取温度为负时fg=1
}
zhengshu=L_18B20/2; //整数部分
xiaoshu1=(L_18B20%2)*5; //小数第一位 */
//xiaoshu2=(L_18B20&0x0f)*100/16%10;//小数第二位
}
回复

使用道具 举报

发表于 2013-5-26 10:47 | 显示全部楼层
2楼的挺好  基本思路:读取高8位和低四位组成新的数据 得出实际数值 显示此数值
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-11-1 08:10 , Processed in 0.027279 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表