多点温度测量及显示系统设计文档格式.docx
《多点温度测量及显示系统设计文档格式.docx》由会员分享,可在线阅读,更多相关《多点温度测量及显示系统设计文档格式.docx(32页珍藏版)》请在冰豆网上搜索。
4.可实时的温度测量。
5.可单独地点选择的测量。
所需仪器设备:
计算机一台、keilc和proteus软件
成果验收形式:
原理图、仿真结果
参考文献:
《数字电子技术基础》、《电子系统设计》、《单片机原理与应用》
时间
安排
1
5周---6周
立题论证
3
9周---13周
仿真调试
2
7周---8周
方案设计
4
14周---16周
成果验收
教研室主任:
系主任:
摘要
本文基于DS18B20设计了一种温度数据采集系统,系统主要由单片机电路和一个DS18B20数字传感器构成。
软件方面,我们采用keil软件对程序进行编写以及调试,硬件方面,我们通过Proteus软件对硬件电路进行仿真以及测试,该系统结构简单,功耗较低,测温范围为-50℃~+255℃,通过LCD1602A液晶显示。
该系统硬件分为3部分:
DS18B20温度测量模块、单片机模块、液晶显示。
系统的测温精度可以达到±
0.5℃,并且能稳定的与单片机和PC机通讯。
系统软件部分,在设计过程中,采用模块程序设计法,分成若干部分,各部分相对独立,完成一定的功能,从而满足对生产对象的实际需求。
关键字:
DS18B20单总线多线程单片机
第1章绪论
1.1传统和新型温度传感器
在工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。
其中,温度控制也越来越重要。
在工业生产的很多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。
采用单片机对温度进行控制不仅具有控制方便、简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而大大提高产品的质量和数量。
因此,单片机对温度的控制问题是工业生产中经常会遇到的控制问题。
在传统的温度测控系统设计中,往往采用模拟技术进行设计,这样就不可避免地遇到诸如传感器外围电路复杂及抗干扰能力差等问题,而其中任何一环节处理不当,就会造成整个系统性能的下降。
采用数字温度传感器与单片机组成的温度检测系统进行温度检测、数值显示和数据存储,体积减小,精度提高,抗干扰能力强,并可组网进行多点协测,还可以实现实时控制等技术,在现代工业生产中应用越来越广泛。
传统的温度测控系统设计往往是热电阻、adc转换器和控制器的搭配,再要加上人机互动操作设备这样就会增加系统的成本和系统软件设计的负担,传统的温度测控系统软件设计不仅要控制温度采集、adc的转换、数据的处理、显示和按键功能。
制温度采集、adc的转换、显示和按键功能相对简单一些,但是adc采集的数据不是现成的温度数据还要控制器处理器对数据进行处理,热电阻是反映温度和电压的关系,常用的有正温度和负温度电阻,而且大多数不是正比例而是指数型,这样的数据处理函数可想而知有多复杂,还要考虑电压在传输时的损耗。
本设计就采用以51单片机为核心,和单总线数字式温度传感器DS18B20模拟出一温度测控系统。
以DS18B20为代表的新型单总线数字式温度传感器集温度测量和A/D转换于一体,直接输出数字量,与单片机接口电路结构简单。
现实生活中的养殖产业及大棚种植等场合都有触及到,具有较强的推广应用价值。
1.2DSl8B20温度传感器
DSl820数字温度计是美国Dallas公司生产的数字温度计,它提供9位(二进制)温度读数,指示器件的温度。
信息经过单线接口送入DSl8B20或从DSl8B20送出,因此从主机CPU到DSl8B20仅需一条线。
DSl820的电源可以由数据线本身提供而不需要外部电源。
因为每一个DSl8B20在出厂时已经给定了唯一的序号,因此任意多DSl8B20可以存放在同一条单线总线上。
这允许在许多不同的地方放置温度敏感器件。
(主要介绍在硬件里)
1.3课题的建立以及本文完成的主要工作
本文主要包括以下内容:
1.以AT89C51对多个DS18B20的温度测量;
2.字符液晶的温度显示;
3.配合按键控制的人机系统。
第2章单总线技术
2.1单总线概述
1-wire单总线是Maxim全资子公司Dallas的一项专有技术。
与目前多数标准串行数据通信方式,如SPI/I2C/MICROWIRE不同,它采用单根信号线,既传输时钟,又传输数据,而且数据传输是双向的它具有节省I/O口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。
1-wire单总线适用于单个主机系统,能够控制一个或多个从机设备,当只有一个从机位于总线上时,系统可按照单节点系统操作;
而当多个从机位于总线上时,则系统按照多节点系统操作。
为了较为全面地介绍单总线系统将系统分为三个部分讨论:
硬件结构、命令序列和信号方式(信号类型和时序)。
2.2硬件结构
顾名思义,单总线只有一根数据线。
设备(主机或从机)通过一个漏极开路或三态端口,连接至该数据线,这样允许设备在不发送数据时释放数据总线,以便总线被其它设备所使用。
单总线端口为漏极开路,其内部等效电路如图2-1所示。
单总线要求外接一个约5k的上拉电阻:
这样,单总线的闲置状态为高电平不管什么原因,如果传输过程需要暂时挂起,且要求传输过程还能够继续的话,则总线必须处于空闲状态位传输之间的恢复时间没有限制只要总线在恢复期间处于空闲状态(高电平)如果总线保持低电平超过480us,总线上的所有器件将复位,另外,在寄生方式供电时,为了保证单总线器件在某些工作状态下(如温度转换期间、EEPROM写入等)具有足够的电源电流,必须在总线上提供强上拉(如图2-1所示的MOSFET)
图2-1单总线硬件接口示意图
2.3命令序列
典型的单总线命令序列如下:
第一步初始化;
第二步ROM命令(跟随需要交换的数据);
第三步功能命令(跟随需要交换的数据)。
每次访问单总线器件,必须严格遵守这个命令序列,如果出现序列混乱,则单总线器件不会响应主机。
但是,这个准则对于搜索ROM命令和报警搜索命令例外,在执行两者中任何一条命令之后,主机不能执行其后的功能命令,必须返回至第一步。
基于单总线上的所有传输过程都是以初始化开始的,初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成。
应答脉冲使主机知道,总线上有从机设备,且准备就绪。
在主机检测到应答脉冲后,就可以发出ROM命令,这些命令与各个从机设备的唯一64位ROM代码相关,允许主机在单总线上连接多个从机设备时,指定操作某个从机设备这些命令还允许主机能够检测到总线上有多少个从机设备以及其设备类型,或者有没有设备处于报警状态,从机设备可能支持5种ROM命令。
实际情况与具体型号有关每种命令长度为8位主机在发出功能命令之前,必须送出合适的ROM命令下面将简要地介绍各个ROM命令的功能,以及使用在何种情况下。
搜索ROM[F0h]当系统初始上电时,主机必须找出总线上所有从机设备的ROM代码,这样主机就能够判断出从机的数目和类型,主机通过重复执行搜索ROM循环,搜索ROM命令跟随着位数据交换,以找出总线上所有的从机设备,如果总线只有一个从机设备,则可以采用读ROM命令来替代搜索ROM命令。
完搜索ROM循环后,主机必须返回至命令序列的第一步(初始化)。
读ROM[33h]仅适合于单节点,该命令仅适用于总线上只有一个从机设备它允许主机直接读出从机的64位ROM代码而无须执行搜索ROM过程,如果该命令用于多节点系统,则必然发生数据冲突,因为,每个从机设备都会响应该命令。
匹配ROM[55h],匹配ROM命令跟随64位ROM代码,从而允许主机访问多节点系统中某个指定的从机设备,仅当从机完全匹配64位ROM代码时,才会响应主机随后发出的功能命令。
其它设备将处于等待复位脉冲状态。
跳越ROM[CCh]仅适合于单节点主机能够采用该命令同时访问总线上的所有从机设备,而无须发出任何ROM代码信息。
例如,主机通过在发出跳越ROM命令后跟随转换温度命令[44h],就可以同时命令总线上所有的DS18B20开始转换温度,这样大大节省了主机的时间。
值得注意,如果跳越ROM命令跟随的是读暂存器[BEh]的命令,包括其它读操作命令,则该命令只能应用于单节点系统,否则将由于多个节点都响应该命令而引起数据冲突。
报警搜索[ECh]仅少数1-wire器件支持,除那些设置了报警标志的从机响应外,该命令的工作方式完全等同于搜索ROM命令,该命令允许主机设备判断那些从机设备发生了报警,如最近的测量温度过高或过低等,同搜索ROM命令一样在完成报警搜索循环后,主机必须返回至命令序列的第一步。
在主机发出ROM命令,以访问某个指定的DS18B20接着就可以发出DS18B20支持的某个功能命令,这些命令允许主机写入或读出DS18B20暂存器,启动温度转换以及判断从机的供电方式DS18B20的功能命令总结于表2-1
命令
描述
命令代码
发送命令后单总
线上的响应信息
温度转换命令
转换温度
启动温度转换
44h
无
读暂存器
读全部的暂存器内容包括CRC字节
BEh
DS18B20传输多达9个字节至主机
写暂存器
写暂存器第23和4个字节的数据(即TH、TL和配置寄存器)
4Eh
主机传输3个字节数据至DS18B20
复制暂存器
将暂存器中的T、TL和配置字节复制到EEPROM中
48h
回读EEPROM
将TH、TL和配置字节从EEPROM回读至暂存器中
B8h
表2-1DS18B20功能命令集
所有的单总线器件要求采用严格的通信协议,以保证数据的完整性。
该协议定义了几种信号类型,复位脉冲、应答脉冲、写0、写1、读0和读1。
所有这些信号,除了应答脉冲以外,都由主机发出同步信号,并且发送所有的命令和数据都是字节的低位在前,这一点与多数串行通信格式不同(多数为字节的高位在前)。
当从机发出响应主机的应答脉冲时。
即向主机表明它处于总线上。
且工作准备就绪。
在主机初始化过程,主机通过拉低单总线至少480us,以产生(Tx)复位脉冲。
接着,主机释放总线,并进入接收模式(Rx)当总线被释放后,5k上拉电阻将单总线拉高。
在单总线器件检测到上升沿后,延时15-60us接着通过拉低总线60-240us,以产生应答脉冲。
图2-2复位时序
读/写时序,在写时序期间,主机向单总线器件写入数据:
而在读时序期间,主机读入来自从机的数据。
在每一个时序,总线只能传输一位数据。
写时序,存在两种写时序,写1和写0。
主机采用写1时序向从机写入1,而采用写0时序向从机写入0。
所有写时序至少需要60us,且在两次独立的写时序之间至少需要1us的恢复时间。
两种写时序均起始于主机拉低总线。
产生写1时序的方式:
主机在拉低总线后,接着必须在15us之内释放总线,由5k上拉电阻将总线拉至高电平;
而产生0时序的方式,在主机拉低总线后,只需在整个时序期间保持低电平即可(至少60us)。
在写时序起始后15-60us期间,单总线器件采样总线电平状态,如果在此期间采样为高电平,则逻辑1被写入该器件;
如果为0则写入逻辑0。
图2-3写时序
图2-4读时序
读时序,单总线器件仅在主机发出读时序时,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。
所有读时序至少需要60us,且在两次独立的读时序之间至少需要1us的恢复时间。
每个读时序都由主机发起,至少拉低总线1us,在主机发起读时序之后,单总线器件才开始在总线上发送0或1。
若从机发送1则保持总线为高电平,若发送0则拉低总线,当发送0时,从机在该时序结束后释放总线,由上拉电阻将总线拉回至空闲高电平状态。
从机发出的数据在起始时序之后,保持有效时间15us因而,主机在读时序期间必须释放总线,并且在时序起始后的15us之内采样总线状态。
第3章系统硬件
3.1系统概况
图3-1系统框图
系统概况:
系统主要分为四大部分分别为控制器、独立按键、液晶显示和温度采集。
选择合适的器件完成设计任务,目前各半导体公司、电气商都向市场上推出了形形色色的器件,如何选择合适的器件使系统最大的简单化,功能优异化,可靠性强,成本低廉,成为了器件选择的重中之重。
系统主控制器单片机为是宏晶科技推出的新一代超强抗干扰/高速/低功耗的单片机,指令代码完全兼容传统8051单片机STC89C516RD+。
字符液晶显示器1602和温度传感器DS18B20。
3.1单片机与按键
图3-2单片机引脚图
(1)电源引脚:
Vcc:
40脚正电源脚,工作电压为5V。
GND:
20脚接地端。
(2)单片机I/O口:
P0口:
P0口为一个8位漏极开路双向I/O口。
P0口能用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FLASH编程时,P0口作为原码输入口,当FALSH进行校验时,P0口输出原码,此时P0口外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流。
在FALSH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口。
当P2口被写入“1”时,其管脚被内部上拉电阻拉高,且作为输入。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口。
当P3口写入“1”后,它们被内部上拉为高电平并用作输入。
P3口除作I/O口使用外,还有特殊功能如图所示:
P3引脚
兼用功能
P3.0
串行通讯输入(RXD)
P3.1
串行通讯输出(TXD)
P3.2
外部中断0(INT0)
P3.3
外部中断1(INT1)
P3.4
定时器0输入(T0)
P3.5
定时器1输入(T1)
P3.6
外部数据存储器写选通WR
P3.7
外部数据存储器写选通RD
表3-1P3口的特殊功能
(3)RST复位:
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
复位可分为上电复位和手动复位两种,如图所示:
图3-3复位电路
(4)晶振电路:
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
晶振电路如图所示:
图3-4晶振电路
(5)ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
(6)/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
(7)/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
图3-5主电路(省略晶振与复位)
按键电路,此系统按键电路为独立按键直接与单片机P1口相连,另一端接地,与P1口相连处上拉电压。
在系统运行中无按键按下时单片机检测到得为高电平,当按键按下时为低电平。
3.3液晶显示
本系统的字符型液晶模块是一种用5x7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等等,这里以常用的2行16个字的1602液晶模块来介绍它的编程方法。
图3-5液晶显示器及电路板
1602采用标准的16脚接口,其中:
第1脚:
VSS为地电源
第2脚:
VDD接5V正电源
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15~16脚:
空脚
LCD1602的控制命令
表3-2LCD1602控制命令
控制命令详解:
指令1:
清显示,指令码01H,光标复位到地址00H位置;
指令2:
光标复位,光标返回到地址00H;
指令3:
光标和显示模式设置I/D:
光标移动方向,高电平右移,低电平左移S:
屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效;
指令4:
显示开关控制。
D:
控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:
控制光标的开与关,高电平表示有光标,低电平表示无光标B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁;
指令5:
光标或显示移位S/C:
高电平时移动显示的文字,低电平时移动光标;
指令6:
功能设置命令DL:
高电平时为4位总线,低电平时为8位总线N:
低电平时为单行显示,高电平时双行显示F:
低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符(有些模块是DL:
高电平时为8位总线,低电平时为4位总线);
指令7:
字符发生器RAM地址设置;
指令8:
DDRAM地址设置;
指令9:
读忙信号和光标地址BF:
为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙;
指令10:
写数据;
指令11:
读数据。
3.4温度传感器
DSl820数字温度计提供9位温度读数,指示器件的温度。
信息经过单线接口送入DSl820或从DSl820送出,因此从中央处理器到DSl820仅需连接一条线(和地)。
读、写和完成温度变换所需的电源可以由数据线本身提供,而不需要外部电源。
因为每一个DSl820有唯一的系列号(siliconserialnumber),因此多个DSl820可以存在于同一条单线总线上。
这允许在许多不同的地方放置温度灵敏器件。
此特性的应用范围包括HVAC环境控制,建筑物、设备或机械内的温度检测,以及过程监视和控制中的温度检测。
3.4.1DS18B20的主要性能特点
(1)只需一个端口即可实现通信。
(2)可用数据线供电,电压范围:
3.0V~5.5V。
(3)实际应用中不需要外部任何元器件即可实现测温。
(4)测温范围:
-55℃~+125℃,在-10℃~+85℃时精度为±
0.5℃。
(5)可编程的分辨率为9~12位,对应的分辨温度为0.5℃、0.25℃、0.125℃和0.0625℃。
(6)负压特性:
电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
(7)内部有温度上、下限告警设置。
非易失性温度报警触发器TH和TL。
可通过软件写入用户报警上下限值。
(8)每个芯片唯一编码,支持联网寻址,零功耗等待。
3.4.2DS18B20的结构
DS18B20的引脚排列采用3脚PR-35封装或8脚SOIC封装。
I/O为数据输入/输出端(即单线总线),属于漏极开路输出,外接上拉电阻后常态下呈高电平。
UDD是可供选用的外部+5V电源端,不用时需接地。
GND为地,NC为空脚。
管脚图如下:
图3-7DS18B20管脚图
第4章系统软件
4.1软件概况
系统软件设计说明
在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需求设计应用程序。
因此,软件设计在微机控制系统设计中占重要地位。
对本系统,软件更为重要。
在单片机控制系统中,大体上可分为数据的处理、过程控制两个基本类型。
数据处理包括:
数据的采集、数字信号的处理、标度的转换等。
过程控制程序主要使单片机按一定的方式经行计算,然后再控制输出。
为了完成上述任务,在经行软件设计时,通常吧整个过程分成若干个部分,每一部分叫做一个模块。
所谓“模块”,实质上就是所完成一定功能,相对独立的程序,这样程序设计方法叫模块程序设计法。
模块程序设计法的主要优点:
(1)单个模块比一个完整的程序容易编写及调试;
(2)模块可以共存,一个模块可以被多个任务在不同条件下使用;
(3)模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。
(4)本系统软件采用模块化结构,由主程序、显示程序、按键程序、算法程序和采样程序。
图4-1流程图
4.2按键程序
按键程序系统刚开始工作时人工选择进入的工作方式,如不选择则进入自动模式,按键程序如下。
ANJIAN:
JNBP1.0NEXT判断按键是否按下
JNP1.0$等待按键释放
AJMPMOSHI1进入模式1
NEXT:
JNBP1.1NEXT1
JNP1.1$
AJMPMOSHI2
NEXT1:
JNBP1.2NEXT2
JNP1.2$
AJMPMOSHI3
NEXT2:
JNBP1.3ANJIAN
JNP1.3$
AJMPZIDONG
4.3温度采集
下面是温度采集程序,温度采集程序必须按照单总线时序经行编写。
GETWEN:
MOVA,#0CCH
LCALLWRITE;
发跳过ROM命令
MOVA,#44H
发启动转换命令
MOVR4,#0FFH
LCALLDE