机电一体化专业精品毕业论文基于单片机的四位显示温度计设计_第1页
机电一体化专业精品毕业论文基于单片机的四位显示温度计设计_第2页
机电一体化专业精品毕业论文基于单片机的四位显示温度计设计_第3页
机电一体化专业精品毕业论文基于单片机的四位显示温度计设计_第4页
机电一体化专业精品毕业论文基于单片机的四位显示温度计设计_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

目 录1 中文摘要12设计要求 23. 温度传感器的选择23.1 DS18B20 简单介绍 33.2 DS18B20 的性能特点33.3 DS18B20 的引脚及内部结构43.4 DS18B20 的工作原理73.5 DS18B20 的单线协议和命令 104 系统硬件电路的设计154.1主板电路154.2显示电路164.3 DS18B20温度传感器与单片机的接口电路165系统软件算法分析 175.1 软件设计175.2程序 186 调试及性能分析 227总结 238参考文献 239附录一控制源程序清单241 中文摘要随着时代的进步和发展,人类不断的需求,科技不断的进步。温度计所给人类带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高。由于老式温度计的精确度低,测量范围小,无法满足现代化生活:工业、教学、科研、旅游等等各个领域的需求。随着集成电路技术的发展,单片微型计算机的功能也不断增强,由于单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度计,它属于多功能温度计。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确等优点。该温度计以AT89S51为主控器,通过DS18B20来检测温度,并通过四位共阳极LED数码管以串口传送数据,实现温度显示。同时可以设置上下线报警温度,当温度不在设置范围内时,可以报警。数字温度计是单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线上可以挂很多这样的数字温度计,十分方便。本设计介绍了一种以单片机为主要控制器件,以DS18B20为温度传感器的新型数字温度计。主要包括硬件电路的设计和系统程序的设计。硬件电路主要包括主控制器,测温电路和显示电路等,主控制器采用单片机AT89S52,温度传感器采用美国DALLAS半导体公司生产的DS18B20,显示电路采用4位共阳极LED数码管以动态扫描法直读显示。由于采用了改进型智能温度传感器DS18B20作为检测元件,与传统的温度计相比,本数字温度计减少了外部的硬件电路,具有低成本和易使用的特点。DS18B20温度计还可以在高温报警、远距离多点测温控制等方面进行应用开发,具有很好的发展前景。关键词:单片机AT89S52,温度传感器,DS18B20,显示电路11 关于温度计背景温度是一种最基本的环境参数,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段:传统的分立式温度传感器模拟集成温度传感器智能集成温度传感器12 本课题研究的意义目前,国际上新型温度传感器正从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展。本设计利用智能集成温度传感器DS18B20,并以AT89S52单片机为控制器实现4位的温度测量装置。该装置适用于人民的日常生活和工、农业生产的温度测量与报警,实现对温度的监测。关键词:单片机;数字控制;温度计; DS18B20;AT89S512设计要求 1. 正确选择传感器。2. 分析出传感器电路。3. 具有四位显示功能。4. 正确编写出程序。5. 绘制相关电路图。6. 完成整个原理图。7. 毕业设计小结使用现有单片机最小的硬件电路,通过使用智能集成温度传感器,并对以此传感器用单片机为控制器构成的温度测量装置的工作原理及程序设计满足能够达到能够实时检测周围的温度。并通过LED数码管显示的功能。能够不间断的显示温度。3. 温度传感器的选择 温度传感器的种类众多,在应用与高精度、高可靠性的场合时 DALLAS(达拉斯)公司生产的 DS18B20 温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得 DS18B20 更受欢迎。本次设计,就是用单片机实现温度控制,传统的温度检测大多以热敏电阻为温度传感器,但热敏电阻的可靠性差,测量温度准确率低,而且必须经过专门的接口电路转换成数字信号才能由单片机进行处理。本次采用DS18B20数字温度传感器来实现温度模拟信号的采集。 3.1 DS18B20 简单介绍 该产品采用美国DALLAS公司生产的, DS18B20可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。 3.2 DS18B20 的性能特点 技术性能描述:l 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。l 测温范围 55125,固有测温分辨率0.5。l 支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现多点测温l 工作电源: 35V/DCl 在使用中不需要任何外围元件l 测量结果以912位数字量方式串行传送l 不锈钢保护管直径 6 l 适用于各种介质工业管道和狭小空间设备测温l 标准安装螺纹l 电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。 3.3 DS18B20 的引脚及内部结构 DS18B20内部结构主要由四部分组成:l 64位光刻ROM,l 温度传感器,l DS18B20的存储器 64 位(激)光刻 ROM 每只DS18B20 都有一个唯一的长达 64 位的编码。最前面 8 位是DS18B20单线系列的自身代编码(DS18B20 的编码是28h)。下面 48 位为连续的数字代码,是一个唯一的序列号。最后 8 位是以上 56 位的CRC 校验码。64 位 ROM 和 ROM 操作控制区允许 DS18B20 做为单线制器件并按照单线协议工作。只有建立了 ROM 操作协议,才能对 DS18B20 进行控制操作,ROM指令表如下:DS18B20 ROM指令表单线总线控制器必须首先提供 5 个 ROM 操作命令其中之一,成功进行一次 ROM 操作后,就可以对 DS18B20 进行特定的操作,总线控制器可以发出六个存储器和控制操作命令中的任一个。DS18B20的存储器包括:n 高速暂存器RAMn 可电擦除EEPROM高速暂存器是由9个字节的寄存器组成;l 第一和第二个字节是温度的显示位。l 第三和第四个字节是复制TH和TL,同时第三和第四个字节的数字可以更新;l 第五个字节是复制配置寄存器,同时第五个字节的数字可以更新;l 六、七、八三个字节是计算机自身使用。l 第九个字节,这个字节是对前面的八个字节进行校验。存储器的结构图如图4.6所示。 图4.6 存储器的结构图可电擦除EEPROM包括:u 温度触发器THu 温度触发器TLu 一个配置寄存器EEPROM存储器是非易失性存储器,能掉电保持,用来存放需要长期保存的数据,如报警温度上下限值,ds18b20共3位EEPROM,并在RAM斗存在镜像。能完整的确定一线端口的通讯,数字开始用写寄存器的命令写进寄存器,接着也可以用读寄存器的命令来确认这些数字。当确认以后就可以用复制寄存器的命令来将这些数字转移到可电擦除ROM中。当修改过寄存器中的数时,这个过程能确保数字的完整性。DS18B20外部电源的连接方式DS18B20可以使用外部电源VDD,也可以使用内部的寄生电源。当VDD端口接3.0V5.5V的电压时是使用外部电源;当VDD端口接地时使用了内部的寄生电源。无论是内部寄生电源还是外部供电,I/O口线要接5K左右的上拉电阻。连接图如图4.8、图4.9所示图4.8 使用寄生电源的连接图图4.9外接电源的连接图 3.4 DS18B20 的工作原理 (1)测温操作 DS18B20 通过一种片上温度测量技术来测量温度。DS18B20 是这样测温的:用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值。计数器被预置到对应于-55的一个值。如果计数器在门周期结束前到达0,则温度寄存器(同样被预置到-55 )的值增加,表明所测温度大于-55。 同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开始计数直到0,如果门周期仍未结束,将重复这一过程。斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨率。这是通过改变计数器对温度每增加一度所需计数的的值来实现的。因此,要想获得所需的分辨率,必须同时知道在给定温度下计数器的值和每一度的计数值。 DS18B20 的核心功能部件是它的数字温度传感器,它的分辨率可以配置为9、10、11 或12 位,出厂默认设置为12 位分辨率,它们对应的温度值分辨率分别为0.5、0.25、0.125 和0.0625 。温度信息的低位、高位字节内容中还包含了符号位S(正温度还是负温度)和二进制小数部分,其具体形式如下: 这是12 位分辨率的情况,如果配置为低的分辨率,则其中无意义位为0,实测温度和数字输出的对应关系如下表11-1 所示:(2)报警搜索操作 DS18B20 完成一次温度转换后,就拿温度值和存储在 TH 和 TL 中的值进行比较。因为这些寄存器是 8 位的,所以 912 位被忽略不计。TH 或 TL 的最高有效位直接对应 16 位温度寄存器的符号位。如果测得的温度高于 TH 或低于 TL,器件内部就会置位一个报警标志。每进行一次测温就对这个标识进行一次更新。当报警标志置位时,DS18B20 会对报警搜索命令有反应。这样就允许许多 DS18B20 并联在一起同时测温,如果某个地方的温度超过了限定值,报警的器件就会被立即识别出来并读取,而不用读未报警的器件。(4)CRC 发生器 DS18B20 中有8 位CRC 存储在64 位ROM 的最高有效字节中。总线控制器可以用64 位 ROM 中的前56 位计算出一个CRC 值,再用这个和存储在DS18B20 中的值进行比较,以确定 ROM 数据是否被总线控制器接收无误。CRC 计算等式如下:CRC=X8+X5+X4+1 DS18B20 同样用上面的公式产生一个8 位CRC 值,把这个值提供给总线控制器用来校验传输的数据。在任何使用 CRC 进行数据传输校验的情况下,总线控制器必须用上面的公式计算出一个CRC 值,和存储在DS18B20 的 64 位 ROM 中的值或DS18B20 内部计算出的8 位CRC 值(当读暂存器时,做为第9 个字节读出来)进行比较。CRC 值的比较以及是否进行下一步操作完全由总线控制器决定。当在 DS18B20 中存储的或由其计算的 CRC 值和总线控制器计算的值不相符时,DS18B20 内部并没有一个能阻止命令序列进行的电路。单线CRC 可以用一个由移位寄存器和XOR 门构成的多项式发生器来产生,见图11-9 。移位寄存器的各位都被初始化为 0。然后从系列编号的最低有效位开始,一次一位移入寄存器,8 位系列编码都进入以后,序列号再进入,48 位序列号都进入后,移位寄存器中就存储了CRC 值。移入8 位CRC 会使移位寄存器复0。 (5)存储器 DS18B20 的存储器结构示于图11-10,存储器由一个暂存RAM 和一个存储高低温报警触发值TH 和TL 的非易失性电可擦除E2RAM 组成。当在单线总线上通讯时,暂存器帮助确保数据的完整性。数据先被写入暂存器,这里的数据可被读回。数据经过校验后,用一个拷贝暂存器命令把数据传到非易性(E2)RAM 中。这一过程确保更改存储器时数据的完整性。 暂存器的结构为8 个字节的存储器。头两个字节包含测得的温度信息。第三和第四字节是TH 和TL 的易失性拷贝,每次上电复位时被刷新;第五和字节是配置寄存器的易失性拷贝,在上电复位时也会被刷新;接着的三个字节为内部计算使用;第九个字节为前面所有八个字节的CRC 检验值。(6)单线总线系统 单线总线系统包括一个总线控制器和一个或多个从机。DS18B20 是从机。关于这种总线分三个题目讨论:硬件结构、执行序列和单线信号(信号类型和时序)。单线总线只有一条定义的信号线;重要的是每一个挂在总线上的器件都能在适当的时间驱动它。为此每一个总线上的器件都必须是漏极开路或三态输出。DS18B20 的单总线端口(I/O 引脚)是漏极开路式的,内部等效电路见图11-11 。一个多点总线由一个单线总线和多个挂于其上的从机构成。单线总线需要一个约 5K 的上拉电阻。 单线总线的空闲状态是高电平。无论任何理由需要暂停某一执行过程时,如果还想恢复执行的话,总线必必须停留在空闲状态。在恢复期间,如果单线总线处于非活动(高电平)状态,位与位间的恢复时间可以无限长。如果总线停留在低电平超过480s,总线上的所有 器件都将被复位。 3.5 DS18B20 的单线协议和命令 通过单线总线端口访问DS18B20 的必须遵循如下的协议: DS18B20流程图(1)初始化 通过单线总线的所有执行(处理)都从一个初始化序列开始。初始化序列包括一个由总线控制器发出的复位脉冲和跟有其后由从机发出的应答脉冲。应答脉冲让总线控制器知道DS18B20 在总线上且已准备好操作。复位时序图(2)ROM 操作命令 一旦总线控制器探测到一个应答脉冲,它就可以发出5 个ROM 命令中的任一个。所有ROM 操作命令都是8 位长度。下面是这些命令:Read ROM 33h 这个命令允许总线控制器读到DS18B20 的8 位系列编码、唯一的序列号和 8 位 CRC 码。只有在总线上存在单只 DS18B20 的时候才能使用这个命令。如果总线上有不止一个从机,当所有从机试图同时传送信号时就会发生数据冲突(漏极开路连在一起形成相与的效果)。 Match ROM 55h 匹配ROM 命令,后跟64 位ROM 序列,让总线控制器在多点总线上定位一只特定的DS18B20 。只有和64 位ROM 序列完全匹配的DS18B20 才能响应随后的存储器操作命令。所有和 64 位 ROM 序列不匹配的从机都将等待复位脉冲。这条命令在总线上有单个或多个器件时都可以使用。 Skip ROM CCh 这条命令允许总线控制器不用提供64 位ROM 编码就使用存储器操作命令,在单点总线情况下右以节省时间。如果总线上不止一个从机,在 Skip ROM 命令之后跟着发一条读命令,由于多个从机同时传送信号,总线上就会发生数据冲突(漏极开路下拉效果相当于相与)。 Search ROM F0h 当一个系统初次启动时,总线控制器可能并不知道单线总线上有多少器件或它们的64 位ROM 编码。搜索ROM 命令允许总线控制器用排除法识别总线上的所有从机的 64 位编码。 Alarm Search ECh 这条命令的流程图和Search ROM 相同。然而,只有在最近一次测温后遇到符合报警条件的情况,DS18B20 才会响应这条命令。报警条件定义为温度高于TH 或低于 TL。只要DS18B20 不掉电,报警状态将一直保持,直到再一次测得的温度值达不到报警条件。 (3)存储器操作命令存储器操作命令如下所示: Write Scratchpad 4E 这个命令向 DS18B20 的暂存器中写入数据,开始位置地址 2。接下来写入的两个字节将被存到暂存器中的地址位置 2 和 3。可以在任何时刻发出复位命令来中止写入。Read Scratchpad BEh 这个命令读取暂存器的内容。读取将从字节0 开始,一直进行下去,直到字节8(第9 个字节,CRC)。如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。Copy Scratchpad 48h 这条命令把暂存器的内容拷贝到 DS18B20 的 E2 存储器里,即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20 又正在忙于把暂存器拷贝到 E2 存储器, DS18B20 就会输出一个“0” ,如果拷贝结束的话, DS18B20 则输出“1” 。如果使用寄生电源,总线控制器必须在这条命令发出后立即起动强上拉并最少保持10ms 。Convert T 44h 这条命令启动一次温度转换而无需其他数据。温度转换命令被执行,而后DS18B20 保持等待状态。如果总线控制器在这条命令之后跟着发出读时间隙,而 DS18B20 又忙于做时间转换的话,DS18B20 将在总线上输出“0” ,若温度转换完成,则输出“1” 。如果使用寄生电源,总线控制器必须在发出这条命令后立即起动强上拉,并保持 500ms 。Recall E2B8h 这条命令把报警触发器里的值拷回暂存器。这种拷回操作在 DS18B20 上电时自动执行,这样器件一上电暂存器里马上就存在有效的数据了。若在这条命令发出之后发出读时间隙,器件会输出温度转换忙的标识:“0”= 忙, “1”= 完成。Read Power Supply B4h 若把这条命令发给 DS18B20 后发出读时间隙,器件会返回它的电源模式:“0”= 寄生电源,“1”= 外部电源。控制命令图表(4)数据处理 DS18B20 需要严格的协议以确保数据的完整性。协议包括几种单线信号类型:复位脉冲、应答脉冲、写0、写 1、读 0 和读 1。所有这些信号,除应答脉冲外,都是由总线控制器发出的。一个复位脉冲跟着一个应答脉冲表明 DS18B20 已经准备好发送和接收数据(适当的 ROM 命令和存储器操作命令)。DS18B20 的数据读写是通过时间隙处理位和命令字来确认信息交换。写时间隙当主机把数据线从逻辑高电平拉到逻辑低电平的时候,写时间隙开始。有两种写时间隙:写 1 时间隙和写 0 时间隙。所有写时间隙必须最少持续 60s,包括两个写周期间至少 1s 的恢复时间。I/O 线电平变低后,DS18B20 在一个 15s 到 60s 的窗口内对 I/O 线采样。如果线上是高电平,就是写 1,如果线上是低电平,就是写 0。主机要生成一个写时间隙,必须把数据线拉到低电平然后释放,在写时间隙开始后的 15s 内允许数据线拉到高电平。主机要生成一个写 0 时间隙,必须把数据线拉到低电平并保持 60s。写时间隙时序图读时间隙当从 DS18B20 读取数据时,主机生成读时间隙。当主机把数据线从高高平拉到低电平时,写时间隙开始。数据线必须保持至少 1s;从 DS18B20 输出的数据在读时间隙的下降沿出现后 15s 内有效。因此,主机在读时间隙开始后必须停止把 DQ 脚驱动为低电平15s,以读取DQ 脚状态。在读时间隙的结尾,DQ 引脚将被外部上拉电阻拉到高电平。所有读时间隙必须最少 60s,包括两个读周期间至少 1s 的恢复时间。 读时间隙时序图 4 系统硬件电路的设计 4.1主板电路 4.2显示电路 4.3 DS18B20温度传感器与单片机的接口电路 5系统软件算法分析 5.1 软件设计 DS18B20 是单线器件,在一根数据线上实现数据的双向传输,这就需要对其各个控制命令有严格的时序要求。由于MB95FV100 部支持单线传输,因此必须采用软件的方法来模拟单线的时序。系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。 对单片机实现温度转换并读取其温度值的流程如图11-12 所示: 5.2程序u 主程序主程序的主要功能是设置传感器、负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度 ORG 0000H LJMP MAIN ORG 0030H A_BIT EQU 20H ;存放个位数变量 B_BIT EQU 21H ;存放十位数变量 FLAG EQU 38H ;DS18B20是否存在标志 DQ EQU P2.5 ;DQ引脚由P2.5控制 MAIN: ; ACALL RE_TEMP ;调用读取温度子程序 ACALL TURN ;数据转化子程序 ACALL DISPLAY ;显示子程序 JMP MAIN ;循环 RET ; u 读取温度数据读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写RE_TEMP: ;初始化及读取温度值 SETB DQ ACALL RESET_1820 ;调用复位子程序 JB FLAG, ST ;判断DS1820是否存在? RET ST: ;DS18B20存在 MOV A,#0CCH ;跳过ROM匹配 ACALL WRITE_1820 ;调用写入数据子程序 MOV A,#44H ;发出温度转换命令 ACALL WRITE_1820 ;调用写入数据子程序 ACALL RESET_1820 ;准备读温度前先复位 MOV A,#0CCH ;跳过ROM匹配 ACALL WRITE_1820 ;调用写入数据子程序 MOV A,#0BEH ;发出读温度命令 ACALL WRITE_1820 ;调用写入数据子程序 ACALL READ_1820 ;调用读取数据子程序 u 复位子程序RESET_1820: ;复位(有具体的时序要求) SETB DQ NOP CLR DQ ;主机发出复位低脉冲 MOV R1,#3 DLY: MOV R0,#107 DJNZ R0,$ DJNZ R1,DLY;然后拉高数据线 SETB DQ NOP NOP NOP; ;等待DS18B20回应 MOV R0,#25H T2: JNB DQ ,T3 DJNZ R0, T2 JMP T4 ; ;标志位FLAG1,表示DS1820存在T3: SETB FLAG JMP T5;标志位FLAG0,表示DS1820不存在 T4: CLR FLAG JMP T7; ;时序要求延时一段时间 T5: MOV R0,#117 T6: DJNZ R0,T6 ; T7: SETB DQ RET ; u 写入子程序WRITE_1820: MOV R2,#8 ;一共8位数据 CLR C ;C=0 WR1: CLR DQ ;总线低位,开始写入 MOV R3,#7 DJNZ R3,$ ;保持16微秒以上 RRC A ;把字节DATA分成8个BIT环移给C MOV DQ, C ;写入一个BIT MOV R3,#23 DJNZ R3,$ ;等待 SETB DQ ;重新释放总线 NOP DJNZ R2,WR1 ;写入下一个BIT SETB DQ RET ; u 读取子程序 READ_1820: ;将温度高位和低位读出 MOV R4,#2 ;读出两个字节的数据 MOV R1,#29H ;低位存入29H,高位存入28h RE0: MOV R2,#8 ;数据一共有8位 RE1: CLR C SETB DQ NOP NOP CLR DQ ;读前总线保持为低 NOP NOP NOP SETB DQ MOV R3,#9 RE2: DJNZ R3,RE2 ;延时18微妙 MOV C, DQ ;从总线读到一个BIT MOV R3,#23RE3: ; DJNZ R3,RE3 ;等待50微妙 RRC A ;把读得的位值环移给A DJNZ R2,RE1 ;读下一个BIT MOV R1,A DEC R1 DJNZ R4,RE0 RET ; u 数据转化子程序TURN: MOV A,29H MOV C,40H ;将28中的最低位移入C RRC A MOV C,41H RRC A MOV C,42H RRC A MOV C,43H RRC A MOV 29H,A RET ; u 温度显示子程序(动态显示)显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位DISPLAY: ;将29H中的十六进制数成10进制 MOV A,29H MOV B,#10 ;10进制/10=10进制 DIV AB MOV B_BIT, A ;十位在A MOV A_BIT, B ;个位在B MOV DPTR,#TABLE ;指定查表启始地址 MOV R0,#4DP1: MOV R1,#250 ;显示1000次LOOP: MOV A,A_BIT ;取个位数 MOVC A,A+DPTR ;查个位数的7段代码 MOV P0,A ;送出个位的7段代码 CLR P2.0 ;开个位显示 ACALL DELAY ; SETB P2.0 MOV A,B_BIT ;取十位数 MOVC A,A+DPTR ;查十位数的7段代码 MOV P0,A ;送出个十位的7段代码 CLR P2.1 ;开十位显示 ACALL DELAY ;显示1MS SETB P2.1 DJNZ R1,LOOP ;250次没完循环 DJNZ R0,DP1 ;4个250次没完循环 RET ; n 延时子程序DELAY: ; MOV R7,#80 DJNZ R7,$ RET ; u 代码表TABLE: ;数码管共阳极09代码 DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H ; END 程序结束 6 调试及性能分析 系统的调式以程序调试为主硬件调试比较简单,首先检查电路的焊接是否正确,然后可用万用表测试或通电检测软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主程序,读出温度程序子程序.温度转换命令子程序,计算温度子程序和显示刷新子程序等的编程及调试由于DS18B20与单片机采用的是串行通信 ,因此,对DS18B20进行读/写是必须严格保证读/写时序;是否将无法读取测量结果.本程序采用单片机汇编,用keil51编程并调试.性能测试可用制作温度计和已有的成品温度计同时进行观察比较.由于DS18B20的灵敏度很高,所以误差指标可以限制在+0.5度到-0.5度以内.DS18B20温度计还可以在高低温报警,远距离多点测温控制等方面进行应用和开发,但在实际设计中应注意下面问题:(1) DS18B20工作电流高达1.5mA,总线上挂接点较多且进行转换时要考虑增加总线驱动,可以用单片机端口在温度转换时道统一个MOSFET供电.(2)连接DS18B20的总线电缆事实有长度限制的,因此在用DS18B20进行长距离测温系统时,要充分考虑总线的分布电容和阻抗的匹配问题.7总结 经过两周毕业设计,终于完成了我的数字温度计的设计,虽然没有完全达到设计要求,但从心底里说,还是高兴的,高兴之余不得不深思呀!在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,举个例子,在做这个着手之前我一直在想一个问题,怎么才能把ds18b20的单线信号采集到单片机中去,我想到了用用单片机的串口来实现,但通过和庞智老师的指导后,最终采用了循环移位的方式来传数据,这给我真如点石成金的感觉。这样的算法处理得简直太巧妙了,这样处理过后单片I/O口的任何一位都可以用来和传感器通讯。给我的心得就是多做,多看些经典的电路,编好程序的前提必须要多亲自动手练。有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。8参考文献 1李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,19982赵建领.51系列单片机开发宝典.北京:电子工业出版社,20073阎石.数字电子技术基础(第三版). 北京:高等教育出版社,19894廖常初.现场总线概述J.电工技术,1999. 9附录一控制源程序清单 采用4位LED供阳显示器显示测温值,显示精度0.1度,测温范围-55度-+125度,用AT89CC2051单片机,12MHz晶振 ORG 0000H LJMP MAINORG 0030H*常数定义*/ A_BIT EQU 20H ;存放个位数变量 B_BIT EQU 21H ;存放十位数变量 FLAG EQU 38H ;DS18B20是否存在标志 DQ EQU P2.5 ;DQ引脚由P2.5控制 MAIN: ; ACALL RE_TEMP ;调用读取温度子程序 ACALL TURN ;数据转化子程序 ACALL DISPLAY ;显示子程序 JMP MAIN ;循环 主程序RE_TEMP: ;初始化及读取温度值 SETB DQ ACALL RESET_1820 ;调用复位子程序 JB FLAG, ST ;判断DS1820是否存在? RET ST: ;DS18B20存在 MOV A,#0CCH ;跳过ROM匹配 ACALL WRITE_1820 ;调用写入数据子程序 MOV A,#44H ;发出温度转换命令 ACALL WRITE_1820 ;调用写入数据子程序 ACALL RESET_1820 ;准备读温度前先复位 MOV A,#0CCH ;跳过ROM匹配 ACALL WRITE_1820 ;调用写入数据子程序 MOV A,#0BEH ;发出读温度命令 ACALL WRITE_1820 ;调用写入数据子程序 ACALL READ_1820 ;调用读取数据子程序 设置传感器 RET ; 读取温度数据RESET_1820: ;复位(有具体的时序要求) SETB DQ NOP CLR DQ ;主机发出复位低脉冲 MOV R1,#3 DLY: MOV R0,#107 DJNZ R0,$ DJNZ R1,DLY

温馨提示

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

评论

0/150

提交评论