《简易数字温度计的设计.doc》由会员分享,可在线阅读,更多相关《简易数字温度计的设计.doc(38页珍藏版)》请在三一办公上搜索。
1、目 录引言.31 功能要求.42 系统方案论证与比较.4 2.1数字温度计设计方案论证.4 2.1.1 方案一.4 2.1.2 方案二.6 2.2方案二的总体设计框图.73 系统主要元器件的选择及介绍.8 3.1 单片机的选用及功能介绍.8 3.1.1 单片机简介.8 3.1.2 单片机的产生与发展.9 3.1.3 单片机的应用.10 3.1.4 MCS-51 单片机引脚及功能介绍.11 3.2 温度传感器的选择.13 3.2.1 DS18B20 简单介绍.14 3.2.2 DS18B20 的性能特点和使用中的注意事项.14 3.2.3 DS18B20 的引脚及内部结构.16 3.2.4 DS
2、18B20 的工作原理.25 3.2.5 DS18B20 的单线协议和命令.26 3.2.6温度数据的计算处理方法.294 系统硬件电路的设计.32 4.1主板电路.32 4.2显示电路.32 4.3 DS18B20温度传感器与单片机的接口电路.335系统软件算法分析.34 5.1主程序.34 5.2读出温度子程序.35 5.3温度转换命令子程序.36 5.4计算温度子程序.37 5.5显示数据刷新子程序.386 调试及性能分析.39结论.40致谢.41参考文献.42附录.43附录一 原理图.44附录二 控制源程序清单.48基于单片机的数字温度计的设计指导教师:宗文军2006级机电专业 学号
3、20060279 姓名 胡雄飞摘 要随着时代的进步和发展,人类不断的需求,科技不断的进步。温度计所给人类带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高。由于老式温度计的精确度低,测量范围小,无法满足现代化生活:工业、教学、科研、旅游等等各个领域的需求。随着集成电路技术的发展,单片微型计算机的功能也不断增强,由于单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度计,它属于多功能温度计。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确等优点。该温度计以AT89S5
4、1为主控器,通过DS18B20来检测温度,并通过四位共阳极LED数码管以串口传送数据,实现温度显示。同时可以设置上下线报警温度,当温度不在设置范围内时,可以报警。数字温度计是单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线上可以挂很多这样的数字温度计,十分方便。关键词:单片机;数字控制;温度计; DS18B20;AT89S51Based on the design of microcontroller digital thermometerTutor : Qin Zhi GuangAuthor : Jia ZhenAbstractAs the ti
5、mes progress and development, human constant demand, technological progress. Thermometer, given the convenience of mankind is undeniable, in which the digital thermometer is a typical example, but it have become increasingly demanding. Due to the low accuracy of old-fashioned thermometer, measuring
6、range is small, does not meet modern life: industry, teaching, research, and tourism demand in various fields. With the integrated circuits technology, single-chip micro-computer features are also growing, due to microcontroller technology has spread to our lives, work, research in various fields ha
7、s become a relatively mature technology, this article describes a control based on single chip digital thermometer, it belongs to multi-function thermometer. The design presented in digital thermometer with a traditional thermometer, compared with a reading convenience, a wide range of temperature m
8、easurement, temperature measurement accurate. The thermometer in order to AT89S51-based controller, through the DS18B20 to detect the temperature, and through four common anode LED digital tubes, serial transmission of data to achieve temperature display. You can set the alarm off the assembly line
9、at the same time the temperature is set when the temperature is not within the scope when it could be reported. Digital thermometer is a single bus device, with a simple circuit, small size and characteristics. Therefore, use it to form a temperature measurement system with a simple circuit, in a co
10、mmunication line can carry many of these digital thermometer is very convenient.Key words: SCM; digital control; thermometer; DS18B20; AT89S51引言在日常生活及工农业生产中经常要用到温度的检测与控制,而在传统的温度测量系统中,一般采用热电偶或铂电阻进行温度测量。在这些电路中,有这样一些问题必须解决:为了进行准确的温度测量,必须给铂电阻提供一个良好的恒流源;由于热电偶出来的信号是模拟信号,所以此信号在送给CPU之前必须先进行A/D转换,然后再送给CPU进行处
11、理;并且热电偶的信号很微弱,只有十几个mA,因此在A/D转换之前通常还需要进行增益放大,因此,采用热电偶和铂电阻进行温度测量,需要考虑很多问题,构成的系统也比较复杂。况且它们测出一般为电压,再转换成相应的温度,需要比较多的外部硬件来支持,这样以来造成系统硬件电路复杂,软件调试复杂,并且制作成本高。DALLAS公司推出的数字式温度传感器DS18B20很好地解决了这样一些问题,DS18B20采用一线接口,只需占用单片机的一个I/O口位,其外围电路也非常简单;并且DS18B20将测得的温度信号转换为数字量输出,可以与单片机直接相连,而不需进行信号放大和A/D转换,大大简化了电路的设计,因此本数字温度
12、计的设计采用了DS18B20作为温度传感器进行温度采集。单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。显示电路采用3位共阳LED数码管,从P3口RXD,TXD串口输出段码。本数字温度计采用DS18B20作为检测原件,控制器使用单片机AT89S51,用3位共阳极LED数码管实现温度显示,减少了外部硬件电路,具有读数方便,测温范围广,测温准确,低成本,易使用等特点。1 功能要求1)以AT89S51单片机为核心器件,组成一个数字式温度计;2)采用数字式温度计传感器DS18B20为检测器件,精度误差
13、小于0.5;3)温度显示采用3位LED数码管显示,三位整数,一位小数;4)具有键盘输入上、下限功能,超过上、下限温度时,进行声音报警。2 系统方案论证与比较2.1数字温度计设计方案论证一个典型的单片机自动测温系统由三大部分组成:测量放大电路、A/D转换电路和显示电路。它广泛应用于发电厂、化工厂的测温和温度控制系统中。2.1.1 方案一传统的测温元件有热电偶和热电阻。热电偶和热电阻测出相应的电压值,再将电压转化成对应的温度。本方案硬件电路设计主要由热电偶温度传感器、测量放大电路、A/D转换电路、ICL与单片机的接口电路和显示电路构成;软件设计主要由ICL模块、WAVE数字滤波模块、MODIFY模
14、块、YA查表模块、查表法和DIR组成。需要比较多的外部硬件支持,硬件电路复杂,软件调试复杂,制作成本高。2.1.2 方案二本数字温度计设计采用温度传感器DS18B20作为检测元件,测温基本范围为-50-110,最大分辨率可达0.0625。DS18B20可以读出被测温度值,而且采用3线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。2.2方案二的总体设计框图按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电路及显示电路。数字温度计总体电路结构框图如图2-1所示。主控制器单片机A
15、T89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。显示电路显示电路采用3位共阳LED数码管,从P3口RXD,TXD串口输出段码。图2-1 数字温度计电路结构框图3 系统主要元器件的选择及介绍3.1 单片机的选用及功能介绍3.1.1 单片机简介一、单片机的概念所谓的单片机就是在一块半导体芯片上集成了CPU(中央处理器)、ROM(只读存储器)、RAM(静态可读/写存储器)、I/O接口、定时器/计数器、中断系统等功能部件的的微型计算机。单片机全称叫单片微型计算机,又称微处理器或微控制器等。二、单片机的特点1、
16、性价比高;2、集成度高、体积小、可靠性高;3、控制功能强;4、低电压、低功耗。3.1.2 单片机的产生与发展从1974年12月,仙童(Fairchild)公司首先推出8位单片机F8,采用:双片形式F8(8位CPU64RAM2个并行I/O口)3851(1K ROM定时器/计数器2个并行I/O)。至今经历四代: 第一代:197478,典型代表如Intel公司的MCS-48型8位单片机,采用8位CPU、2个 I/O口、8位定时器/计数器、64 RAM/ 1K ROM、简单中断,寻址小于4K,且无串行口。第二代:197883,高档8位单片机,如MCS-51, MC6801,Zilog公司的Z8等。增加
17、功能:串行I/O、多级中断、16定时/计数器、片内RAM/ROM增大,寻址64K,片内带A/D转换器接口。 第三代:198390年代初,16位单片机出现,如MCS-96系列的8096、8098芯片。增加性能:16位CPU,RAM/ROM增大,中断能力增强、A/D、HSIO等 第四代:90年代至今,高档16位产品和32位产品的出现,如80196,MC8300等,性能、速度大大提高。3.1.3 单片机的应用1、 测控系统; 2、 智能仪表; 3、 机电一体化产品; 4、 智能接口; 5、 智能民用产品。3.1.4 MCS-51 单片机引脚及功能介绍单片机引脚如图3-1所示1.电源引脚VCC:电源端
18、,单片机的工作电源,接5V直流电;VSS:接地端;图3-1 MCS51单片机引脚介绍2.控制信号引脚/EA:程序存储器选择控制端,/EA =0,选择片外程序存储器; /EA =1,选择片内程序存储器RST:复位信号输入,当干引脚保持2个机器周期的高电平,就能使单片机复位。ALE(Address Latch Enable):地址锁存允许信号输出端 /PSEN(Program Select Enable):外部程序存储器输出允许控制信号常用复位电路:图3-2(a)上电复位电路 图3-2(b)上电复位和按键复位电路3.并行I/O接口引脚P0.0P0.7:P0口,双向输入/输出口。如系统接有外部存储器
19、,P0口可作为数据总线和低8位地址总线。当作为普通I/O口使用时,应接上拉电阻。P1.0P1.7:P1口,仅作为一般I/O口使用。P2.0P2.7:P2口,准双向输入/输出口。如系统接有外部存储器,P0口作为高8位地址总线。P3.0P3.7:P3口,准双向输入/输出口。P3口具有第二功能。P3口的第二功能如表3-1所示 。4. 时钟电路引脚XTAL1:内部振荡电路输入端,外接晶体振荡器的一个引脚;XTAL2:内部振荡电路输出端,外接晶体振荡器的另一个引脚,如图3-3所示。表3-1 P3口的第二功能I/O口第 二 功 能I/O口第 二 功 能P3.0串行数据接收端P3.4T/C0外部脉冲输入端P
20、3.1串行数据发送端P3.5T/C1外部脉冲输入端P3.2外部中断0输入P3.6写片外数据存储器P3.3外部中断1输入P3.7读片外数据存储器晶振可选择4M-40MHZ电容可选20-30PF图3-3 内部振荡方式3.2 温度传感器的选择3.2.1 DS18B20 简单介绍DSl8B20数字温度计提供9位(二进制)温度读数,指示器件的温度。信息经过单线接口送入DSl8B20或从DSl8B20送出,因此从主机CPU到DSl8B20仅需一条线(和地线)。DSl8B20的电源可以由数据线本身提供而不需要外部电源。因为每一个DSl8B20在出厂时已经给定了唯一的序号,因此任意多个DSl8B20可以存放在
21、同一条单线总线上。这允许在许多不同的地方放置温度敏感器件。DSl8B20的测量范围从-55C到+125C,增量值为0.5C,可在ls(典型值)内把温度变换成数字。每一个DSl8B20包括一个唯一的64位长的序号,该序号值存放在DSl8B20内部的ROM(只读存贮器)中。开始8位是产品类型编码(DSl8B20编码均为10H)。接着的48位是每个器件唯一的序号。最后8位是前面56位的CRC(循环冗余校验)码。DSl8B20中还有用于贮存测得的温度值的两个8位存贮器RAM,编号为0号和1号。1号存贮器存放温度值的符号,如果温度为负C,则1号存贮器8位全为1,否则全为0。0号存贮器用于存放温度值的补码
22、,LSB(最低位)的1表示0.5C。将存贮器中的二进制数求补再转换成十进制数并除以2就得到被测温度值。3.2.2 DS18B20 的性能特点和使用中的注意事项1 DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。DS18B20的性能特点如下:(1) 独特的单线接口仅需要一个端口引脚进行通信;(2) 多个DS18B20可以并联在惟一的三线上,实现多点组网功能;(3) 无须外部器件;(4) 可通过数据线供电,电压范围为3.05.5V;(5) 零待
23、机功耗;(6) 温度以9或12位数字;(7) 用户可定义报警设置;(8) 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;(9) 负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。2 DS18B20温度计还可以在高底温报警、远距离多点测温等方面进行应用开发,但在实际设计中应注意一下问题:(1) 较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。 (2
24、) DS18B20工作时电流高达1.5mA,总线上挂接点数较多且同时进行转换时,要考虑增加总线驱动,可用单片机端口在测温转换时导通一个MOSFET供电。(3) 连接DS18B20的总线电缆是有长度限制的,因此在用DS18B20进行长距离测温系统设计时,要充分考虑总线分别电容和抗阻匹配等问题。(4) 在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环,这一点在进行DS18B20硬件连接和软件设计时要给与一定的重视。3.2.3 DS18B20 的引
25、脚及内部结构1 DS18B20 的引脚及功能图3-4 TO92封装的DS18B20的引脚排列表3-2DS18B20详细引脚功能描述序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。2 DS18B20 的内部结构及各部分功能DS18B20采用3脚PR35封装或8脚SOIC封装,其内部结构框图如图3-5所示。主要由4部分组成:64 位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。图3-5 DS18B20内部结构4.2.4 DS18B20 的工
26、作原理64位ROM的结构如图3-6所示,开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。非易失性温度报警触发器TH和TL,可通过软件写入户报警上下限。图3-6 64位ROM结构图DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图3-7所示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
27、DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3-8所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率,定义方法见表3-3。图3-7 高速暂存RAM结构图TMR1R011111图3-8 配置寄存器表3-3 DS18B20分辨率的定义规定R1R0分辨率/位温度最大转换时间/MS00993.750110187.510113751112750由表4-3可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间
28、越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB式表示,温度值格式如图3-9所示。当符号位S0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进
29、制数值。表3-4是一部分温度值对应的二进制温度数据。图3-9 温度数据值格式表3-4 DS18B20温度与测得值对应表温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1111 0000FFF8H-10.1251111 1111 0101 1110FF
30、5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90HDS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。若TTH或TTL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。DS18B20的测温原理如图3-10所示,器件中低温度系数晶振的振荡频率受温度
31、的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在55所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产
32、生的脉冲信号进行计数,如此循环直到减法计数器计数2计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。图4-10中的累加器用于补偿和修正测温过程中的非线形性,其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值达到被测温度值。图3-10 DS18B20测温原理图3.2.5 DS18B20 的单线协议和命令由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。1、初始化 通过单线总线的
33、所有执行(处理)都从一个初始化序列开始。初始化序列包括一个由总线控制器发出的复位脉冲和跟有其后由从机发出的应答脉冲。应答脉冲让总线控制器知道DS18B20 在总线上且已准备好操作。2、DS18B20的各个ROM操作命令一旦总线控制器探测到一个应答脉冲,它就可以发出5 个ROM 命令中的任一个。所有ROM 操作命令都是8 位长度。下面是这些命令:Read ROM 33h 这个命令允许总线控制器读到DS18B20 的8 位系列编码、唯一的序列号和 8 位 CRC 码。只有在总线上存在单只 DS18B20 的时候才能使用这个命令。如果总线上有不止一个从机,当所有从机试图同时传送信号时就会发生数据冲突
34、(漏极开路连在一起形成相“与”的效果)。Match ROM 55h 这是个匹配ROM 命令,后跟64 位ROM 序列,让总线控制器在多点总线上定位一只特定的DS18B20 。只有和64 位ROM 序列完全匹配的DS18B20 才能响应随后的存储器操作命令。所有和 64 位 ROM 序列不匹配的从机都将等待复位脉冲。这条命令在总线上有单个或多个器件时都可以使用。 Skip ROM 0CCh 这条命令允许总线控制器不用提供64 位ROM 编码就使用存储器操作命令,在单点总线情况下右以节省时间。如果总线上不止一个从机,在 Skip ROM 命令之后跟着发一条读命令,由于多个从机同时传送信号,总线上就
35、会发生数据冲突(漏极开路下拉效果相当于相与)。Search ROM 0F0h 当一个系统初次启动时,总线控制器可能并不知道单线总线上有多少器件或它们的64 位ROM 编码。搜索ROM 命令允许总线控制器用排除法识别总线上的所有从机的 64 位编码。Alarm Search 0ECh 这条命令的流程图和Search ROM 相同。然而,只有在最近一次测温后遇到符合报警条件的情况,DS18B20 才会响应这条命令。报警条件定义为温度高于TH 或低于 TL。只要DS18B20 不掉电,报警状态将一直保持,直到再一次测得的温度值达不到报警条件。3、存储器操作命令Write Scratchpad 4E
36、这个命令向 DS18B20 的暂存器中写入数据,开始位置在地址 2。接下来写入的两个字节将被存到暂存器中的地址位置 2 和 3。可以在任何时刻发出复位命令来中止写入。Read Scratchpad 0BEh 这个命令读取暂存器的内容。读取将从字节0 开始,一直进行下去,直到字节8(第9 个字节,CRC)。如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。Copy Scratchpad 48h 这条命令把暂存器的内容拷贝到 DS18B20 的 E2 存储器里,即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而 DS18B20 又正在忙于把暂
37、存器拷贝到 E2 存储器,DS18B20 就会输出一个“0” ,如果拷贝结束的话,DS18B20 则输出“1” 。如果使用寄生电源,总线控制器必须在这条命令发出后立即起动强上拉并最少保持 10ms 。Convert T 44h 这条命令启动一次温度转换而无需其他数据。温度转换命令被执行,而后DS18B20 保持等待状态。如果总线控制器在这条命令之后跟着发出读时间隙,而 DS18B20 又忙于做时间转换的话,DS18B20 将在总线上输出“0” ,若温度转换完成,则输出“1” 。如果使用寄生电源,总线控制器必须在发出这条命令后立即起动强上拉,并保持 500ms 。Recall E20B8h 这条
38、命令把报警触发器里的值拷回暂存器。这种拷回操作在 DS18B20 上电时自动执行,这样器件一上电暂存器里马上就存在有效的数据了。若在这条命令发出之后发出读时间隙,器件会输出温度转换忙的标识:“0”= 忙,“1”= 完成。Read Power Supply B4h 若把这条命令发给 DS18B20 后发出读时间隙,器件会返回它的电源模式:“0”= 寄生电源,“1”= 外部电源。4、时序主机使用时间隙(time slots)来读写 DSl820 的数据位和写命令字的位 (1)初始化 时序见图3-11。主机总线 to 时刻发送一复位脉冲(最短为 480us 的低电平信号),接着在tl时刻释放总线并进
39、入接收状态,DSl820 在检测到总线的上升沿之后,等待15-60us,接着 DS1820 在t2时刻发出存在脉冲(低电平,持续 60-240 us),如图中虚线所示。图3-11 初始化时序(2)写时间隙写时间隙如图3-11(a)和3-11(b)所示,当主机把数据线从逻辑高电平拉到逻辑低电平的时候,写时间隙开始。有两种写时间隙:写1时间隙和写0时间隙。所有写时间隙必须最少持续 60s,包括两个写周期间至少1s的恢复时间。I/O 线电平变低后,DS18B20 在一个 15s 到 60s 的窗口内对 I/O 线采样。如果线上是高电平,就是写 1,如果线上是低电平,就是写0。主机要生成一个写时间隙,
40、必须把数据线拉到低电平然后释放,在写时间隙开始后的 15s 内允许数据线拉到高电平。主机要生成一个写0时间隙,必须把数据线拉到低电平并保持 60s。(3)读时间隙 读时间隙如图3-12所示,当从DS18B20读取数据时,主机生成读时间隙。当主机把数据线从高高平拉到低电平时,写时间隙开始。数据线必须保持至少1s;从DS18B20 输出的数据在读时间隙的下降沿出现后15s内有效。因此,主机在读时间隙开始后必须停止把DQ脚驱动为低电平15s,以读取DQ脚状态。在读时间隙的结尾,DQ引脚将被外部上拉电阻拉到高电平。所有读时间隙必须最少60s,包括两个读周期间至少1s的恢复时间。图3-11(a) 写0时
41、序图3-11(b) 写1时序图3-12 DS18B20的读时序3.2.6温度数据的计算处理方法从DS18B20读取出的二进制必须先转换成十进制,才能用于字符的显示。因为DS18B20的转换精度为912位可选的,为了提高精度采用12位。在采用12位精度转换时,温度寄存器里的值以0.0625为步进的,即温度值为温度寄存器里的二进制值乘以0.0625,就是实际的十进制温度值。通过观察表3-5可以发现一个十进制和二进制之间有很明显的关系,就是二进制的高字节的低半字节和低字节的高半字节组成一个字节,这个字节的二进制值化为十进制后,就是温度值的百、十、个位值,而剩下的低字节的低半字节化成十进制后,就是温度值的小数部分。小数部分因为是半个字节,所以二进制值范围是0F,转换成十进制小数就是0.0625的倍数(015倍)。这样需要4位的数码管来显示小数部分,实际应用不必有这么高的精度,采用1位数码管来显示小数,可以精确到0.1。下表就是二进制和十进制的近似对应关系表。表3-5 小数部分二进制和十进制的近似对应关系表小数部分二进制值0123456789ABCDEF十进制值00112334556678894 系统硬件电路的设计4.1主板电路系统整体硬