51单片机~DS18B20温度传感器

这篇博客介绍了如何使用51单片机配合DS18B20温度传感器进行温度测量。内容包括传感器的接线方法,温度数值的计算原理,以及按照时序图编写的程序流程。通过读取传感器数据并进行计算,实现温度读取功能。
摘要由CSDN通过智能技术生成

51单片机~DS18B20温度传感器

(一)简介说明:
在这里插入图片描述
在这里插入图片描述
(二)接线:

在这里插入图片描述
1. 内部结构:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
正温度前五位是0.
负温度前五位是1.

在这里插入图片描述
由LS,MS组成的四位十六进制数,和16位二进制数。(先MS后LS)
结合上下图直到温度计算:1乘2 ^ 6 + 0乘2 ^ 5 +1乘2^ 4 +0乘2^ 3 +……2^0 ==85
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(二)使用流程,按照时序图编写程序(判断应用):
粗黑线是总线控制的电平
灰线表示DS18B20控制的;
电阻上拉是由于上图接线有一个上拉电阻

在这里插入图片描述
读时重复七次直到读完为止

在这里插入图片描述
在这里插入图片描述
测试温度代码:
temp.h

#ifndef __TEMP_H_
#define __TEMP_H_

#include<reg52.h>
//---重定义关键词---//
#ifndef uchar
#define uchar unsigned char
#endif

#ifndef uint 
#define uint unsigned int
#endif

//--定义使用的IO口--//
sbit DSPORT=P3^7;

//--声明全局函数--//
void Delay1ms(uint );
uchar Ds18b20Init();
void Ds18b20WriteByte(uchar com);
uchar Ds18b20ReadByte();
void  Ds18b20ChangTemp();
void  Ds18b20ReadTempCom();
int Ds18b20ReadTemp();

#endif

main.c

/*************************************************************************************

*
实验现象:下载程序后,在温度传感器接口处,按照丝印方向插好温度传感器,数码管就会显示
			检测的温度值
		  
接线说明: (具体接线图可见开发攻略对应实验的“实验现象”章节)
		 
	
注意事项:										

										  
**************************************************************************************

*/

#include "reg52.h"			 //此文件中定义了单片机的一些特殊功能寄存器
#include"temp.h"	

typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;


char num=0;
u8 DisplayData[8]
  • 12
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值