ds18b20温度转换指令_ds18b20如何读取温度?温度数据怎么换算? - 全文

这篇博客介绍了如何使用DS18B20温度传感器,包括其写入和读取操作的时序,以及如何初始化、读取温度数据和转换温度值。还提供了一个简单的C语言实现示例,用于读取和显示DS18B20的温度数据。
摘要由CSDN通过智能技术生成

DS18B20是温度传感器,读写数据有一定的时序:

1、写操作

(1) 数据线先置低电平“0”。

(2) 延时确定的时间为15微秒。

(3) 按从低位到高位的顺序发送字节(一次只发送一位)。

(4) 延时时间为45微秒。

(5) 将数据线拉到高电平。

(6) 重复上(1)到(6)的操作直到所有的字节全部发送完为止。

(7) 最后将数据线拉高。

2、读操作

(1)将数据线拉高“1”。

(2)延时2微秒。

(3)将数据线拉低“0”。

(4)延时3微秒。

(5)将数据线拉高“1”。

(6)延时5微秒。

(7)读数据线的状态得到1个状态位,并进行数据处理。

(8)延时60微秒。

3、例程

//温度传感器:DS18B20

//显示方式:LED

#include 《reg51.h》

#define uchar unsigned char

sbit keyup=P1^0;

sbit keydn=P1^1;

sbit keymd=P1^2;

sbit out=P3^7; //接控制继电器

sbit DQ = P3^4; //接温度传感器18B20

uchar t[2],number=0,*pt; //温度值

uchar TempBuffer1[4]={0,0,0,0};

uchar Tmax=18,Tmin=8;

uchar distab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff,0xfe,0xf7};

uchar dismod=0,xiaodou1=0,xiaodou2=0,currtemp;

bit flag;

void t0isr() interrupt 1

{

TH0=(65536-5000)/256;

TL0=(65536-5000)%256;

switch(number)

{

case 0:

P2=0x08;

P0=distab[TempBuffer1[0]];

break;

case 1:

P2=0x04;

P0=distab[TempBuffer1[1]];

break;

case 2:

P2=0x02;

P0=distab[TempBuffer1[2]]&0x7f;

break;

case 3:

P2=0x01;

P0=distab[TempBuffer1[3]];

break;

default:

break;

}

number++;

if(number》3)number=0;

}

void delay_18B20(unsigned int i)

{

while(i--);

}

/**********ds18b20初始化函数**********************/

void Init_DS18B20(void)

{

bit x=0;

do{

DQ=1;

delay_18B20(8);

DQ = 0; //单片机将DQ拉低

delay_18B20(90); //精确延时 大于 48

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值