51单片机DS18B20温度读取

本文介绍了如何使用51单片机通过单线总线与DS18B20温度传感器进行通信,详细阐述了DS18B20的初始化、单线总线的特点以及读取温度值的操作步骤,最终实现温度数据在数码管上的显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    本文是武汉市海联天下物联网有限公司技术团队内部学习笔记,将详细讲解DS18B20温度显示以及51单片机如何利用单总线与DS18B20通信,DS18B20重要时序掌握。——技术部 张傲

现象描述

    使用DS18B20测量温度,并在数码管中显示出来。

DS18B20简介

    DS18B20 单线数字温度传感器,即“一线器件”,其具有独特的优点:
    (1)采用单总线的接口方式 与微处理器连接时 仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。 单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络。
    (2)测量温度范围宽,测量精度高 。DS18B20 的测量范围为 -55 ℃ ~+ 125 ℃ ; 在 -10~+ 85°C 范围内,精度为 ± 0.5°C 。
    (3)多点组网功能 多个 DS18B20 并联在惟一的单线上,实现多点测温。

单线总线特点

    单总线即只有一根数据线,系统中的数据交换,控制都由这根线完成。单总线通常要求外接一个约为 4.7K—10K 的上拉电阻,这样,当总线闲置时其状态为高电平。
温度测量电路

DS18B20的初始化

    主机首先发出一个480-960微秒的低电平脉冲,然后释放总线变为高电平,并在随后的480微秒时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。若无低电平出现一直都是高电平说明总线上无器件应答。
    作为从器件的DS18B20在一上电后就一直在检测总线上是否有480-960微秒的低电平出现,如果有,在总线转为高电平后等待15-60微秒后将总线电平拉低60-240微秒做出响应存在脉冲,告诉主机本器件已做好准备。若没有检测到就一直在检测等待。
DS18B20初始化时序图

sbit DS  = P2^2;      //单片机P22引脚与通信总线连接着
void dsreset(void)               
{
   
   uint i;
   DS=0;              //主机发出一个480-960微秒的低电平脉冲
   i=103;              //   480-960us延时
   while(i>0)i--;
   DS=1;              //释放总线变为高电平
   i=4;
   while(i>0)i--;           //15-60us延时
}   

    主机发出各种操作命令都是向DS18B20写0和写1组成的命令字节,接收数据时也是从DS18B20读取0或1的过程。因此首先要搞清主机是如何进行写0、写1、读0和读1的。
    写周期最少为60微秒,最长不超过120微秒。
    写周期一开始做为主机先把总线拉低1微秒表示写周期开始。随后若主机想写0,则将总线置为低电平,若主机想写1,则将总线置为高电平,持续时间最少60微秒直至写周期结束,然后 释放总线为高电平至少1微秒给总线恢复 。而DS18B20则在检测到总线被拉底后等待15微秒然后从15us到45us开始对总线采样,在采样期内总线为高电平则为1,若采样期内总线为低电平则为0。
DS18B20读写控制时序图

void tmpwritebyte(uchar dat)   		  
{
     
 uint i; uchar j; bit testb;     
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值