目录
DS18B20的温度转换与读取流程
- DS18B20复位
- 写入字节0xcc,跳过ROM指令
- 写入字节0x44,开始温度转换
- 延时700~900ms
- DS18B20复位
- 写入字节0xcc,跳过ROM指令
- 写入字节0xbe,读取高速暂存器
- 读取暂存器的第0字节,即温度数据的LSB
- 读取暂存器的第1字节,即温度数据的MSB
- DS18B20复位,表示读取数据结束
- 将LSB和MSB整合成一个16位数据
- 判断读取结果的符号,进行正负温度的数据处理
//DS18B20温度采样与结果处理参考代码
void Read_Temperature()
{
unsigned char LSB,MSB ;
Init_DS18B20(); //DS18B20复位
Write_DS18B20(0xCC); //跳过ROM操作指令
Write_DS18B20(0x44); //开始温度转换
Delay(1000); //延时700ms左右,等待温度转换完成
Init_DS18B20(); //DS18B20复位
Write_DS18B20(0xCC); //跳过ROM操作指令
Write_DS18B20(0xBE); //开始读取高速暂存器
LSB = Read_DS18B20(); //读取温度数据的低8位
MSB = Read_DS18B20(); //读取温度数据的高8位
Init_DS18B20(); //DS18B20复位,停止暂存器数据读取
T_dat = 0x0000;
T_dat = MSB;
T_dat <<= 8;
T_dat = T_dat | LSB; //将LSB和MSB整合成为一个16位的整数
//首先通过温度数据的高5位判断采用结果是正温度还是负温度
if((T_dat & 0xf800) == 0x0000) //正温度的处理办法
{
T_dat >>= 4; //取出温度结果的整数部分
T_dat = T_dat*10; //放大10倍,然后加上小数部分
T_dat = T_dat + (LSB&0x0f)*0.625;
}
}

本文介绍了DS18B20温度转换的基本流程,包括复位、温度测量和数据处理方法。重点讲解了如何初始化设备、执行温度转换、解读LSB和MSB,以及根据符号位处理正负温度。同时展示了主程序代码和注意事项,适用于单片机开发环境。
最低0.47元/天 解锁文章
3708

被折叠的 条评论
为什么被折叠?



