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

下载本文档

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

文档简介

沈阳工业大学本科毕业设计(论文) i 摘要 温度是一种最基本的环境参数,人们生活与环境温度息息相关,在工 业生产过程中需要实时测量温度,在工业生产中也离不开温度的测量,因 此研究温度的测量方法和控制具有重要的意义。 本论文介绍了一种以单片机12为主要控制器件,以 ds18b20345为 温度传感器的新型数字温度计。主要包括硬件电路的设计和系统程序的设 计。硬件电路主要包括主控制器,测温控制电路和显示电路等,主控制器 采用单片机 stc89c52,温度传感器采用美国 dallas 半导体公司生产的 ds18b20,显示电路采用 8 位共阴极 led 数码管6,74hc5957为驱动的动 态扫描直读显示。系统程序主要包括主程序,测温子程序和显示子程序等。 ds18b20 新型单总线数字温度传感器是 dallas 公司生产的单线数字温度 传感器,集温度测量和 a /d 转换于一体 ,直接输出数字量,具有接口简单、 精度高、抗干扰能力强、工作稳定可靠等特点。 由于采用了改进型智能温度传感器 ds18b20 作为检测元件,与传统的 温度计相比,本数字温度计减少了外部的硬件电路,具有低成本和易使用 的特点。ds18b20 温度计还可以在高温报警、远距离多点测温控制等方面 进行应用开发,具有很好的发展前景。此外,还介绍了系统的调试和性能 分析。 关键词:单片机关键词:单片机;stc89c52;stc89c52;温度传感器温度传感器;ds18b20;ds18b20;单总线单总线 ii the design of ds18b20 digit thermometer abstract temperature is a basic parameters of the environment, peoples lives and the environment are closely related to temperature. in the course of industrial production immediate need for temperature measurement in industrial production has to do with temperature measurement, the study of the temperature measurement and control is of great significance. the paper introduced one kind new digital thermometer that take the micro controller unit as the primary control component and take ds18b20 as the temperature sensor. mainly included the design of the hardware electric circuit and the design of the system program .the hardware electric circuit mainly included the master controller, the temperature measured electric circuit and the display circuit and so on, the master controller used micro controller unit stc89c52, the temperature sensor used ds18b20 which the american dallas semiconductor company produces, the display circuit used 8 altogether anodes led numerical code tube by the dynamic scanning method straight to read the demonstration.uln2803a- driven dynamic scan showed straight time. temperature control circuit from temperature sensors and preset temperature value compared alarm circuit components, when measured temperature greater than preset temperature value, issued warning signal that the bright light emitting diodes. the system program mainly included the master routine, the temperature subroutine, the data renovates subroutine and so on. ds18b20 is a digital temperature sensor of single bus .it is producted by dallas cooperation . ds18b20 assembles temperature measure and a /d converter, exports digital signal directly, operation easily, better precise, protecting disturb, running steably and so on. becausused the advanced version intelligence temperature sensor ds18b20 as the examine part, compared with the traditional thermometer, this digital thermometer reduced the exterior hardware electric circuit, has characteristic that the low cost and was easy to use. the ds18b20 thermometer also may used to the high 沈阳工业大学本科毕业设计(论文) iii temperature warning, the long-distance range multi- spots temperature measured aspect and so on temperature control carries on the application development, has the very good prospects for development. in addition, introduced the system debugging and the performance analysis. keywords: microcontroller unit ; stc89c52; temperature sensor; ds18b20; 1-wire 沈阳工业大学本科毕业设计(论文) iv 目录目录 摘要 i abstract ii 第一章 设计任务及方案分析 1 1.1 设计任务及要求1 1.2 设计总体方案及方案论证1 1.3 温度测量的方案与分析1 1.31 芯片选择 .1 1.32 实现方法简介 .2 1.33 方案设计 .2 第二章 芯片简介 4 2.1 stc89c52 芯片简介 4 2.11 引脚功能说明 .4 2.2 ds18b20 简介 .7 2.21 芯片简介 .7 2.22 ds18b20 外形和内部结构.8 2.24 ds18b20 的工作时序.11 2.25 ds18b20 与单片机的典型接口设计12 226 ds18b20 的各个 rom 命令 .13 2.3 74hc595 简介.15 2.31 芯片简介 15 2.32 74hc595 特点:.15 2.33 引脚图及各引脚功能.16 第三章 系统硬件电路的设计 .17 3.1 主控制电路和测温控制电路原理图 .17 3.2 驱动电路与显示电路模块原理图 .17 第四章 软件编程与功能调试 .19 沈阳工业大学本科毕业设计(论文) v 4.2 系统软件设计.19 4.2.1 系统软件设计整体思路.19 4.2.2 系统程序流图 .20 4.3 系统的程序.23 第四章 仿真分析与实物制作 .51 4.1 protues 软件简介 .51 4.2 实物制作.51 第五章 总结 .52 致谢 53 沈阳工业大学本科毕业设计(论文) 1 第一章 设计任务及方案分析 1.1 设计任务及要求 设计一个以单片机为核心的温度测量系统,可实现的功能为: (1)测量温度值精度为1。 (2)系统允许的误差范围为 1以内。 (3)系统可由用户预设温度值,测温范围为55125。 1.2 设计总体方案及方案论证 在日常生活及工农业生产中经常要用到温度的检测及控制,传统的测温元 件有热电偶和热点阻。而热电偶和热电阻测出的一般都是电压,再转换成对应 的温度,需要比较多的外部硬件支持,硬件电路复杂,软件调试复杂,制作成 本高。 本数字温度计设计采用美国 dallas 半导体公司继 ds18b20 之后推出的 一种改进智能温度传感器 ds18b20 作为检测元件,测温范围为 55125,最大分辨率可达 0.0625。ds18b20 可以直接读出被测量 的温度值,而采用 3 线制与单片机相连,减少了外部的硬件电路,具有低成本 和易使用的特点。 按照系统设计功能的要求,确定系统由 5 个模块组成:主控制器 stc89c52,温度传感器 ds18b20,驱动显示电路。数字温度计总体电路框图 如图 1-1 所示。 沈阳工业大学本科毕业设计(论文) 2 图 1-1 总体电路图 ds18b20 传感器 显示电 路 stc89c52 1.3 温度测量的方案与分析 1.31 芯片选择 本设计的测温系统采用芯片 ds18b20, ds18b20 是 dallas 公司的最新 单线数字温度传感器,它的体积更小、适用电压更宽、更经济,ds18b20 是世 界上第一片支持“一线总线”接口的温度传感器,具有一线总线独特而且经济 的特点。采用智能温度传感器 ds18b20 作为检测元件,测温范围为 55125,最大分辨率可达 0.0625。ds18b20 可以直接读出被测量 的温度值,而且采用 3 线制与单片机相连,减少了外部的硬件电路,具有低成 本和易使用的特点。 1.32 实现方法简介 ds18b20 采用外接电源方式工作,一线测温的一线与 stc89c5289的 p3.7 连并加上上拉电阻使其工作,测出的数据存放在寄存器 10h-12h 中,将数据 经过 bcd 码转换后送 led 显示。具体实现步骤见软件设计章节。 1.控制部分 单片机 stc89s52 具有低电压供电和体积小等特点,四个端口只需要两个口 就能满足电路系统的设计需要,很适合便携手持式产品的设计使用,系统应用 三节电池供电。 2. 显示部分 显示电路采用 6 位共阴 7 段 led 数码管,采用 74hc595 移位寄存器进行驱 动,其中一个数码管显示通道数,另外 5 个数码管显示该通道的温度值,实现 实时 测量。 沈阳工业大学本科毕业设计(论文) 3 3. 温度采集部分 ds18b20 温度传感器是美国 dallas 半导体公司最新推出的一种改进型智 能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温。这 一部分主要完成对温度信号的采集和转换工作,由 ds18b20 数字温度传感器及 其与单片机的接口部分组成。数字温度传感器 ds18b20 把采集到的温度通过数 据引脚传到单片机的 p1.0 口,单片机接受温度并存储。此部分只用到 ds18b20 和单片机,硬件很简单方案设计 。 1.33 方案设计 方案一: p1.0-p1.7 各与一个 ds18b20 相连,实现 8 通道自动温度检测系 统;其中一个数码管显示通道号,另外五个显示温度。 方案二:p2.5 与两个 ds18b20 相连,p2.6 与另外两个 ds18b20 相连。用 一个开关显示不同通道的温度。其中显示部分用 max72191011驱动 8 个数码 管。方案比较:虽然方案二硬件系统比较简单,但是软件部分比较复杂。另外 鉴于现在的水平,故选择比较简单的方案一。 沈阳工业大学毕业设计(论文) 4 第二章 芯片简介 2.1 stc89c52 芯片简介 stc89c52 是美国 atmel 公司生产的低电平,高性能 cmos 8 位单片机,片 内含 8k bytes 的可反复擦写的只读程序存储器(perom)和 256 bytes 的随机存取 数据存储器(ram ),器件采用 atmel 公司的高密度、非易失性存储技术生产, 与标准 mcs-51 指令系统及 8052 产品引脚兼容,片内置通用 8 位中央处理器 (cpu)和 flash 存储单元,32 个可编程 i/o 口线, 3 个 16 位定时/计数器, 低 功耗空闲和掉电模式。功能强大的 stc89c52 单片机适合于许多较为复杂控制 应用场合。 2.11 引脚功能说明 (1)vcc:电源电压 (2)gnd:地 (3) p0 口:p0 口是一组 8 位漏极开路型双向 i/o 口,也即地址/数据总线复 用口。作为输出口用时,每位能吸收电流的方式驱动 8 个 ttl 逻辑门电路,对 端口 p0 写“1”时可作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8 位) 和数据总线复位,在访问期间激活内部上拉电阻。 (4)p1 口:p1 是一个带内部上拉电阻的 8 位双向 i/o 口,p1 的输出缓冲级可 驱动(吸收或输出电流)4 个 tte 逻辑门电路。对端口写“1” ,通过内部的上拉 电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上 拉电阻,某个引脚被外部信号拉低时会输出一个电流(ill)。 与 at89c51 不同之处是,p1.0 和 p1.1 还可分别作为定时/计数器 2 的外部 计数输入(p 1.0/t2)和输入(p 1.1/t2ex ),参见表 4-1。 flash 编程和程序校验期间,p1 接收低 8 位地址。 表 2-1 p1.0 和 p1.1 的第二功能 引 脚 号 功能特性 p1.0 t2(定时/计数器 2 外部计数脉冲输入) ,时钟输出 p1.1 t2ex(定时/计数 2 捕获/重装载触发和方向控制) (5)p2 口:p2 是一个带有内部上拉电阻的 8 位双向 i/o 口,p2 的输出缓冲级 沈阳工业大学本科毕业设计(论文) 5 可驱动(吸收或输出电流)4 个 ttl 逻辑门电路。对端口 p2 写“1” ,通过内部的 上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存 在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(ill)。 在访问外部程序存储器或 16 位地址的外部数据存储器(例如执行 movx dptr 指令)时,p2 口送出高 8 位地址数据。在访问 8 位地址的外部数据存储 器(如执行 movx ri 指令)时,p2 口输出 p2 锁存器的内容。 (6)p3 口:p3 口是一组带有内部上拉电阻的 8 位双向 i/o 口。p3 口输出缓冲 级可驱动(吸收或输出电流)4 个 ttl 逻辑门电路。对 p3 口写入“1”时,它们 被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的 p3 口将用上拉 电阻输出电流(ill)。 p3 口除了作为一般的 i/o 口线外,更重要的用途是它的第二功能,如表 4- 2 所示。 (7)rst:复位输入。当振荡器工作时,rst 引脚出现两个机器周期以上高 电平将使单片机复位。 表 2-2 p3 口的第二功能 端口引 脚 第二功能 p3.0 rxd(串行输入口) p3.1 txd(串行输出口) p3.2 (外中断 0)int0 p3.3 (外中断 1)int1 p3.4 t0(定时/计数 0) p3.5 t1(定时/计数 1) p3.6 (外部数据存储器写选通)wr p3.7 (外部数据存储器读选通)rd (8)/vpp:外部访问允许。欲使 cpu 仅访问外部程序存储器(地址为 0000h-ea ffffh ) 。端必须保持低电平(接地)。需注意的是:如果加密位 lb1 被编程,ea 复位时内部会锁存端状态。ea 如端为高电平(接 vcc 端),cpu 则执行内部程序存储器中的指令。ea flash 存储器编程时,该引脚加上+12v 的编程允许电源 vpp,当然这必须 是该器件是使用 12v 编程电压 vcc 。 沈阳工业大学本科毕业设计(论文) 6 (9)xtal1: :振荡器反相放大器的及内部时钟发生器的输入端。 (10)xtal2:振荡器反相放大器的输出端。 (11)数据存储器: stc89c52 有 256 个字节的内部 ram,80h-ffh 高 128 个字节与特殊功能寄存 器(sfr)地址是重叠的,也就是高 128。 字节的 ram 和特殊功能寄存器的地址是相同的,但在物理上它们是分开的。 当一条指令访问 7fh 以上的内部地址单元时,指令中使用的寻址方式是不 同的,也即寻址方式决定是访问高 128 字节。 ram 还是访问特殊功能寄存器。如果指令是直接寻址方式则为访问特殊功 能寄存器。 (12)中断: stc89c52 共有 6 个中断向量:两个外中断(int0 和 int1) ,3 个定时器中 断(定时器 0, 1, 2)和串行口中断。 (13)时钟振荡器: stc89c52 中有一个用于构成内部振荡器的高增益反相放大器,引脚 xtal1 和 xtal2 分别是该放大器的输入端和输出端。 这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振 荡器,振荡电路参见图 4-1(a)图所示。 外接石英晶体(或陶瓷谐振器)及电容 c1、c2 接在放大器的反馈回路中 构成并联振荡电路,对外接电容 c1、c2 虽然没有十分严格的要求,但电容容 量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度 及温度稳定性,如果使用石英晶体,我们推荐电容使用 30pf 士 10pf,而如果 使用陶瓷谐振器,建议选择 40pf 士 l0pf。 (14) 单片机最小系统 要想使单片机正常工作单片机最少包含的部分。如下图: 沈阳工业大学本科毕业设计(论文) 7 图 2-1:最小系统 2.2 ds18b20 简介 2.21 芯片简介 (1) 适应电压范围更宽,电压范围:3.0 v5.5v,在寄生电源方式下可由 数据线供电。 (2) 独特的单线接口方式,ds18b20 在与微处理器连接时仅需要一条口线即 可实现微处理器与 ds18b20 的双向通讯。 (3) ds18b20 在使用中不需要任何外围元件,全部传感元件及转换电路集成 在形如一只三极管的集成电路内。 (4) 测温范围55125,在-10+85时精度为0.5。 (5) 可编程的分辨率为 912 位,对应的可分辨温度分别为 0.5、0.25、 0.125和 0.0625,可实现高精度测温。 沈阳工业大学本科毕业设计(论文) 8 (6) 在 9 位分辨率时最多在 93.75ms 内把温度转换为数字,12 位分辨率时最 多在 750ms 内把温度值转换为数字,速度更快。 (7) 测量结果直接输出数字温度信号,以“一线总线”串行传送给 cpu,同 时可传送 crc 校验码,具有极强的抗干扰纠错能力。 (8) 负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。 2.22 ds18b20 外形和内部结构 ds18b20 内部结构如图 2-2 所示,主要由 4 部分组成:64 位 rom、温度传 感器、非挥发的温度报警触发器 th 和 tl、配置寄存器。ds18b20 的外形及管 脚排列如 2-3 及引脚定义如表 2-1. 图 2-2 ds18b20 内部结构 c i/o vdd 64 位 rom 和单线 接 口 高速缓存 存储器 存储器和控制器 8 位 crc 生成器 温度传感器 低温触发器 tl 高温触发器 th 配置寄存器 电 源 检 测 沈阳工业大学本科毕业设计(论文) 9 图 2-3 ds18b20 的管脚排列 表 2-1 ds18b20 引脚定义: 序号名称引脚功能描述 1gnd 地信号 2dq 数据输入/输出引脚。开漏单总线接口引脚。当被用 着在寄生电源下,也可以向器件提供电源。 3vdd 可选择的 vdd 引脚。当工作于寄生电源时,此引脚必 须接地。 (1) 64 位 rom rom 中的 64 位序列号是出厂前被光刻好的,它可以看作是该 ds18b20 的地 址序列码,每个 ds18b20 的 64 位序列号均不相同。64 位 rom 的循环冗余校验 码。rom 的作用是使每一个 ds18b20 中的温度传感器完成对温度的测量,用 16 位符号扩展的二进制补码读数形式提供,以 0.0625/lsb 形式表达,其中 s 为 符号位。ds18b20 温度格式表 2-2 如下所示。 这是 12 位转化后得到的 12 位数据,存储在 ds18b20 的两个 8 比特的 ram 中,二进制中的前面 5 位是符号位,如果测得的温度大于 0,这 5 位为 0,只 要将测到的数值乘于 0.0625 即可得到实际温度;如果温度小于 0,这 5 位为 1,测到的数值需要取反加 1 再乘于 0.0625 即可得到实际温度。例如 25.0625的数字输出为 0191h,25.0625的数字输出为 ff6fh。 沈阳工业大学本科毕业设计(论文) 10 表 2-2 ds18b20 温度值格式表 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 ls byte 2 3 2 2 212 0 2 1 2 2 2 3 2 4 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 ms byte s ssss 2 6 2 5 2 4 (2)高低温报警触发器 th 和 tl ds18b20 温度传感器的内部存储器包括一个高速暂存 ram 和一个非易失性 的可电擦除的 eepram,后者存放高温度和低温度触发器 th、tl 和结构寄存器。 (3)配置寄存器 该字节各位的意义如下表 2-3 所示。 表 2-3:配置寄存器结构 tmr1r011111 低五位一直都是“1”,tm 是测试模式位,用于设置 ds18b20 在工作模式 还是在测试模式。在 ds18b20 出厂时该位被设置为 0,用户不要去改动。r1 和 r0 用来设置分辨率,如下表 4-6 所示(ds18b20 出厂时被设置为 12 位)。 (4)高速暂存器是一个 9 字节的存储器。开始两个字节包含被测温度的数字 量信息;第 3、4、5 字节分别是 th、tl、配置寄存器的临时拷贝,每一次上电 复位时被刷新;第 6、7、8 字节未用,表现为全逻辑 1;第 9 字节读出的是前 面所有 8 个字节的 crc 码,可用来保证通信正确。高速暂存器 ram 结构图如下 表 2-4 所示。 表 2-4: 温度分辨率设置表 r1r0 分辨率温度最大转换时间 00 9 位 93.75ms 01 10 位 187.5ms 10 11 位 375ms 11 12 位 750ms 沈阳工业大学本科毕业设计(论文) 11 2.24 ds18b20 的工作时序 ds18b20 的一线工作协议流程是:初始化rom 操作指令存储器操作指 令数据传输。其工作时序包括初始化时序、写时序如图 2-4 (a)(b)所 3 示。 表 2-5: ds18b20 暂存寄存器分布 寄存器内容 字节地址 温度值低位 (ls byte) 0 温度值高位 (ms byte) 1 高温限值(th) 2 低温限值(tl) 3 配置寄存器 4 保留 5 保留 6 保留 7 crc 校验值 8 图 2-4(a)初始化时序 ds18b20 等待 ds18b20tx 产 生 15us16us 脉冲 60-240 主机复位脉冲 vcc 480us25mhz 2. 标准串行(spi)接口 3. cmos 串行输出,可用于多个设备的级联 4. 低功耗:ta =25时,icc=4a(max) 2.33 引脚图及各引脚功能 沈阳工业大学本科毕业设计(论文) 16 表 2-6 引脚功能 管脚编号管脚名管脚定义功能 1,2,3,4, 5,6,7,15 qa-qh 三态输出管脚 8,16gnd,vcc 电源地,电源端 9,10sqh,sclr 串行数据输出管脚 , 清零端 11sck 数据输入时钟线 12rck 数据输出时钟线 13oe 输出使能 14si 数据线 沈阳工业大学毕业设计(论文) 17 第三章 系统硬件电路的设计 3.13.1 主控制电路和测温控制电路原理图111213 主控制电路由 stc89c52 及外围元件构成,测温电路由 ds18b20。stc89c52 是此硬件电路设计的核心,通过 stc89c52 的管脚 p10-p17 与 8 个 ds18b20 相 连,控制温度的读出和显示。6 个数码管与单片机的 p1 口相连,其中数码管 1 显示通道数,其他数码管显示这一通道所在的温度值,从而实现 8 通道实时显 示功能。硬件电路的功能都是与软件编程相结合而实现的。具体电路原理图如 下图 3-1 所示。 图 3-1 主控制电路和测温控制电路原理图 3.2 驱动电路与显示电路模块原理图 驱动电路由 74hc595 组成,通过网络标号 p00-p07 与单片机相连,通过 网络标号与显示电路数码管相连,实现位控制功能。具体电路如下图 3-2 所示。 沈阳工业大学本科毕业设计(论文) 18 显示部分由 6 个数码管组成,其中一个数码管显示通道数,另外 5 个数 码管显示该通道的温度,并且这 5 个数码管分别和 74hc595 的输出端相连。从 而达到实时显示的目的。 图 3-2 驱动电路与显示原理图 沈阳工业大学本科毕业设计(论文) 19 第四章 软件编程与功能调试 4.2 系统软件设计1415 4.2.1 系统软件设计整体思路 一个应用系统要完成各项功能,首先必须有较完善的硬件作保证。同时还 必须得到相应设计合理的软件的支持,尤其是微机应用高速发展的今天,许多 由硬件完成的工作,都可通过软件编程而代替。甚至有些必须采用很复杂的硬 件电路才能完成的工作,用软件编程有时会变得很简单,如数字滤波,信号处 理等。因此充分利用其内部丰富的硬件资源和软件资源,采用与 s51 系列单片 机相对应的 51 汇编语言和结构化程序设计方法进行软件编程。 程序设计语言16有三种:机器语言、汇编语言和高级语言。机器语言是机 器唯一能“懂”的语言,用汇编语言或高级语言编写的程序(称为源程序)最 终都必须翻译成机器语言的程序(成为目标程序) ,计算机才能“看懂” ,然后 逐一执行。 高级语言是面向问题和计算过程的语言,它可通过于各种不同的计算机, 用户编程时不必仔细了解所用的计算机的具体性能与指令系统,而且语句的功 能强,常常一个语句已相当于很多条计算机指令,于是用高级语言编制程序的 速度比较快,也便于学习和交流,但是本系统却选用了汇编语言。原因在于, 本系统是编制程序工作量不大、规模较小的单片机微控制系统,使用汇编语言 可以不用像高级语言那样占用较多的存储空间,适合于存储容量较小的系统。 同时,本系统对位处理要求很高,需要解决大量的逻辑控制问题。 mcs51 指令系统的指令长度较短,它在存储空间和执行时间方面具有较 高的效率,编成的程序占用内存单元少,执行也非常的快捷,与本系统的应用 要求很适合。而且 mcs51 指令系统有丰富的位操作(或称位处理)指令,可 以形成一个相当完整的位操作指令子集,这是 mcs51 指令系统主要的优点之 一。对于要求反应灵敏与控制及时的工控、检测等实时控制系统以及要求体积 小、系统小的许多“电脑化”产品,可以充分体现出汇编语言简明、整齐、执 行时间短和易于使用的特点。 本装置的软件包括主程序、读出温度子程序、复位应答子程序、写入子程 沈阳工业大学本科毕业设计(论文) 20 序、以及有关 ds18b20 的程序(初始化子程序、写程序和读程序) 4.2.2 系统程序流图 系统程序17主要包括主程序,读出温度子程序,复位应答子程序,写入子 程序等。 1)主程序 主程序的主要功能是负责温度的实时显示、读出并处理 ds18b20 的测量的 当前温度值,温度测量每 1s 进行一次。这样可以在一秒之内测量一次被测温度, 其程序流程见图 4-1 所示。 通过调用读温度子程序把存入内存储中的整数部分与小数部分分开存放在不同 的两个单元中,然后通过调用显示子程序显示出来图 4-1 主程序流程图 开始 调用温度子程 序 数字温度变换 程序 显示子程序 沈阳工业大学本科毕业设计(论文) 21 图 4-2 读出温度子程序 2)读出温度子程序 读出温度子程序的主要功能是读出 ram 中的 9 字节,在读出时需进行 crc 校验,校验有错时不进行温度数据的改写。 ds18b20 的各个命令对时序的要求特别严格,所以必须按照所要求的时序才能 达到预期的目的,同时,要注意读进来的是高位在后低位在前,共有 12 位数, 小数 4 位,整数 7 位,还有一位符号位。 跳过 rom 匹配命令 写入子程序 温度转换命令 显示子程序(延时) 写入子程序 写入子程序 ds18b20 复位、应答子程 序 ds18b20 复位、应答子程 序 跳过 rom 匹配命令 读温度命令子程序 终 止 沈阳工业大学本科毕业设计(论文) 22 3)复位、应答子程序 图 4-3 复位、应答子程序 开始 p1.0 口清 0 延时 537us p1.0 口置 1 标志位置 1 50us 是否有低电 平 有 234us 低电 平 p1.0 口置 1 终止 标志位置 1 是 否 沈阳工业大学本科毕业设计(论文) 23 4)写入子程序 图 4-4 写入子程序 4.3 系统的程序 clr p3.7 main:mov 38h,#00h mov 39h,#00h mov 3ah,#00h mov 3bh,#00h 进位 c 清 0 p1.0 清 0 延时 12us 带进位右移 延时 46us p1.0 置 0 r2 是否为 0 终止 开始 沈阳工业大学本科毕业设计(论文) 24 lcall get_temper lcall temprro mov p2,#06h lcall pro ;- mov 38h,#00h mov 39h,#00h mov 3ah,#00h mov 3bh,#00h lcall get_temper2 lcall temprro mov p2,#5bh lcall pro ;- mov 38h,#00h mov 39h,#00h mov 3ah,#00h mov 3bh,#00h lcall get_temper3 lcall temprro mov p2,#4fh lcall pro ;- mov 38h,#00h mov 39h,#00h mov 3ah,#00h mov 3bh,#00h lcall get_temper4 lcall temprro mov p2,#66h lcall pro ;- mov 38h,#00h mov 39h,#00h mov 3ah,#00h mov 3bh,#00h lcall get_temper5 lcall temprro 沈阳工业大学本科毕业设计(论文) 25 mov p2,#6dh lcall pro ;- mov 38h,#00h mov 39h,#00h mov 3ah,#00h mov 3bh,#00h lcall get_temper6 lcall temprro mov p2,#7dh lcall pro ;- mov 38h,#00h mov 39h,#00h mov 3ah,#00h mov 3bh,#00h lcall get_temper7 lcall temprro mov p2,#07h lcall pro ;- mov 38h,#00h mov 39h,#00h mov 3ah,#00h mov 3bh,#00h lcall get_temper8 lcall temprro mov p2,#7fh lcall pro ljmp main ;=chl1 get_temper: setb p1.0h ; 定时入口 bcd: lcall init_1820 jb 00h,s22 ljmp bcd ; 若 ds18b20 不存在则返回 沈阳工业大学本科毕业设计(论文) 26 s22: lcall delay1 mov a,#0cch ; 跳过 rom 匹配-0cc 命令 lcall write_1820 mov a,#44h ; 发出温度转换命令 lcall write_1820 nop lcall delay1 cba:lcall init_1820 jb 00h,abc ljmp cba abc:lcall delay1 mov a,#0cch ; 跳过 rom 匹配 lcall write_1820 mov a,#0beh ; 发出读温度命令 lcall write_1820 lcall read_18200 ;read_1820 ret ;= read_1820: mov r2,#8 re1: clr c setb p1.0h nop nop clr p1.0h nop nop nop setb p1.0h mov r3,#7 djnz r3,$ mov c,p1.0h mov r3,#23 djnz r3,$ rrc a djnz r2,re1 ret ;= write_1820: mov r2,#8 clr c wr1: 沈阳工业大学本科毕业设计(论文) 27 clr p1.0h mov r3,#6 djnz r3,$ rrc a mov p1.0h,c mov r3,#23 djnz r3,$ setb p1.0h nop djnz r2,wr1 setb p1.0h ret ;= read_18200: mov r4,#2 ; 将温度高位和低位从 ds18b20 中读出 mov r1,#31h ; 低位存入 30h(temper_l),高位存入 31h(temper_h) re00: mov r2,#8 re01: clr c setb p1.0h nop nop clr p1.0h nop nop nop setb p1.0h mov r3,#7 djnz r3,$ mov c,p1.0h mov r3,#23 djnz r3,$ rrc a djnz r2,re01 mov r1,a dec r1 djnz r4,re00 ret ;= init_1820: setb p1.0h nop 沈阳工业大学本科毕业设计(论文) 28 clr p1.0h mov r0,#250 tsr1: djnz r0,tsr1 ; 延时 520us setb p1.0h mov r0,#25h ;96us-25h tsr2: djnz r0,tsr2 jnb p1.0h,tsr3;如 d0 为低则复位成功,ds18b20 存在 ljmp tsr4 ; 延时 tsr3: setb 00h ; 置标志位,表示 ds1820 存在 ljmp tsr5 tsr4: clr 00h ; 清标志位,表示 ds1820 不存在 ljmp tsr7 tsr5: mov r0,#06bh ;200us tsr6: djnz r0,tsr6 ; 延时 tsr7: setb p1.0h ;拉高总线 ret ;= get_temper2: setb p1.1h ; 定时入口 bcd2: lcall init_18202 jb 00h,s222 ljmp bcd2 ; 若 ds18b20 不存在则返回 s222: lcall delay1 mov a,#0cch ; 跳过 rom 匹配-0cc 命令 lcall write_18202 mov a,#44h ; 发出温度转换命令 lcall write_18202 nop lcall delay1 cba2:lcall init_18202 jb 00h,abc2 ljmp cba2 abc2:lcall delay1 mov a,#0cch ; 跳过 rom 匹配 lcall write_18202 沈阳工业大学本科毕业设计(论文) 29 mov a,#0beh ; 发出读温度命令 lcall write_18202 lcall read_182002 ;read_1820 ret ;= read_18202: mov r2,#8 re12: clr c setb p1.1h nop nop clr p1.1h nop nop nop setb p1.1h mov r3,#7 djnz r3,$ mov c,p1.1h mov r3,#23 djnz r3,$ rrc a djnz r2,re12 ret ;= write_18202: mov r2,#8 clr c wr12: clr p1.1h mov r3,#6 djnz r3,$ rrc a mov p1.1h,c mov r3,#23 djnz r3,$ setb p1.1h nop djnz r2,wr12 setb p1.1h ret ;= 沈阳工业大学本科毕业设计(论文) 30 read_182002: mov r4,#2 ; 将温度高位和低位从 ds18b20 中读出 mov r1,#31h ; 低位存入 30h(temper_l),高位存入 31h(temper_h) re002: mov r2,#8 re012: clr c setb p1.1h nop nop clr p1.1h nop nop nop setb p1.1h mov r3,#7 djnz r3,$ mov c,p1.1h mov r3,#23 djnz r3,$ rrc a djnz r2,re012 mov r1,a dec r1 djnz r4,re002 ret ;= init_18202: setb p1.1h nop clr p1.1h mov r0,#250 tsr12: djnz r0,tsr12 ; 延时 520us setb p1.1h mov r0,#25h ;96us-25h tsr22: djnz r0,tsr22 jnb p1.1h,tsr32;如 d0 为低则复位成功,ds18b20 存在 ljmp tsr42 ; 延时 tsr32: setb 00h ; 置标志位,表示 ds1820 存在 ljmp tsr52 沈阳工业大学本科毕业设计(论文) 31 tsr42: clr 00h ; 清标志位,表示 ds1820 不存在 ljmp tsr72 tsr52: mov r0,#06bh ;200us tsr62: djnz r0,tsr62 ; 延时 tsr72: setb p1.1h ;拉高总线 ret ;= get_temper3: setb p1.2h ; 定时入口 bcd3: lcall init_18203 jb 00h,s223 ljmp bcd3 ; 若 ds18b20 不存在则返回 s223: lcall delay1 mov a,#0cch ; 跳过 rom 匹配-0cc 命令 lcall write_18203 mov a,#44h ; 发出温度转换命令 lcall write_18203 nop lcall delay1 cba3:lcall init_18203 jb 00h,abc3 ljmp cba3 abc3:lcall de

温馨提示

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

评论

0/150

提交评论