DS18B20的多点温度检测系统的设计.docx

上传人:b****6 文档编号:6264189 上传时间:2023-01-04 格式:DOCX 页数:42 大小:392.01KB
下载 相关 举报
DS18B20的多点温度检测系统的设计.docx_第1页
第1页 / 共42页
DS18B20的多点温度检测系统的设计.docx_第2页
第2页 / 共42页
DS18B20的多点温度检测系统的设计.docx_第3页
第3页 / 共42页
DS18B20的多点温度检测系统的设计.docx_第4页
第4页 / 共42页
DS18B20的多点温度检测系统的设计.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

DS18B20的多点温度检测系统的设计.docx

《DS18B20的多点温度检测系统的设计.docx》由会员分享,可在线阅读,更多相关《DS18B20的多点温度检测系统的设计.docx(42页珍藏版)》请在冰豆网上搜索。

DS18B20的多点温度检测系统的设计.docx

DS18B20的多点温度检测系统的设计

1系统方案设计

1.1方案设计

方案一:

该方案由单片机、模拟温度传感器AD590、运算放大器、AD转换器、4×4键盘、LCD显示电路、集成功率放大器、报警器组成。

本方案采用模拟温度传感器AD590作为测温元件,传感器将测量的温度变换转换成电流的变化,再通过电路转换成电压的变化,使用运算放大器交将信号进行适当的放大,最后通过模数转换器将模拟信号转换成数字信号,传给给单片机,单片机将温度值进行处理之后用LCD显示,当温度值超过设置值时,系统开始报警。

图1.1方案一温度测量系统方案框图

方案二:

该方案使用了AT89C51单片机作为控制核心,以智能温度传感器DS18B20为温度测量元件,采用多个温度传感器对各点温度进行检测,通过4×4键盘模块对正常温度进行设置显示电路采用128×64LCD模块,使用LM386作为报警电路中的功率放大器。

图1.2方案二温度测量系统方案框

1.2方案论证

方案一采用模拟温度传感器,转换结果需要经过运算放大器和AD转换器传送给处理器。

它控制虽然简单,但电路复杂,不容易实现对多点温度进行测量和监控。

由于采用了多个分立元件和模数转换器,容易出现误差,测量结果不是很准确,因此本方案并不可取。

方案二采用智能温度传感器DS18B20,它直接输出数字量,精度高,电路简单,只需要模拟DS18B20的读写时序,根据DS18B20的协议读取转换的温度。

此方案硬件电路简单,程序设计复杂一些,但是电子竞赛培训期间我编写过DS18B20、图形液晶、键盘的程序,而且设计过电路并成功地通过调试,并且我已经使用开发工具KEIL用C语言对系统进行了程序设计,用仿真软件PROTEUS对系统进行了仿真,达到了预期的结果。

由此可见,该方案完成具有可行性,体现了技术的先进性,经济上也没有问题。

综上所述,本课题采用方案二对系统进行设计。

 

 

2系统设计

2.1工作原理

基于DS18B20多点温度测量系统以AT89C51为中心器件,以KEIL为系统开发平台,用C语言进行程序设计,以PROTEUS作为仿真软件设计而成的。

系统主要由传感器电路、液晶显示电路、键盘电路、报警电路组成,电路原理图2.1所示。

DS18B20是智能温度传感器,它的输入/输出采用数字量,以单总线技术,接收主机发送的命令,根据DS18B20内部的协议进行相应的处理,将转换的温度以串口发送给主机。

主机按照通信协议用一个IO口模拟DS18B20的时序,发送命令(初始化命令、ROM命令、功能命令)给DS18B20,并读取温度值,在内部进行相应的数值处理,用图形液晶模块显示各点的温度。

在系统启动之时,可以通过4×4键盘设置各点温度的上限值,当某点温度超过设置值时,报警器开始报警,从而实现了对各点温度的实时监控。

每个DS18B20有自己的序列号,因此本系统可以在一根总线上挂接了4个DS18B20,通过CRC校验,对各个DS18B20的ROM进行寻址,地址符合的DS18B20才作出响应,接收主机的命令,向主机发送转换的温度。

采用这种DS18B20寻址技术,使系统硬件电路更加简单。

 

图2.1系统硬件电路原理图

 

2.2单元电路设计

2.1.1DS18B20与单片机接口电路设计

(1)DS18B20与单片机的接口技术

如图2.2所示:

DS18B20与单片机的接口电路非常简单。

DS18B20只有三个引脚,一个接地,一个接电源,一个数字输入输出引脚接单片机的IO口,电源与数字输入输出脚间需要接一个4.7K的电阻。

图2.2DS18B20与单片机接口电路

(2)中央处理器AT89C51简介

①AT89C51的特点

AT89C51具有以下几个特点:

●AT89C51与MCS-51系列的单片机在指令系统和引脚上完全兼容;

●片内有4k字节在线可重复编程快擦写程序存储器;

●全静态工作,工作范围:

0Hz~24MHz;

●三级程序存储器加密;

●128×8位内部RAM;

●32位双向输入输出线;

●两个十六位定时器/计数器

●五个中断源,两级中断优先级;

●一个全双工的异步串行口;

●间歇和掉电两种工作方式。

②AT89C51的功能描述

AT89C51是一种低损耗、高性能、CMOS八位微处理器,片内有4k字节的在线可重复编程、快速擦除快速写入程序的存储器,能重复写入/擦除1000次,数据保存时间为十年。

它与MCS-51系列单片机在指令系统和引脚上完全兼容,不仅可完全代替MCS-51系列单片机,而且能使系统具有许多MCS-51系列产品没有的功能。

AT89C51可构成真正的单片机最小应用系统,缩小系统体积,增加系统的可靠性,降低系统的成本。

只要程序长度小于4K,四个I/O口全部提供给用户。

可用5V电压编程,而且擦写时间仅需10毫秒,仅为8751/87C51的擦除时间的百分之一,与8751/87C51的12V电压擦写相比,不易损坏器件,没有两种电源的要求,改写时不拔下芯片,适合许多嵌入式控制领域。

工作电压范围宽(2.7V~6V),全静态工作,工作频率宽在0Hz~24MHz之间,比8751/87C51等51系列的6MHz~12MHz更具有灵活性,系统能快能慢。

AT89C51芯片提供三级程序存储器加密,提供了方便灵活而可靠的硬加密手段,能完全保证程序或系统不被仿制。

P0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。

③AT89C51引脚功能

AT89C51单片机40引脚分布如右图3.3.4。

AT89C51是一种低损耗、高性能、CMOS八位微处理器,片内有4k字节的在线可重复编程、快速擦除快速写入程序的存储器,能重复写入/擦除1000次,数据保存时间为十年。

它与MCA-51系列单片机在指令系统和引脚上完全兼容,不仅可完全代替MCS-51系列单片机,而且能使系统具有许多MCS-51系列产品没有的功能。

AT89C51可构成真正的单片机最小应用系统,缩小系统体积,增加系统的可靠性,降低系统的成本。

只要程序长度小于4K,四个I/O口全部提供给用户。

可用5V电压编程,而且擦写时间仅需10毫秒,仅为8751/87C51的擦除时间的百分之一,与8751/87C51的12V电压擦写相比,不易损坏器件,没有两种电源的要求,改写时不拔下芯片,适合许多嵌入式控制领域。

工作电压范围宽(2.7V~6V),全静态工作,工作频率宽在0Hz~24MHz之间,比8751/87C51等51系列的6MHz~12MHz更具有灵活性,系统能快能慢。

AT89C51芯片提供三级程序存储器加密,提供了方便灵活而可靠的硬加密手段,能完全保证程序或系统不被仿制。

P0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。

表2P3口的第二功能

 

(3)DS18B20的工作原理

①DS18B20数字温度传感器概述

DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。

因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。

DS18B20产品的特点

●只要求一个端口即可实现通信。

●在DS18B20中的每个器件上都有独一无二的序列号。

●实际应用中不需要外部任何元器件即可实现测温。

●测量温度范围在-55.C到+125.C之间。

●数字温度计的分辨率用户可以从9位到12位选择。

●内部有温度上、下限告警设置。

TO-92封装的DS18B20的引脚排列见图4-2,其引脚功能描述见表4-1。

表4-1 DS18B20详细引脚功能描述

序号

名称

引脚功能描述

1

GND

地信号

2

DQ

数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时,可向电源提供电源

3

VDD

可选择的VDD引脚,当工作于寄生电源时,该引脚必须接地

②DS18B20的内部结构

DS18B20的内部框图如图4-3所示。

64位ROM存储器件独一无二的序列号。

暂存器包含两字节(0和1字节)的温度寄存器,用于存储温度传感器的数字输出。

暂存器还提供一字节的上线警报触发(TH)和下线警报触发(TL)寄存器(2和3字节),和一字节的配置寄存器(4字节),使用者可以通过配置寄存器来设置温度转换的精度。

暂存器的5、6和7字节器件内部保留使用。

第八字节含有循环冗余码(CRC)。

使用寄生电源时,DS18B20不需额外的供电电源;当总线为高电平时,功率由单总线上的上拉电阻通过DQ引脚提供;高电平总线信号同时也向内部电容CPP充电,CPP在总线低电平时为器件供电。

 

图4-3DS18B20的内部框图

 

DS18B20加电后,处在空闲状态。

要启动温度测量和模拟到数字的转换,处理器须向其发出ConvertT[44h]命令;转换完后,DS18B20回到空闲状态。

温度数据是以带符号位的16-bit补码存储在温度寄存器中的,如图4-4所示:

图4.4温度寄存器格式

符号位说明温度是正值还是负值,正值时S=0,负值时S=1。

表4-2给出了一些数字输出数据与对应的温度值的例子。

 

温度

输出(2进制)

输出(16进制)

+125℃

0000011111010000

07D0H

+85℃

0000010101010000

0550H

+20.0625℃

0000000110010001

0191H

+10.125℃

0000000010100010

00A2H

+0.5℃

0000000000001000

0008H

0℃

0000000000000000

0000H

-0.5℃

1111111111111000

FFF8H

-10.125℃

1111111101011110

FF5EH

25.0625℃

1110111001101111

EE6FH

-55℃

1111111010010000

FE90H

表4-2温度/数据的关系

 

③DS18B20的命令序列

●初始化

●ROM命令跟随着需要交换的数据;

●功能命令跟随着需要交换的数据。

访问DS18B20必须严格遵守这一命令序列,如果丢失任何一步或序列混乱,DS18B20都不会响应主机(除了SearchROM和AlarmSearch这两个命令,在这两个命令后,主机都必须返回到第一步)。

a.初始化:

DS18B20所有的数据交换都由一个初始化序列开始。

由主机发出的复位脉冲和跟在其后的由DS18B20发出的应答脉冲构成。

当DS18B20发出响应主机的应答脉冲时,即向主机表明它已处在总线上并且准备工作。

b.ROM命令:

ROM命令通过每个器件64-bit的ROM码,使主机指定某一特定器件(如果有多个器件挂在总线上)与之进行通信。

DS18B20的ROM如表4-3所示,每个ROM命令都是8bit长。

指令

协议

功能

读ROM

33H

读DS18B20中的编码(即64位地址)

符合ROM

55H

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

搜索ROM

0F0H

用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备

跳过ROM

0CCH

忽略64位ROM地址,直接向DS18B20V温度转换命令,适用于单个DS18B20工作

告警搜索命令

0ECH

执行后,只有温度超过庙宇值上限或下限的片子才做出响应

温度转换

44H

启动DS18B20进行温度转换,转换时间最长为500ms(典型为200ms),结果丰入内部9字节RAM中

读暂存器

BEH

读内部RAM中9字节的内容

写暂存器

4EH

发出向内部RAM的第3、4字节写上、下温度数据命令,紧该温度命令之后,传达两字节的数据

复制暂存器

48H

将RAM中第3、4字内容复制到E2PROM中

重调E2PROM

0B8H

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

读供电方式

0B4H

读DS18B20的供电模式,寄生供电时DS18B20发送“0”,外部供电时DS18B20发送“1”

c.功能命令:

主机通过功能命令对DS18B20进行读/写Scratchpad存储器,或者启动温度转换。

DS18B20的功能命令如表4-4所示。

 

2.1.3显示电路设计

(1)LCD与单片机的接口电路

LCD与单片机的接口电路如图所示:

…………..

图LCD与单片机的接口电路

(2)引脚分布及功能

①12864液晶显示屏共有20个引脚,其引脚名称及引脚编号的对应关系如图

所示:

 

图12864液晶显示模块引脚分布图

②引脚功能如表1所示:

表112864液晶显示模块引脚功能

引脚

符号

引脚功能

引脚

符号

引脚功能

1

VSS

电源地

15

CS1

CS1=1:

芯片选择左边64*64点

2

VDD

电源+5V

16

CS2

CS2=1:

芯片选择右边64*64点

3

VO

液晶显示驱动电源0-5V

17

/RST

复位(低电平有效)

4

RS

H:

数据输入;L:

指令码输入

18

VEE

LCD驱动负电源

5

R/W

H:

数据读取;L:

数据写入

19

A

背光电源(+)

6

E

使能信号。

由H到L完成使能

20

K

背光电源(-)

7-14

DB0-DB7

数据线

有些型号的模块19、20脚为空脚

(2)图形液晶显示原理

12864液晶屏横向一共有128个点,纵向有64个点,全屏分为左半屏和右半屏,DDRAM表与128×64点的一一对应关系如表2所示:

表212864液晶模块内部结构

左半屏右半屏

CS1=1

CS2=1

Y=0

0

1

62

63

0

1

62

63

行号

 

X=0

X=7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

0

7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

8

55

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

DB0

DB7

56

63

在液晶屏上显示16*16点阵汉字首先将汉字转换成相应的代码,在送入的液晶屏的相应的位置,下面以“学”字的显示为例进行说明,“学”字在液晶屏的上的点阵排布如图2所示,在显示时先输入汉字的第1页的16位数据,在输入第2页的16位数据,即第1页与第1列的公共部分即为要输入的第1个数据,第1页与第2列的公共部分即为第2个要输入的数据,按照这种取码方式可得出该字代码如下:

(注:

上面所说的第几页,第几列是相对汉字所说的)。

DB40h,30h,11h,96h,90h,90h,91h,96h

DB90h,90h,98h,14h,13h,50h,30h,00h

DB04h,04h,04h,04h,04h,44h,84h,7Eh

DB06h,05h,04h,04h,04h,06h,04h,00h

图形显示的工作原理与汉字显示相似,如果在某位置显示指定大小的图形时,首先利用图形取模软件,将图形的代码提取出来,再根据显示汉字的原理将每页码的数据写入相应的寄存器中即可。

(3)图形液晶控制方法

①读状态字(StausRead)

Rs

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

1

BUSY

0

ON/OFF

RESET

0

0

0

0

状态字是计算机了解12864-1当前状态的唯一的信息渠道。

状态字为一个字节,其中仅3位有效位,它们是:

BUSY表示当前12864-1接口控制电路运行状态。

BUSY=1表示12864正在处理计算机发来的指令或数据。

此时接口电路被封锁,不能接受除状态字以外的任何操作。

BUSY=0表示12864接口控制电路,已处于“准备好”状态,等待计算机的访问。

ON/OFF表示当前的显示状态。

ON/OFF=1表示关闭显示状态,ON/OFF表示开显示状态。

RESET表示当前12864-1的工作状态,即反映RST端的电平状态。

当RST为低电平状态时,12864-1处于复位工作状态,RESET=1。

当前RST为高电平状态时,12864-1为正常工作状态,RESET=0。

在指令设置和数据读写时要注意状态字中的BUSY标志。

只有在BUSY=0时,计算机对12864的操作才能有效。

因此计算机在每次对12864操作之前,都要读出状态字判断BUSY是否为“0”,则计算机需要等待,直至BUSY=0为止。

②显示开关设置(Displayon/off)

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

1

1

1

1

1

D

该指令设置显示开/关触发器的状态,由此控制显示数据的存储器的工作方式,从而控制显示屏上的显示状态。

当D=1为开显示设置,显示数据锁存器正常工作,显示屏上呈现所需的显示效果。

此时在状态字中ON/OFF=0。

当D=0为关显示设置,显示数据锁存器被置零,显示屏呈不显示状态,但显示存储器并没有被破坏,在状态字中ON/OFF=1。

③显示起始行设置(DisplayStartLine)

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

1

1

显示起始行(0~63)

该指令设置了显示起始行寄存器的内容。

KS0108有64行显示的管理能力,该指令中L5~L0为显示起始行的地址,取值在0~3FH(1~64行)范围内,它规定了显示屏上最顶一行所对应的显示存储器的地址。

如果定时间隔地,等间距地修改(如加一或减一)显示起始行寄器的内容,则显示屏将呈现内容向上或向下平滑滚动的显示效果。

④页面地址设置[SetPage(Xaddress)]

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

1

0

1

1

1

Page(0~7)

该指令设置了页面地址X地址寄存器的内容。

12864将显示存储器分成8页,指令代码中B2~B0就是要确定当前所要选择的页面地址,取值范围为0~7H,代表第1~8页。

该指令规定了以后的读/写操作将在哪一个页面上进行。

⑤列地址设置(SetYaddress)

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

1

Yaddress(0~63)

该指令设置了Y地址计数器的内容,DB5~DB0=0~3FH(1~64)代表某一个单元地址,随后的一次读或写数据将在这个单元上进行。

Y地址计数器具有自动加一功能,在每一次读/写数据后它将自动加一,所以在连续进行读/写数据时,Y地址计数器不必每次都设置一次。

页面地址的设置和列地址的设置将显示存储单元唯一地确定下来,为后来的显示数据的读/写作了地址的选通。

⑥写指令数据

RS

R/W

DB7

DB7

DB5

DB4

DB3

DB2

DB1

DB0

0

0

指令

此命令在在E的下降沿有效。

⑦ 写显示数据(WriteDisplayData)

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

1

0

显示数据

该操作将8位数据写入先前已确定的显示存储器的单元内,操作完成后列地址计数器自动加一。

⑧读显示数据(ReadDisplayDate)

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

1

1

显示数据

该操作将12864.-1接口部的输出寄存器的内容读出,然后列地址计数器自动加一。

2.1.4报警电路设计

(待续)

如图所示:

报警电路为语音功放LM386组成,

引脚功能

内部结构

3程序设计

3.1程序流程设计

(1)主程序流程设计

(2)子程序流程设计

DS18B20的信号方式

DS18B20采用严格的单总线通信协议,以保证数据的完整性。

该协议定义了几种信号类型:

复位脉冲、应答脉冲、写0、写1、读0和读1。

除了应答脉冲所有这些信号都由主机发出同步信号。

总线上传输的所有数据和命令都是以字节的低位在前。

a.初始化序列:

复位脉冲和应答脉冲

在初始化过程中,主机通过拉低单总线至少480µs,以产生复位脉冲(TX)。

然后主机释放总线并进入接收(RX)模式。

当总线被释放后,5kΩ的上拉电阻将单总线拉高。

DS18B20检测到这个上升沿后,延时15µs~60µs,通过拉低总线60µs~240µs产生应答脉冲。

初始化波形如图4-5所示。

 

图4-5初始化脉冲

b.读和写时序

在写时序期间,主机向DS18B20写入数据;而在读时序期间,主机读入来自DS18B20的数据。

在每一个时序,总线只能传输一位数据。

读/写时序如图3-6所示。

●写时序

存在两种写时序:

“写1”和“写0”。

主机在写1时序向DS18B20写入逻辑1,而在写0时序向DS18B20写入逻辑0。

所有写时序至少需要60µs,且在两次写时序之间至少需要1µs的恢复时间。

两种写时序均以主机拉低总线开始。

产生写1时序:

主机拉低总线后,必须在15µs内释放总线,然后由上拉电阻将总线拉至高电平。

产生写0时序:

主机拉低总线后,必须在整个时序期间保持低电平(至少60µs)。

在写时序开始后的15µs~60µs期间,DS18B20采样总线的状态。

如果总线为高电平,则逻辑1被写入DS18B20;如果总线为低电平,则逻辑0被写入DS18B20。

●读时序

 

图4-6DS18B20读/写时序图

DS18B20只能在主机发出读时序时才能向主机传送数据。

所以主机在发出读数据

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

当前位置:首页 > 表格模板 > 合同协议

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

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