基于DS18B20的多点温度检测系统的设计Word格式文档下载.docx
- 文档编号:19864739
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:44
- 大小:424.54KB
基于DS18B20的多点温度检测系统的设计Word格式文档下载.docx
《基于DS18B20的多点温度检测系统的设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于DS18B20的多点温度检测系统的设计Word格式文档下载.docx(44页珍藏版)》请在冰豆网上搜索。
基于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。
它与MCA-51系列单片机在指令系统和引脚上完全兼容,不仅可完全代替MCS-51系列单片机,而且能使系统具有许多MCS-51系列产品没有的功能。
表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-5温度/数据的关系
③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.2键盘电路设计
(1)行列式键盘与单片机接口技术
(2)行列式键盘结构
(3)行列式键盘工作原理
尽管构成行列式键盘结构形式不一样,但它们的工作原理是相同的,现以图3.47为例来说明:
行线P1.4-P1.7为输出,列线P1.0-P1.3为输入。
CPU先使第一行(P1.4)为“0”,其余行为“1”。
然后读输入口P1.0-P1.3的状态,若输入缓冲器的状态全部为“1”,则表示所在行无键按下,接下来CPU使一下行线为“0”,其余行线为“1”,扫描下一行,这样在P1.4-P1.7循环进行。
若输入缓冲器不全为“1”,说明所在行有键按下,CPU停止当前行线扫描,转入到列线扫描,列线P1.0-P1.3为“0”状态的列表示对应列有键按下。
这样,行线与列数交叉
键就是扫描到的按键。
键扫描方式有三种。
A.开关状态的可靠输入
键开关状态的可靠输入有两种解决方法。
一种是软件去抖动:
它是在检测到有键按下时,执行一个10ms的延时程序后,再确认该键电平是否仍保持闭合状态电平,如保持闭合状态电平则确认为真正键按下状态,从而消除了抖动影响。
另一种为硬件去抖动:
即为按键添加一个锁存器。
两种方法都简单易行,本设计采用的是硬件去抖。
B.对按键进行编码给定键值或给出键号
对于按键无论有无编码,以及采用什么编码,最后都要转换成为与累加器中数值相对应的键值,以实现按键功能程序的散转转移。
为使编码间隔小,散转入口地址安排方便,常采用依次序排列的键号。
拨码开关值
含义
0000
实时显示通道一的温度值
0001
实时显示通道二的温度值
0010
实时显示通道三的温度值
0011
实时显示通道四的温度值
0100
实时显示通道五的温度值
0101
实时显示通道六的温度值
0110
实时显示通道七的温度值
0111
实时显示通道八的温度值
1***
自动循环显示所有通道的温度
C.选择键盘监测方法
对是否有键按下的信息输入方式有中断方式与查询方式两种。
本设计采用的查询法,即在在CPU空闲时调用键盘扫描子程序。
2.1.3显示电路设计
(1)LCD与单片机的接口电路如图所示:
图LCD与单片机的接口电路
(2)引脚分布及功能
①12864液晶显示屏共有20个引脚,其引脚名称及引脚编号的对应关系如图
所示:
图12864液晶显示模块引脚分布图
②引脚功能如表1所示:
表112864液晶显示模块引脚功能
引脚
符号
引脚功能
VSS
电源地
15
CS1
CS1=1:
芯片选择左边64*64点
电源+5V
16
CS2
CS2=1:
芯片选择右边64*64点
VO
液晶显示驱动电源0-5V
17
/RST
复位(低电平有效)
4
RS
H:
数据输入;
L:
指令码输入
18
VEE
LCD驱动负电源
5
R/W
数据读取;
数据写入
19
A
背光电源(+)
6
E
使能信号。
由H到L完成使能
20
K
背光电源(-)
7-14
DB0-DB7
数据线
有些型号的模块19、20脚为空脚
(3)温度显示电路
设计采用的是共阴极七段数码管。
显示方式有动态扫描和静态显示,两种方法在本设计中皆可。
由于静态扫描要用到多片串入并出芯片,考虑到电路板成本计算。
本人采用是节约硬件资源的动态扫描方式。
即用两块芯片就可以完成显示功能。
显示数据由4511译码器输出,ULN2003为位驱动扫描信号。
具体电路图如下:
(2)温度测试电路
这里我们用到温度芯片DS18B20。
DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式。
测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出。
其工作电源既可在远端引入,也可采用寄生电源方式产生。
CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
DS18B20支持“一线总线”接口,测量温度范围为-55°
C~+125°
C,在-10~+85°
C范围内,精度为±
0.5°
C。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:
环境控制、设备或过程控制、测温类消费电子产品等。
(3)图形液晶显示原理
12864液晶屏横向一共有128个点,纵向有64个点,全屏分为左半屏和右半屏,DDRAM表与128×
64点的一一对应关系如表2所示:
表212864液晶模块内部结构
左半屏右半屏
CS1=1
CS2=1
Y=0
…
62
63
。
行号
X=0
↓
X=7
DB0
DB7
7
8
55
56
在液晶屏上显示16*16点阵汉字首先将汉字转换成相应的代码,在送入的液晶屏的相应的位置,
(4)图形液晶控制方法
①读状态字(StausRead)
Rs
DB6
DB5
DB4
DB3
DB2
DB1
BUSY
ON/OFF
RESET
状态字是计算机了解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
D
该指令设置显示开/关触发器的状态,由此控制显示数据的存储器的工作方式,从而控制显示屏上的显示状态。
当D=1为开显示设置,显示数据锁存器正常工作,显示屏上呈现所需的显示效果。
此时在状态字中ON/OFF=0。
当D=0为关显示设置,显示数据锁存器被置零,显示屏呈不显示状态,但显示存储器并没有被破坏,在状态字中ON/OFF=1。
③显示起始行设置(DisplayStartLine)
显示起始行(0~63)
该指令设置了显示起始行寄存器的内容。
KS0108有64行显示的管理能力,该指令中L5~L0为显示起始行的地址,取值在0~3FH(1~64行)范围内,它规定了显示屏上最顶一行所对应的显示存储器的地址。
如果定时间隔地,等间距地修改(如加一或减一)显示起始行寄器的内容,则显示屏将呈现内容向上或向下平滑滚动的显示效果。
④页面地址设置[SetPage(Xaddress)]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 DS18B20 多点 温度 检测 系统 设计