DS18B20如何修改分辨率

我看了网上说的DS18B20怎么修改分辨率,都说的,比较笼统,或是一堆手册基础,我用比较通俗的话说一下,拿手机编辑的,大家谅解一下,首先初始化,再发送修改指令0x4E接着发送三个字节,可以随便前两个字节,那是高报警和低报警,可以是0xFF和0x00,接着发送你的分辨率,有可能是0.5的分辨率,也就是十位,发送0x1F。这里已经修改成功了。有可能你所乘以的分辨率还是0.0625所以你看着没有变化,但是已经成功了。关键是有可能你错在了移位,你接收还是移了八位,左移还是八位等于是把数据扩大了,这是关键,就跟十进制一样,百位,千位,虽然后面是零,但它还是百位十位,你按手册少移几位试试,或是你减少读取周期的时间,你就能看出来变化了,按你的分辨率少移几位。

DS18B20是一种数字温度传感器,其分辨率可以通过设置寄存器来实现。DS18B20提供了三种分辨率:9位、10位和12位。分辨率越高,温度精度越高,但是读取时间也越长。 设置DS18B20分辨率需要写入相应的配置字节到DS18B20的配置寄存器中。下面是设置DS18B20分辨率的步骤: 1. 发送复位脉冲。 2. 发送跳过ROM命令。 3. 发送写配置寄存器命令。 4. 写入配置字节,其中最后3位表示分辨率,分别对应9位、10位和12位分辨率。 5. 发送读取配置寄存器命令,确认配置是否生效。 下面是一个设置DS18B20为12位分辨率的示例代码,供参考: ```C #include <OneWire.h> OneWire ds(2); // DS18B20连接到Arduino的2号引脚 void setup() { Serial.begin(9600); ds.reset(); // 发送复位脉冲 ds.skip(); // 发送跳过ROM命令 ds.write(0x4E); // 发送写配置寄存器命令 ds.write(0x00); // 写入配置字节,设置12位分辨率 ds.write(0x7F); // 设置上限温度为127°C ds.write(0x00); // 设置下限温度为-128°C ds.select(ds.address); // 选择DS18B20 ds.write(0xBE); // 发送读取配置寄存器命令 Serial.println(ds.read(), HEX); // 读取配置寄存器,确认配置是否生效 } void loop() { ds.reset(); // 发送复位脉冲 ds.skip(); // 发送跳过ROM命令 ds.write(0x44); // 发送温度转换命令 delay(750); // 等待温度转换完成 ds.reset(); // 发送复位脉冲 ds.skip(); // 发送跳过ROM命令 ds.write(0xBE); // 发送读取温度命令 int16_t raw = ds.read() | (ds.read() << 8); // 读取温度数据 float temp = (float) raw / 16.0; // 计算温度值 Serial.println(temp); // 打印温度值 delay(1000); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值