单总线温度采集

本文详细介绍了DS18B20温度传感器的工作原理,包括其与微处理器接口、初始化、写入和读取时序。并展示了如何使用DS18B20配合LED数码管在Arduino中实现单总线温度测量系统,附有示例代码和时序图。
摘要由CSDN通过智能技术生成

一、主要原理

1.DS18B20:

DS18B20 是由 DALLAS 半导体公司推出的一种的“一线总线(单总线)”接口的温度传感器。与传
统的热敏电阻等测温元件相比,它是一种新型的体积小、适用电压宽、与微处理器接口简单的数字化温度传感器。
引脚: ![[Pasted image 20240425151606.png]]

主要部件:![[Pasted image 20240425151748.png]]

温度测量电路:![[Pasted image 20240425151947.png]]

2.DS18B20时序:

初始化时序:
![[890d1619fef93651c1d61be204d88d5.png]]

写时序:
![[e7d6afa3ef6cd7062a38bf0ab131080.png]]

读时序:
![[8b5f08b8a6bb87f54597f88db2c23b7.png]]

二、利用DS18B20和LED数码管实现单总线温度测量系统

代码:

#include “reg51.h”
#include “intrins.h”
#define uchar unsigned char
#define uint unsigned int
#define out P0
sbit smg1=out^4;
sbit smg2=out^5;
sbit DQ=P3^7;
void delay5(uchar);
void init_ds18b20(void);
uchar readbyte(void);
void writebyte(uchar);
uchar retemp(void);
void main(void)
{
uchar i,temp;
delay5(1000);
while(1)
{
temp=retemp();
for(i=0;i<10;i++)
{
out=(temp/10)&0x0f;
smg1=0;
smg2=1;
delay5(1000); //延时5ms
out=(temp%10)&0x0f;
smg1=1;
smg2=0;
delay5(1000); //延时5ms
}
}
}

void delay5(uchar n)
{
do
{
nop();
nop();
nop();
n–;
}
while(n);
}

void init_ds18b20(void)
{
uchar x=0;
DQ =0;
delay5(120);
DQ =1;
delay5(16);
delay5(80);
}

uchar readbyte(void)
{
uchar i=0;
uchar date=0;
for (i=8;i>0;i–)
{
DQ =0;
delay5(1);
DQ =1;
date>>=1;
if(DQ)
date|=0x80;
delay5(11);
}
return(date);
}

void writebyte(uchar dat)
{
uchar i=0;
for(i=8;i>0;i–)
{
DQ =0;
DQ =dat&0x01;
delay5(12);
DQ = 1;
dat>>=1;
delay5(5);
}
}
uchar retemp(void)
{
uchar a,b,tt;
uint t;
init_ds18b20();
writebyte(0xCC);
writebyte(0x44);
init_ds18b20();
writebyte(0xCC);
writebyte(0xBE);
a=readbyte();
b=readbyte();
t=b;
t<<=8;
t=t|a;
tt=t*0.0625;
return(tt);
}

电路:

![[Pasted image 20240425152231.png]]

三、时序图

![[Pasted image 20240425153402.png]]

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值