毕业设计(论文)-基于DS18B20数字温度计的设计.doc_第1页
毕业设计(论文)-基于DS18B20数字温度计的设计.doc_第2页
毕业设计(论文)-基于DS18B20数字温度计的设计.doc_第3页
毕业设计(论文)-基于DS18B20数字温度计的设计.doc_第4页
毕业设计(论文)-基于DS18B20数字温度计的设计.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

成都理工大学毕业设计(论文)基于DS18B20数字温度计的设计 姓名: 学号: X 指导老师:摘 要文章介绍了单线数字温度传感器DS18B20的测量原理、特性以及在温度测量中的硬件和软件设计。讨论了单总线通信时序问题,最后以单总线器件DS18B20多点温度测量的应用为例,给出了单总线的数据读写方法。DS18B20用于多点测温时,同时将多个DS18B20挂在微处理器总线上采集数据,并通过串口传送至PC机。本文结合实际使用经验,介绍了DS18B20数字温度传感器在单片机控制下的硬件连接及软件编程,并给出了软件流程图。下位机实现温度的检测并提供标准RS232通信接口,芯片使用了ATMEL公司的AT89S52单片机和DALLAS公司的DS18B20数字温度传感器。该系统稳定性好,可应用于仓库测温、楼宇空调控制和生产过程监控等领域。关键词: DS18B20 测温 单总线Multi-points Temperature Measurement Based on DS18B20ABSTRCT: The theory and characteristics of DS18B20, the hardware and software design of the system were introduced in this article.The problem of the single-bus communication timing is discussed. Finally, the multi-point temperature measurement application and the way of the single-bus data transmission were proposed. Some DS18B20s were linked with MCU bus to collect data, and the data was sent to PC computer by the serial-port when DS18B20 was used for multi-point temperature measure. The hardware and software design of DS18B20 Digital Temperature Sensor which was controlled in the MCU were introduced and the Software flowchart was proposed by practical experience in this paper. PC and the system communicated though the Serial port.Because of its stability, it can be used in many fields.Keywords: DS18B20; Temperature Measurement; 1-wire 目 录摘 要I第1章 引 言11.1 选题背景11.2 系统概述1第2章 温度检测系统22.1 传感器部分22.2 主控制部分22.3 总体设计方案32.4 主控制器42.5 显示电路4第3章 DS18B20的知识及原理53.1 DS18B20的基本知识53.2 DS18B20测温原理53.3 DS18B20内部结构63.4 DS18B20工作过程93.4.1 DS18B20的命令93.4.2. DS18B20的时序103.5 DS18B20供电方式11第 4章 系统设计与实现134.1 系统整体硬件电路134.1.1 主板电路134.2 DS18B20与AT89S52硬件连接及软件编程134.3 DS18B20温度传感器与单片机的接口电路164.4 程序设计174.4.1 主程序174.4.2 读出温度子程序184.4.3 温度转换命令子程序194.4.4计算温度子程序204.4.5显示数据刷新子程序204.4.6数字温度计程序21第5章 调试及总结体会265.1 调试及结果265.2 总结体会26致 谢28参考文献2931 第 页第1章 引 言1.1 选题背景 温度是工业中非常关键的一项物理量,在农业、现代科学研究和各种高新技术的开发和研究中也是一个非常普遍和常用的测量参数。温度测量的原理主要是将随温度变化而变化的物理参数,如膨胀、电阻、电容、热电动势、磁性、频率、光学特性等通过温度传感器转变成电的信号或其他信号,然后再传给处理电路,最后转换成温度数值显示出来。传统的温度测量方法基本上是接触式的,主要有:热膨胀式温度计、电阻式温度计、热电偶式温度计等。这些接触式温度计的主要缺点是对传感器的耐热性能比较苛刻,所以对应的使用温度范围比较有限。它们的精度也大大限制了他们的应用领域。此外,由于这些测量方法大都是接触式的,会污染一些高纯度,高腐蚀性的测量对象。目前应用的比较广泛的非接触温度测量技术有红外非接触温度测量技术、单总线数字式温度测量技术等等。此外,激光测量温度技术基于彩色三基色的温度测量技术也开始成为温度测量的手段。本文将着重对数字式温度测量技术的测试原理、特点以及应用加以介绍。 本次毕业设计中采用单片机和集成式数字温度传感器作为主要芯片设计单点温度检测与控制系统。它利用单总线的特点可组建传感网络,方便实现多点温度的测量及控制。本系统的设计抗干扰性强、设计灵活方便并且适合在恶劣的环境下进行温度测量,所以设计意义较为深远。1.2 系统概述 本设计首先采用由一台计算机(PC微型计算机),一个DC-PROC实验箱进行实验。将实验箱上的电路接好后,对其进行编程,在通过Keil单片机软件将编好的程序下载到单片机上。最后将其中的数据送LED上显示。温度采集使用的是传感器DS18B20。DS18B20利用单总线的特点可以方便实现多点温度的测量,轻松的组建传感器网络,系统的抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进行现场温度测量。本系统可以应用在大型工业及民用常温多点监测场合。如粮食仓储系统、楼宇自动化系统、温控生产线之温度影像检测、医疗与健诊的温度测试、空调系统的温度检测、石化、机械等。第2章 温度检测系统温度检测系统有着共同的特点:测量点多、环境复杂、布线分散、现场离监控室远等。若采用一般温度传感器采集温度信号,则需要设计信号调理电路、A/D 转换及相应的接口电路才能把传感器输出的模拟信号转换成数字信号送到计算机处理。由于各种因素会造成检测系统较大的偏差,又因为检测环境复杂、测量点多、信号传输距离远及各种干扰的影响,会使检测系统的稳定性和可靠性下降。所以多点温度检测系统的设计的关键在于两部分:温度传感器的选择和主控单元的设计。温度传感器应用范围广泛、使用数量庞大,也高居各类传感器之首。2.1 传感器部分在多点测温系统中,传统的测温方法是将模拟信号远距离采样进行AD转换。而为了获得较高的测温精度,就必须采用措施解决由长线传输,多点测量切换及放大电路零点漂移等造成的误差补偿问题。采用数字温度芯片DS18B20测量温度,输出信号全数字化,便于单片机处理及控制。从而省去了传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用作工业测温元件,此元件线形较好。在0-100摄氏度时,最大线形偏差小于1摄氏度。DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89S52构成的温度测量装置输出温度的数字信号可直接与计算机连接。测温系统的结构就比较简单,体积也不大,且由于AT89S52可以带多个DSB1820,因此可以非常容易实现多点测量,从而轻松地组建传感器网络。采用温度芯片DS18B20测量温度,可以体现系统芯片化这个趋势。部分功能电路的集成使总体电路更简洁,搭建电路和焊接电路时更快。而且,集成块的使用,有效地避免外界的干扰,提高测量电路的精确度。所以集成芯片的使用将成为电路发展的一种趋势。毕业设计应用这一温度芯片,也是顺应这一趋势。2.2 主控制部分 此方案采用AT89S52八位单片机实现。单片机软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制。而且体积小,硬件实现简单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC机通信。运用主从分布式思想,由一台上位机(PC微型计算机),下位机(单片机)多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统,实现远程控制。另外AT89S52在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。2.3 总体设计方案方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应在将随被测温度变化的电压或电流采集过来进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路。方案二 根据方案一进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以非常容易想到采用一只温度传感器DS18B20,此传感器可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。方案二的总体设计框图温度计电路设计总体设计方框图如图1所示,控制器采用单片机8031,温度传感器采用DS18B20,用4位LED数码管实现温度数据显示。主 控 制 器LED显 示温 度 传 感 器单片机复位时钟振荡报警点按键调整图1 总体设计框图2.4 主控制器8031,P1口P3口对用户开放,时钟频率为6.0MHz,程序存储器和数据存储器统一编址,最多可达64k,其中4000H-5FFFH为程序存储区,供下载实验程序。所以在编写程序的时候,程序的起始地址为4000H。2.5 显示电路由4位共阳极LED数码管、位驱动电路、端输入电路组成,采用动态扫描的方式显示。其中该模块包括了4位LED数码管4个、9015位驱动器4个,还使用P0口采用电阻上拉。显示电路如图2所示(图2中所示为4位LED数码管)。 图2 温度计的显示电路第3章 DS18B20的知识及原理3.1 DS18B20的基本知识DS18B20是美国DALLAS公司推出的智能化数字式温度传感器,其内部使用了在板专利技术,全部传感元件及转换电路集成在形如一个三极管的集成电路内,封装形式如图3所示。与其它温度传感器相比,DS18B20具有以下技术特性:1.具有独特的单总线接口方式,DS18B20在与微处理器连接时仅需一条I/O口线就可实现微处理器与DS18B20的双向通信;2.支持多点组网功能,一条总线上可以同时挂接多个DS18B20,很方便地实现多点温度的检测;3.数字信号输出不需要信号放大和A/D转换等外围电路;4.测温范围-55+125,在-10+85时测温准确度为0.5;5.能提供912位二进制温度值输出,可通过编程决定输出位数;6.其工作电源既可采用寄生电源方式产生,也可在远端引入。电源电压范围为+3.0V+5.5V;7.用户可自行设定非易失温度报警上下限值TH和TL, DS18B20在完成温度转换后,所测得的温度值将自动与贮存在TH和TL内的触发值相比较,如果测温结果高于TH或低于TL, DS18B20内部的警告标志就会被置位,表示温度值超出了测量范围,同时还有报警搜索命令可以识别出温度超限的DS18B20。其中:VDD-供电端,GND-接地端,DQ-数据输入、输出端图3 DS18B20的封装形式3.2 DS18B20测温原理DS18B20的测温原理如图4所示,并没有采用传统的A/D转换原理,如逐次逼近法、双积分法和算术A/D等,而是运用了一种将温度直接转换为频率的时钟计数法。图4 DS18B20测温原理框图图4中低温度系数振荡器的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给减法计数器1。高温度系数振荡器随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。计数器1和温度寄存器被预置在-55所对应的基数值。计数器1对低温度系数振荡器产生的脉冲信号进行减法计数。当计数器1的预置值减到0时,温度寄存器中的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数振荡器产生的脉冲信号进行计数。如此循环,直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度,斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器1的预置值。3.3 DS18B20内部结构DS18B20主要由4部分组成:64位ROM、温度传感器、非易失性的温度报警触发器TH和TL及高速便笺式存储器,如图5所示。图5 DS18B20的内部结构框图1) 64位ROMDS18B20的64位ROM的结构如图6所示。图6 DS18B20的64位ROM的结构图其中前8位是产品类型编码,DS18B20固定为28H,接着的48位是每个器件的唯一序列号,最后8位是前56位的CRC校验码。ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。2) 高速暂存存储器DS18B20内部存储器如图7所示。它由RAM和非易失性可电擦写E2RAM组成。图7 DS18B20的高速暂存寄存器的存储分配图第04位在写操作时不予考虑,读出时总是1。第7位是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,即工作模式,用户不要去改动。R1、RO是可编程温度分辨率位。通过对这两位进行不同的编程,可设定不同的温度分辨率和最大转换时间,详见表1。由表1可见,设定的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要在分辨率和转换时间之间权衡考虑。DS18B20出厂时R1和RO均被配置为1,即工作在12位模式下。表1 利用R0、R1设定分辨率和最大转换时间当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第0,1字节。在执行读便笺RAM命令后,可将这两个字节的温度值传送给总线命令者。DS18B20工作在12位模式下,温度字节的位定义如图8所示。其中s为符号位,s为0时代表温度值为正,s为1时代表温度值为负。图8 DS18B20温度字节的位定义图当DS18B20工作模式依次选择11位、10位和9位时,末尾为零的低位数就分别对应于一位、两位和三位。举例说明,当工作模式选择10位时,最低两位(即2-4位和2-3位)均为0,总有效位变成10位。其中,数字位占9位,符号位占1位。对应的温度计算:当符号位S=0时,直接将二进制数转换为十进制,乘以相应的温度分辨率即可。当S=1时,先把16位二进制数求补码后转化成十进制数,然后乘以相应的温度分辨率并在前面加上负号即可。DS18B20工作在12位分辨力时,初始值默认为+85,部分温度与数字输出的对应关系见表2。表2 DS18B20温度与数字输出对应关系3) 非易失性温度报警触发器TH和TL非易失性温度报警触发器TH和TL,可通过软件写入用户设定的报警上、下限。在完成温度转换后,DS18B20就把测得的温度值T同TH、TL作比较。若TTH或TTL,则将该器件的报警标志置位,并对总线命令者发出的报警搜索命令作出响应。3.4 DS18B20工作过程每次对DS18B20的访问,都必须按下面工作流程:初始化ROM操作指令存储器操作指令数据处理。DS18B20为用户提供了5个ROM命令和6个存储器命令。而具体命令信息的传送则主要通过初始化时序、读时序、写时序三个基本时序单元的组合来实现。3.4.1 DS18B20的命令 DS18B20命令如表3所示表3 DS18B20的命令及代码说明3.4.2. DS18B20的时序初始化时序:总线上所有操作都是从初始化开始的。主机往总线发送一个复位脉冲最短为480s的低电平信号,接着主机释放总线进入接收状态。单总线经过4.7k的上拉电阻被拉至高电平状态。DS18B20在检测到总线上升沿之后,等待1560s接着发出60240s的低电平信号作为存在脉冲响应。初始化时序如图9所示,其图例同样适用于写时序和读时序。图9 DS18B20复位脉冲和应答脉冲时序图写时序:总线命令者在与DS18B20通信中下传数据和命令时,需要遵照写时序。主机将数据线从高电平拉至低电平,产生写起始信号。主机在15s之内将所需写的位送到数据线上,DS1B20在1560s对数据线进行采样,如果采样为高电平就写1,如果为低电平就写0。在开始另一个写周期前必须有1 s以上的高电平恢复时间。写时序如图10所示。图10 DS18B20写时序图读时序:当读取DS18B20上传的数据时,需要用到读时序。主机将数据线从高电平拉至低电平1s以上,再使数据线升为高电平,从而产生读起始信号。主机在读时间片下降沿之后15s内完成读位。每个读周期最短的持续期为60s。各个读周期之间也必须有1s以上的高电平恢复时间。读时序如图11所示。图11 DS18B20读时序图3.5 DS18B20供电方式DS18B20两种供电方式:寄生电源和外接电源方式,连接方法如图12(a) (b)所示。 (a)寄生电源供电方式(b)外接电源供电方式图12 DS18B20两种供电方式寄生电源方式下,DS18B20的VDD端和GND端都接地,只用一根单总线和主机通信及获取电源。单总线上接4.7k的上拉电阻和DS18B20芯片的寄生电容形成充放电电路。外接电源方式下,DS18B20的VDD端外接一个+3+5V电源,GND端接地。可见寄生电源方式可以省掉一根电源线,大大较低了布线的成本。但是当总线上节点较多且同时进行温度转换时,容易造成供电不足且所需的转换时间较长。外接电源方式稳定可靠,测量速度较快。所以本系统采用外接电源供电方式。第 4章 系统设计与实现4.1 系统整体硬件电路4.1.1 主板电路系统整体硬件电路包括传感器数据采集电路、温度显示电路、上下限报警调整电路、单片机主板电路等。电路中有三个独立式按键可以分别调整温度计的上下限报警设置。蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声。同时LED数码管将没有被测温度值显示,这时可以调整报警上下限,从而测出被测的温度值。4.2 DS18B20与AT89S52硬件连接及软件编程前面已经提到过单总线系统由一个总线命令者和多个从者构成。前面对从者单总线器件DS18B20作了详细介绍,本节主要讨论微控制器与DS18B20的可靠硬件连接及其软件编程。微控制器在本系统中起着承上启下的作用,具有重要的地位。本系统微控制器采用AT89S52,它有两个最主要的功能:(1)控制单总线的运行,读取DS18B20所转换的温度并存储在RAM中。(2)通过RS-232总线与PC进行串行通信。由于DS18B20的单总线特性使得总线命令者的一根I/O口线上可以挂接多个DS18B20。AT89S52与DS18B20的硬件连接电路如图13所示。图13 DS18B20与AT89S52的连接电路图13中P1.0 I/O口线作为1条单总线的数据线。总线上挂接3个DS18B20,这样一个单片机可以控制测量3个测点的温度,而且又能满足多点温度测量的需要。AT89S52的软件编程单片机必须有相应的软件才能工作。依据前面介绍的DS18B20的命令及时序可以对单片机进行编程。单片机有3个基本接口子程序,分别是初始化子程序、读子程序和写子程序。编写子程序的基本方法是严格按照DS18B20的时序要求。各子程序流程图如图14。 (a)复位子程序 (b)写子程序 (c)读子程序图14 初始化子程序、读子程序、写子程序 需要说明的是,系统中没有采用发搜索ROM命令来搜索所有在线的温度传感器,而是在系统开发板上设计了专门电路。这个电路通过读ROM命令离线可以读出需要用到的DS18B20的ROM序列号。这样做有下列好处:节约了在线逐个搜索ROM编码所用的时间;简化了编程;可以事先匹配好矩形测量网络,方便读取温度数据;当系统工作过程中需要更换传感器时,方便地读出其ROM序列号,使系统迅速恢复正常。读取ROM序列号时,要求单总线上只能有一个DS18B20。系统设计读序列号时的单总线为P1.0,读取完毕后通过串口发送出去并显示。读取ROM序列号的流程图如图15所示。图15 读取ROM序列号流程图在实际应用中需合理安排单片机的RAM空间。因为每个DS18B20的ROM序列号要占用8个字节,而且读取的温度数据也占两个字节。将一条单总线上3个DS18B20的ROM序列号按照它们在矩形测量网络上的行列号顺序存储在单片机的RAM中。4.3 DS18B20温度传感器与单片机的接口电路DS18B20可以采用两种方式供电,一种是采用电源供电方式。此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式。如图16 所示单片机端口接单线总线。为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。 图16 DS18B20与单片机的接口电路4.4 程序设计系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序、显示数据刷新子程序等。4.4.1 主程序主程序的主要功能是负责温度的实时显示、读出,并处理DS18B20的测量的当前温度值。每1s温度测量进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图17所示。初始调用显示子程序1S到?初次上电读出温度值温度计算处理显示数据刷新发温度转换开始命令NYNY 图17 主程序流程图4.4.2 读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节。在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图18所示Y发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNY 图18读温度流程图4.4.3 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令。采用12位分辨率时转换时间约为750ms。在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如图19所示发DS18B20复位命令发跳过ROM命令发温度转换开始命令 结束 图19 温度转换流程图4.4.4计算温度子程序 开始温度零下?温度值取补码置“”标志计算小数位温度BCD值 计算整数位温度BCD值 结束置“+”标志NY计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图20所示。 图20计算温度流程图4.4.5显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作。当最高显示位为0时将符号显示位移入下一位。程序流程图如图21。温度数据移入显示寄存器十位数0?百位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号) 结束NNYY图21显示数据刷新流程图4.4.6数字温度计程序;-读出转换后的温度值GET_TEMPER:SETB DQ ;定时入口BCD:LCALL INIT_1820JB FLAG1,S22LJMP BCD ;若DS18B20不存在则返回S22:LCALL DELAY1MOV A,#0CCH ; 跳过ROM匹配-0CCLCALL WRITE_1820MOV A,#44H ; 发出温度转换命令LCALL WRITE_1820NOPLCALL DELAYLCALL DELAYCBA:LCALL INIT_1820JB FLAG1,ABCLJMP CBAABC:LCALL DELAY1MOV A,#0CCH ; 跳过ROM匹配LCALL WRITE_1820MOV A,#0BEH ; 发出读温度命令LCALL WRITE_1820LCALL READ_18200 READ_1820RET;-读DS18B20的程序,从DS18B20中读出一个字节的数据READ_1820:MOV R2,#8RE1:CLR CSETB DQNOPNOPCLR DQNOPNOPNOPSETB DQMOV R3,#7DJNZ R3,$MOV C,DQMOV R3,#23DJNZ R3,$RRC ADJNZ R2,RE1RET;-写DS18B20的程序WRITE_1820:MOV R2,#8CLR CWR1:CLR DQMOV R3,#6DJNZ R3,$RRC AMOV DQ,CMOV R3,#23DJNZ R3,$SETB DQNOPDJNZ R2,WR1SETB DQRET;-读DS18B20的程序,从DS18B20中读出两个字节的温度数据READ_18200:MOV R4,#2 ; 将温度高位和低位从DS18B20中读出MOV R1,#36H ; 低位存入36H(TEMPER_L),高位存入35H(TEMPER_H)RE00:MOV R2,#8RE01:CLR CSETB DQNOPNOPCLR DQNOPNOPNOPSETB DQMOV R3,#7DJNZ R3,$MOV C,DQMOV R3,#23DJNZ R3,$RRC ADJNZ R2,RE01MOV R1,ADEC R1DJNZ R4,RE00RET;-将从DS18B20中读出的温度数据进行转换TEMPER_COV:MOV A,#0F0HANL A,TEMPER_L ; 舍去温度低位中小数点后的四位温度数值SWAP AMOV TEMPER_NUM,AMOV A,TEMPER_LJNB ACC.3,TEMPER_COV1 ; 四舍五入去温度值INC TEMPER_NUMTEMPER_COV1:MOV A,TEMPER_HANL A,#07HSWAP AADD A,TEMPER_NUMMOV TEMPER_NUM,A ; 保存变换后的温度数据LCALL BIN_BCDRET;-DS18B20初始化程序INIT_1820:SETB DQNOPCLR DQMOV R0,#80HTSR1:DJNZ R0,TSR1 ; 延时SETB DQMOV R0,#25H ;96US-25HTSR2:DJNZ R0,TSR2JNB DQ,TSR3LJMP TSR4 ; 延时TSR3:SETB FLAG1 ; 置标志位,表示DS1820存在LJMP TSR5TSR4:CLR FLAG1 ; 清标志位,表示DS1820不存在LJMP TSR7TSR5:MOV R0,#06BH ;200USTSR6:DJNZ R0,TSR6 ; 延时TSR7:SETB DQRET;-重新写DS18B20暂存存储器设定值RE_CONFIG:JB FLAG1,RE_CONFIG1 ; 若DS18B20存在,转RE_CONFIG1RETRE_CONFIG1:MOV A,#0CCH ; 发SKIP ROM命令LCALL WRITE_1820MOV A,#4EH ; 发写暂存存储器命令LCALL WRITE_1820MOV A,#00H ; TH(报警上限)中写入00HLCALL WRITE_1820MOV A,#00H ; TL(报警下限)中写入00HLCALL WRITE_1820MOV A,#7FH ; 选择12位温度分辨率LCALL WRITE_1820RET 第5章 调试及总结体会5.1 调试及结果 通过DS18B20(第2引脚)与单片机(AT89S52的P1.0口)的接口,单片机把16位的温度数字量读到寄存器中,然后把16进制的带符号温度值转化成10进制带符号温度,最后通过LED显示模块在数码管上显示。通过调试,在LED上显示了018.5的字样,表示当时的室温是正18.5度。由于器件误差的存在和无法进行温度的标定,因此当时的温度应该比18.5度高。测试中,共用了4位数码管,包括符号位,有百位,十位,个位带小数点,十分位。能显示的最小刻度温度值为0.5度。在调试中遇到了一些问题,包括在焊电路板的过程中以及在后续编程并将程序烧入电路板的时候的一些情况做一个总结。首先,在焊电路板的时候由于操作的失误有的时候存在一些虚焊、短焊的情况发生,在焊接三个传感器的基座的时候电路板背面的线需要将三点连成一条线,在焊接的时候先将三个短线依次逐点焊接,由于线很短,结果就造成虚焊的问题,后来将一条整线焊上,将此问题解决。然后就是在焊传感器的时候,将三角座的插头和传感器相连焊在一起,由于缺乏经验,在焊的时候就造成焊接插头用焊锡过多,以至于不能插入基座。在编程以及结合上位机调试的过程中,程序的运行一直很良好,但是一但下载到目标板就不能正常在串口收到数据。后来检查,是由于串口程序编写出错,串口程序的发送并没有循环发送,后修改串口程序,再按照传感器的转换以及读写时序对程序进行一些延时上的调整,后得到正确的串口返回数据。但并没有加入传感器编号的发送,又对程序加入传感器的编号发送,得到正确理论测量结果。通过这次的毕业设计在焊接以及软件的制作方面都得到了很大的提高,设计过程中存在的一些问题在以后的工作中会多加注意。5.2 总结体会经过差不多一个月的时间,终于完成了数字温度计的设计,虽然没有完全达到设计目标,但毕竟把设计实物做了出来,完成了部分基本功能。在本次设计的过程中,出现很多的问题,虽然以前还做过这样的设计,但这次设计却长进更多。单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但写好一个程序并不是一件简单的事。举个例子,以前写的那几次,数据加减时,用的都是BCD码,这一次,全部用的都是16进制的数直接加减。通过本次毕业设计,对三年来学习过的知识比如:电路、数、模电子技术、单片机技术、自动

温馨提示

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

评论

0/150

提交评论