温度检测Word下载.docx

上传人:b****1 文档编号:4830832 上传时间:2023-05-04 格式:DOCX 页数:14 大小:196.86KB
下载 相关 举报
温度检测Word下载.docx_第1页
第1页 / 共14页
温度检测Word下载.docx_第2页
第2页 / 共14页
温度检测Word下载.docx_第3页
第3页 / 共14页
温度检测Word下载.docx_第4页
第4页 / 共14页
温度检测Word下载.docx_第5页
第5页 / 共14页
温度检测Word下载.docx_第6页
第6页 / 共14页
温度检测Word下载.docx_第7页
第7页 / 共14页
温度检测Word下载.docx_第8页
第8页 / 共14页
温度检测Word下载.docx_第9页
第9页 / 共14页
温度检测Word下载.docx_第10页
第10页 / 共14页
温度检测Word下载.docx_第11页
第11页 / 共14页
温度检测Word下载.docx_第12页
第12页 / 共14页
温度检测Word下载.docx_第13页
第13页 / 共14页
温度检测Word下载.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

温度检测Word下载.docx

《温度检测Word下载.docx》由会员分享,可在线阅读,更多相关《温度检测Word下载.docx(14页珍藏版)》请在冰点文库上搜索。

温度检测Word下载.docx

10位时的转换时间为187.5ms;

11位时为375ms;

12位时为750ms;

●电源电压范围为3.0V~5.5V;

●内含程序设置寄存器,可用来设置分辨率位数,该寄存器是DS1820所没有的。

其格式

为:

TM

R1

R0

1

其中,TM为测试模式位,为1表示测试模式,为0表示工作模式,出厂时该位设为0,且不可改变。

R1和R0的设置组合与温度分辨率有关,具体关系见表1。

表1温度分辨率的设置

R2

分辨率的设置组合

9位

10位

11位

12位

●片内带有64位激光ROM:

从高位算起,该ROM有一个字节的CRC校验码,6个字节的产品序号和一个字节的家庭代码。

对于家庭代码,DS1820是10H,DS18B20是28H。

●内含温度数据寄存器:

该寄存器由两个字节组成,实际上DS18B20中寄存器的字节定义或温度值与DS1820不一样,DS1820的分辨率为0.5℃,而DS18B20的12位分辨率为2~4℃。

3DS18B20的应用

DS18B20采用3脚TO-92封装或8脚SOIC封装。

图1是其采用8脚SOIC封装的引脚排列图。

其中GND接地;

VDD为电源端;

DQ是数据输入/输出端;

其余为空脚。

DS18B20的供电方式有两种:

一种为寄生电源,另一种为外加电源。

同DS1820一样,用户也可通过1线端口对DS18B20进行操作,其步骤为:

复位→ROM功能命令→存储器功能命令→执行/数据→DSB1820的ROM命令有5个,存储器命令有6个,这些命令字和功能同DS1820完全一样。

命令的执行都是由复位、多个读时隙或/和写时隙基本时序单元组成。

因此,只要将复位、读时隙、写时隙的时序了解清楚,使用DS18B20就比较容易了。

3.1复位

使用DS18B20时,首先需将其复位,然后才能执行其它命令。

复位时,主机将数据线激发为低电平并保持480μs~960μs,然后释放数据线,再由上拉电阻将数据线拉升15~60μs。

然后再由DS18B20发出响应信号,以将数据线激发成低电平60~240μs,这样,就完成了复位操作。

其复位时序如图2所示。

3.2写时隙

在主机对DS18B20写数据(主机对DS18B20发送各种命令)时,先将数据线激发为低电平,该低电闰应大于1μs。

然后根据写“1”或写“0”来使数据线变高或继续为低。

DS18B20将在数据线变成低电平后15μs~60μs对数据线进行采样。

要求写入DS18B20的数据持续时间应大于60μs而小于120μs,两次写数据之间的时间间隔应大于1μs。

写时隙的时序如图3所示。

3.3读时隙

当主机从DS18B20读数据时,主机先数据线激发出低电平,然后释放,以使数据线再升为高电平。

DS18B20在数据线从高电平变为低电平的15μs内将数据送到数据线上。

主机可在15μs后读取数据线以获得数据。

其时序图如图4所示。

4基于DS18B20的温度检测系统

以DS18B20为传感器,AT89C51单片机为控制核心组成的温度巡回检测系统的电路框图

如图5所示。

图中,DS18B20的供电方式为外部电源,其I/O数据线与P1.0相连。

DS18B20接入系统之前,应分别从激光ROM中读出其序号,然后分别赋予在系统中的编号

1~n。

该系统需要用键盘来设置温度报警的门限值,并用七段LED显示器显示DS18B20的编

号和测量的温度值。

可用8279键盘/显示控制芯片和译码电路74LS154以及驱动电路74LS245

来完成该功能。

当测量温度超出报警门限时,系统将从P1.2~P1.3输出光声报警信号。

其主要

的温度巡回检测流程图如图6所示。

第二章

实验过程

本次试验是使用温度传感器18b20在单片机开发板实现周围温度的检测,并能在1604显示器上显示所检测的温度。

试验步骤:

1、阅读相关文档,了解温度传感器的工作原理

2、在proteus上搭建电路

3、在leil编程软件上编写程序了,并在proteus上仿真

4、将编写成功的程序烧录到单片机开发板上,装上1604显示器和温度传感器18b20,观察

实验仪器与环境

温度传感器18b20单片机开发板keil编程软件

实验代码:

(1)/********************1602显示器模块****************************/

#include"

config.h"

sbitRS=P2^5;

sbitRW=P2^6;

sbitEN=P2^7;

voidDelay(uint16i)

{

while(i--);

}

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

*名称:

Write_Com()

*功能:

写指令

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

voidWrite_Com(uint8dat)

RS=0;

RW=0;

P0=dat;

EN=1;

Delay(20);

EN=0;

Write_Data()

写数据

voidWrite_Data(uint8dat)

RS=1;

Lcd_Init()

lcd初始化函数

voidLcd_Init(void)

Write_Com(0x38);

//显示模式设置

Write_Com(0x06);

//显示光标移动

Write_Com(0x0c);

//显示开及光标设置

Delay(100);

Lcd_Clr()

voidLcd_Clr(void)

Write_Com(0x01);

Disp_Text()

显示文本函数

voidDisp_Text(uint8addr,char*p)

Write_Com(addr);

while(*p!

='

\0'

Write_Data(*(p++));

#include<

stdio.h>

stdlib.h>

intrins.h>

sbitDQ=P3^2;

(2)/*************DS18B20温度读取模块*************/

voidtmpDelay(intu)//延时函数

while(u--);

voidInit_DS18B20()//初始化ds1820

unsignedcharx=0;

DQ=1;

//DQ复位

tmpDelay(8);

//稍做延时

DQ=0;

//单片机将DQ拉低

tmpDelay(80);

//精确延时大于480us

//拉高总线

tmpDelay(14);

x=DQ;

//稍做延时后,如果x=0则初始化成功x=1则初始化失败

tmpDelay(20);

unsignedcharReadOneChar()//读一个字节

unsignedchari=0;

unsignedchardat=0;

for(i=8;

i>

0;

i--)

{

DQ=0;

//给脉冲信号

dat>

>

=1;

DQ=1;

if(DQ)

dat|=0x80;

tmpDelay(4);

}

return(dat);

voidWriteOneChar(unsignedchardat)//写一个字节

i>

i--)

DQ=dat&

0x01;

tmpDelay(5);

floatReadtemp()//读取温度

unsignedchara=0;

unsignedcharb=0;

unsignedintt=0;

floattt=0;

Init_DS18B20();

WriteOneChar(0xCC);

//跳过读序号列号的操作

WriteOneChar(0x44);

//启动温度转换

//跳过读序号列号的操作

WriteOneChar(0xBE);

//读取温度寄存器

a=ReadOneChar();

//连续读两个字节数据

b=ReadOneChar();

t=b;

t<

<

=8;

t=t|a;

//两字节合成一个整型变量

tt=t*0.0625;

//得到真实十进制温度值,因为DS18B20可以精确到0.0625度,所以读回数据的最低位代表的是0.0625度

t=tt*10+0.5;

//放大十倍,这样做的目的将小数点后第一位也转换为可显示数字,同时进行一个四舍五入操作。

return(tt);

(3)主函数与18b20温度传感器模块

voidmain()

charbuf[16];

Lcd_Init();

//1602初始化

while

(1)//温度显示

{

Disp_Text(0x80,"

temperatureis:

"

);

sprintf(buf,"

%3.2f"

Readtemp());

Disp_Text(0x80+0x40,buf);

Disp_Text(0x80+0x45,"

C"

实验结果展示:

这是检测的室内温度

当手触摸到温度传感器时,温度上升

五、实验总结

1、通过传感器的实验,使我对单片机与18b20的使用有了进一步的了解。

2、通过此次实验体高了我的编程能力,并且能够更熟练地使用c52的中断与计时器.

3、编写程序的时候一定要有耐心,程序需要不断地调试才能达到预期的效果。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2