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]