数显温度计的设计与制作.doc_第1页
数显温度计的设计与制作.doc_第2页
数显温度计的设计与制作.doc_第3页
数显温度计的设计与制作.doc_第4页
数显温度计的设计与制作.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

数显温度计的设计与制作 1 在日常生活、工业、军事等领域,经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻,而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持, 硬件电路复杂,软件调试复杂,制作成本高。 美国DALLAS半导体公司生产的DS18B20单线智能温度传感器,属于新一代适配微处理器的能温度传感器,本数显温度计设计采用DS18B20作为检测元件, 测量温度范围为 -55125,最大分辨率为0.0625,该数显温度计可直接读出被测温度值,具有测温误差小,分辨力高,抗干扰能力强,能够远程传输数据,用户可设定温度上下限,有越限自动报警功能,自带串行接口总线等优点而且采用3线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。 .: 单片机AT89C2051DS18B20温度传感器分辨率 1珜?侻粪 数显温度计的设计与制作 2 design and manufacture ABSTRACT In daily life, industrial, military and other areas often have to use the temperature detection and control, traditional detectors. This a thermocouple and thermal resistance, thermocouple and thermal resistance measured in general are voltage, turn replaced by the corresponding temperature, need more external hardware support complex hardware and software debugging complex, production costs high. The United States Dallas Semiconductor DS18B20 produced by a single intelligent temperature sensor, belong to a new generation of microprocessors to fit the temperature sensor, The digital thermometer DS18B20 used as a design element detection. Measuring temperature range of -55125, maximum resolution of 0.0625 The digital thermometer can be directly read out the measured temperature, measurement error is small, high resolution, anti-interference capability. to long-distance transmission of data, users can set the temperature lower and upper limits of a more limited automatic alarm function, bringing their Serial Bus interface and the advantages of using 3-wire microcontroller connected with the reduction of the external circuit low cost and easy to use feature. KEY WORDS: SCM AT89C2051,DS18B20 Temperature Sensor,RESOLUTION PQ 数显温度计的设计与制作 3 目 录 .1 1.1 电路工作原理概述及清单列表.1 1.2 主控制器.2 1.3 显示电路.2 .3 2.1 单片机AT89C2051芯片的结构和性能.3 211 主要性能参数.3 212 功能特性概述.4 213 引脚功能说明.4 214 某些指令的约束条件.6 215 程序存储器的加密.7 216 空闲模式.7 217 掉电模式.8 2.2 温度传感器工作原理.8 . 221 DS18B20的性能特点.8 222 DS18B20的测温原理.13 223 DS18B20与单片机的接口电路.14 0A4H, 0B0H, 99 数显温度计的设计与制作 4 2.3 时钟信号电路与复位电路的分析.14 231 AT89C2051的时钟电路.14 232 AT89C2051的复位电路.15 2.4总线驱动.16 .17 3.1 主程序.17 3.2 读出温度子程序.18 3.3 温度转换命令子程序.19 3.4 计算温度子程序.19 3.5 显示温度数据刷新子程序19 3.6 DS18B20的各个ROM命令21 3.7 温度数据的计算处理方法23 .24.25.37 毕业设计的切身认识.37 致谢.38 参考文献.39 (附录) %? 数显温度计的设计与制作 5 11 温度计电路设计原理图如下图所示,控制器使用单片机AT89C2051,温度传感器使用DS18B20,用4位共阳极LED数码管以动态扫描法实现温度显示。 数显温度计的设计与制作 6 12 单片机AT89C2051具有低压供电和小体积等特点,两个端口刚好满足电路系统的设计需要,很适合便携手式产品的设计使用,系统可用二节电池供电。 13 显示电路采用4位共阳极LED数码管,从P1口输出段码,列扫描用P3.0P3.3口来实现,列驱动用9012三极管。如下图所示 u隅濅0 数显温度计的设计与制作 7 21 AT89C2051 AT89C2051是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含有2KB的可反复擦写的只读程序存储器和128B的随机存取数据存储器(RAM),器件采用ATMEL公司的高精度,非易失性存储器技术生产,兼容标准MCS-51指令系统,片内配置通用8位中央处理器和Flash存储单元,功能强大的AT89C2051单片机可为您提供许多高性价比的应用场合。 211 与MCS-51产品指令系统完全 2KB可反复擦写闪速存储器 1000次擦写周期 2.7V6V的工作电压范围 全静态操作: 0MHz24MHz 两级加密程序存储器 1288B内部ROM 15个可编程I/O口线 2个16位定时/计数器 潜硎菊嬷康母行唬? 数显温度计的设计与制作 8 6个中断源 可编程串行UART通道 可直接驱动LED的输出端口 内置一个模拟比较器低功耗空闲和掉电模式 AT89C2051提供以下标准功能:2KB的Flash闪速存储器,128B内部RAM,15个I/O口线,两个16位定时/记数器,一个5向量两级中断结构,一个全双工串行通信口,内置一个精密比较器,片内震荡器及时钟电路。同时,AT89C2051可降至0HZ静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM、定时/记数器,一个5向量两级中断结构,一个全双工串行通信口,内置一个精密比较器,片内震荡器及时钟电路继续工作。掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。 鯹?V撼? 数显温度计的设计与制作 9 的封装的形式和引脚排列如上图所示 电源 接地 口口是一组8位双向端口,提供内部上拉电阻,主要考虑他们分别是内部精密比较器的同向输入端()和反向输入端(),如果需要应在外部接上拉电阻。口输出缓冲器可吸收电 并可直接驱动。当口引脚写入“1”时可作输入端,当引脚用作输入并外部拉低时,他们将因内部的上拉电阻而输出电流()。口还在Flash闪速编程及程序校验时接受代码数据。 口:口的是带有内部上拉电阻的7个双向。P3.6没有引出,它作为一个通用口不可访问,但可以作为固定输入片内比较器的输出信号,P3口缓冲器可吸收20mA电流。当P3口写入“1”时,他们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输出流()。P3口还用于实现AT89C2051特殊的功能,如下表所示。P3口还接收一些用于Flash闪速存储编程和程序校验的控制信号。 表 AT89C2051的P3口的特殊功能 端口引脚 功能特性 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INT0(外中断0) P3.3 INT1(外中断1) P3.4 T0(定时/计数器0) P3.5 T1(定时/计数器1) W頙热-?F蚇碵螨刖0 数显温度计的设计与制作 10 RST:复位输入。RST引脚一旦保持两个机器周期以上的高电平,所有的I/O口将复位到“1”(高电平)状态,当振荡器正在工作时,保持两个机器周期以上的高电平便可完成复位,每个机器周期为12个时钟振荡周期。 XTAL1:振荡器反相放大器及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端。 AT89C2051是经济型低价位的微控制器,它含有2KB的Flash闪速程序存储器,指令系统与MCS-51完全兼容,可使用MCS-51指令系统对 其进行编程。但是在使用某些有关指令进行编程时,程序员需注意一些事项。 和跳转或分支有关的指令有一定的空间约束,使目的地址能安全落在AT89C2051的2KB的物理程序存储器空间内,程序员必须注意这一点。对于2KB存储器的AT89C2051来说,LJMP 7E0H是一条有效指令,而LJMP 7E0H则为无效指令。 (1) 分支指令 对于LCALL、LJMP、ACALL、AJMP、SJMP、JMPA+DPTR等指令,只要程序员记住这些分支指令的目的地址在程序存储器大小的逻辑范围之内(AT89C2051程序地址空间为:000H-7FFH单元),这些无条件分支指令就会正确执行,超出物理空间的限制会出现不可预知的程序出错,至于中断的使用,80C51系列硬件结构中已经保存标准中断服务子程序的地址。 (2) 与MOVX相关的指令,数据存储器 AT89C2051包含128B内部数据存储器,这样,AT89C2051的堆栈深度局限于内部RAM的128B范围内,它既不支持外部数据存储器的访问,也不支持外部程序存储器的执行,因此程序不应有MOVX?指令。 一般的80C51汇编器即使在违反上述指令约束而写入指令时仍对指令汇编,用户应了解正使用AT89C2051微控制器的存储器物理空间和约束范围,适当的调节所使用的指令寻址范围以适应89C2051。 ?.17 3.1 主程序 数显温度计的设计与制作 11 AT89C2051可使用对芯片上的两个加密位进行编程(P)或不编程(U)得到如下表所示的功能。 程序加密 保护类型 LB1 LB2 1 U U 无程序加密功能 2 P U 禁止进一步进行Flash闪速编程 3 P P 同方式2,同时禁止校验 注:加密位只能用片擦除操作进行擦除 在空闲模式下,CPU保持睡眠状态而所有片内的外设保持激活状态,这种方式由软件产生。此时,片内RAM和所有特殊功能寄存器的内容保持不变,空闲模式可有任何允许的中断请求或硬件复位终止。 或在不使用外部上拉电阻的情况下应设置为“0”,而在使用上拉电阻的情况下设置为“1”。 应注意的是:在用硬件复位终止空闲模式时,AT89C2051通常从程序停止一直到内部复位获得控制之前的两个机器周期处恢复程序执行。在这种情况下片内硬件禁止对内部RAM的读写,但允许对端口的访问,要消除硬件复位终止空闲模式对端口意外写入的可能,原则上进入空闲模式指令的下一条指令不应对端口引脚或外部存储器进行访问。 ?.8 - 数显温度计的设计与制作 12 在掉电模式下,震荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在终止掉电模式前被终结,退出掉电模式的唯一方法是硬件复位,复位后将重新定义全部特殊寄存器但不改变RAM中的内容,在VCC恢复到正常工作电平前,复位应无效,且必须保持一定时间以使振荡器重新启动并稳定工作。 P1.0和P1.1在不使用外部上拉电阻的情况下应设置为“0”,而在使用外部上拉电阻时应设置为“1”。 22 DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字读数方式。 221 DS18B20: 独特的单线接口仅需要一个端口引脚进行通信; 多个DS18B20可以并联在惟一的三线上,实现多点组网功能; 无须外部器件; 可通过数据线供电,电压范围为3.05.5V; 零待机功耗; 温度以9或12位数字量读出; 用户可定义的非易失性温度报警设置; 报警搜索命令识别并标志超过程序限定温度的器件; 负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如下图所示: OVX相关的指令,数据存储器 数显温度计的设计与制作 13 DS18B20 64位ROM的结构如下图所示。开始8位是产品类型的编号,接着是每个器件的唯一序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。非易失性温度报警触发器TH和TL,可通过软件写入户报警上下限。 64ROM 8位检验CRC 48位序列号 8位工厂代码(10H) MSB LSB MSB LSB MSB LSB o 数显温度计的设计与制作 14 DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如上图所示。 头2个字节包含测得的温度信息,第3和第4字节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义如下图所示。 TM R1 R0 1 1 1 1 1 低5位一直为1,TM是测试模式位,用于设置DS18B20在工作模式还是在 测试模式。在DS18B20出厂时该设置为0,用户不要去改动,R1和R0决定温度转换的精度位数,即用来设置分辨率,定义方法见下表。 ?V撼? 数显温度计的设计与制作 15 R1 R2 分辨率/位 温度最大转换时间/ms 0 0 9 93.5 0 1 10 187.5 1 0 11 375 1 1 12 750 DS18B20 由上表可见,DS18B20温度转换的时间比较长,而且设定的 分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。 高速度暂存RAM的第6,7,8字节保留未用,表现为全逻辑1。第9字节读出前所有8字节CRC码,可用来检测数据,从而保证通信数据的正确性。 当DS18B20接收到温度转换命令后,开始启动转换。转换完成厚的温度就以16位带符号扩展的二进制补码形式存储在高速暂存器的第1,2字节。单片机可以通过单线接口读出该数锯,读数据时低位在先,高位在后,数据格式以0.0625/LSB形式表示。温度值格式如下图所示。 LS字节 23 22 21 20 2-1 2-2 2-3 2-4 MS字节 S S S S S 26 25 24 当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制值。下表是一部分温度值对应的二进制温度数据。 ,wg歮?眎? 数显温度计的设计与制作 16 DS18B20 温度/ 二进制表示 十六进制表示 +125 0000 0111 1101 0000 07D0H +85 0000 0101 0101 0000 0550 H +25.0625 0000 0001 1001 0001 0191 H +10.125 0000 0000 1010 0010 00A2 H +0.5 0000 0000 0000 1000 0008 H 0 0000 0000 0000 0000 000 H -0.5 1111 1111 1111 1000 FFF8 H -10.125 1111 1111 0101 1110 FF5E H -25.0625 1111 1110 0110 1111 FE6F H -55 1111 1100 1001 0000 FC90 H DS18B20完成温度转换后,就把测得的温度值与RAM中的TH,TL字节内容作比较。若TTH或TTL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只 DS18B20同时测量温度并进行报警搜索。 在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机根据ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。 DS18B20的测温原理如下图所示。 #?蕊稗0鼘麳鉎偘 数显温度计的设计与制作 17 222 DS18B20 图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55所对应的一个基数分别置入减法计数器1,温度寄存器中,减法计数器1和温度寄存器被欲置在-55所对应的一个基数值。 减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置值将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中数值就是所测温度值。图5.8中的斜率累加器用于补偿和修正测温过程中的非线形,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直到温度寄存器值达到被测温度值。 2-竤l噪O?籩 数显温度计的设计与制作 18 另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。 223 DS18B20 DS18B20可以采用两种方式供电,一种是采用电源供电方式, 此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如下图所示。单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。 DS18B20 当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10s。采用寄生电源供电方式时VCC和GND端均接地。由于单线制只有一根线,因此发送接口必须是三态的。 单片机的时钟信号用来为单片机芯片内部各种微机提供时间基准。复位是使单片机或系统中的其他部件处于某种确定的初始状态。单片机的工作就是从复位开始的。其电路特点及作用如下: 231 AT89C2051 AT89C2051的时钟信号产生方式是内部时钟方式。其电路图如下: !?PS?彉蠋VO5? 数显温度计的设计与制作 19 在AT89C2051单片机内部有一振荡电路,只要在单片机的XTAL1和XTAL2引脚外接石英晶体(简称晶振),就构成了自激振荡器并在单片机内部产生时钟脉冲信号。图中两电容(30PF)的作用是稳定频率和快速起振。晶振的振荡频率为12MHz。 232 AT89C2051 当在AT89C2051单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。在实际应用中,复位操作有两种基本形式:一种是上电复位,另一种是上电与按键均有效的复位,本复位电路使用的是上电复位,其电路图如下: 上电复位要求接通电源后,单片机自动实现复位操作。上电瞬间RST引脚撺?Y/譵: 数显温度计的设计与制作 20 获得高电平,随着电容C的充电,RST引脚的高电平将逐渐下降。RST引脚的电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。该电路的电容和电阻参数为: C10uF R6.8K 单片机应用系统中,通常要在扩展的三总线上挂接很多负载,如存储器、并行接口、A/D接口、显示器接口等,但总线端口的驱动能力是有限的,一般只能驱动几个LSTTL负载或十几个MOS电路负载。因此常常需要进行总线驱动。 在系统总线中,地址总线和控制总线是单向的,地址总是从CPU的控制器向外发送,每一个控制信号的方向也是唯一确定的,因此地址总线和控制总线的驱动器可以选用单向的,如单向驱动器74LS244。 74LS244是一个两4位的三态缓冲器,其引脚如下图所示,当它的控制端和为低电平时,输出端Y的状态与输入端A相同;当和为高电平时,输出呈高阻状态。输入设备输入的数据可在74LS244中得到缓冲,74LS244的端口地址由P2.7决定,故端口地址可取7FFFH,通过下列指令可从该端口输入数据。 MOV DPTR,#7FFFH ;DPTR指向74LS244端口 MOVX A,DPTR ;输入数据 ?PS?彉蠋VO5? 数显温度计的设计与制作 21 系统程序的主要功能是负责温度的实际显示,读出温度子程序,计算温度子程序,显示数据刷新子程序等等。 31 主程序的主要功能是负责温度的实时显示,读出并处理DS18B20的测量温度值,温度测量每1S进行一次,其程序流程图见下图。 DS18B20 x 数显温度计的设计与制作 22 32 读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图见下图所示。 l謤 数显温度计的设计与制作 23 33 温度转换命令子程序主要是发温度转换命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程如下图所示。 34 计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图见下图1所示。 35 显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图见下图2所示。 发DS18B20复位命令 发跳过ROM命令 发温度转换开始命令 结束 fY?60n宱E鉓鯄9忭 数显温度计的设计与制作 24 图1 计算温度子程序流程图 x 数显温度计的设计与制作 25 2 36 DS18B20ROM 1. Read ROM 33H 这个命令允许总线控制器读到DS18B20的8位系列编码,唯一的序列号和8 位CRC码。只有在总线上存在单只DS18B20的时候才能使用这个命令。如果总线上有不止一个从机,当所有从机试图同时传送信号时就会发生数据冲突(漏极开路连在一起形成相“与”的效果)。 2MATCH ROM55H 这是个匹配ROM命令,后跟64位序列,让总线控制器在多点总线上定位一只特定的DS18B20。只有和64位ROM序列完全匹配的DS18B20才能响应随后的存储器操作。所以和64位ROM序列不匹配的从机都将等待复位脉冲。这条命令在总线上有单个或多个器件时都可以使用。 菊嬷康母行唬? 数显温度计的设计与制作 26 3SKIP ROM0CCH 同这条命令允许总线控制器不用提供64位ROM编码就使用存储器操作命令 ,在单点总线情况下,可以节省时间。如果总线上不止一个从机,在SKIP ROM命令之后跟着发一条读命令,由于多个从机时传送信号。总线上就会发生数据(漏极开路下拉效果相当于相“与”) 4Search ROM0F0H 当一个系统初次启动时,总线控制器可能并不知道单线总线上有多少器件或它们的64位ROM编码。搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。 5Alarm Search0ECH 这条命令的流程和 Search ROM相同。然而,只有在最近一次测温后遇到符合报警条件的情况,DS18B20才会响应这条命令。报警条件定义为温度商于TH或低于TL。只要DS18B20不掉电,报警状态将一直保持,直到再一次测得的温度值达不到报警条件。 6Write Scratchpad4EH 这个命令向DS18B20 的暂存器TH和TL中写入数据。可以在任何时刻发出复位命令来中止。 7Read Scratchpad0BEH 这个命令读取暂存器的内容。读取将从第一个字节开始,一直进行下去,直到第9(CRC)字节读完。如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。 8Copy Scratchpad48H 这个命令把暂存器的内容拷贝到DS18B20的EROM存储器里,即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时产隙,而DS18B20又忙于把暂存器拷贝到E到存储器,DS18B20就会输出一个0,如果拷贝结束的话,DS18B20则输出1。如果使用寄生电源,总线控制指令汇编,用户应了解正使用AT89 数显温度计的设计与制作 27 器必须在这条命令发出后立即启动强上拉并最少保持10ms。 9Convert T44H 这条命令启动一次温度转换而无需其它数据。温度转换命令被执行,而后DS18B20保持等待状态。如要总线控制器在这条命令之后跟着发出时间隙,而DS18B20又忙于做时间转换的话,DS18B20将在总线上输出0,若温度转换完成,则输出1。如果使用寄生电源,总线控制器必须在发出命令后立即启动强上拉,并保持500ms以上时间。 10. Recall E0B8H 这条命令把报警触发器里的值拷贝回暂存器,这种拷贝操作在DS18B20上电时自动执行,这样器件一上电暂存器里马上就存在有效数据了。若在这条命令发出之后发出读数据隙,器件会输出温度转换忙的标识:0为忙,1为完成。 11Read Power Supply0B4H 若把这条命令发给DS18B20后发出读时间隙,器件会返回它的电源模式:0为寄生电源,1为外部电源。 37 从DS18B20读取出的二进制值必须先转换成十进制,才能用于字符的显示。因为DS18B20的转换精度为912位可选的,为了提高精度采用12位。在采用12位转换精度时,温度寄存器里的值是以0.0625为步进的,即温度值为温度寄存器里的二进制值乘以0.0625 ,就是实际的十进制温度值。通过观察表5.2 可以发现一个十进制值和二进制值之间有很明显找茬 关系,就是把二进制的高字节的低半字节和低字节的高半字节组成一个字节,这个字节的二进制值化为十进制值后,就是温度值的百、十、个位值,而剩下的低字节的低半字节化成十进制后,就是温度值的小数部分。小数部分因为是半个字节,所以二进制值范围是0F,转换成十进制小数值就是0.0625的倍数(015倍)。这样需要4位的数码管来显示小数部分,实际应用不必有这么高的精度,采用1位数码管来显示小数,可以精确到0.1。下表就是二进制和十进制的近似对应关系表。 计的设计与制作 10 R 数显温度计的设计与制作 28 小数部分二进制值 0 1 2 3 4 5 6 7 8 9 A B C D E F 十进制值 0 0 1 1 2 3 3 4 5 5 6 6 7 8 8 9 系统的调试以程序为主。硬件调比较简单,首先栓查电路的焊接是否正确,然后可用万用表测试或通电检测。软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主程序、读出温度子程序、温度转换命令子程序、计算温度子程序、显示数据刷新等子程序的编程及调试,由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读写编程时必须严格地保证读写时序,否则将无法读取测量结果。本程序采用单片机汇编编写,用wave3.2编译器编程调试。软件调试到能显示温度值,而且在有温度变化时(例如用手去接触)显示温度能改变就基本完成。 性能测试可用制作的温度计和已有的成品温度计来同时测量比较,由于DS18B20的精确很高,所以误差指标可以限制在0.1以内,另外-55+125的测量范围使得该温度计完全适合一般的应用场合,其底电压供电特性可做成用电池供电的手持电子温度计。 DS18B20温度计还可以在高低温报警、远距离多点测温控制等方面进行应用开发,但在实际设计中应注意以下问题: DS18B20工作时电流高达1.5mA,总线上挂接电数较多且同时进行转换时,要考虑增加点数驱动,可用单片机端口在温度转换是时导通一个MOSFET供电。 连接DS18B20的总线电缆是有长度限制的,因此在用DS18B20进行长距离测温系统设计时,要充分考虑总线分布电容和阻抗匹配等问题。 在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环,这一点在进行DS18B20硬件连接和软件设计时要给予一定的重视。 进制和十进制的近似对应关系表。 ? 数显温度计的设计与制作 29 DS18B20温度计采用4位LED共阳显示器显示测温值,显示精度0.1,测温范围-55+125。用AT89C2051单片机,12HZ晶振。 TIMEL EQU 0E0H ;20ms,定时器0时间常数 TIMEH EQU 0B1H TEMPHEAD EQU 36H BITST DATA 20H TIME1SOK BIT BITST.1 TEMPONEOK BIT BITST.1 TEMPL DATA 26H TEMPH DATA 27H TEMPHC DATA 28H TEMPLC DATA 29H TEMODIN BIT P3.7 BORG 0000H LJMP START ORG 00BH LJMP T0IT 銻ST引脚撺?Y/譵: 数显温度计的设计与制作 30 ORG 100H START: MOV SP,#60H CLSMEM: MOV R0,#20H MOV R1,#60H CLSMEM1: MOV R0,#00H INC R0 DJNZ R1, CLSMEM1 MOV TMOD,#00100001B ;定时器0作方式1(16BIT) MOV TH0,#TIMEL MOV TL0,#TIMEH ;20ms SJMP INIT ERROR: NOP LJMP START NOP INIT: NOP SETB ET0 SETB TR0 SETB EA MOV PSW,#00H CLR TEMPONEOK LJMP MAIN 0 T0IT: PUSH PSW MOV PSW,#10H MOV TH0,#TIMEH MOV TL0,#TIMEL INC R7 CJNE R7,#32H,T0IT1 椒卤怼? ?V撼? 数显温度计的设计与制作 31 MOV R7,#00H SETB TIME1SOK ;1ms定时到标志 T0IT1: POP PSW RETI MAIN: LCALL DISP1 ;调用显示子程序 JNB TIME1SOK,MAIN CLR TIME1SOK ;测温每1s一次 JNB TIME1SK,MAIN2 ;上电时先先温度转换一次 LCALL READTEMP1 ;读出温度值子程序 LCALL CONVTEMP ;温度BCD码计算处理子程序 LCALL DISPBCD ;显示区BCD码温度值刷新子程序 LCALL DISP1 ;消闪烁,显示一次 MAIN2: LCALL READTEMP ;温度转换开始 SETB TEMPONEOK LJMP MAIN RESET DS18B20 INITDS1820: SETB TEMPDIN NOP NOP CLR TEMPDIN MOV R6,#0A0H ;DELAY 480us DJNZ R6, MOV R6,#0A0H DJNZ R6, SETB TEMPDIN MOV R6,#32H ;DELAY 70us 据 ?PS?彉蠋VO5? 数显温度计的设计与制作 32 DJNZ R6, MOV R6,#3CH LOOP1820: MOV C,TEMPDIN JC INITDS1820OUT DJNZ R6,LOOP1820 MOV R6,#064H ;DELAY 200us DJNZ R6, SJMP INITDS1820 RET INITDS1820OUT: SETB TEMPDIN RET 读DS18B20的程序,从DS18B20中读出一个字节的数据 READDS1820: MOV R7

温馨提示

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

评论

0/150

提交评论