仓库温度的监测与显示系统Word文件下载.docx
- 文档编号:16879085
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:21
- 大小:517.67KB
仓库温度的监测与显示系统Word文件下载.docx
《仓库温度的监测与显示系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《仓库温度的监测与显示系统Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
3.3.4空置模式
3.3.5结构特点
第四章软件设计
4.1流程图
4.2程序代码
第五章心得体会
第六章参考文献
第一章绪论
防潮、防霉、防腐、防爆是仓库日常工作的重要内容,是衡量仓库管理质量的重要指标。
它直接影响到储备物资的使用寿命和工作可靠性。
为保证日常工作的顺利进行,首要问题是加强仓库内温度与湿度的监测工作。
但传统的方法是用与湿度表、毛发湿度表、双金属式测量计和湿度试纸等测试器材,通过人工进行检测,对不符合温度和湿度要求的库房进行通风、去湿和降温等工作。
这种人工测试方法费时费力、效率低,且测试的温度及湿度误差大,随机性大。
因此我们需要一种造价低廉、使用方便且测量准确的温度测量仪。
1.2设计过程及工艺要求
一、基本功能
~检测温度
~显示温度
二、主要技术参数
~温度检测范围:
-30℃-+50℃
~测量精度:
0.5℃
~显示方式:
温度:
四位显示
当将单片机用作测控系统时,系统总要有被测信号通过输入通道,由计算机拾取必要的输入信息。
对于测量系统而言,如何准确获得被测信号是其核心任务;
而对测控系统来讲,被控对象状态的测试和对控制条件的监察也是不可缺少的环节。
传感器是实现测量与控制的首要环节,是测控系统的关键部件,如果没有传感器对原始被测信号进行准确可靠的捕捉和转换,一切准确的测量和控制都无法实现。
工业生产过程的自动化测量和控制,几乎主要依靠各种传感器来检测和控制生产过程中的各种参量,使设备和系统正常运行在最佳状态,从而保证生产的高效率和高质量。
温度传感器
按照温度传感器输出信号的模式,可大致划分为3大类:
模拟式温度传感器、逻辑输出温度传感器、数字式温度传感器。
其中数字式温度传感器是微电子技术、计算机技术和自动测试技术的结晶,可以将待测环境的温度模拟量直接转化成单片机能够处理的数字量信号。
数字温度传感器把模拟传感器温度采集系统测量电路、模拟信号处理电路、A/D转换电路和其他功能的单元集成到一起,就构成具有数字输出功能的数字温度传感器。
数字温度传感器根据输出信号的不同可分为3类:
时间输出的温度传感器,如AD公司的TMP03/04;
频率输出的单线温度传感器,如MAX6577;
数值输出的温度传感器,数值输出的单线温度传感器直接以单行方式输出芯片测出的具体温度数值,所以其时序非常重要。
DALLAS公司的DS18B20就是这样一种独特的温度传感器。
它只需一个接口引脚即可通信,可用数据线供电,并具备多点测温能力。
本次设计即采用了DS18B20作为系统的温度传感器。
第三章系统总体设计
根据DS18B20的工作原理和单总线系统的结构设计出基于单个DS18B20的温度测量系统,该系统主要包括硬件电路图和软件设计两部分内容。
这里先介绍硬件电路。
3.1DS18B20数字传感器
本系统的核心器件就是DS18B20数字传感器,它的性能特点如下。
1采用单总线专用技术,微处理器仅需1条端口线即可实现与DS18B20的双向通信。
2可实现简单的多点分布式温度检测。
3不需要外部器件。
4内含寄生电源,电压范围:
3.0~5.5V。
5测温范围:
-55~125℃。
6可编程的温度转换分辨率,可根据应用在9~12bit之间选取。
712位数字(测温分辨率达0.0625℃)最多在750ms内把温度值转换为数字值。
8用户可自行设定非易失性的报警上下限值。
9DS18B20采用节能设计,在等待状态下功耗近似为零。
10DS18B20常用的封装有TO-92和8引脚的SOIC封装。
图1DS18B20的两种封装图
表1DS18B20的引脚和引脚功能
引脚(SOIC)
引脚(TO-92)
符号
引脚功能
5
1
GND
接地
4
2
DQ
单线操作的数据输入/输出引脚
3
VDD
可选的VDD引脚,当工作于寄生电源时,此引脚必须接地
DS18B20内部功能模块如下图所示,主要由4部分组成:
64位光刻ROM、温度传感器、非易失性的温度报警触发器TH和TL、配置寄存器。
图2DS18B20内部功能模块
ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址列码,每个DS18B20的64位序列号均不相同,开始8位是产品类型的编号,接着是每个器件的惟一的序列号,共有48位,最后8位是前56位的CRC校验码。
通过该序列号可以实现多个DS18B20的一线通信,控制器通过不同的序列号对DS18B20进行识别。
高低温报警触发器TH和TL,配置寄存器均由一个字节的
PROM组成。
使用一个存储器功能命令可对TH、TL或配置寄存器写入。
DS18B20温度传感器的存储器包括一个高速暂存RAM和一个非易失性的可电擦除的
PROM,数据先写入RAM,经校验后再传给
PROM。
后者主要用于存储TH,TL值,前者包含了9个连续字节(0~8),字节0和字节1是测得的温度信息,字节0的内容是温度的低8位,字节1是温度的高8位;
字节2是TH(温度上限报警),字节3是TL(温度下限报警);
字节4是配置寄存器,用于确定输出分辨率9~12位。
第5、6、7字节是预留寄存器,用于内部计算。
字节8是冗余检验字节,检验前面所有8个字节的CRC码,可用来保证通信正确。
配置寄存器为高速暂存RAM中的字节4,它用于确定温度值的数字转换分辨率,具有重要的意义,DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。
该字节各位的定义如表2所示;
低5位一直都是1,TM是测
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
TM
R1
R0
表2配置寄存器的8位
试模式位,用于设置DS18B20在工作模式还是在测试模式,在DS18B20出厂时该位被设置为0。
R1和R0决定温度转换的精度,即用来设置分辨率(DS18B20在出厂时被设置为12位),设定的分辨率越高,所需要的温度数据转换时间就越长。
因此在实际应用中要在分辨率和转换时间权衡考虑。
3.3.3DS18B20的测温原理
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的0、1字节。
单片机可通过单线总线读到该数据,读取时低位字节在前,高位字节在后,数据格式以0.0625℃/LSB形式表示。
温度值低位和高位字节格式如表3和表4所示,其中“S”为标志位,对应的温度计算:
当符号位S=0时,直接将二进制位转换为十进制。
bit5
bit4
bit3
bit1
bit0
表3温度值低位字节
bit6
bit2
S
表4温度值高位字节
DS18B20在完成温度转换后,会把测得的温度值与TH、TL做比较,若T〉TH或T〈TL,则将该器件内的报警标志置位,并对主机发出的报警搜索命令发出响应。
因此,可用多只DS18B20同时测量温度并进行报警搜索。
3.2DS18B20的单线总线结构
单线总线系统由一个主机和一个或多个从机构成,由于单线总线只有一条信号线,这意味着总线上的每个器件只能分时驱动单线总线,同时要求每一个总线上的器件都必须是漏极开路或三态输出。
DS18B20的单总线端口属于漏极开路输出,DS18B20与主机的硬件电路接法如图3所示,一个多点总线由一个单线总线和多个挂于其上的从机构成。
在单线总线需要一个上拉电阻,其阻值约为5kΩ。
图3DS18B20与主机的硬件电路
单线总线在空闲状态下呈高电平,操作单线总线时,必须从空闲状态下开始,单线总线加低电平的时间超过480us时,总线上的所有器件都复位,在总控制器发出复位脉冲后,从机就发出应答脉冲来通知总控制器已经做好了接受数据和命令的准备工作。
单总线芯片的供电方式有两种,一种是采用寄生电源供电方式,另一种是采用外部电源供电方式。
(1)寄生电源供电方式
当DS18B20进行内部温度转换时,I/O线必须保证在温度转换期间提供足够的能量,每个DS18B20在温度转换期间工作电流达到1.5mA,4.7kΩ的上拉电阻将使I/O线没有足够的驱动能力,尤其是当几个DS18B20同时挂接在总线上时。
为了使DS18B20在动态转换周期中获得足够的电流供应,可以采用图4所示的单总线寄生电源供电方式,用MOSFET把I/O线直接拉到VCC就可提供足够的电流,在发出启动温度转换的指令后,最多10us就把I/O线转换到强上拉状态。
该方法也适合于多点测温应用,缺点就是要多占用一根I/O口线进行强上拉切换。
图4寄生电源供电方式
(2)外部电源供电方式
采用外部电源供电的电路图如图5所示,在外部电影供电方式下,DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,能够为DS18B20提供足够的电流,同时在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统。
图5外部电源供电方式
在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是85℃。
外部电源供电是一种非常好的供电方式,工作稳定可靠,抗干扰能力强,电路也比较简单,可以开发出稳定可靠的多点温度测量系统。
3.2.2单线总线的通信协议
与其他通信方式一样,单总线DS18B20芯片在数据传输过程中必须按一定的通信协议进行。
按照通信协议,主机控制DS18B20完成读取温度的过程为:
初始化DS18B20(发复位脉冲)、发ROM命令、发存储器操作命令、处理数据。
(1)初始化
单线总线的所有处理过程均从初始化开始。
初始化序列包括一个由主机发出的复位脉冲和其后由主机发出的存在脉冲,存在脉冲让主机知道DS18B20总线上并且已准备好操作
(2)ROM操作命令
当主机检测到一个存在脉冲后,就可以发出ROM命令,包括5种ROM操作命令,每个命令都8位长度,其命令代码和实现的具体功能如表5所示。
(3)存储器操作命令
在成功地执行了ROM操作命令后,就可以使用存储器操作命令,主机提供了6种存储器操作命令,如表6所示。
(4)数据处理
由于DS18B20采用单总线协议方式,在一根I/O线上完成数据的读写,因此,对读写的数据位有着严格的时序要求,DS18B20的数据读写是通过时间片(timeslot)处理位和命令字来实现信息交换。
DS18B20的通信协议定义了几种信号的时序:
初始化时序、读时序和写时序。
所有时序都是将主机作为主设备,单总线器件作为从设备,每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收,数据和命令的传输都是低位在先。
1DS18B2020的初始化时序
初始化时序包括一个主机发出的复位脉冲以及从机的应答脉冲,这一过程如图6所示,复位脉冲是一个48~960us的低电平,然后释放总线使其进入接收状态,总线通过4.7kΩ的上拉电阻接至高电平,时间持续15~60us之后,从机开始向总线发出一个应答脉冲,该脉冲是一个60us~120us的低电平信号,表示从机已经准备好,可以根据命令发送或接收数据。
图6DS18B20的初始化时序
2DS18B20的读时序
DS18B20的读时序如图7所示,可分为读0和读1时序两个过程。
当从DS18B20读取数据时,主机生产读时序,当主机把总线从高电平拉到低电平时,读时序开始。
总线保持低电平至少为1us的时间,由于DS18B20的输出数据在读时序下降沿过后的15us内有效,因此在15us之内,主机必须停止将总线置低,使之处于输入状态以便读取数据。
之后,I/O线将被外部上拉电阻拉到高电平,读取一位数据至少需要60us,并且在两个读周期之间至少要有1us的恢复时间。
3DS18B20大的写时序
DS18B20的写时序如图7所示,分为写0和写1时序两个过程。
主机把单线总线从高电平拉到低电平时,作为一个写周期的开始,写0或写1时序必须最少持续60us,两个写周期至少要有1us的恢复时间。
DS18B20在单线总线电平变低后,在一个15~60us的窗口内对总线进行采样。
如果线上是高电平,就是写1,如果线上是低电平,就是写0。
当然,对于写0和写1时序的要求也有所不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20在15~45us之间能够正确地采样总线上的低电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线,将总线拉为高电平。
图7DS18B20的读/写时序
3.389C52单片机
89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。
它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。
80C52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。
掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。
89C52有PDIP(40pin)和PLCC(44pin)两种封装形式。
3.3.1主要功能特性
图889C52的引脚图
VCC:
供电电压
GND:
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3.3.3振荡器特性
外接石英晶体或者陶瓷谐振器以及电容C1、C2接在放大器的反馈回路(AT89C52内部有一个用于构成内部振荡器的高增益反相放大电路,XTAL1、XTAL2分别是该放大器的输入和输出端)中构成并联振荡电路。
为了使装置能够被外部时钟信号激活,XATL1应该有效,而XTAL2应该被悬空。
由于输入到内部的时钟信号电路通过了一个二分频的信号,外部信号的工作周期比没有别的要求,但是最大值和最小值的大小可以在数据表上观察出来。
当正常工作时,外部振荡器可以计算出XTAL1上的电容,最大可达到100pF。
这是由于振荡器电容和反馈电容之间的相互作用。
当外部信号是标准高电平或者低电平时,电容不会超过20pF。
3.3.4空置模式
用户的软件都可以调用空置模式。
当单片机出于这种模式,耗能就会自然降低。
特殊功能端和板子上的随机存储器在空置状态保持各自的电平。
但是处理器阻止装置执行指令。
空置模式会被激活如果端口处于复位状态或者中断系统有效。
3.3.5结构特点
互补高性能金属氧化物半导体结构可擦可编程只读存储器/只读存储器/中央处理器;
12/24/33/MHz操作;
三个16位的定时器/计数器;
可编程的时钟输出;
Up/Down定时器/计数器;
三级程序锁定系统;
8K/16K/32K片内程序存储器;
256字节片内RAM;
改进的快速脉冲编程算法;
布尔处理器;
32根可编程的输入/输出线;
六个中断源;
可编程的串行通道带有:
——帧错误检测,——自动地址识别;
TTL和CMOS兼容逻辑电平;
64K片外程序存储空间;
64K片外数据存储空间;
MCS51单片机可兼容指令集;
闲置节能和掉电模式;
ONCE(On-Circuit仿真)模式;
四级中断优先级;
扩展温度范围(-40℃到+85℃);
如上图所示,为单片机89C51通过单线总线控制单个DS18B20的电路图,在该图中,DS18B20采用外部供电方式进行供电,工作稳定可靠,抗干扰能力强。
单片机通过P23引脚与DS18B20的DQ相连,作为单一数据线,R3为单线DQ的上拉电阻,阻值为4.7kΩ。
单片机的工作时钟频率为12MHz,这决定了它的指令周期,软件设计中要根据此时间进行各种延时。
在软件设计中,要实现DS18B20的单线总线时序,需要做一定的延时。
这里,可以用函数Delay_15μs(unsignedcharn)来实现15μs×
n的延时,这样就能满足DS18B20各种时序的延时条件。
C51的内部函数_nop_()相当于汇编中的NOP指令,因为单片机的时钟频率为12MHz,所以执行一次占1μs,do…while语句相当于DJNZ指令,执行一次占用2μs,以此来实现15μs的延时。
单片机实现一次温度转换读取温度数值的流程图如图9所示,该部分程序主要包括DS18B20的初始化、读取数据和写数据这3个子程序和完成温度转换以及读取温度值两个功能程序。
在温度转换和读取温度之前,首先要通过产生复位脉冲初始化DS18B20,然后DS18B20发出应答脉冲,当单片机收到应答脉冲后才开始后续的操作。
程序应按照严格的时序进行DS18B20的初始化、读数据、写数据操作,以保证数据的完整性。
本次设计中,系统采用DS18B20出厂默认的12位分辨率,读取的温度值(共16位)存储在DS18B20的2个8位的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测得的数据乘以0.0625即可得到实际温度,如果温度小于0,这5位为1,测到的数据需要取反加1再乘以0.0625即可得到实际温度。
程序代码如下:
#include<
reg52.h>
math.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint;
sbitseg1=P2^0;
sbitseg2=P2^1;
sbitseg3=P2^2;
sbitDQ=P1^7;
//ds18b20端口
//sfrdataled=0x80;
//显示数据端口
uchartemp;
ucharflag_get,count,num;
ucharcodetab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//7段数码管段码表共阳
voiddispaly();
voiddelay1(ucharMS);
unsignedcharReadTemperature(void);
voidInit_DS18B20(void);
unsignedcharReadOneChar(void);
voidWriteOneChar(unsignedchardat);
voiddelay(unsignedinti);
main()
{
while
(1)
{
temp=ReadTemperature();
dispaly();
}
}
voiddispaly()
P2=0xf7;
P0=tab[temp/10];
//数码管扫描
delay(20);
P2=0xfb;
P0=tab[temp%10];
P2=0xfd;
P0=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 仓库 温度 监测 显示 系统