溫度傳感器--DS18B20的使用


一、DS18B20簡介

1.DS18B20是由達拉斯半導體公司生產的可編程分辨率的單總線數字溫度計。

2.特征

a>通過單總線協議進行通信。

b>每個器件有唯一的64位的序列號存儲在內部存儲器中。

c>多點分布式測溫應用。

d>通過數據線供電,供電范圍為3.0 ~ 5.5 V。

e>測溫范圍為-55 ~ +125℃,其中在-10 ~ +85℃范圍內精確度為 ±5 ℃。

f>溫度計分辨率可以被使用者選擇為 9 ~ 12位。

g>最多在750 ms內將溫度轉換為12位數字。

3.工作狀態下的兩種供電方式


4.內部結構圖


DS18B20內部 = 64位ROM(地址序列碼) + 9字節暫存器。

9字節暫存器包括:溫度傳感器、上限觸發TH高溫報警器、下限觸發TL低溫報警器、高速暫存器、8位CRC產生器。

9字節暫存器結構圖如下所示,

byte 0 : 溫度 LSB (50h)

byte 1 : 溫度 MSB(05h)                   EEPROM

byte 2 : TH用戶定義字節1     <--->    TH用戶字節1 

byte 3 : TL用戶定義字節2     <--->     TL用戶字節2 

byte 4 : 配置寄存器                <--->      配置寄存器

byte 5 : 保留位(FFh)

byte 6 : 保留位(0Ch)

byte 7 : 保留位(10h)

byte 8 : CRC校驗位

64位ROM結構 = 8位CRC + 48位序列號 + 8位系列碼(CRC產生器產生)。

5.轉換精度

9-bit:  0.5 ℃

10-bit:0.25 ℃

11-bit: 0.125 ℃

12-bit: 0.0625 ℃(默認) 

二、DS18B20的使用

1.啟動溫度轉化的步驟:復位、發出跳過ROM命令(CCH)、發出啟動溫度轉換命令(44H)。

2.DS18B20的使用代碼如下:(僅供參考)

#include <reg52.h>
#include "./delay/delay.h"
#include <intrins.h>
#include <stdio.h>
#include "./LCD1602/LCD1602.h"

bit ack = 0;
sbit ds = P1^0;

void ds_reset()
{
ds = 1;
ds = 0;
delay_us(200);
delay_us(200);
ds = 1;
delay_us(30);
if(0 == ds)
{
ack = 1;
}
else
{
ack = 0;
}
delay_us(200);
delay_us(100);
}

void ds_send_byte(unsigned char byte)
{
unsigned char i;

for(i = 0; i < 8; i++)
{
ds = 0;
_nop_();
_nop_();
ds = byte & 0x01;
byte >>= 1;
delay_us(30);
ds = 1;
}
}

bit ds_read_bit()
{
bit tmp;
ds = 1;
ds = 0;
_nop_();
_nop_();
ds = 1;
tmp = ds;
delay_us(30);
return tmp;
}

unsigned char ds_read_byte()
{
unsigned char i,j,k;

for(i = 0; i < 8; i++)
{
j = ds_read_bit();
k = (j << 7) | (k >> 1);
}

return k;
}

void main()
{
unsigned char a;
unsigned int b,tmp;
float temperature;
unsigned char disbuf[20];
lcd1602_init();
while(1)
{
ds_reset();
ds_send_byte(0xcc);
ds_send_byte(0x44);

ds_reset();
ds_send_byte(0xcc);
ds_send_byte(0xbe);
a = ds_read_byte();
b = ds_read_byte();
tmp = (b << 8) | a;
temperature = (float)tmp * 0.0625;
sprintf(disbuf,"temp is %.3f",temperature);

lcd1602_dis_str(0,0,disbuf);
}
}



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com