基于数字温度传感器DS18B20的测温设计.docx

上传人:b****2 文档编号:25731335 上传时间:2023-06-12 格式:DOCX 页数:36 大小:697.46KB
下载 相关 举报
基于数字温度传感器DS18B20的测温设计.docx_第1页
第1页 / 共36页
基于数字温度传感器DS18B20的测温设计.docx_第2页
第2页 / 共36页
基于数字温度传感器DS18B20的测温设计.docx_第3页
第3页 / 共36页
基于数字温度传感器DS18B20的测温设计.docx_第4页
第4页 / 共36页
基于数字温度传感器DS18B20的测温设计.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

基于数字温度传感器DS18B20的测温设计.docx

《基于数字温度传感器DS18B20的测温设计.docx》由会员分享,可在线阅读,更多相关《基于数字温度传感器DS18B20的测温设计.docx(36页珍藏版)》请在冰豆网上搜索。

基于数字温度传感器DS18B20的测温设计.docx

基于数字温度传感器DS18B20的测温设计

基于数字温度传感器DS18B20的测温设计

一.功能要求

1.三位数码管显示温度值,保留小数点后一位。

2.温度超过50摄氏度,红灯亮,低于50摄氏度,绿灯亮。

二.方案论证

在日常生活及农业生产中经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。

而热电偶和热电阻测出的一般都是电压,在转化成对应的温度,需要比较多的外部硬件电路支持,硬件电路复杂,软件调试复杂,制作成本高。

本数字温度计设计采用美国DALLA半导体公司继DS182后推出的一种改进型智能温度传感器DS18B2作为检测元件,测温范围为-55°C~125C,最大分辨率可达0.0625°CoDS18B2可以直接读出被测温度值,而且采用3线制与单片机相连,减少了外部电路,具有低成本和易使用的特点。

按照系统设计功能的要求,确定系统由3个模块组成:

主控制器(P89C51)、测温电路(DS18B20、显示电路(四数码管及其驱动电路)和温度值高低报警电路(两红绿二极管)。

三.系统硬件电路的设计

3.1PHILIPSP89C51RD2HBP

3.1.1P89C51概述:

P89C5采用高性能的静态80C51采用了静态设计可提供很宽的操作频率范围频率可降至0,可实现两个由软件选择的节电模式空闲模式和掉电模式空闲模式冻结CPU但RAM定时器串口和中断系统仍然工作

掉电模式保存RAM的内容但是冻结振荡器导致所有其它的片内功能停止工作由于设计是静态的,时钟可停止而不会丢失用户数据运行可从时钟停止处恢复分别包含128字节和256字节RAM32条I/O口线3个16位定时/计数器6输入4优先级嵌套中断结构1个串行I/O口可用于多机通信I/O扩展或全双工UART以及片内振荡器和时钟电路,设计由先进CMOS工艺制造并带有非易失性Flash程序存储器全部支持12时钟和6时钟操作.

3.1.2P89C51特性:

采用80C51核心处理单元,含4k字节FLASH128字节RAM布尔处理器,全静态操作,12时钟操作可选6个时钟通过软件或并行编程器,存储器寻址范围64K字节ROM和64K字节RAM,

电源控制模式:

时钟可停止和恢复,空闲模式,掉电模式

两个工作频率范围:

6时钟模式时为0~20MHz12时钟模式时为0~33MHz其他:

扩展温度范围,双数据指针,3个加密位,4个中断优先级,6个中断源,4个8位I/O口,全双工增强型UART帧数据错误检测,自动地址识别,3个16位定时/计数器T0T1标准80C51和增加的T2捕获和比较,可编程时钟输出,异步端口复位,低EMI(禁止ALE以及6时钟模式),掉电模式可通过外部中断唤醒

3.1.3P89C51管脚图(见图3-1)

图3-1

nw6?

裘璋

名赫和功號

DIP

LCC

QFP

Vss

20

22

1(5

I

Mi:

Ov曲标准

Vcc

40

44

38

I

电淋:

捉供棹融、I闲、||常电用

P00-07

39

32

43-3

J7-30

IO

P01I.P011星开滉取向rL可也写1用作高阻抗昌浮也可亂作参路转橫.处访问外部程序仃储器时作地址的任f戌在访何外部敲捌存佛JS时作iftiK楚趣.当送1.通过内制•上拉

Pl.0-1.7

1-8

1

2

2-9

2

3

40+

1-3

to

P1口:

P1口足帶内部上拉的炬向1O口"I4PI口卡1L--t.lr1槪内部上14曲高电平.并且可M用作愉人口一当柞光・入禅时;PlUtTW被外醉拉低.因沖外部上抽血严卞电施一(见DC的电特性>111^2功能:

T2(P1.0}:

^时器2/计散黠2的外部输入/时钟辑1出(见呵编程输出}

T2EX(Pl.iy淀时器&计数春2車隸载/JH提/方向控;M

P2C-27

2i-

28

24-31

18-25

IO

P1门是带内部上竝的亚向VOn,向P2rITltH.l口推内醉上拉为离电平.井且以用作输入口"当作対卷入脚时冲口暂IMft外部粒低*冈为外部1拉血严十屯滝(W.DC的电特悝丄衽访闻外部程序存fift翳淘和外部敷据时杵1<5忖地Jdfrj^j?

■1XMOVX道DPTRX当向口送1时采用崗内郵上拉一当访呵B性外部戦IS存储轟时(MOV@Ri〕,P2If的内片送t\P2的特殊阴能离疔黠小

P37

10

17

10

11

12

13

14

15

16

17

IL

13-19

11im】斗

15

16

17

IS

19

7-13

5

7

S

P)Cl:

LO

P3口是帯内部上竝的亚向I/On,向P3n吗1时」口槪内部上扌*为尚电平■幷R汉用件输入u严件为輸人陶时,i_i

P3管脚秋外郃拉低.创为卄部上捡而产生电述血DC的电特性X8PC51.<8PC52«9C54/8S)C5S在P3口JM也握供特殊功龍:

RxD(p3一仍:

串行自入】

TxD(Pj.ly卅厅埔小LJ

INT0

知部朮噺0

INT1(P33):

外部屮慚

T(XP34)=定时黑0外部樹入

T1(P35):

应:

时詰1冷卜部眉入

WR(F3◎:

产紳竝谢fr诽婕J|;忙专

RD(P37)外祁敌.抓存蛀曙i•:

;打

RST

9

10

I

貝何:

呷晶撮rr运和,只豐冥何悴脚出现2个机器周期烏电屮LU珂亘位.内部带屯阻连接到VssdKH理一牛外部ife容接HVcefl.

ALE

30

33

27

O

地址镇存愷龍:

在访问外部存储时》・出關冲用束镇存低地址的字节■在正常皓况下,綸出1A5的振鵲频率可以当作外BE时懈或定时.谊童毎抉苗问外部和•ALE以冲羁被

.',U^.AJJE可L乩通.:

设讥SFR竹aiixliLarvO设时V||AUE.煌背WUE几適白MOVX卅9削城薄満

PSEN

29

32

27

O

程序存備ttfife:

凄外部程序存储一当从外部读取程序时.PSEN超亍机器周期被滋活曲按“狂访问外部數碾器PSEN冇效,防列内部秽序旳PEEM匕散

EAVpp

31

35

29

I

外部訂址便龍/呵和电用:

EA•鱼颈置低“訪间整亍艸苦;程序存條罄时.如畢EA为面时.棉执材内部程序.障非程序计数1K可器人于0EFFFH可纠訪何4KHSNnlFFFH可朝访创SK3FFFH叫以讪何】<5K:

竺f牛”7FFFH厲昉|'呵

强K黠件一這引幅在编机时接12V編和止屮CWpp).

XIAL1

19

21

15

2

-眸1:

品艇和内部时钟小上:

XTAL2

IS

2u

14

O

品怦K品抓谕出

3.2数字温度传感器DS18B20321DS18B20的主要特性:

1、适应电压范围更宽,电压范围:

3.0〜5.5V,在寄生电源方式下可由数据线供电;

2、独特的单线接口方式,DS18B2在与微处理器连接时仅需要一条口线即可实现

微处理器与DS18B2的双向通讯;

3、DS18B2支持多点组网功能,多个DS18B2可以并联在唯一的三线上,实现组网多点测温;

4、DS18B2在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;

5、温范围—55E〜+125C,在-10〜+85C时精度为土0.5C;

6可编程的分辨率为9〜12位,对应的可分辨温度分别为0.5C、0.25C、0.125C和0.0625C,可实现高精度测温;

7、在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750mS内把温度值转换为数字,速度更快;

8、测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU同时可传送CR校验码,具有极强的抗干扰纠错能力;

9、负压特性:

电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。

3.2.2DS18B20工作原理:

DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因

分辨率不同而不同,且温度转换时的延时时间由2s减为750msDS18B20测温

原理如图3-2所示。

图中低温度系数晶振的振荡频率受温度影响很小,用于产生

固定频率的脉冲信号送给计数器1。

高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。

计数器1和温度寄存器被预置在-55C所对应的一个基数值。

计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。

图3-2中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。

图3-2

3.2.3DS18B20的外形和内部结构:

1、外形及引脚(见图3-3)

图3-3

(1)GND为电源地;

(2)DQ为数字信号输入/输出端;

(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)

2、DS18B2C内部结构:

图3-4

由图3-4可知,内部结构主要由四部分组成:

64位激光ROM温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。

3.2.4DS18B20主要的数据部件:

1、64bit激光ROM

激光ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。

64位激光ROM勺排列是:

开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码

(CRC=X8+X5+X4+1,如图3-5。

光刻ROM勺作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。

苦仪匚知.代眄葩咋惋廿■卢禺枣蚁峠

64医雜尢川

图3-5

2、DS18B2C中的温度传感器

DS18B2冲的温度传感器可完成对温度的测量,以12位转化为例:

用16位符号扩展的二进制补码读数形式提供,以0.0625C/LSB形式表达,其中S为符号位。

具体见图3-6:

bill

bit5

bit4

hrt3

btiI

bitI

bitO

LS

2l

F1

也]左

Mtu

Mli.

biiLL

hit】0

tilb

bis

MS

s

s

S

s

24

图3-6:

DS18B20温度值格式表

这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。

例:

+125C的数字输出为07D0H+25.0625C为0191H,-25.0625C的数字输

出为FF6FH-55C的数字输出为FC90H常见温度数据见图3-7。

TEMPURA1ILU】

DIGITALOUTPUT

IHtrlLAJ(>l1Pl1

〔氏“

4]23aC

oouooi

07D0U

低C*

i:

HJ.-:

;■'!

?

l'-l

0550b

r2506257C

OOtoOOOl1001W01

C191h

+10125C

OCGU0(i):

ilUHlOOlO

OOA2h

-0.5C

1X)0000000000i000

OCOSh

0000W00001-:

'I;-'-;;'

OOOOh

-0.5(

HUmjmilooo

FHlSh

-10125匚

MIL111】(H01111[i

rr?

iii

二伽2、「

]HE]110OHOMH

1;列h

55C

HitH00100]0000

FC90I1

■丁hepo认reset耐【ueofIhetemp即萌ur亡叱回Herj$榻〒I

图3-7DS18B20温度数据表

3、DS18B20温度传感器的高速RAM存储器

高速暂存存储器由9个字节组成,其分配如图3-8所示。

当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。

单片机可通过单线接口读到该数据,读取时低位在前,高位在后,对应的温度计算:

当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。

第九个字节是冗余检验字节。

寄存器内容

字节地址

温度值低位(LSByte)

0

温度值高位(MSByte)

1

高温限值(TH)

2

低温限值(TL)

3

配置寄存器

4

保留

5

保留

6

保留

7

CRC校验值

8

图3-8DS18B20暂存寄存器分布

 

4、DS18B2C配置寄存器

该字节各位的意义如图3-9:

TM

R1

R0

1

1

1

1

1

图3-9:

配置寄存器结构

低五位一直都是"1",TM是测试模式位,用于设置DS18B2C在工作模式还是在测试模式。

在DS18B2C出厂时该位被设置为0,用户不要去改动。

R1和R0用来设置分辨率,如图3-10:

(DS18B20出厂时分辨率被设置为12位)

R1

R0

分辨率

温度最大转换时间

0

0

9位

93.75ms

0

1

10位

187.5ms

1

0

11位

375ms

1

1

12位

750ms

图3-10

根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:

每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM旨令,最后发送RAM旨令,这样才能对DS18B20进行预定的操作。

复位要求主CPU各数据线下拉500微秒,然后释放,当DS18B20攵到信号后等待16〜60微秒左右,后发出60〜240微秒的存在低脉冲,主CPU攵到此信号表示复位成功。

表6:

ROM指令表

指令

约定代码

功能

读ROM

符合

ROM

33H

55H

读DS1820温度传感器ROM中的编码(即64位地址)

发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS1820使之作出响应,为下一步对该DS1820的读写作准备。

搜索

ROM

0FOH

用于确定挂接在同一总线上DS1820的个数和识别64位ROM地址。

为操作各器件作好准备。

跳过

ROM

0CCH

忽略64位ROM地址,直接向DS1820发温度变换命令。

适用于单片工作。

告警^搜索命令

0ECH

执行后只有温度超过设定值上限或下限的片子才做出响应。

表6:

RAM指令表

指令

约定代码

功能

温度变换

44H

启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。

结果存入内部9字节RAM中0

读暂存器

0BEH

读内部RAM中9字节的内容

写暂存器

4EH

发出向内部RAM勺3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。

复制暂存器

48H

将RAM中第3、4字节的内容复制到EEPROI中o

重调

EEPROM

0B8H

将EEPROI中内容恢复到RAM中的第3、4字节。

读供电方式

1

0B4H

读DS1820的供电模式。

寄生供电时DS1820发送“0”,夕卜接电源供电DS1820发送“1”。

325DS18B20初始化及读写时序:

1•初始化序列:

复位和应答脉冲

单总线上的所有通信都是以初始化序列开始,包括主机发出复位脉冲及从机

的应答脉冲。

如图3-11所示当从机发出响应主机的应答脉冲时,即向主机表明它

处于总线上且工作准备就绪,在主机初始化过程主机通过拉低单总线至少480s

以产生Tx复位脉冲,接着主机释放总线并进入接收模式Rx,当总线被释放后,5k上拉电阻将单总线拉高在单总线器件检测到上升沿后延时15-60s,接着通

过拉低总线60-240s以产生应答脉冲脉冲。

"主机拉丘总线

—从机检低总址

电阻上拉

图3-11

2.读/写时隙

在写时隙期间主机向单总线器件写入数据而在读时隙期间主机读入来自从机的数据,在每一个时隙总线只能传输一位数据。

2.1写时隙

存在两种写时隙写1和写0,主机采用写1时隙向从机写入1,而采用写0时隙向从机写入0,所有写时隙至少需要60s,且在两次独立的写时隙之间至少需要1s的恢复时间,两种写时隙均起始于主机拉低总线,如图3-12所示,产生

写1时隙的方式:

主机在拉低总线后接着必须在15s之内释放总线,由5k上拉电阻将总线拉至高电平而产生。

写0时隙的方式:

在主机拉低总线后只需在整个时隙期间保持低电平即可,至少60s,在写时隙起始后15-60s期间单总线器件采样总线电平状态。

如果在此期间采样为高电平则逻辑1被写入该器件;如果为0则写入逻辑0。

2.2读时隙

单总线器件仅在主机发出读时隙时才向主机传输数据,所以在主机发出读数据命令后必须马上产生读时隙以便从机能够传输数据。

所有读时隙至少需要60

s,且在两次独立的读时隙之间至少需要1s的恢复时间,每个读时隙都由主机发起至少拉低总线1s,如图3-13所示,在主机发起读时隙之后,单总线器件才开始在总线上发送0或1,若从机发送1则保持总线为高电平;若发送0,则拉低总线。

当发送0时,从机在该时隙结束后释放总线,由上拉电阻将总线拉回至空闲高电平状态,从机发出的数据在起始时隙之后保持有效时间15s。

因而主机

在读时隙期间必须释放总线,并且在时隙起始后的15s之内采样总线状态。

 

图3-13图3-14

3.3设计电路图及功能说明

见下页图3-14

功能说明:

(1)DS18B20接在P3.7口上,采集温度数据,输入单片机

(2)数码管动态显示部分:

8位数据线接在P1口;4位控制线接在P2.0~P2.3,并使用与非门驱动。

(3)

发光二极管:

单片机判断温度高于50°C时红灯亮,否则绿灯亮

 

图3-14

四.系统程序的设计

4.1主程序

通过主程序调用各个子程序,实现温度实时显示,读出并处理温度值,利用中断计时,每隔1s测量一次温度。

程序框图如图4-1

4.2读出温度子程序

读出温度子程序就是读出RAM中LSM和MSB两个字节,框图入图4-2所示。

4.3温度转换命令子程序温度转换子程序就是向传感器发温度转换命令,由于本程序中使用的分辨率位12位,转换时间为750ms,因此程序采用中断计时,每过1s才去转化一次温度。

具体过程见图4-3

4.4计算温度子程序

计算温度子程序将RAM中读取的温度值进行BCD码转换,并标记正负号,如图4.4所示

4.5显示数据刷新子程序

显示子程序是从RAM对应单元中读出处理好的小数位,十位,个位,符号位,查对应的表可得对应数码管所要显示的字型码。

图4-2读取温度子程序流程图

图4-1DS18B20温度计主程序框图

图4-3温度转化命令子程序流程图

图4.4计算温度子程序流程图

4.6程序源代码

 

 

FLAG

BIT

24H

SIGN

BIT

FLAG.1

ABOVE1OO

BIT

FLAG.2

REDLIGHT

EQU

P3.O

GREENLIGHT

EQU

P3.1

BITST

DATA

2OH

TIMEH

EQU

OD8H

;T0中断计时,方式一,1s初值

TIMEL

EQU

OFOH

TEMPHEAD

EQU

36H

TIME1SOK

BIT

BITST.1

INTFIRST

BIT

BITST.2

PORT

EQU

P3.7

TEMPL

DATA

26H

TEMPH

DATA

27H

TEMPHC

DATA

28H

TEMPLC

DATA

29H

ORG0000H

LJMPSTART

ORG000BH

LJMPINT_START

ORG100H

;主函数开始处

START:

MOVSP,#60H;堆栈指针初始化

CLRRAM:

;清空RAM数据子程序:

数据较多需使用RAM中单元作为标志位

MOVR0,#20H

CLRRAM_LOOP:

MOV@R0,#00H

INCR0

CJNER0,#80H,CLRRAM_LOOP

INT_CONFIG:

;中断配置:

开启内部定时中断TO,每过1s刷新一次数据

MOVTMOD,#21H

MOVTHO,#TIMEH

MOVTLO,#TIMEL

SETBETO

SETBTRO

SETBEA

MOVPSW,#OOH

CLRINTFIRST

SJMPMAIN

INT_START:

PUSHPSW

MOVPSW,#1OH

MOVTHO,#TIMEH

MOVTL0,#TIMEL

INCR7

CJNER7,#64H,INT

MOVR7,#00H

SETBTIME1SOK

INT:

POPPSW

RETI

MAIN:

;TIME1SOK=0,表示中断开启,计时进;行中,将循环刷新LED

;单片机内部进行温度转换

LCALLDISP

JNBTIME1SOK,MAINCLRTIME1SOK

JNBINTFIRST,MAIN2

LCALLREAD_TEMP

LCALLCONVTEMP

LCALLDISPBCD

LCALLDISP

MAIN2:

LCALLCONVER_TEMPSETBINTFIRSTLJMPMAIN

・************************************************************J

;DS18B20底层功能子函数定义:

;INIT_DS:

初始化DB0832

;READ_BYTE:

:

读取DS18B20一字节数据

;WRITE_BYTE:

写入DS18B20一字节数据,即写入ROM命令

・********************************************

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

当前位置:首页 > 自然科学 > 化学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1