简易数字温度计的设计_第1页
简易数字温度计的设计_第2页
简易数字温度计的设计_第3页
简易数字温度计的设计_第4页
简易数字温度计的设计_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录引言.............................................................................................................................................31功能要求…………..…...……42系统方案论证与比较………………..……..…………….…42.1数字温度计设计方案论证…………..…...42.1.1方案一……....………………..………………….…2.1.2方案二…....……….…….…………...………..…......2.2方案二的总体设计框图………….……………..………..73系统主要元器件的选择及介绍.............................................................................................83.1单片机的选用及功能介绍…..…………….….……………..…….…….83.1.1单片机简介..........................................................................................................3.1.2单片机的产生与发展……………….……………...………..…...…3.1.3单片机的应用……….………………..…..………..13.1.4MCS-51单片机引脚及功能介绍.................................................................3.2温度传感器的选择…………..………….………..……………..……...133.2.1DS18B20简单介绍………………….……..………………..….…..3.2.2DS18B20的性能特点和使用中的注意事项……….…..…..….…..13.2.3DS18B20的引脚及内部结构………...………...…3.2.4DS18B20的工作原理…….……………….……....3.2.5DS18B20的单线协议和命令…....………….………….……........3.2.6温度数据的计算处理方法……...………….….......4系统硬件电路的设计…………….………..................................................324.1主板电路...........................................................................................................................324.2显示电路………………….……….…….324.3DS18B20温度传感器与单片机的接口电路…………….…….………..335系统软件算法分析………………..………..345.1主程序…………………...345.2读出温度子程序………..……………….355.3温度转换命令子程序………………….…….………….365.4计算温度子程序…………..…………….375.5显示数据刷新子程序…………..……….386调试及性能分析………………..………….39结论…………..……………….40致谢………………..………….41参考文献…………..………….42附录…………..……………….43附录一原理图……….………...……..…………...……44附录二控制源程序清单……………..…………...……48基于单片机的数字温度计的设计指导教师:宗文军2006级机电专业学号20060279姓名胡雄飞摘要随着时代的进步和发展,人类不断的需求,科技不断的进步。温度计所给人类带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高。由于老式温度计的精确度低,测量范围小,无法满足现代化生活:工业、教学、科研、旅游等等各个领域的需求。随着集成电路技术的发展,单片微型计算机的功能也不断增强,由于单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度计,它属于多功能温度计。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确等优点。该温度计以AT89S51为主控器,通过DS18B20来检测温度,并通过四位共阳极LED数码管以串口传送数据,实现温度显示。同时可以设置上下线报警温度,当温度不在设置范围内时,可以报警。数字温度计是单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线上可以挂很多这样的数字温度计,十分方便。关键词:单片机;数字控制;温度计;DS18B20;AT89S51BasedonthedesignofmicrocontrollerdigitalthermometerTutor:QinZhiGuangAuthor:JiaZhenAbstractAsthetimesprogressanddevelopment,humanconstantdemand,technologicalprogress.Thermometer,giventheconvenienceofmankindisundeniable,inwhichthedigitalthermometerisatypicalexample,butithavebecomeincreasinglydemanding.Duetothelowaccuracyofold-fashionedthermometer,measuringrangeissmall,doesnotmeetmodernlife:industry,teaching,research,andtourismdemandinvariousfields.Withtheintegratedcircuitstechnology,single-chipmicro-computerfeaturesarealsogrowing,duetomicrocontrollertechnologyhasspreadtoourlives,work,researchinvariousfieldshasbecomearelativelymaturetechnology,thisarticledescribesacontrolbasedonsinglechipdigitalthermometer,itbelongstomulti-functionthermometer.Thedesignpresentedindigitalthermometerwithatraditionalthermometer,comparedwithareadingconvenience,awiderangeoftemperaturemeasurement,temperaturemeasurementaccurate.ThethermometerinordertoAT89S51-basedcontroller,throughtheDS18B20todetectthetemperature,andthroughfourcommonanodeLEDdigitaltubes,serialtransmissionofdatatoachievetemperaturedisplay.Youcansetthealarmofftheassemblylineatthesametimethetemperatureissetwhenthetemperatureisnotwithinthescopewhenitcouldbereported.Digitalthermometerisasinglebusdevice,withasimplecircuit,smallsizeandcharacteristics.Therefore,useittoformatemperaturemeasurementsystemwithasimplecircuit,inacommunicationlinecancarrymanyofthesedigitalthermometerisveryconvenient.Keywords:SCM;digitalcontrol;thermometer;DS18B20;AT89S51引言在日常生活及工农业生产中经常要用到温度的检测与控制,而在传统的温度测量系统中,一般采用热电偶或铂电阻进行温度测量。在这些电路中,有这样一些问题必须解决:为了进行准确的温度测量,必须给铂电阻提供一个良好的恒流源;由于热电偶出来的信号是模拟信号,所以此信号在送给CPU之前必须先进行A/D转换,然后再送给CPU进行处理;并且热电偶的信号很微弱,只有十几个mA,因此在A/D转换之前通常还需要进行增益放大,因此,采用热电偶和铂电阻进行温度测量,需要考虑很多问题,构成的系统也比较复杂。况且它们测出一般为电压,再转换成相应的温度,需要比较多的外部硬件来支持,这样以来造成系统硬件电路复杂,软件调试复杂,并且制作成本高。DALLAS公司推出的数字式温度传感器DS18B20很好地解决了这样一些问题,DS18B20采用一线接口,只需占用单片机的一个I/O口位,其外围电路也非常简单;并且DS18B20将测得的温度信号转换为数字量输出,可以与单片机直接相连,而不需进行信号放大和A/D转换,大大简化了电路的设计,因此本数字温度计的设计采用了DS18B20作为温度传感器进行温度采集。单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。显示电路采用3位共阳LED数码管,从P3口RXD,TXD串口输出段码。本数字温度计采用DS18B20作为检测原件,控制器使用单片机AT89S51,用3位共阳极LED数码管实现温度显示,减少了外部硬件电路,具有读数方便,测温范围广,测温准确,低成本,易使用等特点。1功能要求1)以AT89S51单片机为核心器件,组成一个数字式温度计;2)采用数字式温度计传感器DS18B20为检测器件,精度误差小于0.5℃;3)温度显示采用3位LED数码管显示,三位整数,一位小数;4)具有键盘输入上、下限功能,超过上、下限温度时,进行声音报警。2系统方案论证与比较2.1数字温度计设计方案论证一个典型的单片机自动测温系统由三大部分组成:测量放大电路、A/D转换电路和显示电路。它广泛应用于发电厂、化工厂的测温和温度控制系统中。2.1传统的测温元件有热电偶和热电阻。热电偶和热电阻测出相应的电压值,再将电压转化成对应的温度。本方案硬件电路设计主要由热电偶温度传感器、测量放大电路、A/D转换电路、ICL与单片机的接口电路和显示电路构成;软件设计主要由ICL模块、WAVE数字滤波模块、MODIFY模块、YA查表模块、查表法和DIR组成。需要比较多的外部硬件支持,硬件电路复杂,软件调试复杂,制作成本高。2.本数字温度计设计采用温度传感器DS18B20作为检测元件,测温基本范围为-50℃-110℃,最大分辨率可达0.0625℃。DS18B20可以读出被测温度值,而且采用3线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。2.2方案二的总体设计框图按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电路及显示电路。数字温度计总体电路结构框图如图2-1所示。主控制器单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。显示电路显示电路采用3位共阳LED数码管,从P3口RXD,TXD串口输出段码。图2-1数字温度计电路结构框图3系统主要元器件的选择及介绍3.1单片机的选用及功能介绍3.1.1一、单片机的概念所谓的单片机就是在一块半导体芯片上集成了CPU(中央处理器)、ROM(只读存储器)、RAM(静态可读/写存储器)、I/O接口、定时器/计数器、中断系统等功能部件的的微型计算机。单片机全称叫单片微型计算机,又称微处理器或微控制器等。二、单片机的特点1、性价比高;2、集成度高、体积小、可靠性高;3、控制功能强;4、低电压、低功耗。3.1.2从1974年12月,仙童(Fairchild)公司首先推出8位单片机F8,采用:双片形式F8(8位CPU+64RAM+2个并行I/O口)+3851(1KROM+定时器/计数器+2个并行I/O)。至今经历四代:第一代:1974~78,典型代表如Intel公司的MCS-48型8位单片机,采用8位CPU、2个I/O口、8位定时器/计数器、64RAM/1KROM、简单中断,寻址小于4K,且无串行口。第二代:1978~83,高档8位单片机,如MCS-51,MC6801,Zilog公司的Z8等。增加功能:串行I/O、多级中断、16定时/计数器、片内RAM/ROM增大,寻址64K,片内带A/D转换器接口。第三代:1983~90年代初,16位单片机出现,如MCS-96系列的8096、8098芯片。增加性能:16位CPU,RAM/ROM增大,中断能力增强、A/D、HSIO等第四代:90年代至今,高档16位产品和32位产品的出现,如80196,MC8300等,性能、速度大大提高。3.1.31、测控系统;2、智能仪表;3、机电一体化产品;4、智能接口;5、智能民用产品。3.1.4MCS-51单片机引脚及单片机引脚如图3-1所示1.电源引脚VCC:电源端,单片机的工作电源,接+5V直流电;VSS:接地端;图3-1MCS-51单片机引脚介绍2.控制信号引脚/EA:程序存储器选择控制端,/EA=0,选择片外程序存储器;/EA=1,选择片内程序存储器RST:复位信号输入,当干引脚保持2个机器周期的高电平,就能使单片机复位。ALE(AddressLatchEnable):地址锁存允许信号输出端/PSEN(ProgramSelectEnable):外部程序存储器输出允许控制信号常用复位电路:图3-2(a)上电复位电路图3-2(b)上电复位和按键复位电路3.并行I/O接口引脚P0.0~P0.7:P0口,双向输入/输出口。如系统接有外部存储器,P0口可作为数据总线和低8位地址总线。当作为普通I/O口使用时,应接上拉电阻。P1.0~P1.7:P1口,仅作为一般I/O口使用。P2.0~P2.7:P2口,准双向输入/输出口。如系统接有外部存储器,P0口作为高8位地址总线。P3.0~P3.7:P3口,准双向输入/输出口。P3口具有第二功能。P3口的第二功能如表3-1所示。4.时钟电路引脚XTAL1:内部振荡电路输入端,外接晶体振荡器的一个引脚;XTAL2:内部振荡电路输出端,外接晶体振荡器的另一个引脚,如图3-3所示。表3-1P3口的第二功能I/O口第二功能I/O口第二功能P3.0串行数据接收端P3.4T/C0外部脉冲输入端P3.1串行数据发送端P3.5T/C1外部脉冲输入端P3.2外部中断0输入P3.6写片外数据存储器P3.3外部中断1输入P3.7读片外数据存储器晶振可选择4M-40MHZ晶振可选择4M-40MHZ电容可选20-30PF图3-3内部振荡方式3.2温度传感器的选择3.2.1DSl8B20数字温度计提供9位(二进制)温度读数,指示器件的温度。信息经过单线接口送入DSl8B20或从DSl8B20送出,因此从主机CPU到DSl8B20仅需一条线(和地线)。DSl8B20的电源可以由数据线本身提供而不需要外部电源。因为每一个DSl8B20在出厂时已经给定了唯一的序号,因此任意多个DSl8B20可以存放在同一条单线总线上。这允许在许多不同的地方放置温度敏感器件。DSl8B20的测量范围从-55°C到+125°C,增量值为0.5°C,可在ls(典型值)内把温度变换成数字。每一个DSl8B20包括一个唯一的64位长的序号,该序号值存放在DSl8B20内部的ROM(只读存贮器)中。开始8位是产品类型编码(DSl8B20编码均为10H)。接着的48位是每个器件唯一的序号。最后8位是前面56位的CRC(循环冗余校验)码。DSl8B20中还有用于贮存测得的温度值的两个8位存贮器RAM,编号为0号和1号。1号存贮器存放温度值的符号,如果温度为负°C,则1号存贮器8位全为1,否则全为0。0号存贮器用于存放温度值的补码,LSB(最低位)的1表示0.5°C。将存贮器中的二进制数求补再转换成十进制数并除以2就得到被测温度值。3.2.2DS18B20的性能特点1DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20的性能特点如下:(1)独特的单线接口仅需要一个端口引脚进行通信;(2)多个DS18B20可以并联在惟一的三线上,实现多点组网功能;(3)无须外部器件;(4)可通过数据线供电,电压范围为3.0~5.5V;(5)零待机功耗;(6)温度以9或12位数字;(7)用户可定义报警设置;(8)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;(9)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。2DS18B20温度计还可以在高底温报警、远距离多点测温等方面进行应用开发,但在实际设计中应注意一下问题:(1)较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。(2)DS18B20工作时电流高达1.5mA,总线上挂接点数较多且同时进行转换时,要考虑增加总线驱动,可用单片机端口在测温转换时导通一个MOSFET供电。(3)连接DS18B20的总线电缆是有长度限制的,因此在用DS18B20进行长距离测温系统设计时,要充分考虑总线分别电容和抗阻匹配等问题。(4)在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环,这一点在进行DS18B20硬件连接和软件设计时要给与一定的重视。3.2.3DS18B20的引脚及1DS18B20的引脚及功能图3-4TO-92封装的DS18B20的引脚排列表3-2DS18B20详细引脚功能描述序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。2DS18B20的内部结构及各部分功能DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图3-5所示。主要由4部分组成:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。图3-5DS18B20内部结构4.2.4DS18B20的工作原理64位ROM的结构如图3-6所示,开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。非易失性温度报警触发器TH和TL,可通过软件写入户报警上下限。图3-664位ROM结构图DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图3-7所示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3-8所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率,定义方法见表3-3。图3-7高速暂存RAM结构图TMR1R011111图3-8配置寄存器表3-3DS18B20分辨率的定义规定R1R0分辨率/位温度最大转换时间/MS00993.750110187.510113751112750由表4-3可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB式表示,温度值格式如图3-9所示。当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表3-4是一部分温度值对应的二进制温度数据。图3-9温度数据值格式表3-4DS18B20温度与测得值对应表温度/℃二进制表示十六进制表示+125000001111101000007D0H+8500000101010100000550H+25.062500000001100100000191H+10.125000000001010000100A2H+0.500000000000000100008H000000000000010000000H-0.51111111111110000FFF8H-10.1251111111101011110FF5EH-25.06251111111001101111FE6FH-551111110010010000FC90HDS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。DS18B20的测温原理如图3-10所示,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55℃减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数2计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。图4-10中的累加器用于补偿和修正测温过程中的非线形性,其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值达到被测温度值。图3-10DS18B20测温原理图3.2.5DS18B20由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。1、初始化通过单线总线的所有执行(处理)都从一个初始化序列开始。初始化序列包括一个由总线控制器发出的复位脉冲和跟有其后由从机发出的应答脉冲。应答脉冲让总线控制器知道DS18B20在总线上且已准备好操作。2、DS18B20的各个ROM操作命令一旦总线控制器探测到一个应答脉冲,它就可以发出5个ROM命令中的任一个。所有ROM操作命令都是8位长度。下面是这些命令:ReadROM[33h]这个命令允许总线控制器读到DS18B20的8位系列编码、唯一的序列号和8位CRC码。只有在总线上存在单只DS18B20的时候才能使用这个命令。如果总线上有不止一个从机,当所有从机试图同时传送信号时就会发生数据冲突(漏极开路连在一起形成相“与”的效果)。MatchROM[55h]这是个匹配ROM命令,后跟64位ROM序列,让总线控制器在多点总线上定位一只特定的DS18B20。只有和64位ROM序列完全匹配的DS18B20才能响应随后的存储器操作命令。所有和64位ROM序列不匹配的从机都将等待复位脉冲。这条命令在总线上有单个或多个器件时都可以使用。SkipROM[0CCh]这条命令允许总线控制器不用提供64位ROM编码就使用存储器操作命令,在单点总线情况下右以节省时间。如果总线上不止一个从机,在SkipROM命令之后跟着发一条读命令,由于多个从机同时传送信号,总线上就会发生数据冲突(漏极开路下拉效果相当于相与)。SearchROM[0F当一个系统初次启动时,总线控制器可能并不知道单线总线上有多少器件或它们的64位ROM编码。搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。AlarmSearch[0ECh]这条命令的流程图和SearchROM相同。然而,只有在最近一次测温后遇到符合报警条件的情况,DS18B20才会响应这条命令。报警条件定义为温度高于TH或低于TL。只要DS18B20不掉电,报警状态将一直保持,直到再一次测得的温度值达不到报警条件。3、存储器操作命令WriteScratchpad[4E]这个命令向DS18B20的暂存器中写入数据,开始位置在地址2。接下来写入的两个字节将被存到暂存器中的地址位置2和3。可以在任何时刻发出复位命令来中止写入。ReadScratchpad[0BEh]这个命令读取暂存器的内容。读取将从字节0开始,一直进行下去,直到字节8(第9个字节,CRC)。如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。CopyScratchpad[48h]这条命令把暂存器的内容拷贝到DS18B20的E2存储器里,即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又正在忙于把暂存器拷贝到E2存储器,DS18B20就会输出一个“0”,如果拷贝结束的话,DS18B20则输出“1”。如果使用寄生电源,总线控制器必须在这条命令发出后立即起动强上拉并最少保持10ms。ConvertT[44h]这条命令启动一次温度转换而无需其他数据。温度转换命令被执行,而后DS18B20保持等待状态。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于做时间转换的话,DS18B20将在总线上输出“0”,若温度转换完成,则输出“1”。如果使用寄生电源,总线控制器必须在发出这条命令后立即起动强上拉,并保持500ms。RecallE2[0B8h]这条命令把报警触发器里的值拷回暂存器。这种拷回操作在DS18B20上电时自动执行,这样器件一上电暂存器里马上就存在有效的数据了。若在这条命令发出之后发出读时间隙,器件会输出温度转换忙的标识:“0”=忙,“1”=完成。ReadPowerSupply[B4h]若把这条命令发给DS18B20后发出读时间隙,器件会返回它的电源模式:“0”=寄生电源,“1”=外部电源。4、时序主机使用时间隙(timeslots)来读写DSl820的数据位和写命令字的位(1)初始化时序见图3-11。主机总线to时刻发送一复位脉冲(最短为480us的低电平信号),接着在tl时刻释放总线并进入接收状态,DSl820在检测到总线的上升沿之后,等待15-60us,接着DS1820在t2时刻发出存在脉冲(低电平,持续60-240us),如图中虚线所示。图3-11初始化时序(2)写时间隙写时间隙如图3-11(a)和3-11(b)所示,当主机把数据线从逻辑高电平拉到逻辑低电平的时候,写时间隙开始。有两种写时间隙:写1时间隙和写0时间隙。所有写时间隙必须最少持续60μs,包括两个写周期间至少1μs的恢复时间。I/O线电平变低后,DS18B20在一个15μs到60μs的窗口内对I/O线采样。如果线上是高电平,就是写1,如果线上是低电平,就是写0。主机要生成一个写时间隙,必须把数据线拉到低电平然后释放,在写时间隙开始后的15μs内允许数据线拉到高电平。主机要生成一个写0时间隙,必须把数据线拉到低电平并保持60μs。(3)读时间隙读时间隙如图3-12所示,当从DS18B20读取数据时,主机生成读时间隙。当主机把数据线从高高平拉到低电平时,写时间隙开始。数据线必须保持至少1μs;从DS18B20输出的数据在读时间隙的下降沿出现后15μs内有效。因此,主机在读时间隙开始后必须停止把DQ脚驱动为低电平15μs,以读取DQ脚状态。在读时间隙的结尾,DQ引脚将被外部上拉电阻拉到高电平。所有读时间隙必须最少60μs,包括两个读周期间至少1μs的恢复时间。图3-11(a)写0时序图3-11(b)写1时序图3-12DS18B20的读时序3.2.6从DS18B20读取出的二进制必须先转换成十进制,才能用于字符的显示。因为DS18B20的转换精度为9~12位可选的,为了提高精度采用12位。在采用12位精度转换时,温度寄存器里的值以0.0625为步进的,即温度值为温度寄存器里的二进制值乘以0.0625,就是实际的十进制温度值。通过观察表3-5可以发现一个十进制和二进制之间有很明显的关系,就是二进制的高字节的低半字节和低字节的高半字节组成一个字节,这个字节的二进制值化为十进制后,就是温度值的百、十、个位值,而剩下的低字节的低半字节化成十进制后,就是温度值的小数部分。小数部分因为是半个字节,所以二进制值范围是0~F,转换成十进制小数就是0.0625的倍数(0~15倍)。这样需要4位的数码管来显示小数部分,实际应用不必有这么高的精度,采用1位数码管来显示小数,可以精确到0.1℃。下表就是二进制和十进制的近似对应关系表。表3-5小数部分二进制和十进制的近似对应关系表小数部分二进制值0123456789ABCDEF十进制值00112334556678894系统硬件电路的设计4.1主板电路系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路等,如图4-1所示。图4-1中有三个独立式按键可以分别调整温度计的上下限报警设置,图中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时LED数码管将没有被测温度值显示,这时可以调整报警上下限,从而测出被测的温度值。图4-1中的按健复位电路是上电复位加手动复位,使用比较方便,在程序跑飞时,可以手动复位,这样就不用在重起单片机电源,就可以实现复位。4.2显示电路显示电路是使用的串口显示,这种显示最大的优点就是使用口资源比较少,只用p3口的RXD,和TXD,串口的发送和接收,四只数码管采用74LS164右移寄存器驱动,显示比较清晰。如图4-2所示。图4-1单片机主板电路图4-2温度显示电路4.3DS18B20温度传感器与单片机的接口电路DS18B20可以采用两种方式供电,一种是寄生电源供电方式,如图5-3所示,单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。这个电路会在I/O或VDD引脚处于高电平时“偷”能量。当有特定的时间和电压需求时,I/O要提供足够的能量。寄生电源有两个好处:进行远距离测温时,无需本地电源;可以在没有常规电源的条件下读ROM。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。要想使DS18B20能够进行精确的温度转换,I/O线必须在转换期间保证供电。由于DS18B20的工作电流达到1.5mA,所以仅靠5K上拉电阻提供电源是不行的,当几只DS18B20挂在同一根I/O线上并同时想进行温度转换时,这个问题变得更加尖锐。有两种方法能够使DS18B20在动态转换周期中获得足够的电流供应。第一种方法,当进行温度转换或拷贝到E2存储器操作时,给DQ线提供一个强上拉。用MOSFET把DQ线直接拉到电源上就可以实现,见图4-3。在发出任何涉及拷贝到E2存储器或启动温度转换的协议之后,必须在最多10μs之内把I/O线转换到强上拉。采用寄生电源供电方式时VDD和GND端均接地。由于单线制只有一根线,因此发送接口必须是三态的。图4-3DS18B20采用寄生电源的电路图另一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。如图4-4所示。这样做的好处是DQ线上不需要加强上拉,而且总线控制器不用在温度转换期间总保持高电平。这样在转换期间可以允许在单线总线上进行其他数据往来。另外,在单线总线上可以挂任意多片DS18B20,而且如果它们都使用外部电源的话,就可以先发一个SkipROM命令,再接一个ConvertT命令,让它们同时进行温度转换。注意当加上外部电源时,GND引脚不能悬空。图4-4DS18B20采用电源供电的电路图温度高于100℃时,不推荐使用寄生电源,因为DS18B20在这种温度下表现出的漏电流比较大,通讯可能无法进行。在类似这种温度的情况下,强烈推荐使用DS18B20的VDD引脚。对于总线控制器不知道总线上的DS18B20是用寄生电源还是用外部电源的情况,DS18B20预备了一种信号指示电源的使用意图。总线控制器发出一个SkipROM协议,然后发出读电源命令,这条命令发出后,控制器发出读时间隙,如果是寄生电源,DS18B20在单线总线上发回“0”,如果是从VDD供电,则发回“1”,这样总线控制器就能够决定总线上是否有DS18B20需要强上拉。如果控制器接收到一个“0”,它就知道必须在温度转换期间给I/O线提供强上拉。5系统软件算法分析系统程序主要包括主程序、读出温度子程序、温度转换命令转子程序、计算温度子程序、显示数据刷新子程序等。5.1主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图5-1所示。图5-1DS18B20温度计主程序流程图5.2读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图5-2示。5.3温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如图5-3所示。5.4计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图5-4所示。图5-2读出温度子程序流程图图5-3温度转换命令子程序流程图图5-4计算温度子程序流程图5.5显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图如图5-5所示。图5-5显示数据刷新子程序流程图6调试及性能分析1单片机测试判断单片机芯片及时钟系统是否正常工作有一个简单的办法,就是用万用表测量单片机晶振引脚(18、19脚)的对地电压,以正常工作的单片机用数字万用表测量为例:18脚对地约2.24V,19脚对地约2.09V。对于怀疑是复位电路故障而不能正常工作的单片机也可以采用模拟复位的方法来判断,单片机正常工作时第9脚对地电压为零,可以用导线短时间和+5V连接一下,模拟一下上电复位,如果单片机能正常工作了,说明这个复位电路有问题。2硬件及软件调试系统调试以程序为主。硬件调试比较简单,首先检查电路的焊接是否正确,然后用万用表测试或通电检测。软件调试先编写显示程序并进行硬件的正确性检验。然后分别进行主程序、读出温度子程序、温度转换命令子程序、计算温度子程序、显示数据刷新子程序的编程及调试,由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读写编程时必须严格地保证读写时序,软件调试到能显示温度值,而且在温度变化时(例如用手去接触)显示温度能改变就基本完成。性能测试可用制作的温度计和已有的成品温度计来同时测量比较,由于DS18B20的精度很高,所以误差指标可以限制在0.1℃以内,另外-55℃~+125℃的测温范围使得该温度计完全适合一般的应用场合,其低电压供电特性可做成用电池供电的手持电子温度计。结论基于单片机和DS18B20的数字温度传感器以其线路简单、成本低廉、软件设计简单优势有着无可比拟的应用前景,能较好地解决传统测温装置普遍存在的携带不便、易损坏、易受干扰等不足,可广泛的应用于工业控制中的各种温度监控。由于知识方面的欠缺,实际动手能力较弱,本次毕业设计没有完全达到设计要求,但从中我学到了不少东西,使我更深一步掌握了单片机电路,更深的了解设计中所用到本电路的工作原理,同时也掌握了单片机各引脚的功能及用途。在用Protel制作电路图时,我掌握了制图的一些技巧及在画图时要注意的一些问题,同时也使我更能熟练地操作此软件。在用Proteus单片机仿真软件和程序调试时,使我切切实实掌握了很多东西,提高了自己分析和解决实际问题的能力。论文的撰写需要大量的资料,在查找资料的过程中,又培养了我从文献、科学实验和生产实践中获取知识的能力。从本次毕业设计中,我真真切切意识到要做好一件事,必须要有足够的信心和耐心,要不怕吃苦、不怕失败,同时也意识到自己知识的欠缺。通过这次毕业设计,提高了我对相关知识的理解和运用,也提高了我的认识。为今后的工作打下了坚实的基础。致谢本文是在宗文军老师的精心指导下完成的,在整个毕业设计过程中,宗老师一直对我们严格要求,他自始至终地给我们指点和建议,定期地召集我们讨论毕业设计的问题,并根据我们毕业设计的进程情况及时地进行试验指导检查和指导论文的写作。是宗老师兢兢业业的教学精神和他细致耐心的教导使我有了完成本次毕业设计的信心与动力,正是在宗老师的启发引导和精心指导下,我才顺利地完成了本次毕业设计。再次,我衷心的向他表示感谢。同时,还要感谢给我指点和教我知识的每一位老师,是他们让我拥有了完成毕业设计的资本,同时也给与了人生奋斗的资本;感谢给我建议和帮助我的同学们,感谢学院给我提供了完成本次毕业设计的设备和资料,感谢学院给我这次总结自我的机会。正是由于你们的帮助和支持,我才能顺利完成本次毕业设计。参考文献[1]俞志根.传感器与检测技术.北京:科学出版社,2007.[2]黄劼,徐晓秋.单片机原理及接口技术.北京:国防工业出版社,2008.[3]赵继文.传感器与应用电路设计.北京:科学出版社,2002.[4]何立民.MCS-51单片机应用系统设计.北京航空航天大学出版社,2000.[5]阎石.数字电子技术基础.北京:高等教育出版社,1998.[6]廖常初.现场总线概述[J].电工技术,1999.[7]杨翠南,杨碧石.数字电子技术与逻辑设计教程.北京:电子工业出版社,2003.[8]白驹珩,雷晓平.单片机原理与其应用.成都:成都电子科技大学出版社,2000.[9]罗中华.数字电路与逻辑设计教程.北京:电子工业出版社,2006.附录附录一原理图附录二控制源程序清单S1OKEQU5FHTEMPUTEREQU39HTEMPHEQU5EHTEMPLEQU5DHMS50EQU5CHSIGNEQU5BH S1BITP1.0 S2BITP1.1 S3BITP1.2 S4BITP1.3 ORG0000H LJMPMAIN ORG000BH LJMPTOITORG0030HMAIN:MOVSP,#60HMOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBET0SETBTR0SETBEAMOVTEMPH,#30MOVTEMPL,#9MOVTEMPUTER,#15;温度最始值MOVS1OK,#00HMOVSIGN,#00HMOV38H,#0BHMOV37H,#0CHMOV36H,#0BHACALLDISPACALLT1S;*****************************************;主程序START:JBS1,NET1ACALLT12MSJBS1,NET1JNBS1,$INCSIGNMOVA,SIGNCJNEA,#1,TIAOACALLTIAOTLTIAO:CJNEA,#2,NET1MOVSIGN,#0ACALLTIAOTH;*****************************************NET1:MOVA,S1OKCJNEA,#1,STARTMOVA,TEMPUTERSUBBA,TEMPHJNBACC.7,ALEMMOVA,TEMPUTERSUBBA,TEMPLJBACC.7,ALEMSETBP2.1ACALLWENDUACALLDISPMOVS1OK,#00HAJMPSTARTALEM:MOV36H,#0CHMOV37H,#0CHMOV38H,#0CHCLRP2.1ACALLDISPACALLT1SLCALLWENDULCALLDISPMOVS1OK,#00HSJMPSTART;*****************************************TIAOTL:MOV50H,TEMPUTERMOV37H,TEMPLACALLBIN_BCDACALLDISPACALLT12MSACALLT12MSACALLT12MSACALLT12MSMOV36H,#0AHMOV37H,#0AHMOV38H,#0AHACALLDISPACALLT12MSACALLT12MSACALLT12MSACALLT12MSJBS2,ADD1ACALLT12MSJBS2,ADD1JNBS2,$INCTEMPLMOVA,TEMPLCJNEA,#100,ADD1MOVTEMPL,#0ADD1:JBS3,ADD2ACALLT12MSJBS3,ADD2JNBS3,$DECTEMPLMOVA,TEMPLCJNEA,#00,ADD2MOVTEMPL,#100ADD2:JBS4,TIAOTLACALLT12MSJBS4,TIAOTLJNBS4,$MOVTEMPUTER,50HLJMPSTART;高位调整;*****************************************TIAOTH:MOV50H,TEMPUTERMOV37H,TEMPHACALLBIN_BCDACALLDISPACALLT12MSACALLT12MSACALLT12MSACALLT12MSMOV36H,#0AHMOV37H,#0AHMOV38H,#0AHACALLDISPACALLT12MSACALLT12MSACALLT12MSACALLT12MSJBS2,ADD11ACALLT12MSJBS2,ADD11JNBS2,$INCTEMPHMOVA,TEMPHCJNEA,#100,ADD11MOVTEMPH,#0ADD11:JBS3,ADD22ACALLT12MSJBS3,ADD22JNBS3,$DECTEMPHMOVA,TEMPHCJNEA,#00,ADD22MOVTEMPH,#100ADD22:JBS4,TIAOTHACALLT12MSJBS4,TIAOTHJNBS4,$MOVTEMPUTER,50HLJMPSTART;一秒定时中段;*****************************************TOIT:PUSHPSWPUSHACCMOVTH0,#3CHMOVTL0,#0B0HINCMS50MOVA,MS50CJNEA,#14H,RETURNMOVS1OK,#1MOVMS50,#00HRETURN:POPACCPOPPSWRETI;*****************************************;温度总子程序;*****************************************wendu:ACALLINIT_1820ACALLRE_CONFIGACALLGET_TEMPERACALLTEMPER_COVRET;*****************************************;DS18B20初始化程序;*****************************************INIT_1820:SETBP2.0NOPCLRP2.0MOVR0,#06BHMOVR1,#03HTSR1:DJNZR0,TSR1;延时MOVR0,#6BHDJNZR1,TSR1SETBP2.0NOPNOPNOPMOVR0,#25HTSR2:JNBP2.0,TSR3DJNZR0,TSR2LJMPTSR4;延时TSR3:SETB20H.1;置标志位,表示DS1820存在LJMPTSR5TSR4:CLR20H.1;清标志位,表示DS1820不存在LJMPTSR7TSR5:MOVR0,#06BHMOVR1,#03HTSR6:DJNZR0,TSR6;延时MOVR0,#6BHDJNZR1,TSR6TSR7:SETBP2.0RET;*****************************************;重新写DS18B20暂存存储器设定值;*****************************************RE_CONFIG:JB20H.1,RE_CONFIG1;若DS18B20存在,转RE_CONFIG1RETRE_CONFIG1:MOVA,#0CCH;发SKIPROM命令LCALLWRITE_1820MOVA,#4EH;发写暂存存储器命令LCALLWRITE_1820MOVA,#00H;TH(报警上限)中写入00HLCALLWRITE_1820MOVA,#00H;TL(报警下限)中写入00HLCALLWRITE_1820MOVA,#1FH;选择9位温度分辨率LCALLWRITE_1820RET;*****************************************;读出转换后的温度值;*****************************************GET_TEMPER:SETBP2.0;定时入口LCALLINIT_1820JB20H.1,TSS2RET;若DS18B20不存在则返回TSS2:MOVA,#0CCH;跳过ROM匹配LCALLWRITE_1820MOVA,#44H;发出温度转换命令LCALLWRITE_1820LCALLINIT_1820MOVA,#0CCH;跳过ROM匹配LCALLWRITE_1820MOVA,#0BEH;发出读温度命令LCALLWRITE_1820LCALLREAD_18200MOV37H,A;将读出的温度数据保存RET;*****************************************;写DS18B20的程序;*****************************************WRITE_1820:MOVR2,#8CLRCWR1:CLRP2.0NOPNOPNOPNOPRRCAMOVP2.0,CMOVR3,#35DJNZR3,$SETBP2.0NOPDJNZR2,WR1SETBP2.0RET;*****************************************;读DS18B20的程序,从DS18B20中读出两个字节的温度数据;*****************************************READ_18200:MOVR4,#2;将温度高位和低位DS18B20中读RE00:MOVR2,#8RE01:CLRCSETBP2.0NOPNOPCLRP2.0NOPNOPNOPSETBP2.0NOPNOPMOVC,P2.0MOVR3,#35RE20:DJNZR3,RE20RRCADJNZR2,RE01MOV@R1,ADECR1DJNZR4,RE00RET;*****************************************;将从DS18B20中读出的温度数据进行转换;*****************************************TEMPER_COV:MOVA,#0F0HANLA,36H;舍去温度低位中小数点SWAPAMOV37H,AMOVA,36HJNBACC.3,TEMPER_COV1;四舍五入去温度值INC37HTEMPER_COV1:MOVA,35HANLA,#07HSWAPAADDA,37HMOV37H,A;保存变换后的温度数据LCALLBIN_BCDRET;*****************************************;将16进制的温度数据转换成压缩BCD码;38H中放百位,37十位,36个位;*****************************************BIN_BCD:MOV39H,37HMOVA,37HMOVB,#100DIVABMOV38H,AMOV37H,BXCHA,BMOVB,#10DIVABMOV37H,AMOV36H,BRETDISP:SETBRS0MOVR0,#36HMOVR7,#3LOOPP:MOVA,@R0MOVDPTR,#TABMOVCA,@A+DPTRMOVSBUF,AJNBTI,$CLRTIINCR0DJNZR7,LOOPPCLRRS0RETTAB:DB11H,0D7H,32H,92H,0D4H,98H,18H,0D1H,10H,90H,0FFH,070H,0FEH;延时子程序T12MS:SETBRS1MOVR7,#18HTM:MOVR6,#0FFHTM6:DJNZR6,TM6DJNZR7,TMCLRRS1RET;开机延时程序T1S:SETBRS1MOVR6,#3LSP:ACALLT12MSDJNZR6,LSPCLRRS1RETEND基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论