pt100和ds18b20
时间: 2024-06-19 13:03:12 浏览: 230
PT100和DS18B20都是温度传感器,可以用于测量温度。其中PT100是一种热电阻传感器,常用于高精度测量场合,如实验室、工业生产等领域。它的原理是利用铂电阻的温度系数进行测量,具有高精度、长寿命、线性良好等特点。而DS18B20则是一种数字温度传感器,具有体积小、精度高、使用方便等优点,常用于智能家居、智能化生产等领域。
相关问题
PT100温度采集与DS18B20温度采集的优缺点
PT100温度传感器和DS18B20温度传感器都是常用的温度采集器件,它们有各自的优缺点。
PT100温度传感器是一种基于电阻变化原理的温度传感器,其优点是具有较高的精度和稳定性,并且适用于较高的温度范围。但是,PT100温度传感器需要外部电路进行放大和线性化处理,因此需要更复杂的电路设计和更高的成本。
DS18B20温度传感器是一种数字温度传感器,其优点是具有较小的体积和较低的成本,并且可以直接与微控制器进行通信。而且,DS18B20温度传感器具有较好的抗干扰能力和较低的功耗,对于某些应用场景非常适用。但是,DS18B20温度传感器的精度和稳定性相对较低,适用温度范围也相对较窄。
综上所述,选择PT100温度传感器还是DS18B20温度传感器需要根据具体的应用场景来选择,需要权衡各自的优缺点来做出决策。
基于51单片机PT100热敏电阻温度计的代码
以下是基于51单片机的PT100热敏电阻温度计的代码:
```
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit DQ = P1^0; // 定义DS18B20数据线
uchar code table[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; // 数码管显示表
uchar tempH, tempL; // 温度值的高位和低位
uchar temp; // 温度值
void delay(uint ms) { // 延时函数
uint i, j;
for (i = 0; i < ms; i++) {
for (j = 0; j < 110; j++);
}
}
void init_ds18b20() { // 初始化DS18B20
uchar i;
DQ = 1;
delay(1);
DQ = 0;
delay(500);
DQ = 1;
delay(60);
i = DQ;
delay(500);
}
void write_byte(uchar dat) { // 写一个字节
uchar i;
for (i = 0; i < 8; i++) {
DQ = 0;
_nop_();
DQ = dat & 0x01;
delay(5);
DQ = 1;
dat >>= 1;
}
}
uchar read_byte() { // 读一个字节
uchar i, dat = 0;
for (i = 0; i < 8; i++) {
dat >>= 1;
DQ = 0;
_nop_();
DQ = 1;
if (DQ) {
dat |= 0x80;
}
delay(5);
}
return dat;
}
void read_temp() { // 读取温度值
init_ds18b20();
write_byte(0xcc); // 跳过ROM操作
write_byte(0x44); // 启动温度转换
delay(100);
init_ds18b20();
write_byte(0xcc); // 跳过ROM操作
write_byte(0xbe); // 读取温度寄存器
tempL = read_byte(); // 读取低位
tempH = read_byte(); // 读取高位
temp = (tempH << 8) | tempL; // 合成温度值
}
void main() {
while (1) {
read_temp();
temp = temp * 0.0625; // 转换为实际温度值
P2 = table[temp / 10]; // 显示十位
P3 = 0xfe; // 选中个位
delay(1);
P3 = 0xff; // 取消选中
P2 = table[temp % 10]; // 显示个位
P3 = 0xfd; // 选中十位
delay(1);
P3 = 0xff; // 取消选中
}
}
```
以上代码中,使用了DS18B20来测量温度,并将温度值显示在数码管上。代码中使用了位运算来处理数据的高位和低位,以及将温度值乘上0.0625来转换为实际温度值。同时,使用了延时函数来控制数码管的刷新频率。
阅读全文