




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机的数字温度计设计摘要随着时代的进步和开展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比拟成熟的技术,本文主要介绍了一个基于AT89S52单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各局部的电路也一一进行了介绍,该系统可以方便的实现实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与AT89S52结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。关键词DS18B20/AT89S52/温度测量TheDesignOfDigitalTemperatureMeasurementBasedOnTheSinglechipABSTRACTAbstract:Alongwiththeprogressanddevelopmentoftheages,singleslicethemachinetechniquehasalreadymakewidelyavailablethelifeistous,work,research,eachrealm,havealreadybecomethetechniqueofakindofcomparisonmaturity.ThispapermainlydescribesatemperaturemeasurementsystembasedonAT89S52singlechip,detailedlydescribingthedevelopmentprocessusedigitaltemperaturesensor,thepaperintroducesthehardwareconnectivityandsoftwareprogrammingoftheDS18B20basedonthesingle-chip,andgivethesoftwareflowchartofeachmodule,aswellasintroducedeachcircuitofthesystem.Systemcaneasilytocollectanddisplaythetemperature,itcanalsoarbitrarysetalarmtemperatureaccordingtotheactualneed,Itisusedconvenience,ithashighprecision,widerange,highsensitivity,smallsize,andlowpowerdissipation,Thedeviceisespeciallyappliedtomeasuretemperatureinpeople'sdailylivesindustrialandagriculturalproduction,andalsoeasilyasatemperatureprocessingmoduleembedintheothersystem,turnintoasacomplementaryexpansion.KEYWORD:at89s52,ds18b20,temperaturemeasurement。目录中文摘要 I英文摘要 II1引言 12方案设计 22.1设计内容及性能指标 22.2系统方案确定 23系统器件选择 33.1单片机的选择 33.289S52引脚功能介绍 43.3温度传感器的选择 53.4DS18B20简单介绍 63.4.1DS18B20的性能特点如下: 63.4.2DS18B20使用中的考前须知: 73.5DS18B20内部结构 83.6DS18B20测温原理 113.7DS1820高精度测温的理论依据 133.8测量数据比拟 144 硬件电路设计 164.1主控制器 184.2显示电路设计 184.3复位电路设计 194.4时钟电路 194.5温度检测电路设计 205.软件设计 235.1概述 235.2主程序模块 235.3各模块流程设计 24各模块流程设计下面对主要子程序的流程图做介绍 245.4中断设定流程 26自我评价 28致谢 29参考文献 30〔附录〕 311引言随着科技的不断开展,现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数就需要受制于现代信息根底的开展水平。在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。测量温度的关键是温度传感器,温度传感器的开展经历了三个开展阶段:1.传统的分立式温度传感器。2.模拟集成温度传感器。3.智能集成温度传感器。目前的智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的,它是微电子技术、计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。社会的开展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的根底上从模拟式向数字式,从集成化向智能化、网络化的方向飞速开展,并朝着高精度、多功能、总线标准化、高可靠性及平安性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速开展,本文将介绍智能集成温度传感器DS18B20的结构特征及控制方法,并对以此传感器,89S51单片机为控制器构成的数字温度测量装置的工作原理及程序设计作了详细的介绍。与传统的温度计相比,其具有读数方便,测温范围广,测温准确,输出温度采用数字显示,主要用于对测温要求比拟准确的场所,或科研实验室使用。该设计控制器使用ATMEL公司的AT89S52单片机,测温传感器使用DALLAS公司生产的DS18B20,用八段数码来实现温度显示。2方案设计2.1设计内容及性能指标本设计主要是介绍了单片机控制下的温度检测系统,详细介绍了其硬件和软件设计,并对其各功能模块做了详细介绍,其主要功能和指标如下:●利用温度传感器〔DS18B20〕测量某一点环境温度;●测量范围为-55℃~+99℃,精度为±0.5℃;●用液晶进行实际温度值显示;●能够根据需要方便设定上下限报警温度。2.2系统方案确定该系统主要由温度测量和数据采集两局部电路组成,实现的方法有很多种,下面将列出一种在日常生活中和工农业生产中经常用到的实现方案。方案采用数字温度芯片DS18B20测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0—100摄氏度时,最大线形偏差小于1摄氏度。DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89S52构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比拟简单,体积也不大。采用51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC机通信上传数据,另外AT89S52在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。该系统利用AT89S52芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。该系统扩展性非常强,它可以在设计中参加时钟芯片DS1302以获取时间数据,在数据处理同时显示时间,并可以利用AT24C16芯片作为存储器件,以此来对某些时间点的温度数据进行存储,利用键盘来进行调时和温度查询,获得的数据可以通过MAX232芯片与计算机的RS232接口进行串口通信,方便的采集和整理时间温度数据。系统框图如图2-2所示单单片机按键电路输入时钟复位电路电源电路驱动电路显示电路测温电路图2-2DS18B20温度测温系统框图3系统器件选择3.1单片机的选择对于单片机的选择,可以考虑使用8031与8051系列,由于8031没有内部RAM,系统又需要大量内存存储数据,因而不适用。AT89S52是美国高性能CMOS8位单片机,片内含4kbytes的ATMEL公司生产的低功耗,可编程的Flash只读程序存储器,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程〔ISP〕,也可用传统方法进行编程,所以低价位AT89S52单片机可为提供许多高性价比的应用场合,可灵活应用于各种控制领域,对于简单的测温系统已经足够。单片机AT89S52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。主要特性如下●与MCS-51兼容●4K字节可编程闪烁存储器;●寿命:1000写/擦循环7;●数据保存时间:10年;●全静态工作:0Hz-24Hz;●三级程序存储器锁定;●128*8位内部RAM;●32可编程I/O线;●两个16位定时器/计数器;●5个中断源;3-1AT89S52单片机引脚图●可编程串行通道;●低功耗的闲置和掉电模式;●片内振荡器和时钟电路图.3.289S52引脚功能介绍AT89S52单片机为40引脚双列直插式封装,其引脚排列和逻辑符号如图3-1所示。各引脚功能简单介绍如下:●VCC:供电电压●GND:接地●P0口:P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。当P1口的管脚写“1〞时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部电位必须被拉高。●P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入“1〞后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口8作为第八位地址接收。●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),也是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口:P3.0RXD(串行输入口);P3.1TXD(串行输出口);P3.2INT0(外部中断0);P3.3INT1(外部中断1);P3.4T0(记时器0外部输入);P3.5T1(记时器1外部输入);P3.6WR(外部数据存储器写选通);P3.7RD(外部数据存储器读选通)。同时P3口同时为闪烁编程和编程校验接收一些控制信号。●RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。●ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。●PSEN:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期PSEN两次有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。●EA/VPP:当EA保持低电平时,访问外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,访问内部ROM。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。●XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。●XTAL2:来自反向振荡器的输出。3.3温度传感器的选择由于传统的热敏电阻等测温元件测出的一般都是电压,再转换成对应的温度,需要比拟多的外部元件支持,且硬件电路复杂,制作本钱相对较高。这里采用DALLAS公司的数字温度传感器DS18B20作为测温元件。3.4DS18B20简单介绍DALLAS最新单线数字温度传感器DS18B20是一种新型的“一线器件〞,其体积更小、更适用于多种场合、且适用电压更宽、更经济。DALLAS半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线〞接口的温度传感器。温度测量范围为-55~+125摄氏度,可编程为9位~12位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。3.4.1DS18B20的性能特点如下:●独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;●DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温;●DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;●适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电;●温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃;●零待机功耗;●可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温;●在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快;●用户可定义报警设置;●报警搜索命令识别并标志超过程序限定温度〔温度报警条件〕的器件;●测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力;●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作11以上特点使DS18B20非常适用与多点、远距离温度检测系统。DS18B20内部结构主要由四局部组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置存放器。DS18B20的管脚排列、各种封装形式如图3-2所示,DQ为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。图3-2外部封装形式图图3-3所示图为引脚图3.4.2DS18B20使用中的考前须知:DS18B20虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:●DS18B20从测温结束到将温度值转换成数字量需要一定的转换时间,这是必须保证的,不然会出现转换错误的现象,使温度输出总是显示85。●在实际使用中发现,应使电源电压保持在5V左右,假设电源电压过低,会使所测得的温度精度降低。●较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否那么将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作局部最好采用汇编语言实现。●在DS18B20的有关资料中均未提及单总线上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此,就需要解决微处理器的总线驱当单总线上所挂DS18B20超过8个时,动问题,这一点在进行多点测温系统设计时要加以注意。●在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环,这一点在进行DS18B20硬件连接和软件设计时也要给予一定的重视。3.5DS18B20内部结构DS1820的内部框图,它主要包括寄生电源、温度传感器、64位激光ROM单线接口、存放中间数据的高速暂存器〔内含便笺式RAM〕,用于存储用户设定的温度上下限值的TH和TL触发器存储与控制逻辑、8位循环冗余校验码〔CRC〕发生器等七局部。DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图3-5所示6464位ROM单片机存储器和控制逻辑高速缓存温度传感器高温触发TH低温触发TL配置存放器8位CRC发生器图3-5DS18B20内部结构框图8bit检验CRC48bit序列号8bit检验CRC48bit序列号8bit工厂代码〔10H〕MSBLSBMSBLSBMSBLSB开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。主机操作ROM的命令有五种,如表3-5所列:指令说明读ROM(33H)读DS18B20的序列号匹配ROM〔55H〕继续读完64位序列号的一个命令用于跳过ROM〔CCH〕此命令执行后的存储器操作将针对搜ROM〔F0H〕识别总线各器件的编码,为操作各报警搜索〔ECH〕仅温度越限的器件对此命令作出响应表3-5主机操作图DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图3-5-1所示。图3-5-1高速暂存RAM结构图前2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置存放器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时存放器中的分辨率转换为相应精度的温度数值。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,152字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.0625℃/LSB形式表示。温度值格式如下:这是12位转化后得到的12位数据存储在18B20的两个8比特的RAM中二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。S表示位。对应的温度计算:当符号位S=0时,表示测得的温度植为正值,直接将二进制位转换为十进制;当S=1时,表示测得的温度植为负值,先将补码变换为原码,再计算十进制值。例如+125℃的数字输出07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。DS18B20温度传感器主要用于对温度进行测量,数据可用16位符号扩展的二进制补码读数形式提供,并以0.0625℃/LSB形式表示。表3-5-2是局部温度值对应的二进制温度表示数据。表3-5-2局部温度值DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比拟,假设T>TH或T<TL,那么将该器件内的告警标志置位,并对主机16发出的告警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行告警搜索。在64位ROM的最高有效字节中存储有循环冗余校验码〔CRC〕。主机根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC值做比拟,以判断主机收到的ROM数据是否正确。3.6DS18B20测温原理DS18B20的测温原理如图3-6所示,图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数2的脉冲输入,图中还隐含着计数门,当计数门翻开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度存放器中,减法计数器1和温度存放器被预置在-55℃所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度存放器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度存放器值的累加,此时温度存放器中的数值即为所测温中的斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度存放器值到达被测温度值,这就是DS18B20的测温原理另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进〔发复位脉冲〕→发ROM功能命令行。操作协议为:初始化DS18B20→发存储器操作命令→处理数据。斜率累加器斜率累加器预置低温系数振荡器高温系数振荡器Tn计数器1计数器2比拟预置温度存放器=0=0图3-6DS18B20测温原理图在正常测温情况下,DS1820的测温分辨力为0.5℃,可采用下述方法获得高分辨率的温度测量结果:首先用DS1820提供的读暂存器指令〔BEH〕读出以0.5℃为分辨率的温度测量结果,然后切去测量结果中的最低有效位〔LSB〕,得到所测实际温度的整数局部Tz,然后再用BEH指令取计数器1的计数剩余值Cs和每度计数值CD。考虑到DS1820测量温度的整数局部以0.25℃、0.75℃为进位界限的关系,实际温度Ts可用下式计算:Ts=〔Tz-0.25℃〕+(CD-Cs)/CD3.7DS1820高精度测温的理论依据DS1820正常使用时的测温分辨率为0.5℃,这对于水轮发电机组轴瓦温度监测来讲略显缺乏,在对DS1820测温原理详细分析的根底上,我们采取直接读取DS1820内部暂存存放器的方法,将DS1820的测温分辨率提高到0.1℃~0.01℃.DS1820内部暂存存放器的分布如表3-7所示,其中第7字节存放的是当温度存放器停止增值时计数器1的计数剩余值,第8字节存放的是每度所对18应的计数值。这样,我们就可以通过下面的方法获得高分辨率的温度测量结果。首先DS1820提供的读暂存存放器指令(BEH)读出以0.5℃为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度整数局部T整数,然后再用BEH指令读取计数器1的计数剩余值M剩余和每度计数值M每度,考虑到DS1820测量温度的整数局部以0.25℃、0.75℃为进位界限的关系,实际温度T实际可用下式计算得到:T实际=(T整数-0.25℃)+(M每度-M剩余)/M每度。表3-7DS18B20暂存存放器分布存放器内容字节地址温度最低数字0温度最高数字1高温限值2低温限值3保存4保存5计数剩余值6每度计数值7CRC校验8该字节各位的定义如下:低5位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动,R1和R0决定温度转换的精度位数,即是来设置分辨率,如表3-7-1所示〔DS18B20出厂时被设置为12位〕。R1R0分辨率温度转换时/mm009位93.750110位187.751011位275.001112位750.00表3-7-1由表3-7-1可见,设定的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要在分辨率和转换时间权衡考虑。高速暂存存储器除了配置存放器外,还有其他8个字节组成,其分配如下所示。其中温度信息〔第1,2字节〕H和TL值第3,4字节、第6~8字节未用,表现为全逻辑1;T第9字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。3.8测量数据比拟表3-8为采用直接读取测温结果方法和采用计算方法得到的测温数据比拟,通过比拟可以看出,计算方法在DS1820测温中不仅是可行的,也可以大大的提高DS1820的测温分辨率。表3-8DS18B20直度测温结果与计算测温结果数据比拟次数T温度M剩余M每度T实际121.000728220.850234.000428334.238349.000308449.388452.000668551.964564.000498664.174679.000568779.106782.500168882.568表3-8硬件电路设计温度计电路设计原理图如图4-1所示,控制器使用单片机AT89S52,温度计传感器使用DS18B20,用LED实现温度显示。本温度计大体分三个工作过程。首先,由DS18820温度传感器芯片测量当前的温度,并将结果送入单片机。然后,通过AT89S52单片机芯片对送来的测量温度读数进行计算和转换,井将此结果送入液晶显示模块。最后,八段数码管将送来的值显示于显示屏上。由图4-1可看到,本电路主要由DSl8820温度传感器芯片,AT89S52单片机芯片组成。其中,DSI8B20温度传感器芯片采用“一线制〞与单片机相连,它独立地完成温度测量以及将温度测量结果送到单片机的工作。图4-1温度计电路设计原理图4.1主控制器主控制器单片机AT89S52具有低电压供电和小体积等特点,两个端口刚好满足电路系统的设计需要,很适宜携手特式产品的使用。主机控制DS18B20完成温度转换必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。必须先启动DS18B20开始转换,再读出温度转换值。4.2显示电路设计在单片机应用系统中,为了控制系统的工作状态,以及向系统中输入数据和数字信息,系统应设有按键或键盘。为了观察和监视键盘输入的信息,为了了解系统的工作情况以及得到系统完成任务的结果,系统应设有显示装置。单片机最常用的显示装置是LED显示器〔图4-2〕。在显示方面,我们选用了动态显示。静态显示虽然亮度较高,接口编程容易,但是每位的段码线分别与一个8位的锁存器输出相连。但是占用的I/O口线比拟多,因此在显示位数较多的时候,一般都采用动态显示方式。为了简化硬件,通常将所有位的段码线相应段并联在一起,由一个8位I/O口控制,在同一时刻,只让一位选通,如此循环,就可以使各位显示出将要显示的字符。LED数码有共阴和共阳两种,把这些LED发光二极管的正极接到一块作为一个引脚,就叫共阳的,阴极接到一块就叫共阴的,那么应用时这个脚就分别的接VCC和GND。再把多个这样的8字装在一起就成了多位的数码管了。在本设计仿真中使用的是6个一组的共阴极8段数码管。找公共共阴和公共共阳的方法:首先我们找个3到5伏的电源和1个电阻,VCC串接电阻后和GND接在任意2个脚上,组合有很多,找到一个LED会发光的,然后用GND不动,VCC逐个碰剩下的脚,如果有多个LED,那它就是共阴了。共阴极数码管,阴极接地,当某个发光二极管的阳极为高电平时,发光二极管点亮,对应的段就显示图4-2显示电路4.3复位电路设计进行复位工作是单片机进入工作的状态的初始化操作,是CPU和系统中的其它部件都处于一个确定初始状态,并从这个状态开始工作。另外当程序运行错误或由于错误操作而是单片机进入锁死状态的时侯。也可以通过复位操作进行的从新启动的操作。等到复位以后,单片机的计算机初始值被初始化。图4-3复位电路4.4时钟电路对于每个系统工程的时钟电路,都是用于单片机工作所需要的时钟信号,单片机只有在时钟信号的控制下,其各部件之间才能协调一致工作,时钟信号控制着计算机的工作节奏。在单片机的TXAL1、TXAL12、之间跨接晶体振荡器和微调电容,可以喝单片机内部的振荡器构成一个稳定的自激振荡器,这就是单片机的时钟电路。这种方式称之为内部的时钟源方式。电容C4和C5的主要作用是帮助振荡器起振,且振荡器大小对振荡频率有微调作用,在80C51系列中电容的大小20微法。另外,振荡器的频率只要由石英晶振的频率来决定本次设计选用12MHz。图4-4时钟电路4.5温度检测电路设计DS18B20最大的特点是单总线数据传输方式,DS18B20的数据I/O均由同一条线来完成。DS18B20的电源供电方式有2种:外部供电方式和寄生电源方式。工作于寄生电源方式时,VDD和GND均接地,他在需要远程温度探测和空间受限的场合特别有用,原理是当1Wire总线的信号线DQ为高电平时,窃取信号能量给DS18B20供电,同时一局部能量给内部电容充22电,当DQ为低电平时释放能量为DS18B20供电。但寄生电源方式需要强上拉电路,软件控制变得复杂(特别是在完成温度转换和拷贝数据〔E2PROM时),同时芯片的性能也有所降低。因此,在条件允许的场合,尽量采用外供电方式。无论是内部寄生电源还是外部供电,I/O口线要接5KΩ左右的上拉电。在这里采用前者方式供电。DS18B20与芯片连接电路如图4-5-1所示:单单片机AT89S52DS18B20R图4-5-1DS18B20与单片机的连接外部电源供电方式是DS18B20最正确的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比拟简单,可以开发出稳定可靠的多点温度监控系统。站长推荐大家在开发中使用外部电源供电方式,毕竟比寄生电源方式只多接一根VCC引线。在外接电源方式下,可以充分发挥DS18B20宽电源电压范围的优点,即使电源电压VCC降到3V时,依然能够保证温度量精度。由于DS18B20只有一根数据线,因此它和主机〔单片机〕通信是需要串行通信,而AT89S52有两个串行端口,所以可以不用软件来模拟实现。经过单线接口访问DC18B20必须遵循如下协议:初始化、ROM操作命令、存储器操作命令和控制操作。要使传感器工作,一切处理均严格按照时序。主机发送〔Tx〕--复位脉冲〔最短为480μs的低电平信号〕。接着主机便释放此线并进入接收方式〔Rx〕。总线经过4.7K的上拉电阻被拉至高电平状态。在检测到I/O引脚上的上升沿之后,DS18B20等待15~60μs,并且接23着发送脉冲〔60~240μs的低电平信号〕然后以存在复位脉冲表示DS18B20。已经准备好发送或接收,然后给出正确的ROM命令和存储操作命令的数据。DS18B20通过使用时间片来读出和写入数据,时间片用于处理数据位和进行何种指定操作的命令。它有写时间片和读时间片两种:●写时间片:当主机把数据线从逻辑高电平拉至逻辑低电平时,产生写时间片。有两种类型的写时间片:写1时间片和写0时间片。所示有时间片必须有60微秒的持续期,在各写周期之间必须有最短为1微秒的恢复时间。●读时间片:从DS18B20读数据时,使用读时间片。当主机把数据线从逻辑高电平拉至逻辑低电平时产生读时间片。数据线在逻辑低电平必须保持至少1微秒;来自DS18B20的输出数据在时间下降沿之后15微秒内有效。为了读出从读时间片开始算起15微秒的状态,I/O引脚经主机必须停止把引脚驱动拉至低电平。在时间片结束时,过外部的上_鱯__9L_€%拉电阻拉回高电平,所有读时间片的最短持续期为60微秒,包括两个读周期间至少1μs的恢复时间。一旦主机检测到DS18B20的存在,它便可以发送一个器件ROM操作命令。所有ROM操作命令均为8位长。所有的串行通讯,读写每一个bit位数据都必须严格遵守器件的时序逻辑来编程,同时还必须遵守总线命令序列,对单总线的DS18B20芯片来说,访问每个器件都要遵守以下命令序列:首先是初始化;其次执行ROM命令;最后就是执行功能命令(ROM命令和功能命令后面以表格形式给出)。如果出现序列混乱,那么单总线器件不会响应主机。当然,搜索ROM命令和报警搜索命令,在执行两者中任何一条命令之后,要返回初始化。基于单总线上的所有传输过程都是以初始化开始的,初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成。应答脉冲使主机知道,总线上有从机,且准备就绪。在主机检测到应答脉冲后,就可以发出ROM命令。这些命令与各个从机设备的唯一64位ROM代码相关。在主机发出ROM命令,以访问某个指定的DS18B20,接着就可以发出DS18B20支持的某个功能命令。这些命令允许主机写入或读出DS18B20便笺式RAM、启动温度转换。软件实现DS18B20的工作严格遵守单总线协议:(1)主机首先发出一个复位脉冲,信号线上的DS18B20器件被复位。(2)接着主机发送ROM命令,程序开始读取单个在线的芯片ROM编码并保存在单片机数据存储器中,把用到的DS18B20的ROM编码离线读出,最后用一个二维数组保存ROM编码,数据保存在X25043中。(3)系统工作时,把读取了编码的DS18B20挂在总线上。发温度转换命令,再总线复位。(4)然后就可以从刚刚的二维数组匹配在线的温度传感器,随后发温度读取命令就可以获得对应的度值了。在主机初始化过程,主机通过拉低单总线至少480us,来产生复位脉冲。接着,主机释放总线,并进入接收模式。当总线被释放后,上拉电阻将单总线拉高。在单总线器件检测到上升沿后,延时15~60us,接着通过拉低总线60~240us,以产生应答脉冲。写时序均起始于主机拉低总线,产生写1时序的方式:主机在拉低总线后,接着必须在15us之内释放总线。产生写0时序的方式:在主机拉低总线后,只需在整个时序期间保持低电平即可(至少60us)。在写字节程序中的写一个bit位的时候,没有按照通常的分别写0时序和写1时序,而是把两者结合起来,当主机拉低总线后在15us之内将要写的位c给DO:如果c是高电平满足15us内释放总线的要求,如果c是低电平,那么DO=c这条语句仍然是把总线拉在低电平,最后都通过延时58us完成一个写时序(写时序0或写时序1)过程。写时间时序:当主机把数据从逻辑高电平拉到逻辑低电平的时候,写时间隙开始。有两种写时间隙,写1时间隙和写0时间隙。所有写时间隙必须最少持续60μs,包括两个写周期至少1μs的恢复时间。I/O线电平变低后,DS18B20在一个15μs到60μs的窗口内对I/O线采样。如果线上事高电平,就是写1,如果是低电平,就是写0。主机要生成一个写时间隙,必须把数据线拉到低电平然后释放,在写时间隙开始后的15μs内允许数据线拉到高电平。主机要生成一个写0时间隙,必须把数据线拉到低电平并保存60μs。5.软件设计5.1概述整个系统的功能是由硬件电路配合软件来实现的,当硬件根本定型后,软件的功能也就根本定下来了。从软件的功能不同可分为两大类:一是监控软件〔主程序〕,它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件〔子程序〕,它是用来完成各种实质性的功能如测量、计算、显示、通讯等。每一个执行软件也就是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。首先要根据系统的总体功能选择一种最适宜的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。5.2主程序模块主程序模块主程序需要调用4个子程序,分别为数码管显示程序,温度测试及处理子程序,报警子程序,中断设定子程序。各模块程序功能如下:●数码管显示程序:向数码的显示送数,控制系统的显示局部。●温度测试及处理程序:对温度芯片送过来的数据进行处理,进行判断和显示。●报警子程序:进行温度上下限判断及报警输出。●中断设定程序:实现设定上下限报警功能。主程序流程见图5-2:图5-3-1DS18B20初始化流程图图5-2主程序流程图5.3各模块流程设计5.3.1各模块流程设计1.温度检测流程DS18B20在单片机控制下分三个阶段:●18B20初始化:初始化流程图见5-3-1●读18B20时序:读DS18B20流程见图5-3-2:●写18B20时序:写18B20流程见图5-3-3;发出DS18B20复位命令发出DS18B20复位命令发跳过ROM命令发出度温度命令读取操作,CRC命令9字节完?CRC效验,正确移入温度暂存器结束图5-3-2读DS18B20流程图DS18B20写开始设置串行位数为8DS18B20写开始设置串行位数为8DQ清零,将DQ总线电平拉低延时15us写入一位数据延时15usDQ置1设置为恢复状态8为数据送完否DS18B20写入结束图5-3-3写DS18B20流程图5.4中断设定流程中断模块采用了外中断和内中断套用方法。当设计需要实现上下限报警时,利用INT0口进行中断,set键进行上下限报警温度设定,进入温度设定状态后〔按一下温度设定键〕,首先会提示显示“UP〞字母,表示要用户设定高温报警温度,按S3键,表示本位数字+1,按S4表示移向下一位,如果4位高温设定完毕,那么显示“DO〞,表示要用户设定低温报警温度。4位低温设定完毕,如果用户设置的高温比设定的低温高的话那么显示“ERRO〞表示错误提示,同时会有蜂鸣器及时报警提示,然后自动显示“UP〞,让用户重新进行温度设定。中断设定子程序流程图见下图关于外部中断开内部中断关于外部中断开内部中断显示UPSBS1跳到下一位四位设定完显示DOS3S4跳到下一位四位设定完设置温度比拟高温?低温?开外部中断关内部中断显示LED图5-4中断设定子程序流程图自我评价本设计利用AT89S52芯片控制温度传感器DS18B20,再辅之以局部外围电路实现对环境温度的测控,性能稳定,精度教高,而且扩展性能很强大。由于DS18B20支持单总线协议,我们可以将多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用较少的微处理器的端口就可以实现多点测温监控系统。可以参加1302时钟芯片实现对时间进行显示,加之AT24C16存储芯片来实现对时间和温度数据的记录,利用MAX232芯片和计算机实现串口通讯,这样就可以方便的统计出特定时间内的需要的时间和温度数据。由于DS18B20的测量精度只有±0.5度,往往很多场合需要更加精确的温度,在所测温度精度不变的根底上必须对数据进行校正。由于DS18B20是基于带隙结构的数字式温度传感器,PN结增量电压正比于IC绝对温度〔PTAT〕,它的测温精度较高,但存在着一定的误差。不过,其误差在时间和外部环境变化的条件下,保持相当高的稳定性。针对这一特性,基于线性插补的数学思想,利用DSP技术,对其进行误差校正补偿.这种误差校正的补偿方法,不需增加硬件电路,计算方法简单,软件费用也很小,既提高了测量精度。又不需增加本钱。它充分利用监控计算机的处理能力,在监控计算机上用线性插补的数学方法对其进行误差校正补偿,能轻易地将其提高其精度。经过将近一周的单片机课程设计,终于完成了我的数字温度计的设计,虽然没有完全到达设计要求,但从心底里说,还是快乐的,从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。致谢在本毕业设计的设计和制作过程中,感谢老师给了我很大的帮助,同时也离不开很多的同学热心帮助,是他们在我遇到难题的时候给了我启发。通过本次毕业设计,我在专业知识、专业技能和解决问题方法方面得到很大的提高。更深入了解并掌握了传感器的根本理论知识,并在单片机实际电路开发和常用编程设计思路掌握方面有了一定程度的掌握,尽管本次设计还不是很完善,但这为我以后的设计之路积累了珍贵的经验。参考文献[1]孙育才.单片微型计算机及其应用.东南大学出版社,2004[2]沈德金.陈粤初.单片机接口电路与应用程序实例.北京.北京航天航空大学出版社,1990.[3]潘新民.王燕芳.微型计算机控制技术.电子工业出版社,2003[4]李朝青.单片机原理及接口技术〔简明修订版〕杭州:北京航空航天大学出版社,1998[5]李广弟.单片机根底〔M〕.北京:北京航空航天大学出版社,1994[6]阎石.数字电子技术根底〔第三版〕.北京:高等教育出版社,1989[7]廖常初.现场总线概述〔J〕.电工技术,1999.[8]王勇.叶敦范.基于AT89S51的便携式实时温度检测仪,2006附录附录一:程序#include"reg51.h"#include"intrins.h"//_nop_();延时函数用#defineDisdataP2//段码输出口#definediscanP1//扫描口#defineucharunsignedchar#defineuintunsignedint#defineREADROM_18b20_CM0x33#defineMATCHROM_18b20_CM0x55#defineSKIPROM_18b20_CM0xCC#defineSEARCHROM_18b20_CM0xF0#defineALARMSEARCH_18b20_CM0xEC#defineCONVERTT_CM0x44#defineRSCRATCHPAD_CM0xBE#defineWSCRATCHPAD_CM0x4E#defineCSCRATCHPAD_CM0x48#defineRECALLE2_CM0xB8#defineRPOWERSUNNLY_CM0xB4sbitDQ=P3^2;//温度输入口sbitDIN=P2^7;//LED小数点控制sbitLED1=P1^7;sbitLED2=P1^6;sbitLED3=P1^5;sbitLED4=P1^4;uinth;uinttemp;//////**************温度小数局部用查表法***********//ucharcodeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};//ucharcodedis_7[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};//共阳LED段码表"0""1""2""3""4""5""6""7""8""9""不亮""-"ucharcodescan_con[4]={0x7f,0xbf,0xdf,0xef};//列扫描控制字uchardatatemp_data[2]={0x00,0x00};//读出温度暂放uchardatadisplay[5]={0x00,0x00,0x00,0x00,0x00};//显示单元数据,共4个数据和一个运算暂用///////*****************11us延时函数*************************///voiddelay(uintt){for(;t>0;t--);}///****************显示函数******************************/scan(){ chark; LED1=1; LED2=0; LED3=0; LED4=0; Disdata=dis_7[display[3]];//数据显示 delay(300); LED1=0; LED2=1; LED3=0; LED4=0; Disdata=dis_7[display[2]];//数据显示 delay(300); LED1=0; LED2=0; LED3=1; LED4=0; Disdata=dis_7[display[1]]; //数据显示 delay(300); LED1=0; LED2=0; LED3=1; LED4=0; Disdata=0x7f; //数据显示 delay(300); LED1=0; LED2=0; LED3=0; LED4=1; Disdata=dis_7[display[0]];//数据显示 delay(300);}/////****************DS18B20复位函数************************/ow_reset(void){charpresence=1;while(presence){while(presence){DQ=1;_nop_();_nop_();//从高拉倒低DQ=0;delay(50);//550usDQ=1;delay(6);//66uspresence=DQ;//presence=0复位成功,继续下一步}delay(45);//延时500uspresence=~DQ;}DQ=1;//拉高电平}/////****************DS18B20写命令函数************************///向1-WIRE总线上写1个字节voidwrite_byte(ucharval){uchari;for(i=8;i>0;i--){DQ=1;_nop_();_nop_();//从高拉倒低DQ=0;_nop_();_nop_();_nop_();_nop_();//5usDQ=val&0x01;//最低位移出delay(6);//66usval=val/2;//右移1位}DQ=1;delay(1);}///****************DS18B20读1字节函数************************///从总线上取1个字节ucharread_byte(void){uchari;ucharvalue=0;for(i=8;i>0;i--){DQ=1;_nop_();_nop_();value>>=1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石家庄工商职业学院《工程流体力学基础A》2023-2024学年第二学期期末试卷
- 广西国际商务职业技术学院《Photoshop》2023-2024学年第二学期期末试卷
- 漳州理工职业学院《牙体牙髓病学A》2023-2024学年第二学期期末试卷
- 天津音乐学院《小企业会计》2023-2024学年第二学期期末试卷
- 贵州工业职业技术学院《篮球主项提高课》2023-2024学年第二学期期末试卷
- 济南幼儿师范高等专科学校《制药工程专业综合实验(一)》2023-2024学年第二学期期末试卷
- 萍乡卫生职业学院《景观设计基础》2023-2024学年第二学期期末试卷
- 环境响应式设计-洞察及研究
- mRNA疫苗递送系统-第1篇-洞察及研究
- 对话式舆情监测-洞察及研究
- 2025年春新北师大版生物七年级下册课件 第11章 人体的运动 第1节 人体的骨骼
- 便携式移动电源规范
- 实验室生物安全评估制度(4篇)
- 【MOOC】《电路原理》(东北大学)中国大学慕课答案
- 集训01 中国古代史选择题100题(原卷版)
- 儿康家长培训内容
- 2024年商城县人民医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- (已压缩)矿产资源储量技术标准解读300问-1-90
- 【MOOC】国际贸易实务-上海对外经贸大学 中国大学慕课MOOC答案
- 青马工程培训班课件
- 专题29 提高创新思维能力-五年(2020-2024)高考政治真题分类汇编(解析版)
评论
0/150
提交评论