收藏 分享(赏)

基于DSB单线多点温度测量系统_毕业论文设计.doc

上传人:dzzj200808 文档编号:4031487 上传时间:2018-12-05 格式:DOC 页数:38 大小:829.50KB
下载 相关 举报
基于DSB单线多点温度测量系统_毕业论文设计.doc_第1页
第1页 / 共38页
基于DSB单线多点温度测量系统_毕业论文设计.doc_第2页
第2页 / 共38页
基于DSB单线多点温度测量系统_毕业论文设计.doc_第3页
第3页 / 共38页
基于DSB单线多点温度测量系统_毕业论文设计.doc_第4页
第4页 / 共38页
基于DSB单线多点温度测量系统_毕业论文设计.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

1、基于 DS18B20 单线多点温度测量系统1目 录第一章 绪论 11.1 选题背景和意义 11.2 系统概述 2第二章 硬件电路的设计 .32.1 ATmega16单片机 .32.1.1 ATmega16的主要特性 .32.1.2 ATmega16引脚介绍 .42.2 DS18B20芯片 .62.2.1 DS18B20芯片的特性 .62.2.2 DS18B20引脚排列 .72.2.3 DS18B20的内部结构 .72.2.4 DS18B20芯片各部分介绍 .82.3单线总线系统 .112.3.1 处理顺序 112.3.2 初始化 122.3.3 ROM操作指令 .122.3.4 DS18B20

2、功能指令 .12第三章 系统软件设计 143.1 DSl8B20温度测量 .143.1.1 单点测量温度 143.1.2 多点测量温度 153.1.3 DS18B20 ROM搜索算法 .173.1.4 C语言程序实现 .213.2 单总线信号时序 .233.2.1复位脉冲和应答脉冲 .233.2.2写操作和读操作 .25第四章 系统仿真调试 284.1系统开发环境 .284.2系统仿真调试 .29结 论 32致 谢 33参考文献 .34基于 DS18B20 单线多点温度测量系统2基于 DS18B20 单线多点温度测量系统专业班级:电子信息工程 2班 学生姓名:杜刘乾指导老师:秦玉龙 职 称:讲

3、师摘要 本次毕业设计是基于 DS18B20单线多点温度测量系统。以 ATmega16单片机为核心,使用温度传感器 DS18B20实现温度的采集。论文设计的目的是对 DS18B20进行编程,了解其性能特点,通过所学的 C语言知识和相关资料提供的指令代码完成单片机与 DS18B20的温度监测。DS18B20 是一种智能温度传感器,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现 912 位的数字值读数方式。使用 DS18B20可使系统结构更趋简单,抗干扰能力强,适合于恶劣环境下现场温度的测量,可靠性更高,可应用于仓库测温、楼宇空调控制和生产过程监控等领域。单片机对传感器采集来的数据进行处

4、理,通过 LCD把各个点的温度给显示出来,另一方面单片机可以通过串口通讯传给上位机,由上位机软件显示出来;该系统可以设定温度上下限值,当温度超出系统设定的范围时,系统会报警提示。关键词:ATmega16 DS18B20 单线 多点 温度测量基于 DS18B20 单线多点温度测量系统31-Wire Multi-point temperature measurement system based on DS18B20Abstract The graduation project is 1-Wire Multi-point temperature measurement s-ystem based

5、on DS18B20.ATmega16 microprocessor as the core of it, the temper-ature collection is use of DS18B20. Our experimental purpose is programming to DS18B20 and understand its performance characteristics .The instruction code thro-ugh the C language knowledge and relevant information to complete the DS18

6、B20 temperature measurements.DS18B20 is a smart temperature sensor .The DS18B20 digital thermometer provides 9-bit to 12-bit Celsius temperature measurements. UseDS18B20 makes the system structure more simple,and higher reliability.The system can be used in many fileds such as the temperature measur

7、ement system of war-ehouse,the air conditioning control of building and the monitor of productive process.The temperature data is conversed to digital signals in the sensor and then is tran-smitted to MCU, which processes the data from sensor acquisition and displays thetemperature on various points

8、 through the LCD. On the other hand MCU can pass-through the serial port communications PC, from PC software displayed. The syste-m can set temperature limits from top to bottom, when the temperature exceeds t-e limits set by system, the system will prompt the police.Key words ATmega16 DS18B20 1-wir

9、e multi-point temperature measurement基于 DS18B20 单线多点温度测量系统1第一章 绪论1.1 选题背景和意义温度是日常生活、工业、医学、环境保护、化工、石油等领域中不可缺少的物理量。温度的测量和控制在这些领域中就显得尤其重要。传统的温度检测是使用诸如热电偶、热电阻、半导体 PN结之类的模拟传感器,经信号取样电路、放大电路和模数转换电路处理,获取表示温度值的数字信号,再交由微处理器或 DSP处理。因为监测环境复杂,测量点多,信号传输距离远及各种干扰的影响,使得传统测量系统的稳定性和可靠性下降。随着社会的进步和工业技术的发展,温度因素在社会生活的各个方面

10、都起到了重要的作用。由于许多产品对温度范围的要求严格,而目前市场上普遍存在的温度检测仪器大多都是单点测量,同时有温度信息传递不及时、精度度不够高的缺点,不利于工业生产根据温度的变化及时做出决定。在这样的前提下,开发一种能够同时测量多点,并且实时性高、精度度高,能够综合处理多点温度信息的测量系统就很有必要。国外对温度检测技术研究较早,始于 20世纪 70年代。先是采用模拟式的组合仪表采集现场信息并进行指示、记录和控制,80 年代末出现了分布式控制系统,目前正开发和研制计算机数据采集控制系统的多因子综合控制系统。现在世界各国的温度检测技术发展很快,一些国家在实现自动化的基础上正向着完全自动化、无人

11、化的方向发展。我国对于温度检测技术的研究较晚,始于 20世纪 80年代。近年来,我国引进了多达 16个国家和地区的工厂环境控制系统,在总体上,正从消化吸收、简单应用阶段向实用化、综合性应用阶段过渡和发展,对推动工厂温度自动检测产生了积极的作用。与此同时,我国的温度测控设施计算机应用以单片机控制的单参数单回路系统居多,尚无真正意义上的多参数综合控制系统。在生产实际中仍然有许多问题困扰着我们,比如环境控制水平落后,软硬件资源不能共享和可靠性差等缺点。与发达国家相比,还存在较大的差距。近年来随着单片机的发展和传感器技术的革新,温度检测领域也完成了从基于 DS18B20 单线多点温度测量系统2模拟信号

12、到数字信号的转变。DS18B20 温度传感器的广泛应用更是推动了这一领域的发展。我们可以基于 ATmega16单片机,利用液晶显示器件以及 DS18B20 温度传感器等器件,通过温度传感器在单片机下的硬件连接,软件编程即可设计 DS18B20温度传感器系统。该系统可以方便的实现单线多点温度的测量,并可以根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20 与 ATmega16的结合实现了最简温度监测系统,该系统结构简单,

13、抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。1.2 系统概述 本文详细介绍了基于 DS18B20单线多点温度测量系统的构成。大致可分为硬件电路设计、软件程序设计和仿真设计。第二章介绍了硬件电路的设计,包括 ATmega16单片机、DS18B20 传感器的介绍以及电路的连接;第三章介绍了软件的设计,包括 DS18b20温度传感器的使用过程以及如何在一条线上实现单点和多点温度的测量;第四章介绍了如何通过软件平台得出仿真图。关于各个模块的流程图和相关原程序代码将在下面的章节中一一介绍。基于 DS18B20 单线多点温度测量系统3基于 DS18B20 单线多点温度测量系统4第二章

14、 硬件电路的设计该电路是通过 ATmega16单片机和 DS18B20传感器连接而成的温度测量系统。单片机除了可以测量电信号外,还可以用于温度、湿度等非电信号的测量,能独立工作的单片机温度监测、温度控制系统已广泛应用。单片机的接口信号时数字信号,要用单片机作为控制其测量温度,用温度传感器将温度信息转换为电流或电压信号输出,如果转化的信号是模拟信号,还需要进行 A/D转化,以满足单片机接口的需要。可以采用温度传感器 DS18B20,此传感器可以直接获取测温值,进行转换,成功采集温度后,利用单片机进行数据处理,通过 LCD显示温度。以下是系统组成框图。ATmega16单片机报警显示液晶显示按键控制

15、DS18B20DS18B20图 1-1 系统组成框图2.1 ATmega16 单片机ATmega16是基于增强的 AVR RISC结构的低功耗 8位 CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega16 的数据吞吐率高达 1 MIPS/MHz,从而可以减缓系统在功耗和处理速度之间的矛盾。ATmega16 内核具有丰富的指令集和 32个通用工作寄存器。所有的寄存器都直接与运算逻单元(ALU)相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的 CISC微控制器最高至 10倍的数据吞吐率。2.1.1 ATmega

16、16的主要特性 基于 DS18B20 单线多点温度测量系统5(1)先进的 RISC结构 - 16K字节的系统内可编程 Flash,擦写寿命:10,000 次 - 512字节的 EEPROM,擦写寿命:100,000 次- 1K字节的片内 SRAM (2)JTAG接口(与 IEEE1149.1标准兼容) - 符合 JTAG 标准的边界扫描功能- 支持扩展的片内调试功能- 通过 JTAG接口实现对 Flash、 EEPROM、熔丝位和锁定位的编程(3)外设特点- 两个具有独立预分频器和比较器功能的 8位定时器/计数器- 一个具有预分频器、比较功能和捕捉功能的 16位定时器/计数器- 具有独立振荡器

17、的实时计数器 RTC -四通道 PWM - 8路 10位 ADC - 8个单端通道- 面向字节的两线接口- 两个可编程的串行 USART - 可工作于主机/从机模式的 SPI串行接口- 具有独立片内振荡器的可编程看门狗定时器- 片内模拟比较器 (4)I/O和封装 - 32个可编程的 I/O口- 40引脚 PDIP封装,44 引脚 TQFP封装,与 44引脚 MLF封装2.1.2 ATmega16引脚介绍基于 DS18B20 单线多点温度测量系统6图 1-2 ATmega16引脚图(1)VCC:供电电压(2)GND:接地(3)端口 A(PA7PA0):端口 A做为 A/D转换器的模拟输入端。端口

18、 A为 8位双向 I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 A处于高阻状态。(4)端口 B(PB7PB0):端口 B为 8位双向 I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 B处于高阻状态。 (5)端口 C(PC7PC0):端口 C为 8位双向 I/O口,具有可编程的内部上拉电阻。其输

19、出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 C处于高阻状态。如果 JTAG接口使能,即使复位出现引脚 PC5(TDI)、PC3(TMS)与 PC2(TCK)的上拉电阻被激活。 (6)端口 D(PD7PD0):端口 D为 8位双向 I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入基于 DS18B20 单线多点温度测量系统7使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 D处于高

20、阻状态。 (7)RESET:复位输入引脚。持续时间超过最小门限时间的低电平将引起系统复位。持续时间小于门限间的脉冲不能保证可靠复位。 (8)XTAL1:反向振荡放大器与片内时钟操作电路的输入端。 (9)XTAL2:反向振荡放大器的输出端。 (10)AVCC:AVCC 是端口 A与 A/D转换器的电源。不使用 ADC时,该引脚 应直接与 VCC连接。使用 ADC时应通过一个低通滤波器与 VCC连接。 (11)AREF:A/D 的模拟基准输入引脚。 2.2 DS18B20 芯片DS18B20是美国 DALLAS公司推出的单总线数字化测温集成电路,它具有独特的单线接口方式,将非电模拟量温度值转换为数

21、字信号串行输出,仅需占用1位 I/O端口,能够直接读取被测现场的温度值。它的体积小,电压适用范围宽(3V5V),并且可以通过编程实现 912位的温度读数,即具有可调的温度分辨率,因此实用性和可靠性较高,在许多行业中被广泛应用。DS18B20 数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式。型号多种多样,有 LTM8877,LTM8874 等等。主要根据应用场合的不同而改变其外观。封装后的 DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。由于其耐磨耐碰,体积小,使用方便,封

22、装形式多样的特点,也适用于各种狭小空间设备数字测温和控制领域。 2.2.1 DS18B20芯片的特性DS18B20单线数字温度传感器,即“一线器件” ,其具有独特的优点:(1)采用单总线的接口方式,与微处理器连接时,仅需要一条口线即可实现微处理器与 DS18B20的双向通讯。单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。(2)测量温度范围宽,测量精度高 DS18B20的测量范围为-55+125 ;在-10+85 范围内,精度为0.5。基于 DS18B20 单线多点温度测量系统8(3)在使用中不需要任何

23、外围元件。(4)持多点组网功能,多个 DS18B20可以并联在惟一的单线上,实现多点测温。(5)供电方式灵活,DS18B20 可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而使系统结构更趋简单,可靠性更高。(6)测量参数可配置 DS18B20的测量分辨率可通过程序设定 912 位。(7)负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。(8)掉电保护功能,DS18B20 内部含有 EEPROM,在系统断电以后,它仍可保存分辨率及报警温度的设定值。2.2.2 DS18B20引脚排列图 1-3 DS18B20引脚排列1.GND为接

24、地。2.DQ为数字信号输入/输出端。3.VDD为外接供电电源输入口。2.2.3 DS18B20的内部结构DSl8B20的内部主要包括寄生电源、温度传感器、64 位激光 ROM单线接口、存放中间数据的高速暂存器、温度报警触发器 TH和 TL用于存储用户写入报警上下限的报警触。ROM 中的 64位序列号是出厂前被光刻好的,它可以看作是基于 DS18B20 单线多点温度测量系统9该 DS18B20的地址序列码,每个 DS18B20的 64位序列号均不相同。64 位 ROM的排的循环冗余校验码(CRC=X8X5X41) 。ROM 的作用是使每一个 DS18B20都各不相同,这样就可以实现一根总线上挂接

25、多个 DS18B20的目的。HIGH TEMPERATURE TRIGGER.THTEMPRATURE SENSOR64-BIT ROM AND1-WIRE PORTPOWER SUPPLY SENSEMEMORY AND CONTROL LOGICSCRATCHPAD8-BIT CRC GENERATORLOW TEMPERATURE TRIGGER.TLDQINTERNAL VDDVDD图 1-4 DS18B20方框图2.2.4 DS18B20芯片各部分介绍(1)64位激光 ROM每个 DS18B20都有一个唯一储存在 ROM中的 64位编码。最前面 8位是单线产品系列编码:28h。接着的

26、 48位是一个唯一的序列号。最后 8位是以上 56位的 CRC编码。64 位 ROM和 ROM操作控制区允许 DS18B20作为单总线器件并按照单总线协议工作。8位 CRC编码 48位序列号 8位产品系列编码图 1-5 64位激光 ROM码(2)高速暂存存储贮器高速暂存存储器由 9个字节组成,其分配如下图所示。字节 0和字节 1为测得温度信息的 LSB和 MSB,这两个字节是只读的。字节 2和字节 3是 TH和 TL的拷贝。字节 4包含配置寄存器数据,详细介绍如下图所示。字节 5、6 和 7被器件保留,禁止写入。这些数据在读回时全部表现为逻辑 1。高速暂存器的位 8是只读的,包含以上八个字节的

27、 CRC码,CRC 的执行方式如 CRC发生器节所述。基于 DS18B20 单线多点温度测量系统10TEMPERATURE LSBTEMPERATURE MSBTH/USERBYTE1TL/USERBYTE2RESERVEDRESERVEDCOUNT REMAINCOUNT PERCRCSCRATCHPAD BYTE012345678EERAMTH/USERBYTE1TL/USERBYTE2图 1-6 高速暂存存储器映象存储器的第 4位为配置寄存器。用户可以通过按下图所示设置 R0和 R1位来设定 DS18B20的精度。上电默认设置:R0=1,R1=1(12 位精度) 。注意:精度和转换时间之

28、间有直接的关系。暂存器的位 7和位 0-4被器件保留,禁止写入;在读回数据时,它们全部表现为逻辑 1。bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit00 R1 R0 1 1 1 1 1图 1-7 配置寄存器表 1-1 温度分辨率配置R1 R0 精度 最大转换时间0 0 9-bit 93.75ms Tconv/80 1 10-bit 187.5ms Tconv/41 0 11-bit 375ms Tconv/21 1 12-bit 750ms Tconv (3)温度传感器DS18B20中的温度传感器可完成对温度的测量。当温度转换命令发布后,经转换所得的温度值以二字节

29、补码形式存放在高速暂存存储器的第 0和第 1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如图所示。对应的温度计算:当符号位 S=0时,直接将二进制位转换为十进制;当 S=1时,先将补码变为原码,再计算十进制值。基于 DS18B20 单线多点温度测量系统1123 22 21 20 2-1 2-2 2-3 2-4S S S S S 26 25 24BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0LS BYTEBIT15 BIT14 BIT13 BIT12 BIT11 BIT10 BIT9 BIT8MS BYTES=SIGN图 1-8 DS

30、18B20温度寄存器格式表 1-2 温度/数据关系温度/ 二进制表示 十六进制表示+125 00000111 11010000 07D0H+25.0625 00000001 10010001 0191H+10.125 00000000 10100010 00A2H+0.5 00000000 00001000 0008H0 00000000 00000000 0000H-0.5 11111111 11111000 FFF8H-10.125 11111111 01011110 FF5EH-25.0625 11111110 01101111 FE6FH-55 11111100 10010000 FC

31、90H(4)CRC 发生器CRC字节作为 DS18B20 64位 ROM的一部分存储在存储器中。CRC 码由 ROM的前 56位计算得到,被包含在 ROM的重要字节当中。CRC 由存储在存储器中的数据计算得到,因此当存储器中的数据发生改变时,CRC 的值也随之改变。CRC能够在总线控制器读 DS18B20时进行数据校验。为校验数据是否被正确读取,总线控制器必须用接受到的数据计算出一个 CRC值,和存储在 DS18B20的 64位 ROM 中的值(读 ROM时)或 DS18B20内部计算出的 8位 CRC值(读存储器时)进行比较。如果计算得到的 CRC值和读取出来的 CRC值相吻合,数据被无错基

32、于 DS18B20 单线多点温度测量系统12传输。CRC 值的比较以及是否进行下一步操作完全由总线控制器决定。XOR XOR XORINPUT(MSB) (LSB)图 1-9 CRC生成2.3 单线总线系统单总线系统只有一条定义的信号线。每一个总线上的器件必须是漏极开路或三态输出。这样的系统允许每一个挂在总线上的区间都能在适当的时间驱动它。DS18B20 的单总线端口(DQ 引脚)是漏极开路式的,单总线需要一个约 5K 的外部上拉电阻;单总线的空闲状态是高电平。无论任何理由需要暂停某一执行过程时,如果还想恢复执行的画,总线必须停留在空闲状态。在恢复期间,如果单总线处于非活动(高电平)状态,位与

33、位间的恢复时间可以无限长。如果总线停留在低电平超过 480us,总线上的所有器件都将被复位。5UATypRXTX+5V4.7K100MOSFETRX图 1-10 DS18B20电路连接2.3.1 处理顺序经过单线总线接口访问 DS18B20的协议如下:步骤 1:初始化步骤 2:ROM 操作指令步骤 3:DS18B20 功能指令基于 DS18B20 单线多点温度测量系统132.3.2 初始化通过单总线的所有执行操作处理都从一个初始化序列开始。初始化序列包括一个由总线控制器发出的复位脉冲和其后由从机发出的存在脉冲。存在脉冲让总线控制器知道 DS18B20在总线上且已准备好操作。2.3.3 ROM操

34、作指令一旦总线控制器探测到一个存在脉冲,它就发出一条 ROM指令。如果总线上挂有多只 DS18B20,这些指令将基于器件独有的 64位 ROM片序列码使得总线控制器选出特定要进行操作的器件。这些指令同样也可以使总线控制器识别有多少个什么型号的器件挂在总线上,同样,它们也可以识别哪些器件已经符合报警条件。ROM 指令有 5条,都是 8位长度。总线控制器在发起一条 DS18B20功能指令之前必须先发出一条 ROM指令。表 2-3 ROM操作指令2.3.4 DS18B20功能指令在总线控制器发给欲连接的 DS18B20一条 ROM命令后,跟着可以发送一条DS18B20功能指令。这些命令允许总线控制器

35、读写 DS18B20的暂存器,发起温度转换和识别电源模式。DS18B20 功能指令如下图所示:指令名称 指令代码 指令功能读 ROM 33H 读 DS18B20 ROM中的编码(即读 64位地址编码)ROM匹配 55H发出此命令之后,接着发出 64位 ROM编码,访问单总线上与编码相对应 DS18B20使之作出响应,为下一步对该 DS18B20的读写作准备搜索 ROM 0F0H 用于确定接在同一总线上 DS18B20的个数和识别 64位 ROM地址,为操作各器件作好准备跳过 ROM 0CCH 忽略 64位 ROM地址,直接向 DS18B20发温度变换命令,适用于单片机工作报警搜索 0ECH 该

36、指令执行后,只有温度超过设定值上限或下限的片子才做出响应基于 DS18B20 单线多点温度测量系统14表 2-4 DS18B20功能指令指令名称 指令代码 指令功能温度变换 44H 启动 DS18B20进行温度转换,转换时间最长为 500ms(典型为 200ms),结果存入内部 9字节 RAM中读暂存器 0BEH 读内部 RAM中 9字节的内容写暂存器 4EH 发出向内部 RAM的第 3,4字节写上,下限温度数据命令,紧跟着该命令之后是传送两字节的数据复制暂存器 48H 将 RAM的第 3,4字节的内容复制到 EEPROM中重调 EEPROM 0B8H EEPROM中的内容恢复到 RAM中的第

37、 3,4字节读供电方式 0B4H 读 DS18B20的供电模式,寄生供电时 DS18B20发送“0” ,外接供电时 DS18B20发送“1”基于 DS18B20 单线多点温度测量系统15第三章 系统软件设计整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。从软件的功能不同可分为两大类:一是监控软件(主程序) ,它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序) ,它是用来完成各种实质性的功能如测量、计算、显示、报警等。每一个执行软件也就是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口

38、定义。各执行模块规划好后,就可以规划监控程序了。以下是系统软件结构图:主程序液晶显示子程序温度测量子程序中断程序控制键盘扫描选择程序图 3-1 系统软件结构图3.1 DSl8B20 温度测量3.1.1 单点测量温度如果总线上只有一个器件, 则不需要识别器件的编码, 直接访问该器件即可。访问流程图如下:基于 DS18B20 单线多点温度测量系统16初始化 DS18B20开始发 Skip ROM命令温度转换延时 500ms等待温度转换初始化 DS18B20发 Skip ROM命令发读温度命令读 DS18B20返回 EEPROM中的内容,顺序从字节 0的 LSB位开始读两次,即读出温度值的高低两字将

39、二进制温度转换成十进制温度取整数部分的 7位至 ACC各位中以实现温度转换结束图 3-2单点温度测量流程图3.1.2 多点测量温度多点测量温度中需每一片 DSl8B20在 ROM中都存有唯一的序列号, 在出厂前己写入片内 ROM中,主机在进入操作程序前必须逐一接入 DS18B20用读 ROM(33H)命令将该 DS18B20的序列号读出并登录。当主机需要对众多在线 DS18B20的某一个进行操作时, 首先要发出匹配 ROM命令(55H), 紧接着主机提供 64位序列号,之后的操作就是针对该 DS18B20的。而所谓跳过 ROM命令即为:之后的操作基于 DS18B20 单线多点温度测量系统17是

40、对所有 DS18B20的。框图中先有跳过 ROM,即是启动所有 DS18B20进行温度变换,之后通过匹配 ROM,再逐一地读回每个 DS18B20的温度数据。在 DS18B20组成的测温系统中,主机在发出跳过 ROM命令之后, 再发出统一的温度转换启动码44H, 就可以实现所有 DS18B20的统一转换,再经过 1秒后,就可以用很少的时间去逐一读取。开始结束初始化 DS18B20发送搜索 ROM命令读在线 DS18B20序列号初始化 DS18B20存在一个 DS18B20发送温度转换命令发送匹配 ROM命令发送匹配温度传感器序列号所有传感器温度读取完毕读取温度NYNNY图 3-3 多点温度测量

41、流程图基于 DS18B20 单线多点温度测量系统183.1.3 DS18B20 ROM搜索算法搜索算法采用的是二叉树型结构,搜索过程沿各分节点进行,直到找到器件的 ROM码即叶子为止;后续的搜索操作沿着节点上的其它路径进行,按照同样的方式直到找到总线上的所有器件代码。搜索算法首先通过复位(reset)和在线应答脉冲(presence pulse)时隙将 1-Wire总线上的所有器件复位;成功地执行该操作后,发送 1个字节的搜索命令;搜索命令使 1-Wire器件准备就绪、开始进行搜索操作。 搜索命令分为两类:标准搜索命令(F0 hex)用来搜索连接到网络中所有器件;报警或有条件搜索命令(EC h

42、ex)只用来搜索那些处于报警状态下的器件,这种方式缩小了搜索范围,可以快速查找到所需要注意的器件。当单线总线上挂有多个 DS18B20时,系统对总线上器件的数量和每个器件的 ROM的识别与搜索是通过 DS18820 ROM搜索命令与算法配合来实现的。下面具体介绍 ROM搜索命令的工作过程。对 64位 ROM编码识别从最低位开始,ROM编码的每一位搜索过程可总结为“两读一写”:读一位,读该位补码;写一位。总线主机在 ROM编码每一位上完成这三步就可以获得一个器件的 ROM编码。(1)读两位总线主机发布 ROM搜索命令后执行一次读,总线上所有器件就把它们各自ROM编码的第一位放到总线来作出响应。这

43、次读获得的数据是所有器件放在总线上数据的“与” 。再执行一次读,因为 ROM搜索命令正在执行所以总线上所有器件把各自 ROM编码的第一位的补码放在总线上,第二次读获得的数据也是所有器件放在总线上数据的“与” 。对第一位的“两读”就此完成。之后主机再次进行的“两读”则是针对 ROM编码的第二位,以此类推。从“两读”获得的数据有以下解释,如下表所列。表 3-1 “两读”数据解释“两读”数据 “两读”数据解释00 有器件的总线上,总线上所有器件再次数据位上发生冲突01 有器件的总线上,总线上所有器件再次数据位均为 010 有器件的总线上,总线上所有器件再次数据位均为 111 没有器件在总线上基于 D

44、S18B20 单线多点温度测量系统19(2)写一位对 ROM编码的某一位“两读”之后,对该位进行“一写”操作。“一写”操作写的数据要根据“两读”获得的数据来确定。如果“两读”数据为 00,则表示总线上器件在该位上数据发生冲突,“一写”写的数据此种情况下具有“排除”的作用,如果器件 ROM编码在该位上的数据与“一写”写的数据相同,则继续保持与总线的联系。如果不相同则此器件从总线上“排除”,不再响应主机发布的命令,直到主机进行下一次复位。如果“两读”数据为 01,则表示总线上所有器件在该位上均位 0,为保持器件与总线的联系,“一写”操作主机应写 0。同理,如“两读”数据为 10,主机则应写 1。执

45、行 1-Wire复位信号检测到应答脉冲Last-Device Flag=1?是否是 2否设 id_bit_number值为 1设 last_zero值为 0发送搜索命令(F0 或 ECh设 id_bit_number值为 1设 last_zero值为 0)2基于 DS18B20 单线多点温度测量系统202发送搜索命令(F0 或 ECh)id_bit=cmp_id_bit =1? 2是否id_bit=cmp_id_bit=0?= 0?id_bit_number=LastDiscrepancy? ? id_bit_number=LastDiscrepancy? ? 是 否 否否 是 是将 sear

46、ch_direction设置为 id bit的值y ? 设 search_direction数据位值为 1设 search_direction数据位值为 0将 ROM_NO中第 id_bit_number位的值赋给search_directionsearch-direction= 0?将ROM_NO中第id_bit_number位的值赋给search_direction否 是 将当前的 id_bit_number值赋给 last_zerosearch-direction=0?将 search_direction位赋给 ROM_NO中的第 id_bit_number位;并向 1-Wire总线上参

47、与搜索的器件发送该位递增 id_bit_number的值id_bit-number64?否 是 将 last_zero 的值赋给 LastDiscrepancylast-discrepancy=0 ?设置 LastDeviceFlag标记为已找到最后一个器件last_zero20)return(0x00); /返回 0x00,报告复位失败errTime=0;while(!(STU_DS18B20()delay_us(60); errTime+;if(errTime50)return(0x00); /返回 0x00,报告复位失败return(0xff); /返回 0xFF,报告复位成功基于 DS

48、18B20 单线多点温度测量系统253.2.2写操作和读操作主机发出各种操作命令,但各种操作命令都是向 DS18B20写 0和写 1组成的命令字节,接收数据时也是从 DS18B20读取 0或 1的过程。因此首先要搞清主机是如何进行写 0、写 1、读 0和读 1的。(1)写操作写周期最少为 60微秒,最长不超过 120微秒。写周期一开始做为主机先把总线拉低 1微秒表示写周期开始。随后若主机想写 0,则继续拉低电平最少 60微秒直至写周期结束,然后释放总线为高电平。若主机想写 1,在一开始拉低总线电平 1微秒后就释放总线为高电平,一直到写周期结束。而做为从机的 DS18B20则在检测到总线被拉底后

49、等待 15微秒然后从 15us到 45us开始对总线采样,在采样期内总线为高电平则为 1,若采样期内总线为低电平则为 0。控制器写 0时隙60us1us图 3-6 写时隙写操作程序:/*写时隙 主机在写 1时隙向 DS18B20写入 1,在写 0时隙向 DS18B20写入0所有写时隙至少需要 60us,且在两次写时隙之间至少需要 1us的恢复时间两种写时隙均以主机拉低总线开始产生写 1时隙:主机拉低总线后,必须在 15us内释放总线,由上拉电阻拉回至高电平产生写 0时隙:主机拉低总线后,必须整个时隙保持低电平 */void wirteBit_DS18B20(uchar wbit)基于 DS18B20 单线多点温度测量系统26wbit HLD_DS18B20(); /Maga16控制总线 DDR=1CLR_DS18B20(); /强制拉低 PORT=0delay_us(2); if(wbit)RLS_DS18B20(); /释放总线,自动上拉至高电平elseCLR_DS18B20(); /强制拉低delay_us(60); /14.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 学术论文 > 论文指导/设计

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报