《2022年单片机的多点温度测量系统设计方案.docx》由会员分享,可在线阅读,更多相关《2022年单片机的多点温度测量系统设计方案.docx(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品学习资源南开高校滨海学院本科生毕业设计中文题目:基于单片机的多点温度测量系统设计英文题目: Design of based on the microprocessor multipoint temperature measurement system学号: . 姓名: . 年级: /专业:电子信息科学与技术系别:电子科学系指导老师: /完成日期: /欢迎下载精品学习资源南开高校滨海学院毕业设计诚信声明本人正式声明:所呈交的毕业设计,题目基于单片机的多点温度测量系统设计是本人在指导老师的指导下,独立进行争论工作所取得的成果;对本文的争论做出重要奉献的个人和集体,均已在文中以明确方式注明;除此
2、之外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果;本人完全意识到本声明的法律结果;毕业设计作者签名:庞子博2021 年 5 月 1 日欢迎下载精品学习资源摘要通过运用 DS18B20 数字温度传感器的测温原理和特性,利用它特殊的单线总线接口方式,与 AT89C51 单片机相结合实现多点测温;并给出了测温系统中对 DS18B20 操作的 C51 编程实例;实现了系统接口简洁、精度高、抗干扰才能强、工作稳固等特点;本文介绍基于 AT89C51 单片机、 C 语言和 DS18B20 传感器的多点温度测量系统设计及其在Proteus平台下的仿真;利用 51 单片机的并行口,同步快速读取
3、8 支 DS18B20 温度,实现了在多点温度测量系统中对多个传感器的快速精确识别和处理,并给出了具体的编程实例和仿真结果;关键词:单片机; DS18B20 数字温度传感器; Proteus仿真; C51 编程欢迎下载精品学习资源AbstractWithusingthe measuring principleand characteristics ofthe numerical temperature sensor of DS18B20,making use of special characteristics of single line as the totalline,and combi
4、ne together withAT89C51torealize several points temperature measuring. Also this paper gives the example of the C51 program which is used to operate to the DS18B20. Make system have characteristics of simple, high accuracy, strong anti- interference ability, stable work etc.This design introduced AT
5、89C51monolithicintegrated circuittemperature control system design from the hardware and the software two aspects. Amultipoint temperature measurement system based on DS18B20 and AT89C51 microcontrolleris designed and simulated by Proteus in this paper, including software and hardware design of this
6、 system. The system has such advantages as novel circuit design, quick measurement speed, high measurement accuracy, and good practicality.Key words: SCM;DS18B20; Proteus simulation; C51 program欢迎下载精品学习资源目录摘要 I AbstractII第一章绪论 11.1 温度智能测控系统的争论背景与现状分析11.2 温度智能测控系统的工作原理 2其次章单片机简介 32.1 单片机的定义 32.2 单片机的
7、基本结构 42.3 单片机执行指令的过程52.4 单片机的特点 6第三章数字温度传感器 DS18B20 原理 73.1 概述 73.2 主要特点 73.3 引脚功能 83.4 工作原理及应用 83.5 单片机对 DS18B20 的操作流程 83.6 DS18B20 与单片机的接口 93.7 DS18B20 芯片 ROM 指令表 93.8 DS18B20 芯片储备器操作指令表10 3.9DS18B20 复位及应答关系及读写隙 11第四章系统硬件设计 11III / 39欢迎下载精品学习资源4.1 系统结构设计思路 114.2 系统框图 134.3 系统硬件设计 13第五章系统软件设计 165.1
8、 系统软件设计思路 165.2 系统软件设计 21 第六章系统运行结果 27 第七章终止语 31参考文献 32致谢 33欢迎下载精品学习资源第一章绪论1.1 温度智能测控系统的争论背景与现状分析温度是一个和人们生活环境有着亲密关系的物理量,也是一种在生产、科研、生活中需要测量和掌握的重要物理量,是国际单位制七个基本量之一,同时它也是一种最基本的环境参数;人民的生活与环境温度息息相关,物理、化学、生物等学科都离不开温度;在工业生产和试验争论中,在电力、化工、石油、冶金、机械制造、大型仓储室、试验室、农场塑料大棚甚至人们的居室里常常需要对环境温度进行检测,并依据实际的要求对环境温度进行掌握;比 如
9、,发电厂锅炉的温度必需掌握在肯定的范畴之内;很多化学反应的工艺过程必需在适当的温度下才能正常进行;炼油过程中,原油必需在不同的温度和压力条件下进行分流才能得到汽油、柴油、煤油等产品;没有合适的温度环境, 很多电子设备不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保证;可见,争论温度的测量具有重要的理论意义和推广价值;随着现代运算机和自动化技术的进展,作为各种信息的感知、采集、转换、传输相处理的功能器件,温度传感器的作用日益突出,成为自动检测、自动掌握系统和计量测试中不行缺少的重要技术工具,其应用已遍及工农业生产和日常生活的各个领域;本设计就是为了满意人们在生活生产中对温度测量系统方面的
10、需求;本设计要求系统测量的温度的点数为4 个,测量精度为 0.5,测温范畴为-20 +80;采纳液晶显示温度值和路数,显示格式为:温度的符号位 ,整数部分,小数部分 ,最终一位显示;显示数据每一秒刷新一次;21 世纪科学技术的进展日新月异,科技的进步带动了测量技术的进展,现代掌握设备的性能和结构发生了庞大的变化,我们已经进入了高速进展的信息时代,测量技术也成为当今科技的主流之一,被广泛地应用于生产的各个领 域;对于本次设计,其目的在于:1. 把握数字温度传感器 DS18B20 的原理、性能、使用特点和方法,利用C51 对系统进行编程;2. 本课题综合了现代测控、电子信息、运算机技术专业领域方方
11、面面的学问,具有综合性、科学性、代表性,可全面检验和促进同学的理论素养和工作才能;3. 本课题的争论可以使同学更好地把握基于单片机应用系统的分析与设计方法,培育创新意识、协作精神和理论联系实际的学风,提高电子产品研发素 质、增强针对实际应用进行掌握系统设计制作的才能;欢迎下载精品学习资源至单片机 AT89C51 的 8 个通用 I/O 端口;单片机获得温度信息后,通过特定的算法,将处理后的温度信息通过LED 显示出来,同时通过串行口送上位机处理;每个端口只连接一个温度传感器件,也即一条一线制总线上仅有一个DS18B20;并在 Keil 环境下编辑应用软件程序,通过Proteus和 Keil 的
12、联合实现该多点温度测量系统的设计、调试和仿真;1.2 温度智能测控系统的工作原理课题采纳由 Dallas 公司生产的智能数字温度传感器DS18B20 和 Atmel 公司推出的单片机 AT89C51 以及相关外围电路实现高精度、多点温度测量系统;同时本设计在单片机系统设计主流EDA 软件 Proteus 环境下完成,能够准时观看成效和修改软硬件;本系统采纳 8 片 DS18B20 构成小型温度传感器网络,通过并行连接方式连接至单片机 AT89C51 的 8 个通用 I/O 端口;单片机获得温度信息后,通过特定的算法,将处理后的温度信息通过LED 显示出来,同时通过串行口送上位机处理;每个端口只
13、连接一个温度传感器件,也即一条一线制总线上仅有一个 DS18B20;并在 Keil 环境下编辑应用软件程序,通过Proteus和 Keil 的联合实现该多点温度测量系统的设计、调试和仿真;欢迎下载精品学习资源其次章单片机简介单片微型运算机自 20 世纪 70 岁月问世以来,以对人类社会产生了庞大的影响;特别是美国 Intel 公司生产的 MCS-51 系列单片机,由于其具有集成度高、处理功能强、牢靠性高、系统结构简洁、价格低廉、易于使用等优点,在 世界范畴内已经得到广泛的普及和应用;而且随着以MCS-51 单片机基本内核为核心的各种扩展型、增强型的新型单片机不断推出,MCS-51 系列仍是我国
14、单片机应用领域的主流机型;目前在工业掌握、智能仪器外表、办公室自动化、家用电器等诸多领域,处处都可观察单片机的踪影,单片机技术开发和应用高水平已成为一个国家工业化水平的标志之一;2.1 单片机的定义单片机 1 是在一块半导体上集成了微处理器CPU),储备器 RAM 、ROM 、EPROM)和各种输入、输出接口定时计数器,并行 IO 口,串行口, A/D 转换器以及脉宽调制器 PWM等),这样一块集成电路芯片具有一台运算机的属性,因此被称为单片微型运算机,简称单片机;单片机以其杰出的性能,得到了广泛的应用,单片机以小巧敏捷、成本低、易于产品化、牢靠性好、应用温度范畴宽等优点;AT89C51是美国
15、 ATMEL 公司生产的低电压,高性能CMOS 8位单片机,片内含4K bytes的可反复擦写的只读程序储备器PEROM)和 128 bytes 的随机存取数据储备器 RAM ),器件采纳 ATMEL 高密度、非易失性储备技术生产,兼容标准 MCS-51 指令系统,片内置通用 8位中心处理器 CPU)和 Flash 储备单元;功能强大 AT89C51单片机可供应高性价比的应用场合,可敏捷运用与各种掌握领域;AT89C51方框图 2-1:欢迎下载精品学习资源图2-1 AT89C51方框图2.2 单片机的基本结构1. 微处理器 CPU)MCS-51 单片机中有 1 个 8 位的 CPU,包括运算器
16、和掌握器两大部分,不仅可处理字节数据,仍可以进行位变量的处理;例如:位处理、查表、状态检测、中断处理等;2. 内部数据储备器 RAM )单片机芯片共有 256 个 RAM 单元,其中后 128 单元被专用寄存器占用, 能作为寄存器供用户使用的只是前128 单元,用于存放可读写的数据;因此通常所说的内部数据储备器就是指前128 单元,简称内部RAM ;地址范畴为00HFFH256B);片外最多可外扩64KB ;RAM是一个多用多功能数据储备器,有数据储备、通用工作寄存器、堆栈、位地址等空间;3. 内部程序储备器 ROM )单片机内部有 4KB 的 ROM ,用于存放程序、原始数据或表格;因此称之
17、为程序储备器,简称内部RAM ;地址范畴为 0000HFFFFH64KB );片外最多可外扩 64KB ;欢迎下载精品学习资源4. 定时器/计数器单片机共有 2 个 16 位的定时器 / 计数器,具有 4 种工作方式,以实现定时或计数功能,并以其定时或计数结果对运算机进行掌握;定时时靠内部分频时钟频率计数实现,做计数器时,对P3.4T0)或 P3.5T1)端口的低电平脉冲计数;5. 并行 I/O 口MCS-51 单片机共有 4 个 8 位的 I/O 口P0、P1、P2、P3)以实现数据的输入输出;6. 串行口MCS-51 单片机有一个全双工的串行口,具有4 种工作方式,以实现单片机和其它设备之
18、间的串行数据传送;该串行口功能较强,既可作为全双工异步通信 收发 器使 用 , 也 可作 为移 位器 使用 ; RXDP3.0 ) 脚 为接 收端 口,TXDP3.1)脚为发送端口;7. 中断掌握系统MCS-51 单片机的中断功能较强,以满意不同掌握应用的需要;共有5 个中断源,即外中断 2 个,定时中断 2 个,串行中断 1 个,全部中断分为高级和低级共二个优先级别;8. 时钟电路MCS-51 单片机芯片的内部有时钟电路,但石英晶体和微调电容需外接;时钟电路为单片机产生时钟脉冲序列;系统答应的晶振频率为12MHZ 等;9. 特别功能寄存器 SFR)特别功能寄存器共有21 个,用于CPU 对片
19、内各功能部件进行治理、掌握、监视;实际上是片内各功能部件的掌握寄存器和状态寄存器,是一个具有 特别功能的 RAM 区;2.3 单片机执行指令的过程单片机执行程序的过程,实际上就是执行所编制程序的过程;即逐条指令的过程;运算机每执行一条指令都可分为三个阶段进行;即取指令分析指令执行指令;取指令的任务是:依据程序计数器PC 中的值从程序储备器读显现行指令,送到指令寄存器;分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码, 分析其指令性质;如指令要求操作数,就查找操作数地址;运算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令;欢迎下载精品学习资源2
20、.4 单片机的特点单片机应用在检测掌握领域中,具有如下特点:1. 小巧敏捷、成本低、易于产品化;2. 牢靠性好,适应温度范畴宽;3. 易扩展,很简洁构成各种规模的应用系统,掌握功能强;4. 可以很便利的实现多机和分布式掌握系统;5. 具有优异的性能价格比;6. 储备器 ROM 和 RAM 是严格分工的;7. 采纳面对掌握的指令系统;8. 输入/输出I/O)端口引脚通常设计有多种功能;9. 品种规格的系列化;10. 功率消耗低;所以从工业自动化、智能仪器外表、消费类电子产品、通信方面、家用电器方面等,直到国防尖端技术领域,单片机都发挥着特别重要的作用;综观单片机几十年的进展历程,单片机今后将向多
21、功能、高性能、高速 度、低电压、低功耗、低价格、外围电路内装化以及片内储备器容量增加和Flash 储备器化方向进展;可以预言,今后的单片机将是功能更强、集成的和牢靠性更高而功耗更低,以及使用更便利;此外,专用化也是单片机的一个进展方向,针对单一用途的专用单片机将会越来越多;欢迎下载精品学习资源第三章数字温度传感器DS18B20 原理3.1 概述温度传感器的种类众多,在应用与高精度、高牢靠性的场合时DALLAS欢迎下载精品学习资源* 内置 EEPROM,限温报警功能;* 64 位光刻 ROM ,内置产品序列号,便利多机挂接;* 多样封装形式,适应不同硬件系统3.3 引脚功能.GND 电压地.DQ
22、 单数据总线.VDD 电源电压.NC 空引脚.DQ一线制总线 输入/输出)3.4 工作原理及应用DS18B20 的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强;其一个工作周期可分为两个部分,即温度检测和数据处理;在讲解其工作流程之前我们有必要明白18B20 的内部储备器资源; 18B20 共有三种形状的储备器资源,它们分别是: ROM 只读储备器,用于存放DS18B20ID 编码,其前8 位是单线系列编码 DS18B20 的编码是 19H),后面 48 位是芯片唯独的序列号,最终 8 位是以上 56 的位的 CRC 码冗余校验);数据在出产时设置不由用户更换; DS18B20
23、共 64 位 ROM ;RAM数据暂存器,用于内部运算和数据存 取,数据在掉电后丢失, DS18B20 共 9 个字节 RAM ,每个字节为 8 位;第 1、2 个字节是温度转换后的数据值信息,第3、4 个字节是用户 EEPROM常用于温度报警值储存)的镜像;在上电复位时其值将被刷新;第5 个字节就是用户第 3 个 EEPROM 的镜像;第 6、7、8 个字节为计数寄存器,是为了让用户得到 更高的温度辨论率而设计的,同样也是内部温度转换、运算的暂存单元;第9个字节为前 8 个字节的 CRC 码;EEPROM 非易失性记忆体,用于存放长期需要储存的数据,上下限温度报警值和校验数据,DS18B20
24、 共 3 位 EEPROM,并在 RAM 都存在镜像,以便利用户操作;我们在每一次读温度之前都必需进行复杂的且精准时序的处理,由于DS18B20 的硬件简洁结果就会导致软件的庞大开消,也是尽力削减有形资产转化为无形资产的投入,是一种较好的节约之道;3.5 单片机对 DS18B20 的操作流程 31. 复位:第一我们必需对DS18B20 芯片进行复位,复位就是由掌握器 单片机)给 DS18B20 单总线至少 480uS的低电平信号;当 18B20 接到此复位信号后就会在 1560uS后回发一个芯片的存在脉冲;2. 存在脉冲:在复位电平终止之后,掌握器应当将数据单总线拉高,以便于在 1560uS后
25、接收存在脉冲,存在脉冲为一个60240uS的低电平信号;至此,8 / 39欢迎下载精品学习资源通信双方已经达成了基本的协议,接下来将会是掌握器与18B20 间的数据通信;假如复位低电平的时间不足或是单总线的电路断路都不会接到存在脉冲,在设计时要留意意外情形的处理;3. 掌握器发送 ROM 指令:双方打完了招呼之后最要将进行沟通了,ROM 指令共有条,每一个工作周期只能发一条,ROM 指令分别是读 ROM 数据、指定匹配芯片、跳动 ROM 、芯片搜寻、报警芯片搜寻; ROM 指令为 8 位长度,功能是对片内的 64 位光刻 ROM 进行操作;其主要目的是为了辨论一条总线上挂接的多个器件并作处理;
26、诚然,单总线上可以同时挂接多个器件,并通过每个器件上所独有的 ID 号来区分,一般只挂接单个 18B20 芯片时可以跳过 ROM 指令留意:此处指的跳过 ROM 指令并非不发送ROM 指令,而是用特有的一条“跳过指令 ”);4. 掌握器发送储备器操作指令:在ROM 指令发送给 18B20 之后,紧接着 不间断)就是发送储备器操作指令了;操作指令同样为8 位,共 6 条,储备器操作指令分别是写 RAM 数据、读 RAM 数据、将 RAM 数据复制到 EEPROM、温度转换、将 EEPROM 中的报警值复制到 RAM 、工作方式切换;储备器操作指令的功能是命令 18B20 作什么样的工作,是芯片掌
27、握的关键;5. 执行或数据读写:一个储备器操作指令终止后就将进行指令执行或数据的读写,这个操作要视储备器操作指令而定;如执行温度转换指令就掌握器单片机)必需等待 18B20 执行其指令,一般转换时间为500uS;如执行数据读写指令就需要严格遵循 18B20 的读写时序来操作;单支 DS18B20 如要读出当前的温度数据我们需要执行两次工作周期,第一个周期为:复位、跳过ROM 指令 CCH 、执行温度转换储备器操作指令44H 、等待 500uS 温度转换时间;紧接着执行其次个周期为:复位、跳过ROM 指令CCH 、执行读 RAM 的储备器操作指令 BEH 、读数据 最多为 9 个字节,中途可停止
28、,只读简洁温度值就读前2 个字节即可);3.6 DS18B20与单片机的接口DS18B20 只需要接到掌握器 单片机)的一个 I/O 口上,由于单总线为开漏所以需要外接一个4.7K 的上拉电阻;如要采纳寄生工作方式,只要将VDD 电源引脚与单总线并联即可;但在程序设计中,寄生工作方式将会对总线的状态有一些特别的要求;3.7 DS18B20芯片 ROM 指令表 4Read ROM读 ROM )33H 方括号中的为 16 进制的命令字)这个命令答应总线掌握器读到DS18B20 的 64 位 ROM ;只有当总线上只存在一个 DS18B20 的时候才可以使用此指令,假如挂接不止一个,当通信时将会欢迎
29、下载精品学习资源发生数据冲突;Match ROM指定匹配芯片) 55H这个指令后面紧跟着由掌握器发出了64 位序列号,当总线上有多只DS18B20 时,只有与掌握发出的序列号相同的芯片才可以做出反应,其它芯片将等待下一次复位;这条指令适应单芯片和多芯片挂接;Skip ROM跳动 ROM 指令) CCH这条指令使芯片不对ROM 编码做出反应,在单芯片的情形之下,为了节约时间就可以选用此指令;假如在多芯片挂接时使用此指令将会显现数据冲突, 导致错误显现;Search ROM搜寻芯片) F0H在芯片初始化后,搜寻指令答应总线上挂接多芯片时用排除法识别全部器件的 64 位 ROM ;Alarm Sea
30、rch报警芯片搜寻) ECH在多芯片挂接的情形下,报警芯片搜寻指令只对符合温度高于TH 或小于TL 报警条件的芯片做出反应;只要芯片不掉电,报警状态将被保持,直到再一次测得温度什达不到报警条件为止;3.8 DS18B20芯片储备器操作指令表 5Write Scratchpad 向 RAM 中写数据) 4EH这是向 RAM 中写入数据的指令,随后写入的两个字节的数据将会被存到地址 2报警 RAM 之 TH)和地址 3报警 RAM 之 TL);写入过程中可以用复位信号中止写入;Read Scratchpad 从 RAM 中读数据) BEH此指令将从 RAM 中读数据,读地址从地址 0 开头,始终可
31、以读到地址 9, 完成整个 RAM数据的读出;芯片答应在读过程中用复位信号中止读取,即可以不读后面不需要的字节以削减读取时间;Copy Scratchpad 将 RAM 数据复制到 EEPROM 中) 48H此指令将 RAM 中的数据存入 EEPROM 中,以使数据掉电不丢失;此后由于芯片忙于 EEPROM 储存处理,当掌握器发一个读时间隙时,总线上输出“ 0,”当储存工作完成时,总线将输出“ 1;”在寄生工作方式时必需在发出此指令后马上超用强上拉并至少保持10MS,来维护芯片工作;Convert T温度转换) 44H收到此指令后芯片将进行一次温度转换,将转换的温度值放入RAM的第1、2 地址
32、;此后由于芯片忙于温度转换处理,当掌握器发一个读时间隙时,总线上输出 “0,”当储存工作完成时,总线将输出“1;”在寄生工作方式时必需在发出此指令后马上超用强上拉并至少保持500MS,来维护芯片工作;欢迎下载精品学习资源Recall EEPROM将 EEPROM 中的报警值复制到 RAM )B8H此指令将 EEPROM 中的报警值复制到 RAM 中的第 3、4 个字节里;由于芯片忙于复制处理,当掌握器发一个读时间隙时,总线上输出“0,”当储存工作完成时,总线将输出 “1;”另外,此指令将在芯片上电复位时将被自动执行;这样RAM 中的两个报警字节位将始终为 EEPROM 中数据的镜像;Read
33、Power Supply工作方式切换) B4H此指令发出后发出读时间隙,芯片会返回它的电源状态字,“0”为寄生电源状态, “1为”外部电源状态;3.9 DS18B20复位及应答关系及读写隙每一次通信之前必需进行复位,复位的时间、等待时间、回应时间应严格按时序编程;DS18B20 的数据读写是通过时间隙处理位和命令字来确认信息交换的;写时间隙:写时间隙分为写 “0和”写 “1,”时序如图 7;在写数据时间隙的前 15uS 总线需要是被掌握器拉置低电平,而后就将是芯片对总线数据的采样时间,采样时间在 1560uS,采样时间内假如掌握器将总线拉高就表示写“1,”假如掌握器将总线拉低就表示写 “0;”
34、每一位的发送都应当有一个至少15uS 的低电平起始位,随后的数据 “0或”“1应”该在 45uS 内完成;整个位的发送时间应当保持在60120uS,否就不能保证通信的正常;读时间隙:读时间隙时掌握时的采样时间应当更加的精确才行,读时间隙时也是必需 先由主机产生至少 1uS 的低电平,表示读时间的起始;随后在总线被释放后的15uS 中 DS18B20 会发送内部数据位,这时掌握假如发觉总线为高电平表示读出“1,”假如总线为低电平就表示读出数据“0;”每一位的读取之前都由掌握器加一个起始信号;留意:必需在读间隙开头的15uS 内读取数据位才可以保证通信的正确;在通信时是以 8 位“0或”“1为”一
35、个字节,字节的读或写是从高位开头的,即A7到 A0.字节的读写次序也是如图 2 自上而下的;第四章系统硬件设计4.1 系统结构设计思路当一线制总线 6 上仅有一个 DS18B20 器件时,可以用 skip ROM 操作即跳过 ROM 匹配)命令来代替 64 位序列号的匹配过程,这点也是使用单个欢迎下载精品学习资源DS18B20 器件的系统常用的方法;所以,要想节约掉64 位序列号匹配的时间开销,就必需设计成一个一线制总线上仅有一个DS18B20 器件的系统;DS18B20 的一线制总线在时序上的严格要求,也从另一方面意味着在肯定的弹性范畴内,不同 DS18B20 器件的时序细节上的一样性应当是
36、特别好,所以可以将系统设计成利用 MCU 的并行端口同时对多个 DS18B20 进行统一的操作, 不过这时候并行端口上的每一个端口连接着一个DS18B20 器件而已;本文所述的解决方案正是以端口的消耗为代价,换取对多点DS18B20 温度查询的速度,并在程序结构的设计上采纳一些奇妙的处理方法,使得系统对 DS18B20 的操作上花更少的时间;此外,采纳本设计实现的快速多点温度查询系统,可以省掉烦琐的总线上器件序列号的查询操作,并可节约大量的储备空间原用于储备总线上器件的序列号所用的空间);从理论上分析,本设计方案的采纳,查询多个DS18B20 器件操作所消耗的时间与查询一个 DS18B20 器
37、件操作所消耗的时间是等量的;本系统方案 8 个 DS18B20 器件连接在 MCU 的一组端口的 8 个 I/O 口上, 连线示意图 4-1 所示:图 4-1 系统连线示意图当然,上图中的示意图并没有考虑诸如端口驱动才能、抗干扰处理等,仅说明一个规律的连接示意,具体在产品级的设计时会依据产品的应用做必要的处理,比如增加一些必要的电路等,此处不作为争论的重点;从上图可见,每个端口连接有一个 DS18B20 器件,也即一条一线制总线上仅有一个DS18B20器件,符合了前面所述的解决方法;实际在对DS18B20 器件进行操作时,只需统一地对这一组并行端口进行操作 P1 = 0x00;/8 个 DQ
38、线全部设置为低电平Delay_1us10;/延时 10us 左右欢迎下载精品学习资源P1 = 0xff;/8 个 DQ 线全部输出高电平Delay_1us30;/延时 30us 左右总线写 0 时序掌握函数: void DS18B20_Write_0voidP1 = 0x00;/8 个 DQ 线全部设置为低电平Delay_1us40;/延时P1 = 0xff;/端口复原高电平Delay_1us1;总线读取一个数据位时序掌握函数 :unsigned char DS18B20_ReadDQvoidunsigned char DQ_S=0;P1 = 0x00;/8 个 DQ 线全部设置为低电平Del
39、ay_1us10;P1 = 0xff;/端口置 1,预备读取Delay_1us1;/延时待总线预备好数据DQ_S = P1;/一次性读取 8 条 DQ 线的数据状态P1 = 0xff;/复原端口电平Delay_1us30;/延时 return DQ_S;/返回读取的值在读取一个总线状态数据位的函数中,将会返回一个byte 的数据,该数据的 8个位正好与连接在 P2 端口上的 8 个 I/O 口对应,如下图 5-2 所示:图 5-2总线复位时序掌握函数:void DS18B20_Resetvoid欢迎下载精品学习资源unsigned char Error_Counter=0;P1 = 0x00;
40、 /8 个 DQ 线全部设置为低电平Delay_1us500; /保持总线低电平 500us P1 = 0xff;Delay_1us100;ifP1.=0x00 B20_Error = P1;/如检测到 DS18B20 总线响应了回复信号,就读取当前 8 条/总线的状态Delay_1us50;P1 = 0xff;forError_Counter=0;Error_CounterifP1&B20_Error=B20_Error break ; / 如检测到总线的回复信号终止,就退出循环Delay_1us1;P1 = 0xff;/复原端口电平Delay_1us200; /延时 200us在复位时序掌握的函数中,使用了B20_Error 全局变量,它将会传递给上一层的数据处理函数作为判定当前 8 个 I/O 口所接的 DS18B20 是否正常工作,或者是否在各自的总线上;分析 DS18B20 的一线制总线掌握命令,可以提炼出两个最基本的操作函数,一个是写一个 byte 数据至 DS18B20 器件,另一为读取 DS18B20 器件的数据;而在本文的范例程序当中,仅仅为了提取DS18B20 器件的转换完后的温度值,所以在读取 DS18B20 的数据时,仅读取存放在数据地址前两个字节的温度数据,而不读取其它字节的数