




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
221概述1.1课题意义近几年来仓库的机械化、自动化程度不断提高,一些智能化仓库管理技术如检测技术、监视技术和控制技术等在仓库管理中得到广泛应用。在粮食、药材等的储存仓库,若不对仓库内的温度或湿度进行实时检测,就不能及时了解粮食、药材的储藏状况,可能发生腐烂,造成极大的经济损失。由于仓库对环境温度和湿度提出了很高的要求,因此能否有效地对这些领域的环境温度和湿度进行实时监测和控制是一个必须解决的重要课题。本系统解决的就是温、湿度的实时检测,只要两者之中的任何一个超过限制,就启动报警系统,使人们能够及时发现问题,采取有效的措施,以此避免不必要的损失。1.2设计任务本课题是针对仓库设计的通用温、湿度检测仪,它可以实现的功能是:(1)实时采集外界温度和相对湿度的变化,并在数码管上实现实时显示;(2)可通过键盘设定温、湿度报警值,且报警值掉电不丢失信息;(3)可实现温、湿度超限声、光报警。1.3主要技术方案仓库在温湿度检测发生故障时,会使其存储物腐烂,从而造成直接和间接的巨大经济损失。我们设计了一套温、湿度检测系统,实时检测仓库的温、湿度,本系统由AT89C51单片机、键盘显示电路、报警电路、数字温度传感器、湿度传感器、看门狗电路及E2ROM组成,完成对仓库内温、湿度数据的采集、显示和超限报警。本装置的结构框图如图1-1。图1-1系统结构框图1.4本文主要工作本专题是温湿度检测仪的数据采集部分,要完成的主要工作是(1)选择温度传感器;(2)设计湿度传感器;(3)设计数据采集系统的硬件电路;(4)采集系统软件设计与编程。2系统总体设计2.1系统特点本系统实时采集外界温度和湿度信号,并送单片机处理,处理结果送LED显示,用户通过键盘设定上限值后,报警电路对外界温、湿度进行监控。特点:(1)用数字式温度传感器,与单片机接口简单,可靠。(2)采用的湿度传感器输出频率信号,便于单片机采集和处理。(3)看门狗电路,提高系统可靠性。(4)E2ROM保存键盘输入参数,掉电不丢失信息。2.2系统设计在系统上电后,温、湿度传感器开始实时采集温、湿度数据并显示出来,直到操作者按下“设定”键。此时系统停止采集数据,操作者可以通过键盘设定温度和湿度的上限,系统会立即把设定值通过数码管显示出来。操作者按下“运行”键后,系统会把数码管显示的上限存入E2R0M中,接着才又开始采集温湿度数据,并在每一次采集之后立即将其分别与存于E2ROM中的温湿度上限作比较。一旦采集的数据高于上限,就启动报警电路报警;若没有超过上限,则又重复上述过程。在采集的数据显示过程中可以重新设定报警值。系统以AT89C51单片机为核心,由温湿度数据采集、键盘显示、看门狗定时器、E2ROM及报警电路组成。2.2.1数据采集系统1.温度传感器目前在市面上有各式各样的温湿度传感器。这里采用的温度传感器是美国Dallas公司开发出的DS18B20单线数字温度传感器°DS18B20可以把温度信号直接转换为数字量,而无须A/D转换器与数据调理电路,既简化电路,又提高电路的可靠性。采用单总线原理,易于电路扩展,只需在相应单总线上继续挂接器件即可,是现代集成式温度传感器的首选器件。此设计将DS18B20的数据线接到89C51的P1.0口进行数据输入输出。2.湿度传感器设计中采用的湿度敏电容是HS1101,将其置于555振荡电路就构成湿度传感器,可以得到与环境相对湿度成比例关系的频率信号,将此数字信号可直接接入89C51的T1计数器计数。同时把TO设定为1秒的定时器,89C51每隔1秒钟处理一次T1计得的数,此数才是所需要的频率。2.2.2键盘显示系统本系统采用HD7279A完成数据输入与数据显示。HD7279A是一片具有串行接口的,可同时驱动8位共阴极数码管的智能显示驱动芯片,该芯片同时能对多达8X8的键盘矩阵的按键情况进行监视,具有自动消除键抖动并识别按键代码的功能,从而可以提高CPU工作的效率。HD7279A和微处理器之间采用串行接口,其接口电路和外围电路简单,占用的串口少,具有较高的性能价格比。2.2.3看门狗电路及E2ROM这里选用了Xicor公司生产的可编程看门狗监控E2ROM芯片X25045。此芯片把看门狗电路、电压监控和E2ROM组合在一起,降低了系统成本并减少了对电路板空间的要求。看门狗定时器对主控机提供了一个独立的保护机制,一旦单片机因干扰而程序走失,可通过复位电路使单片机复位,保证系统可靠运行。X25O45中的E2ROM存储DS18B2O的序列号和用户设定的上限,保证掉电时不丢失信息,这样也不必每次接上电源时重新写入数据。2.2.4报警电路本电路完成系统报警功能,即在温、湿度超出报警值时,对应于温、湿度传感器的各个相应发光二极管灯亮,同时蜂鸣器蜂鸣,显示报警状态。3硬件电路设计数据采集部分由单片机AT89C51、温度传感器DS18B20、和湿度传感器HS1101等组成。具体的电路图如下图3-1所示。00>QS0口罔SMQGAA口{>I"s>一阴困创UUAEEH-ITH网〔口一〕〔匚色〔吕色QIMI1〕Qxaj一也cldd厨200>QS0口罔SMQGAA口{>I"s>一阴困创UUAEEH-ITH网〔口一〕〔匚色〔吕色QIMI1〕Qxaj一也cldd厨2寸订由图可见,DS18B20的数据线直接与89C51的P1.0连接;S1101和TLC555等构成振荡电路,输出的是频率信号,接入T1口计数;而X25045的八个管脚分别与89C51的P1.4〜P1.7口连接。整个数据采集电路简单可靠。3.1单片机AT89C51AT89C51是由ATMEL公司在MCS-51单片机的基础上设计生产的高性能八位单片机。1.特点・AT89C51与MCS-51系列的单片机在指令系统和引脚上完全兼容•片内有4K字节在线可重复编程快擦写程序存储器•全静态工作,工作范围:OHz〜24MHz•三级程序存储器加密・128X8位内部RAM•32位双向输入输出线•两个十六位定时器/计数器•五个中断源,两级中断优先级•一个全双工的异步串行口•间歇和掉电工作方式2.功能描述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更具有灵活性,系统能快能慢。AT89C5l芯片提供三级程序存储器加密,提供了方便灵活而可靠的硬加密手段,能完全保证程序或系统不被仿制。另外,AT89C51还具有MCS-51系列单片机的所有优点。128X8位内部RAM,32位双向输入输出线,两个十六位定时/计时器,5个中断源,两级中断优先级,一个全双工异步串行口及时钟发Z-PW.A^r生器等。3.管脚功能AT89C51单片机为40引脚芯片,如下图3-2所示。r..匚jJ-.!匚匸宀3匚卩I、r卩门匚几f匚■],.rLrstcRXDPi-.匚TXDPji匚凡:匚尺二巴』匸S&、c1I!—匸P4Bc■R[l】l:匚XTAL?CX:A1.:C八::匸丽37
加
:沁丽37
加
:沁J43:
:W
朗2?F4Jr^..j(Anc}i\.■;adj;凡i<AL12)平心临口卩訂*arj4)口P©,:i'■AD5)□Po.«(AD6)二HA/Kpp^AI.E.-PRUG口Fsen口宀.-(A15;二I门』/<4;Pf■〔人⑶Pf<(AJ2)IVJCAII)Pi.jfAlO)P2o<AS)I/O口线:PO、Pl、P2、P3共四个八位口。P0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。PO口也用以输出外部存储器的低8位地址。由于是分时输出,故应在外部加锁存器将此地址数据锁存,地址锁存信号用ALE。Pl口是专门供用户使用的I/O口,是准双向口。P2口是从系统扩展时作高8地址线用。不扩展外部存储器时,P2口也可以作为用户I/O口线使用,是准双向口。P3口是双功能口,该口的每一位均可独立地定义为第一I/O功能或第二I/O功能,作为第一功能使用时操作同P1口。P3口的第二功能见表3-1。(2)控制口线:PSE亍(片外取控制)、ALE(地址锁存控制)、ET(片外储器选择)、RST(复位控制)。(3)电源及时钟:VCC,GND;XTAL1,XTAL2。表3-1P3口的第二功能第一功能标记第二功能P3.0RXD串行输入口P3.1TXD串行输出口P3.2INTO外部中断0输入P3.3INT1外部中断1输入P3.4T0定时/计数器0外部输入P3.5T1定时/计数器1外部输入P3.6WD外部数据存储器写选通P3.7RD外部数据存储器读选通3.2数字温度传感器DS18B20测温器件常用的有电阻式、热电偶式、PN结型、辐射型及石英谐振型,还有集成式等。它们都是基于温度变化引起其物理参数(如电阻值,热电势等)的变化的原理。随着测量技术的不断发展,出现了适用于高温、强磁场干扰等恶劣环境的光纤温度传感器。其中,我们常用的温度传感器有电阻式温度传感器,热电偶温度传感器和集成式温度传感器等。其中,集成温度传感器利用PN结的温度特性,与热敏电阻、热电偶等其它温度传感器相比,具有灵敏度高、线性度好、响应速度快等特点;另外,它将驱动电路、信号处理电路以及必要的逻辑控制电路集成在单片机上,有尺寸小、使用方便等特点。现代的温度传感器都将恒流源、放大电路、补偿电路集成在一起做成集成温度传感器,集成温度传感器的输出形式有:模拟输出、逻辑输出和数字输出。模拟输出型温度传感器的输出电压或电流随温度的变化呈线性变化关系,可理想地取代热电偶。这种温度传感器常用于温度测量、温度补偿等系统,例如:LCD的对比度通常随温度的变化而改变,为保持恒定的对比度,可采用温度传感器的测量值对LCD的偏置电压加以调整;另外,在数字相机中,常用模拟输出温度传感器补偿“自动聚焦”参数随温度的变化量。逻辑输出型温度传感器结构比较简单,且成本较低,主要用于温度控制系统。数字输出型温度传感器一般带有串行接口,可以与微处理器或其它数字系统直接进行数据交换,用于CPU、智能电池的监测和其它温度测量系统。目前常用的集成式温度传感器有电流型输出的AD590和数字式输出的DS18B20温度传感器。为便于单片机操作,本设计采用了数字输出的DS18B20温度传感器。3.2.1DS18B201.概述由单片机集成电路构成的单线数字温度传感器由于其外围电路结构简单,使用方便,开发成本底,开发周期短而得到很广泛的应用。以前的温度传感器大都输出的是模拟信号,不能直接送入单片机等微处理器进行测量,而且要做多点测量十分麻烦,所以在多点温度测量中得不到广泛的应用。美国Dallas公司开发出的DS18B20单线数字温度传感器具有与一般模拟温度传感器相当的测量范围和精度,输出直接表示温度值的12位(二进制)数字。由于DS18B20具有全球唯一的序列号,故一根总线可以挂接任意多个DS18B20。DS18B20有数据总线供电和外部电源供电两种供电方式,可以非常方便地构成单线多点温度测量系统。DS18B20为一单总线的数字温度传感器,可提供9〜12位(二进制)的数据来指示传感器的温度。数据信息从DS18B20之间只需一根数据线(和地线)连接即可。若采用外部电源供电方式只需三条线即可。因为每一片DS18B20具有全球唯一的序列号,所以任意多个DS18B20可共享同一数据线。DS18B20的测温范围从一55°C〜+125°C,在一10〜85°C之间的精度达土1/2°C,在整个测量范围内具有±2°C的测量精度。2.主要特性
•单线接口,只需一根口线与CPU连接•不需要外部元件,不需要备份电源,可用数据供电•支持多点组网功能,多个DS18B20可以并联在唯一的单总线上•温度测量范围从一50°C〜125°C•通过编程可实现1/2〜1/16的四级精度转换•在93.75ms和750ms内将温度值转化9位和12位的数字量•用户可自设定非易失的报警上下限值•报警搜索命令可以识别哪片DS18B20超限•芯片本身带有命令集和存储器3.引脚及说明DS18B20的引脚和说明见图3—3DS18B20的引脚和说明见图3—3。GND地DQ数据输入输出VDD电源电压NC不连接图3—3图形及引脚说明3.2.2内部结构DS18B20内部结构如图3—4所示。DS18B20有三个主要的数据部件:(1)64位激光ROM;(2)温度敏感元件;(3)非易失性温度告警触发器TH和TL。DS18B20的电源可以由数据线本身提供,但是在有些特定的应用环境中,要求温度的测量尽量快些,因此一般都采用外部电源供电方式。
图3-4DS18B20内部结构框图3.2.3测温原理DS18B20的测温原理如图3-5所示。低温系数振荡器输出的时钟脉冲信号通过由高温系数振荡器产生的门开通周期而被计数,通过该计数值来测量温度。计数器被预置为与一55°C对应的一个基数值,如果计数器在高温系数振荡器输出的门周期结束前计数到零,表示测量的温度高于一55C,被预置在一55C的温度寄存器的值就增加一个增量,同时为了补偿温度振荡器的抛物线特性,计数器被斜率累加器所决定的值进行预置,时钟再次使计数器计数直至零,如果开门通时间仍未结束,那么重复此过程,直到高温度系数振荡器的门周期结束为止。这时温度寄存器中的值就是被测的温度值。图3-5DS18B20的测温原理图3・2.464位激光ROM每一个DS18B20包括一个唯一的64位ROM编码。开始8位是单线产品系列编码,接着的48位是每个器件唯一的序列号,最后8位是前56位的CRC校验码。64位ROM和ROM操作控制部分允许DS18B20作为一个单线器件工作并遵循单线协议。直到ROM操作协议被满足,DS18B20控制部分的功能是不可访问的。64位ROM结构如下所示:
8位校CRC编号48位序列号8位产品系列编号MSBLSBMSBLSBMSBLSB3.2.5存贮器DS18B20的存贮器如下图所示。存贮器由一个高速暂存(便簽式)RAM和一个非易失性,电可擦除E2RAM组成,后者存贮高温度和低温度触发器TH和TL。暂存存贮器有助于在单线通信时确保数据的完整性。数据首先写入暂存存贮器,在那里它可以被读回。当数据被校验之后,复制暂存存贮器的命令把数据传送到非易失性E2RAM,这一过程确保了更改存贮器时数据的完整性。明BYTE0123456明E2明E2RAM包括温度信息(1、2字节)、TH和TL值(3、4字节)、计数寄存器(7、8字节)、CRC(9字节),第5、6字节不用。设置寄存器的内容用于确定温度值的数字转换分辨率,该字节每位的意义如下:TMR1R011111其中R1和R2用来设置分辨率,DS18B20在出厂时被设置为12位。3.2.6温度表示此处DS18B20用12位存贮温度值,最高位为符号位。下图为18B20的温度存储方式,负温度S=1,正温度S=0。温度转换命令使温度转换发生,数值存储在暂存存储器中,温度读数以16位符号扩展的二进制补码读数形式提供。
MSBDS18B20输出数据与温度的对应关系见表3-2。表3-2输出数据与温度的对应关系温度温度数据输出(2进制)温度数据输出(16进制)125°C000001111101000007D0H85°C00000101010100000550H25.0625C00000001100100010191H10.125C000000001010001000A2H0.5C00000000000010000008H0C00000000000000000000H—0.5C1111111111111000FFF8H—10.125C1111111101011110FF5EH—25.062C1111111001101111FF6FH—55C1111110010010000FC90H3.2.7ROM操作命令一旦总线主机检测到从属器件的存在,它便可以发出器件ROM操作命令之一。所有ROM操作命令均为8位长,如表3—3所示。3.2.8存储器操作命令对DS18B20内部的可擦写数据存储器的操作也有自己的命令,具体功能如表3—4所示。3.2.9工作原理及时序由于DS18B20是单总线的数字温度传感器,所有的数据读出与写入都经过DQ这根总线,要求操作严格按时序进行才不会导致出错。DS18B20主要有以下三个操作:初始化,序列号访问命令和内存访问命令
表3-3ROM操作命令指令说明读ROM(33H)在总线上仅有一个DS18B20时,允许总线主机读出其序列号匹配ROM(55H)后继以64位的ROM数据序列,允许总线主机对单点及多点总线上特定的DS18B20寻址,只有与64位ROM序列严格相符的DS18B20才能对后继的存储器操作命令做出响应。所有与64位ROM序列号不符的从片将等待复位脉冲。跳过ROM(CCH)在单点总线系统中,允许主机不提供64位ROM编码而访问寄存器搜索ROM(F0H)允许总线主机使用一种“消去”处理来识别总线上所有从片的64位ROM编码报警搜索(ECH)仅温度越限的器件对此命令做出响应表3-4存储器操作命令指令说明约定代码发出约定代码后单总线的操作温度变换启动温度变换44h等待750ms读暂存存储器从暂存存储器读子节BEh读9字节数据写暂存存储器写字节至暂存存储器地址2到4处(TH和TL温度触发器和配置)4Eh写数据至地址2至4二个字节复制暂存存储器把暂存存储器复制入非易失性存储器(仅地址2—4)43h读复制状态重新调出E2把储存在非易失性存储器内的数值重新调入暂存存储器E3h读温度忙状态读电源发DS18B20电源方式的信号至主机B4h读电源状态
(1)初始化:主机通过信号线,向DS18B20发送480〜960》S的负脉冲,在15〜60》S后,DS18B20发出60〜240》S的应答脉冲,就准备接受主机传送的访问ROM的命令。(2)序列号访问命令:接下来,用户通过信号线,发送一个特定的64位序列号编码,信号线上的DS18B20都进行编码匹配,只有编码一致的DS18B20才被激活,可以接受下面的内存访问命令;(3)内存访问命令:在DS18B20被复位后,主机就对其进行内存访问,读取温度数据,设定温度报警限等。DS18B20工作过程中的协议为:初始化(发复位脉冲)一发ROM功能命令一发存储器操作命令一处理数据。系统对DS18B20的各种操作必须按协议进行,协议由几种单线上信号类别型组成:复位脉冲、存在脉冲、写0、写1、读0和读1。所有这些信号,除了存脉冲外,均由总线主机产生。MASTERTaRESETPULSEDS1SB2Owaits1吕写叶^一^MASTERR.;miinimum—minimumDS1SB20T,LIMEMASTERTaRESETPULSEDS1SB2Owaits1吕写叶^一^MASTERR.;miinimum—minimumDS1SB20T,LIMETYPELEGENDBuemaEterpullinglawDS18B2OpullinglowResistorpullupVPU1-WIREBUSGND图3-6初始化过程“复位和存在脉冲”主机总线向DS18B20发送一个复位脉冲(480》S〜960》S的低电平信号),然后释放总线并进入接受状态,DS18B20在检测到总线的上升沿之后,等待15〜60》S,接着发送存在脉冲(低电平,持续60〜240》S)。2.读/写时间片
通过使用时间片来读出和写入DS18B20的数据,时间片用于处理数据位和指定进行何种操作的命令字。读/写时序图见图3-7。START
£>FSLOTVPU1-WHREBUSGND——S~AR~OFSLOTDG1SB20SamplesMINSTART
£>FSLOTVPU1-WHREBUSGND——S~AR~OFSLOTDG1SB20SamplesMINTVPMAXDS1SB20SamplesMINTYP+1SipsLINETYPELEGENDSus鸟11吨严读/写时寸^序恪申”呃1Riesis-torpullup・写时间片当主机将数据线从高拉到低时,产生写时间片,有写0和写1两种。写时间片开始时,DS18B20在15〜60pS期间进行采样,如果I/O线为高电平,写1就发生;如果线为低电平,便发生写0。在各写周期之间必须有最短为1mS的恢复时间。对于主机产生写1时间片的情况,数据线必须先被拉至逻辑低电平,然后就被释放,使数据线在写时间片开始之后的15mS之内被拉至高电平。对于主机产生写0时间片的情况,;数据线必须被拉至逻辑低电平且至少保持60pS。•读时间片当从DS18B20读数据时,主机产生读时间片。当主机将数据线从逻辑高电平拉至低电平时,产生读时间片。数据线必须保持在低逻辑电平至少1ps.
来自DS18B20的输出数据在读时间片下降沿之后15微秒有效。因此,为了读出从读时间片开始算起15微秒的状态主机必须停止把I/O引脚驱动至低电平。在读时间片结束时,I/O引脚经过外部的上拉电阻回至高电平。每个读周期最短的持续期为60ps,各个读周期之间也必须有1ps以上的高电平恢复期。3.3湿度传感器测量空气湿度的方式很多,其原理是根据某种物质从其周围的空气中吸收水分后引起的物理或化学性质的变化,间接地获得该物质的吸水量及周围空气的湿度。气体物质的湿度有几种表示方法:绝对湿度、相对湿度和露点温度。其中与生产生活直接有关的是相对湿度。常用的检测方法有:毛发湿度计、干湿球湿度计、露点法、氯化锂湿敏元件、碳粒树脂湿敏元件、氧化铁湿敏膜元件、多孔陶瓷湿敏元件和高分子膜湿敏电容。电容式、电阻式和湿涨式湿敏元件分别是根据其高分子材料吸湿后的介电常数、电阻率和体积随之发生变化而进行湿度测量的。本设计选用HS1101湿敏电容与TLC555等构成湿度传感器。3.3.1HS1101特点图3-8HS1101图3-8HS1101外形图•高可靠性与长时间稳定性•适合线性电压与输出回路•不需校准的完全互换性,快速响应时间HS1101为侧面接触封装产品,适用于线性电压输出和频率输出两种电路,可应用于湿度变送器、湿度仪表、湿度控制器及其它需要湿度,适宜于制造流水线上的自动插件和自动装配过程等。右图3-8为HS1101的外形图,HS1101的特性参数见表3-5。
表3-5HS1101的特性参数特性参数典型值单位湿度测量范围1〜99%RH供电电压5V标称电容@55%RH180Pf温度系数0.04Pf/°C33-75%的平均灵敏度0.34Pf/%RH漏电流1Na150小时结露后恢复时间10S湿度迟滞±1.5%长时间稳定性0.5%RH/yr响应时间5S偏离曲线±2%RH工作温度-40〜100C储存温度一40〜125C图3-9为湿敏电容工作的温、湿度范围,图3-10为湿度-电容响应曲线。-40-20-40-20020406060100<囱蕃霍图3-9湿敏电容工作的温、湿度范围图3-10湿度—电容响应曲线相对湿度在0%〜100%RH范围内;电容量由162PF变到200PF,其误差不大于±2%RH;响应时间小于5S;温度系数为0.04PF/°C,可见精度是较高的。3.3.2湿度测量电路HS1100/HS1101电容传感器,在电路构成中等效于一个电容器件,其电容量随着所测空气湿度的增大而增大。如何将电容的变化量准确地转变为计算机易于接受的信号,常用两种方法:一是将该湿敏电容置于运放与阻容组成的桥式振荡电路中,所产生的正弦波电压信号经整流、直流放大、再A/D转换为数字信号;另一种是将该湿敏电容置于555振荡电路中,将电容值的变化转为与之呈反比的电压频率信号,可直接被计算机所采集。我采用第二种方法。频率输出的555测量振荡电路如图3-11所示。集成定时器555芯片外接电阻R4、R2与湿敏电容C(这里的HS11XX指HS1101),构成了对C的充电回路。7端通过芯片内部的晶体管对地短路又构成了对C的放电回路,并将引脚2、6端相连引入到片内比较器,便成为一个典型的多谐振荡器,即方波发生器。另外,R3是防止输出短路的保护电阻,R1用于平衡温度系数。由于Fout端的电压在0〜5V之间,因此可以直接将与89C51的T1口连接。T1口作为计数器,它计得的数值是与环境相对湿度成反比的16进制的频率(相对湿度与频率的对应关系见表3-6)。
Sg如2HSllxxTLCS554S.9kQ7Sg如2HSllxxTLCS554S.9kQ7¥T岳[]科T局——隘y576kR图3-11555测量振荡电路该振荡电路两个暂稳态的交替过程如下:首先电源Vs通过R4、R2向HS1101充电,经充电时间后,Uc达到芯片内比较器的高触发电平,约0.67VS,此时输出引脚3端由高电平突降为低电平,然后通过R2放电,经t放电时间后,Uc下降到比较器的低触发电平,约0.33VS,此时输出引脚3端又由低电平跃升为高电平。如此翻来覆去,形成方波输出。其中,充放电时间为:t充电=C(R4+R2)ln2t放电=CR2ln2因而,输出的方波频率为:f=1/(t充电+t放电)二1/[C(R4+2R2)ln2]]可见,空气湿度通过555测量振荡电路就转变为与之呈反比的频率信号表3-6给出了其中的一组典型测试值。表3-6输出频率与相对湿度的对应关系湿度频率湿度频率(%RH)(HZ)(%RH)(HZ)0735160660010722470642820710080633030697690618640685310060335067283.3.3湿度传感器的标定湿度传感器的感湿特征量与环境气相湿度之间并不存在固有的定量关系,感湿特征量的测量值也不可能直接表征环境气相湿度的确切数值。因此,湿度传感器必须经过定量标定,方可使用。目前,相对湿度的标定有干湿球法、饱和盐溶液法、双压法、双温法等,我采用静态标定的饱和盐溶液法。此方法可提供工作标准湿度,在o°c以上对湿度传感器进行定量标定。为此,可把封闭容器中饱和盐溶液的平衡蒸汽压作为标准湿度,该湿度的高低,是由饱和盐溶液的种类和平衡温度所决定的,见表3-7。这种方法在量程为100%RH时,空气湿度传感器的示值误差小于±5%,分辩率为0.1%。但有几点需要注意:(1)水和盐的纯度要在分析纯以上,水必须用去离子水或蒸馏水。(2)盛饱和溶液的容器必须透明而且不漏气,使饱和蒸汽不与外部交换。(3)容器能加热和搅拌,有利于很快制成饱和溶液的蒸汽环境。表3-7通常使用的5种饱和盐溶液平衡相对湿度温度HFP/%cLiCLMgCL2Mg(N03)NaCLK2S04151233.3±0.355.6±0.375.6±0.297.9±0.7201233.1±0.254.4±0.375.5±0.297.6±0.62511.3±0.332.8±0.252.9±0.375.3±0.297.3±0.53011.3±0.332.4±0.251.4±0.375.1±0.297.0±0.43511.3±0.332.1±0.249.9±0.374.9±0.296.7±0.44软件设计及编程主程序由温度采集子程序、湿度采集子程序、键盘输入和显示子程序和报警子程序组成。本章将列出主程序清单,并详细说明温度、湿度采集子程序。1子程序设计在主程序之前,先要编写程序将DS18B20的序列号读出来并保存到X25045中去。这样可以避免每次系统接上电源都得重新读一次DS18B20的序列号,需要时只要将存在于X25045中的序列号调出就可以了。下面将简要说明各子程序:读DS18B20序列号并保存子程序此子程序将系统使用的唯一一个DS18B20的序列号读出,先存入89C51的内部储器30H~38H中,然后再将其保存到X25045的1FFH~207H,避免掉电丢失。以后对此DS18B20操作,再把它的序列号从X25045的E^ROM中读出。温度采集子程序此子程序完成对外界温度的数据采集,并把采集到的16进制数转化成10进制,保存在89C51的67H里,等待报警子程序将它进行处理。89C51先发出复位脉冲,在接收到DS18B20的存在脉冲之后,再发出跳过命令,温度转换命令。等待1m后发序列号匹配指令、温度传感器序列号,然后接收16进制的温度值存放在。湿度采集子程序此子程序完成对外界相对湿度对应频率的数据采集,并把采集到的16进制数转化成10进制,保存在89C51的5CH和5DH里(4位10进制数),等待报警子程序将它进行处理。1212这里用到了89C51的TO和T1,TO作定时器,T1作计数器计频率。这里TO用方式1工作,由于采用11.0592MHZ的晶振,定时时间t=50ms,定时常数TC=2L-foscxt=65536-11059.250=194561212TC转换成16进制TCB=4C00H,即TCH=4CH,TCL=OOH。在定时器TO经过20次中断后(共定时IS),T1停止计数,此时计数器T1计的数就是外界相对湿度对应的频率(16进制数)。4.相对湿度转化为对应频率的子程序由于报警子程序要将用户设定的上限与传感器采集到的数据进行比较,而湿度传感器采集到的不是直接的相对湿度,而是与之成反比的频率数据,就有必要把相对湿度转化成频率,或是把频率转化成相对湿度。从表3-6中可以得出,相对湿度与频率是成分段线性反比,设相对湿度数据为X,频率为YHz,K是系数,则它们的代数关系式是:Y=7351—kX根据表,可算出相对湿度在以下范围时,k值约为:0%〜10%:12.710%〜50%:12.450%〜60%:12.860%〜70%:13.270%〜80%:13.880%〜90%:14.490%〜100%:15.3此程序先判断用户设定的相对湿度是在哪一个线性范围,然后再根据上面给出的代数式进行计算,得出频率值。4.2程序流程图主程序流程图主程序流程图如图4—1所示。中国矿业大学(北京校区)毕业论文中国矿业大学(北京校区)毕业论文图4图4-1主程序流程图2I开始丿初始化调用温度采集子程序调用湿度采集子程序显示采集的温湿度数据调用报警子程序YES其它五个键的处理子程序保存报警值到E2ROM中国矿业大学(北京校区)毕业论文中国矿业大学(北京校区)毕业论文222.温度采集子程序温度采集子程序如图4-2所示。3.湿度采集子程序湿度采集子程序如图4-3所示。开始NO返回在62.5ms内TO产生中断吗?共产生了20次中断吗?YESNOYES将其转化成10进制放入5CH和5DH关中断将T1计的数放入50H和51H重设定时时间常数初始化设置定时常数图4-3湿度采集子程序4.读、存DS18B20序列号子程序读、存DS18B20序列号子程序如图4-4所示。图4-4读、存DS18B20序列号子程序相对湿度转化为对应频率的子程序相对湿度转化为对应频率的子程序如图4-5所示。
图4-5相对湿度转化为对应频率的子程序
4.3程序清单主程序;******************************************************************;端口设置和参数设置;******************************************************************ORGAJMPORGAJMP0000HMAINCSBITP0.4;HD7279初始化DATBITP0.6CLKBITP0.5KEYBITP0.7DQBITP1.0;DS18B20初始化CS25BITP1.4;X25045初始化SO25BITP1.7SI25BITP1.5SCK25BITP1.6DSFBITF0TEMLEQU65HTEMHEQU66HROMIDEQU35H;35H里存放DS的ID地址SKIPDSEQU0CCHSTARTDSEQU44HREADDSEQU0BEHBIT_COUNTEQU70HS_CREQU73H;S-CR存储闪烁位KEY_NUMBEREQU74H;KEY_NUMBER存储输入的数字DATA_OUTEQU20HDATA_INEQU21HRUNEQU22H;RUN=1指按下运行键WRENEQU00000110B;设置X25045写使能锁存器WRDIEQU00000100B;复位X25045写使能锁存器RDSREQU00000101B;读X25045状态寄存器WRSREQU00000001B;写X25045状态寄存器READEQU00000011B;读X250450的000H~0FFHWRITEEQU00000010B;写到X25045的000H~0FFH
ORG000BHLJMPTT0ORG0010H;******************************************************************;主程序;******************************************************************MAIN:MOVSP,#30HCLRRUN.0MOV60H,#00HMOV61H,#00HMOV62H,#00HMOV63H,#00HMOVP0,#10011111BMOVS_CR,#00HMOVR1,#50MAIN_DELAY:MOVR2,#200MAIN_DELAY1:DJNZR2,MAIN_DELAY1DJNZR1,MAIN_DELAYMOVKEY_NUMBER,#00HMOVDATA_OUT,#10100100BLCALLSENDSETBCSCOLLECT:LCALLID_READ;从X25045取DS的ROM码到80H〜87HLCALLTEMPERLCALLHUMIDITYJBKEY,COLLECTMOVDATA_OUT,#00010101BLCALLSENDLCALLRECEIVESETBCSMOVA,DATA_INCJNEA,#0,COLLECT;不是设定键9就继续采集温度和湿度LCALLKEY_ON0;调设定键子程序SETBCSLCALLKEY_ON5;调其它五个键的处理程序
LCALLREMOVE;将62H,63H里设置的相对湿度放入58H,;将60H,61H里设置的温度放入59HLCALLX25045;将温湿度上限存入X25045LCALLHUMTOFRELCALLWARNING;调用报警子程序LJMPCOLLECT;******************************************************************;温度采集子程序;******************************************************************TEMPER:SETBLCALLJBAJMPDQINITDSDSF,TSS1TEMPERTSS1:LCALLDELAY64MOVA,#SKIPDSLCALLWRITEDSMOVA,#STARTDS;发送温度转换命令LCALLWRITEDSLCALLDELAY1LCALLINITDSJBDSF,TSS2JNBDSF,TSS1TSS2:LCALLDELAY64MOVA,#55H;发送匹配命令LCALLWRITEDSMOVROMID,#80H;发送DS18B20的ROM码地址LCALLT_ID;调用传送ROM码子程序MOVA,#READDS;接受DS采集的温度LCALLWRITEDSLCALLREADBYTEMOVTEML,ALCALLREADBYTEMOVTEMH,ALCALLDIVE16;采集的温度的16进制放在65H里MOVR0,#65HMOVR1,#67HMOVR7,#01HLCALLT16TO10;把65H里的16进制转化为10进制
RET;放在67H;******************************************************************;温度采集初始化子程序;******************************************************************INITDS:CLRDQMOVR0,#0FFHL1:DJNZR0,L1;延时512》SSETBDQMOVR0,#19H;延时50》SL2:DJNZR0,L2;其间DS1820发出存在脉冲MOVR0,#02HINIT0:JNBDQ,INIT1;DQ=0则DS1820存在,转到INTIE1DJNZR0,INIT0;再等待8》SCLRDSF;DQH0则DS1820不存在,清标志位JMPINIT2INIT1:SETBDSF;置标志位MOVR0,#0D1HDJNZR0,$;延时420》SINIT2:SETBDQRET;******************************************************************;写DS1820子程序:各写0或1周期之间必须有最短为1pS的恢复时间;******************************************************************WRITEDS:SETBMOVCLRDQR2,#08HCWR1:CLRDQMOVR3,#06H;延时16》S,L3:DJNZR3,L3;若写1,则DQ会在15》S内RRCA;被拉为高电平MOVDQ,CMOVR0,#23H;延时70》S(60〜120》S)L4:DJNZR0,L4;若写0,则DQ=0至少要60》SSETBDQNOPDJNZR2,WR1SETBDQRET
;*****************************************************************;读DS1820子程序;******************************************************************READBYTE:MOVR0,#8READ1:LCALLREADBITRRCASETBDQDJNZR0,READ1RET;******************************************************************;读DS18B20位子程序;******************************************************************READBIT:CLRCSETBDQNOPNOPCLRDQNOPNOPNOPSETBDQMOVR1,#8RD5:DJNZR1,RD5;延时16》SMOVC,DQ;读一位MOVR1,#20RD6:DJNZR1,RD6;延时40》SRET;******************************************************************;发送DS18B20的ROM码子程序;******************************************************************T-ID:PUSHA;保护A的内容MOVDPTR,ROMID;把ROM码的首地址给DPTRMOVR1,#8;循环8次,8个字节ID0:MOVA,@DPTR;把ROM码的一个字节给ACLRCMOVR2,#8;循环8次,8位ID1:MOVR7,#8CLRDQ;将数据线拉低
ID2:DJNZR7,ID2;延时16》SRRCAMOVDQ,C;传送一位给数据线SETBDQ;将数据线拉高MOVR7,#8ID3:DJNZR7,ID3;延时16》SDJNZR2,ID1;8位移完没?没移完就返回INCDPTR;移完,将下一个ROM码的地址给DPTRDJNZR1,ID0;8个字节移完没?没移完就返回POPA;移完,将A的内容弹回RET;******************************************************************;延时1S子程序;******************************************************************DELAY1:MOVR0,#10DL1:MOVR1,#200DL2:MOVR2,#250DL3:DJNZR2,DL3DJNZR1,DL2DJNZR0,DL1RET;******************************************************************;延时64卩S子程序;******************************************************************DELAY64:MOVR0,#1EHDL64:DJNZR0,DL64RET;******************************************************************;将得到的16进制数除以16,得到温度的16进制,还是放在65H里;******************************************************************DIVE16:MOVR4,#10HMOVR5,#08HDIV1:CLRCMOVA,65HRLCAMOV65H,AMOVA,66HRLCA
MOV66H,AMOVPSW.5,CCLRCSUBBA,R4JBPSW.5,DIV2JCDIV3DIV2:MOV66H,AINC65HDIV3:DJNZR5,DIV1MOVA,#5CLRCSUBBA,66HJNCDIV4INC66HDIV4:CLRPSW.5RET;******************************************************************;采集与相对湿度对应的频率数据:转化成16进制存入5CH,5DH;******************************************************************HUMIDITY:;米集16进制频率数据,先存放到50H和51H里__„___„111r___.//t.\MOVTMOD,#51H;定时器T0工作在方式1,MOVTH0,#4CH;计数器T1也工作在方式1MOVTL0,#00H;定时时间为50msMOVTH1,#00HMOVTL1,#00HMOVIP,#08HMOVR3,#14HSETBP3.5SETBET0SETBET1SETBTR0SETBTR1SETBEAMOVR0,#250;延时62.5msLL0:MOVR1,#250LL1:DJNZR1,LL1DJNZR0,LL0RET
;******************************************************************;定时器TO中断子程序:50ms中断一次,中断20次后T1停止计数;******************************************************************TT0:CLREACLRTR0DJNZR3,LOOPCLRTRMOV50H,TL1MOV51H,TH1LJMPEXIT1LOOP:MOVA,#0B7HADDA,TL0MOVTL0,AMOVA,#3CHADDA,TH0MOVTH0,ASETBTR0SETBRETIEAEXIT1:;将采集的16进制频率转化成10进制,放入5CH,5DHMOVR0,#50HMOVR1,#5CHMOVR7,#02HLCALLT16TO10;******************************************************************;16到10进制数的转化子程序;******************************************************************T16TO10:PUSHPSW;保存设置PUSHACCPUSHBMOVA,R0MOVR5,AMOVA,R1MOVR6,AMOVA,R7INCAMOVR3,ACLRA
TT1:MOV@R1,AINCR1DJNZR3,TT1MOVA,R7MOVB,#08HMULABMOVR3,ATT2:MOVA,R5MOVR0,AMOVA,R7MOVR2,ATT3:MOVA,@R0RLCAMOV@R0,AINCR0DJNZR2,TT3MOVA,R6MOVR1,AMOVA,R7MOVR2,AINCR2TT4:MOVA,@R1ADDCA,@R1DAAMOV@R1,AINCR1DJNZR2,TT4DJNZR3,TT2POPBPOPACCPOPPSWRET;******************************************************************;将62H,63H里设置的相对湿度放到58H里,将60H,61H里设置的温度放到;59H里;******************************************************************REMOVE:MOVA,63HMOVB,#10
MULABADDA,62HMOV58H,AMOVA,61HMOVB,#10MULABADDA,60HMOV59H,ARET;******************************************************************;此子程序以表3-6为参照,将设定的相对湿度转化成对应的频率;将58H中设置的相对湿度转化为对应的频率,放入56H,57H里;******************************************************************HUMTOFRE:MOVR0,58HMOVA,R0CLRCSUBBA,#10;若设置的数在0〜10之间则转到TEM10JCTEM10MOVA,R0CLRCSUBBA,#50;若设置的数在10〜50之间则转到TEM50JCTEM50MOVA,R0CLRCSUBBA,#60;若设置的数在50-60之间则转到TEM60JCTEM60MOVA,R0CLRCSUBBA,#70;若设置的数在60-70之间则转到TEM70JCTEM70MOVA,R0CLRCSUBBA,#80;若设置的数在70-80之间则转到TEM80JCTEM80MOVA,R0CLRCSUBBA,#90;若设置的数在80〜90之间则转到TEM90JCTEM90
MOVCLRSUBBJCA,R0CA,#10TEM100;右设直的数在90〜100之间;则转到TEM100TEM10:MOVA,R0;设置的相对湿度在0%〜10%时,MOVB,#12;乘以系数12.7ACALLMUL0MOVB,#7MULABMOVR3,AMOVR2,BLJMPDIV10TEM50:MOVA,R0;设置的相对湿度在10%〜50%时MOVB,#12;乘以系数12.4ACALLMUL0MOVB,#4MULABMOVR3,AMOVR2,BLJMPDIV10TEM60:MOVA,R0;设置的相对湿度在10%〜50%时MOVB,#12;乘以系数12.8ACALLMUL0MOVB,#8MULABMOVR3,AMOVR2,BLJMPDIV10TEM70:MOVA,R0;设置的相对湿度在10%〜50%时MOVB,#13;乘以系数13.2ACALLMUL0MOVB,#2MULABMOVR3,A
MOVLJMPR2,BDIV10TEM80:MOVA,R0;设置的相对湿度在10%〜50%时,MOVB,#13;乘以系数13.8ACALLMUL0MOVB,#8MULABMOVR3,AMOVR2,BLJMPDIV10TEM90:MOVA,R0;设置的相对湿度在10%〜50%时,MOVB,#14;乘以系数12.4ACALLMUL0MOVB,#4MULABMOVR3,AMOVR2,BLJMPDIV10TEM100:MOVA,R0;设置的相对湿度在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美容行业中的团队合作与协调技巧试题及答案
- 防学校欺凌课件
- 食品检验实验室的设备与试题及答案
- 公共事业管理考点分析试题及答案
- 2024-2025学年河南省驻马店新蔡一高高一下学期2月月考物理试题及答案
- 计算机基础考试技巧与实例试题及答案
- 大学古代文学史的评估试题及答案
- 拼写误差影响的分析试题及答案
- 2024年CPBA商业分析师模拟考试题目及答案
- 2024年汽车美容师市场需求分析试题及答案
- 《光伏发电工程预可行性研究报告编制规程》(NB/T32044-2018)中文版
- 老人夏季腹泻预防和治疗
- 安全警示教育护理课件
- 类风湿关节炎病情活动度评价表(DAS28)
- A4纸笔记本横格线条打印模板
- 【施工组织设计】内容完整性和编制水平
- 2023公路桥梁钢结构防腐涂装技术条件
- (13)-2.7科学把握理想与现实的辩证统一
- Unit5Poems单元分析讲义高中英语人教版选择性
- 青岛版六年级数学上册 (完美的图形)教学课件(第1课时)
- 2022新能源光伏发电工程竣工决算报告模板
评论
0/150
提交评论