已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1目录第一章绪论111选题背景和意义112系统概述2第二章硬件电路的设计321ATMEGA16单片机3211ATMEGA16的主要特性3212ATMEGA16引脚介绍422DS18B20芯片6221DS18B20芯片的特性6222DS18B20引脚排列7223DS18B20的内部结构7224DS18B20芯片各部分介绍823单线总线系统11231处理顺序11232初始化12233ROM操作指令12234DS18B20功能指令12第三章系统软件设计1431DSL8B20温度测量14311单点测量温度14312多点测量温度15313DS18B20ROM搜索算法17314C语言程序实现2132单总线信号时序23321复位脉冲和应答脉冲23322写操作和读操作25第四章系统仿真调试2841系统开发环境2842系统仿真调试29结论32致谢33参考文献342基于DS18B20单线多点温度测量系统专业班级电子信息工程2班学生姓名杜刘乾指导老师秦玉龙职称讲师摘要本次毕业设计是基于DS18B20单线多点温度测量系统。以ATMEGA16单片机为核心,使用温度传感器DS18B20实现温度的采集。论文设计的目的是对DS18B20进行编程,了解其性能特点,通过所学的C语言知识和相关资料提供的指令代码完成单片机与DS18B20的温度监测。DS18B20是一种智能温度传感器,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现912位的数字值读数方式。使用DS18B20可使系统结构更趋简单,抗干扰能力强,适合于恶劣环境下现场温度的测量,可靠性更高,可应用于仓库测温、楼宇空调控制和生产过程监控等领域。单片机对传感器采集来的数据进行处理,通过LCD把各个点的温度给显示出来,另一方面单片机可以通过串口通讯传给上位机,由上位机软件显示出来;该系统可以设定温度上下限值,当温度超出系统设定的范围时,系统会报警提示。关键词ATMEGA16DS18B20单线多点温度测量31WIREMULTIPOINTTEMPERATUREMEASUREMENTSYSTEMBASEDONDS18B20ABSTRACTTHEGRADUATIONPROJECTIS1WIREMULTIPOINTTEMPERATUREMEASUREMENTSYSTEMBASEDONDS18B20ATMEGA16MICROPROCESSORASTHECOREOFIT,THETEMPERATURECOLLECTIONISUSEOFDS18B20OUREXPERIMENTALPURPOSEISPROGRAMMINGTODS18B20ANDUNDERSTANDITSPERFORMANCECHARACTERISTICSTHEINSTRUCTIONCODETHROUGHTHECLANGUAGEKNOWLEDGEANDRELEVANTINFORMATIONTOCOMPLETETHEDS18B20TEMPERATUREMEASUREMENTSDS18B20ISASMARTTEMPERATURESENSORTHEDS18B20DIGITALTHERMOMETERPROVIDES9BITTO12BITCELSIUSTEMPERATUREMEASUREMENTSUSEDS18B20MAKESTHESYSTEMSTRUCTUREMORESIMPLE,ANDHIGHERRELIABILITYTHESYSTEMCANBEUSEDINMANYFILEDSSUCHASTHETEMPERATUREMEASUREMENTSYSTEMOFWAREHOUSE,THEAIRCONDITIONINGCONTROLOFBUILDINGANDTHEMONITOROFPRODUCTIVEPROCESSTHETEMPERATUREDATAISCONVERSEDTODIGITALSIGNALSINTHESENSORANDTHENISTRANSMITTEDTOMCU,WHICHPROCESSESTHEDATAFROMSENSORACQUISITIONANDDISPLAYSTHETEMPERATUREONVARIOUSPOINTSTHROUGHTHELCDONTHEOTHERHANDMCUCANPASSTHROUGHTHESERIALPORTCOMMUNICATIONSPC,FROMPCSOFTWAREDISPLAYEDTHESYSTEMCANSETTEMPERATURELIMITSFROMTOPTOBOTTOM,WHENTHETEMPERATUREEXCEEDSTELIMITSSETBYSYSTEM,THESYSTEMWILLPROMPTTHEPOLICEKEYWORDSATMEGA16DS18B201WIREMULTIPOINTTEMPERATUREMEASUREMENT1第一章绪论11选题背景和意义温度是日常生活、工业、医学、环境保护、化工、石油等领域中不可缺少的物理量。温度的测量和控制在这些领域中就显得尤其重要。传统的温度检测是使用诸如热电偶、热电阻、半导体PN结之类的模拟传感器,经信号取样电路、放大电路和模数转换电路处理,获取表示温度值的数字信号,再交由微处理器或DSP处理。因为监测环境复杂,测量点多,信号传输距离远及各种干扰的影响,使得传统测量系统的稳定性和可靠性下降。随着社会的进步和工业技术的发展,温度因素在社会生活的各个方面都起到了重要的作用。由于许多产品对温度范围的要求严格,而目前市场上普遍存在的温度检测仪器大多都是单点测量,同时有温度信息传递不及时、精度度不够高的缺点,不利于工业生产根据温度的变化及时做出决定。在这样的前提下,开发一种能够同时测量多点,并且实时性高、精度度高,能够综合处理多点温度信息的测量系统就很有必要。国外对温度检测技术研究较早,始于20世纪70年代。先是采用模拟式的组合仪表采集现场信息并进行指示、记录和控制,80年代末出现了分布式控制系统,目前正开发和研制计算机数据采集控制系统的多因子综合控制系统。现在世界各国的温度检测技术发展很快,一些国家在实现自动化的基础上正向着完全自动化、无人化的方向发展。我国对于温度检测技术的研究较晚,始于20世纪80年代。近年来,我国引进了多达16个国家和地区的工厂环境控制系统,在总体上,正从消化吸收、简单应用阶段向实用化、综合性应用阶段过渡和发展,对推动工厂温度自动检测产生了积极的作用。与此同时,我国的温度测控设施计算机应用以单片机控制的单参数单回路系统居多,尚无真正意义上的多参数综合控制系统。在生产实际中仍然有许多问题困扰着我们,比如环境控制水平落后,软硬件资源不能共享和可靠性差等缺点。与发达国家相比,还存在较大的差距。近年来随着单片机的发展和传感器技术的革新,温度检测领域也完成了从2模拟信号到数字信号的转变。DS18B20温度传感器的广泛应用更是推动了这一领域的发展。我们可以基于ATMEGA16单片机,利用液晶显示器件以及DS18B20温度传感器等器件,通过温度传感器在单片机下的硬件连接,软件编程即可设计DS18B20温度传感器系统。该系统可以方便的实现单线多点温度的测量,并可以根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与ATMEGA16的结合实现了最简温度监测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。12系统概述本文详细介绍了基于DS18B20单线多点温度测量系统的构成。大致可分为硬件电路设计、软件程序设计和仿真设计。第二章介绍了硬件电路的设计,包括ATMEGA16单片机、DS18B20传感器的介绍以及电路的连接;第三章介绍了软件的设计,包括DS18B20温度传感器的使用过程以及如何在一条线上实现单点和多点温度的测量;第四章介绍了如何通过软件平台得出仿真图。关于各个模块的流程图和相关原程序代码将在下面的章节中一一介绍。34第二章硬件电路的设计该电路是通过ATMEGA16单片机和DS18B20传感器连接而成的温度测量系统。单片机除了可以测量电信号外,还可以用于温度、湿度等非电信号的测量,能独立工作的单片机温度监测、温度控制系统已广泛应用。单片机的接口信号时数字信号,要用单片机作为控制其测量温度,用温度传感器将温度信息转换为电流或电压信号输出,如果转化的信号是模拟信号,还需要进行A/D转化,以满足单片机接口的需要。可以采用温度传感器DS18B20,此传感器可以直接获取测温值,进行转换,成功采集温度后,利用单片机进行数据处理,通过LCD显示温度。以下是系统组成框图。ATMEGA16单片机报警显示液晶显示按键控制DS18B20DS18B20图11系统组成框图21ATMEGA16单片机ATMEGA16是基于增强的AVRRISC结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATMEGA16的数据吞吐率高达1MIPS/MHZ,从而可以减缓系统在功耗和处理速度之间的矛盾。ATMEGA16内核具有丰富的指令集和32个通用工作寄存器。所有的寄存器都直接与运算逻单元ALU相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC微控制器最高至10倍的数据吞吐率。211ATMEGA16的主要特性51先进的RISC结构16K字节的系统内可编程FLASH,擦写寿命10,000次512字节的EEPROM,擦写寿命100,000次1K字节的片内SRAM2JTAG接口(与IEEE11491标准兼容)符合JTAG标准的边界扫描功能支持扩展的片内调试功能通过JTAG接口实现对FLASH、EEPROM、熔丝位和锁定位的编程3外设特点两个具有独立预分频器和比较器功能的8位定时器/计数器一个具有预分频器、比较功能和捕捉功能的16位定时器/计数器具有独立振荡器的实时计数器RTC四通道PWM8路10位ADC8个单端通道面向字节的两线接口两个可编程的串行USART可工作于主机/从机模式的SPI串行接口具有独立片内振荡器的可编程看门狗定时器片内模拟比较器4I/O和封装32个可编程的I/O口40引脚PDIP封装,44引脚TQFP封装,与44引脚MLF封装212ATMEGA16引脚介绍6图12ATMEGA16引脚图1VCC供电电压2GND接地3端口APA7PA0端口A做为A/D转换器的模拟输入端。端口A为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口A处于高阻状态。4端口BPB7PB0端口B为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口B处于高阻状态。5端口CPC7PC0端口C为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口C处于高阻状态。如果JTAG接口使能,即使复位出现引脚PC5TDI、PC3TMS与PC2TCK的上拉电阻被激活。6端口DPD7PD0端口D为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入7使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口D处于高阻状态。7RESET复位输入引脚。持续时间超过最小门限时间的低电平将引起系统复位。持续时间小于门限间的脉冲不能保证可靠复位。8XTAL1反向振荡放大器与片内时钟操作电路的输入端。9XTAL2反向振荡放大器的输出端。10AVCCAVCC是端口A与A/D转换器的电源。不使用ADC时,该引脚应直接与VCC连接。使用ADC时应通过一个低通滤波器与VCC连接。11AREFA/D的模拟基准输入引脚。22DS18B20芯片DS18B20是美国DALLAS公司推出的单总线数字化测温集成电路,它具有独特的单线接口方式,将非电模拟量温度值转换为数字信号串行输出,仅需占用1位I/O端口,能够直接读取被测现场的温度值。它的体积小,电压适用范围宽3V5V,并且可以通过编程实现912位的温度读数,即具有可调的温度分辨率,因此实用性和可靠性较高,在许多行业中被广泛应用。DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式。型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。由于其耐磨耐碰,体积小,使用方便,封装形式多样的特点,也适用于各种狭小空间设备数字测温和控制领域。221DS18B20芯片的特性DS18B20单线数字温度传感器,即“一线器件”,其具有独特的优点1采用单总线的接口方式,与微处理器连接时,仅需要一条口线即可实现微处理器与DS18B20的双向通讯。单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。2测量温度范围宽,测量精度高DS18B20的测量范围为55125;在1085范围内,精度为05。83在使用中不需要任何外围元件。4持多点组网功能,多个DS18B20可以并联在惟一的单线上,实现多点测温。5供电方式灵活,DS18B20可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而使系统结构更趋简单,可靠性更高。6测量参数可配置DS18B20的测量分辨率可通过程序设定912位。7负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。8掉电保护功能,DS18B20内部含有EEPROM,在系统断电以后,它仍可保存分辨率及报警温度的设定值。222DS18B20引脚排列图13DS18B20引脚排列1GND为接地。2DQ为数字信号输入/输出端。3VDD为外接供电电源输入口。223DS18B20的内部结构DSL8B20的内部主要包括寄生电源、温度传感器、64位激光ROM单线接口、存放中间数据的高速暂存器、温度报警触发器TH和TL用于存储用户写入报警上下限的报警触。ROM中的64位序列号是出厂前被光刻好的,它可以看作是9该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。64位ROM的排的循环冗余校验码(CRCX8X5X41)。ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。HIGHTEMPERATURETRIGGERTHTEMPRATURESENSOR64BITROMAND1WIREPORTPOWERSUPPLYSENSEMEMORYANDCONTROLLOGICSCRATCHPAD8BITCRCGENERATORLOWTEMPERATURETRIGGERTLDQINTERNALVDDVDD图14DS18B20方框图224DS18B20芯片各部分介绍164位激光ROM每个DS18B20都有一个唯一储存在ROM中的64位编码。最前面8位是单线产品系列编码28H。接着的48位是一个唯一的序列号。最后8位是以上56位的CRC编码。64位ROM和ROM操作控制区允许DS18B20作为单总线器件并按照单总线协议工作。8位CRC编码48位序列号8位产品系列编码图1564位激光ROM码2高速暂存存储贮器高速暂存存储器由9个字节组成,其分配如下图所示。字节0和字节1为测得温度信息的LSB和MSB,这两个字节是只读的。字节2和字节3是TH和TL的拷贝。字节4包含配置寄存器数据,详细介绍如下图所示。字节5、6和7被器件保留,禁止写入。这些数据在读回时全部表现为逻辑1。高速暂存器的位8是只读的,包含以上八个字节的CRC码,CRC的执行方式如CRC发生器节所述。10TEMPERATURELSBTEMPERATUREMSBTH/USERBYTE1TL/USERBYTE2RESERVEDRESERVEDCOUNTREMAINCOUNTPERCRCSCRATCHPADBYTE012345678EERAMTH/USERBYTE1TL/USERBYTE2图16高速暂存存储器映象存储器的第4位为配置寄存器。用户可以通过按下图所示设置R0和R1位来设定DS18B20的精度。上电默认设置R01,R11(12位精度)。注意精度和转换时间之间有直接的关系。暂存器的位7和位04被器件保留,禁止写入;在读回数据时,它们全部表现为逻辑1。BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT00R1R011111图17配置寄存器表11温度分辨率配置R1R0精度最大转换时间009BIT9375MSTCONV/80110BIT1875MSTCONV/41011BIT375MSTCONV/21112BIT750MSTCONV3温度传感器DS18B20中的温度传感器可完成对温度的测量。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如图所示。对应的温度计算当符号位S0时,直接将二进制位转换为十进制;当S1时,先将补码变为原码,再计算十进制值。112322212021222324SSSSS262524BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0LSBYTEBIT15BIT14BIT13BIT12BIT11BIT10BIT9BIT8MSBYTESSIGN图18DS18B20温度寄存器格式表12温度/数据关系温度/二进制表示十六进制表示125000001111101000007D0H25062500000001100100010191H10125000000001010001000A2H0500000000000010000008H000000000000000000000H051111111111111000FFF8H101251111111101011110FF5EH2506251111111001101111FE6FH551111110010010000FC90H(4)CRC发生器CRC字节作为DS18B2064位ROM的一部分存储在存储器中。CRC码由ROM的前56位计算得到,被包含在ROM的重要字节当中。CRC由存储在存储器中的数据计算得到,因此当存储器中的数据发生改变时,CRC的值也随之改变。CRC能够在总线控制器读DS18B20时进行数据校验。为校验数据是否被正确读取,总线控制器必须用接受到的数据计算出一个CRC值,和存储在DS18B20的64位ROM中的值(读ROM时)或DS18B20内部计算出的8位CRC值(读存储器时)进行比较。如果计算得到的CRC值和读取出来的CRC值相吻合,数据被无错12传输。CRC值的比较以及是否进行下一步操作完全由总线控制器决定。XORXORXORINPUTMSBLSB图19CRC生成23单线总线系统单总线系统只有一条定义的信号线。每一个总线上的器件必须是漏极开路或三态输出。这样的系统允许每一个挂在总线上的区间都能在适当的时间驱动它。DS18B20的单总线端口(DQ引脚)是漏极开路式的,单总线需要一个约5K的外部上拉电阻;单总线的空闲状态是高电平。无论任何理由需要暂停某一执行过程时,如果还想恢复执行的画,总线必须停留在空闲状态。在恢复期间,如果单总线处于非活动(高电平)状态,位与位间的恢复时间可以无限长。如果总线停留在低电平超过480US,总线上的所有器件都将被复位。5UATYPRXTX5V47K100MOSFETRX图110DS18B20电路连接231处理顺序经过单线总线接口访问DS18B20的协议如下步骤1初始化步骤2ROM操作指令步骤3DS18B20功能指令13232初始化通过单总线的所有执行操作处理都从一个初始化序列开始。初始化序列包括一个由总线控制器发出的复位脉冲和其后由从机发出的存在脉冲。存在脉冲让总线控制器知道DS18B20在总线上且已准备好操作。233ROM操作指令一旦总线控制器探测到一个存在脉冲,它就发出一条ROM指令。如果总线上挂有多只DS18B20,这些指令将基于器件独有的64位ROM片序列码使得总线控制器选出特定要进行操作的器件。这些指令同样也可以使总线控制器识别有多少个什么型号的器件挂在总线上,同样,它们也可以识别哪些器件已经符合报警条件。ROM指令有5条,都是8位长度。总线控制器在发起一条DS18B20功能指令之前必须先发出一条ROM指令。表23ROM操作指令234DS18B20功能指令在总线控制器发给欲连接的DS18B20一条ROM命令后,跟着可以发送一条DS18B20功能指令。这些命令允许总线控制器读写DS18B20的暂存器,发起温度转换和识别电源模式。DS18B20功能指令如下图所示指令名称指令代码指令功能读ROM33H读DS18B20ROM中的编码(即读64位地址编码)ROM匹配55H发出此命令之后,接着发出64位ROM编码,访问单总线上与编码相对应DS18B20使之作出响应,为下一步对该DS18B20的读写作准备搜索ROM0F0H用于确定接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备跳过ROM0CCH忽略64位ROM地址,直接向DS18B20发温度变换命令,适用于单片机工作报警搜索0ECH该指令执行后,只有温度超过设定值上限或下限的片子才做出响应14表24DS18B20功能指令指令名称指令代码指令功能温度变换44H启动DS18B20进行温度转换,转换时间最长为500MS典型为200MS,结果存入内部9字节RAM中读暂存器0BEH读内部RAM中9字节的内容写暂存器4EH发出向内部RAM的第3,4字节写上,下限温度数据命令,紧跟着该命令之后是传送两字节的数据复制暂存器48H将RAM的第3,4字节的内容复制到EEPROM中重调EEPROM0B8HEEPROM中的内容恢复到RAM中的第3,4字节读供电方式0B4H读DS18B20的供电模式,寄生供电时DS18B20发送“0”,外接供电时DS18B20发送“1”15第三章系统软件设计整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。从软件的功能不同可分为两大类一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、报警等。每一个执行软件也就是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。以下是系统软件结构图主程序液晶显示子程序温度测量子程序中断程序控制键盘扫描选择程序图31系统软件结构图31DSL8B20温度测量311单点测量温度如果总线上只有一个器件,则不需要识别器件的编码,直接访问该器件即可。访问流程图如下16初始化DS18B20开始发SKIPROM命令温度转换延时500MS等待温度转换初始化DS18B20发SKIPROM命令发读温度命令读DS18B20返回EEPROM中的内容,顺序从字节0的LSB位开始读两次,即读出温度值的高低两字将二进制温度转换成十进制温度取整数部分的7位至ACC各位中以实现温度转换结束图32单点温度测量流程图312多点测量温度多点测量温度中需每一片DSL8B20在ROM中都存有唯一的序列号,在出厂前己写入片内ROM中,主机在进入操作程序前必须逐一接入DS18B20用读ROM33H命令将该DS18B20的序列号读出并登录。当主机需要对众多在线DS18B20的某一个进行操作时,首先要发出匹配ROM命令55H,紧接着主机提供64位序列号,之后的操作就是针对该DS18B20的。而所谓跳过ROM命令即为之后的操作17是对所有DS18B20的。框图中先有跳过ROM,即是启动所有DS18B20进行温度变换,之后通过匹配ROM,再逐一地读回每个DS18B20的温度数据。在DS18B20组成的测温系统中,主机在发出跳过ROM命令之后,再发出统一的温度转换启动码44H,就可以实现所有DS18B20的统一转换,再经过1秒后,就可以用很少的时间去逐一读取。开始结束初始化DS18B20发送搜索ROM命令读在线DS18B20序列号初始化DS18B20存在一个DS18B20发送温度转换命令发送匹配ROM命令发送匹配温度传感器序列号所有传感器温度读取完毕读取温度NYNNY图33多点温度测量流程图18313DS18B20ROM搜索算法搜索算法采用的是二叉树型结构,搜索过程沿各分节点进行,直到找到器件的ROM码即叶子为止;后续的搜索操作沿着节点上的其它路径进行,按照同样的方式直到找到总线上的所有器件代码。搜索算法首先通过复位(RESET)和在线应答脉冲(PRESENCEPULSE)时隙将1WIRE总线上的所有器件复位;成功地执行该操作后,发送1个字节的搜索命令;搜索命令使1WIRE器件准备就绪、开始进行搜索操作。搜索命令分为两类标准搜索命令F0HEX用来搜索连接到网络中所有器件;报警或有条件搜索命令ECHEX只用来搜索那些处于报警状态下的器件,这种方式缩小了搜索范围,可以快速查找到所需要注意的器件。当单线总线上挂有多个DS18B20时,系统对总线上器件的数量和每个器件的ROM的识别与搜索是通过DS18820ROM搜索命令与算法配合来实现的。下面具体介绍ROM搜索命令的工作过程。对64位ROM编码识别从最低位开始,ROM编码的每一位搜索过程可总结为“两读一写”读一位,读该位补码;写一位。总线主机在ROM编码每一位上完成这三步就可以获得一个器件的ROM编码。1读两位总线主机发布ROM搜索命令后执行一次读,总线上所有器件就把它们各自ROM编码的第一位放到总线来作出响应。这次读获得的数据是所有器件放在总线上数据的“与”。再执行一次读,因为ROM搜索命令正在执行所以总线上所有器件把各自ROM编码的第一位的补码放在总线上,第二次读获得的数据也是所有器件放在总线上数据的“与”。对第一位的“两读”就此完成。之后主机再次进行的“两读”则是针对ROM编码的第二位,以此类推。从“两读”获得的数据有以下解释,如下表所列。表31“两读”数据解释“两读”数据“两读”数据解释00有器件的总线上,总线上所有器件再次数据位上发生冲突01有器件的总线上,总线上所有器件再次数据位均为010有器件的总线上,总线上所有器件再次数据位均为111没有器件在总线上192写一位对ROM编码的某一位“两读”之后,对该位进行“一写”操作。“一写”操作写的数据要根据“两读”获得的数据来确定。如果“两读”数据为00,则表示总线上器件在该位上数据发生冲突,“一写”写的数据此种情况下具有“排除”的作用,如果器件ROM编码在该位上的数据与“一写”写的数据相同,则继续保持与总线的联系。如果不相同则此器件从总线上“排除”,不再响应主机发布的命令,直到主机进行下一次复位。如果“两读”数据为01,则表示总线上所有器件在该位上均位0,为保持器件与总线的联系,“一写”操作主机应写0。同理,如“两读”数据为10,主机则应写1。执行1WIRE复位信号检测到应答脉冲LASTDEVICEFLAG1是否是2否设ID_BIT_NUMBER值为1设LAST_ZERO值为0发送搜索命令F0或ECH设ID_BIT_NUMBER值为1设LAST_ZERO值为02202发送搜索命令F0或ECHID_BITCMP_ID_BIT12是否ID_BITCMP_ID_BIT00ID_BIT_NUMBERLASTDISCREPANCYID_BIT_NUMBERLASTDISCREPANCY是否否否是是将SEARCH_DIRECTION设置为IDBIT的值Y设SEARCH_DIRECTION数据位值为1设SEARCH_DIRECTION数据位值为0将ROM_NO中第ID_BIT_NUMBER位的值赋给SEARCH_DIRECTIONSEARCHDIRECTION0将ROM_NO中第ID_BIT_NUMBER位的值赋给SEARCH_DIRECTION否是将当前的ID_BIT_NUMBER值赋给LAST_ZEROSEARCHDIRECTION0将SEARCH_DIRECTION位赋给ROM_NO中的第ID_BIT_NUMBER位;并向1WIRE总线上参与搜索的器件发送该位递增ID_BIT_NUMBER的值ID_BITNUMBER64否是将LAST_ZERO的值赋给LASTDISCREPANCYLASTDISCREPANCY0设置LASTDEVICEFLAG标记为已找到最后一个器件LAST_ZERO20RETURN0X00/返回0X00,报告复位失败ERRTIME0WHILESTU_DS18B20DELAY_US60ERRTIMEIFERRTIME50RETURN0X00/返回0X00,报告复位失败RETURN0XFF/返回0XFF,报告复位成功25322写操作和读操作主机发出各种操作命令,但各种操作命令都是向DS18B20写0和写1组成的命令字节,接收数据时也是从DS18B20读取0或1的过程。因此首先要搞清主机是如何进行写0、写1、读0和读1的。1写操作写周期最少为60微秒,最长不超过120微秒。写周期一开始做为主机先把总线拉低1微秒表示写周期开始。随后若主机想写0,则继续拉低电平最少60微秒直至写周期结束,然后释放总线为高电平。若主机想写1,在一开始拉低总线电平1微秒后就释放总线为高电平,一直到写周期结束。而做为从机的DS18B20则在检测到总线被拉底后等待15微秒然后从15US到45US开始对总线采样,在采样期内总线为高电平则为1,若采样期内总线为低电平则为0。控制器写0时隙60US1US图36写时隙写操作程序/写时隙主机在写1时隙向DS18B20写入1,在写0时隙向DS18B20写入0所有写时隙至少需要60US,且在两次写时隙之间至少需要1US的恢复时间两种写时隙均以主机拉低总线开始产生写1时隙主机拉低总线后,必须在15US内释放总线,由上拉电阻拉回至高电平产生写0时隙主机拉低总线后,必须整个时隙保持低电平/VOIDWIRTEBIT_DS18B20UCHARWBIT26WBITHLD_DS18B20/MAGA16控制总线DDR1CLR_DS18B20/强制拉低PORT0DELAY_US2IFWBITRLS_DS18B20/释放总线,自动上拉至高电平ELSECLR_DS18B20/强制拉低DELAY_US60/1492USRLS_DS18B20/释放总线DDR0DELAY_US2/271US大于1US就行了2读操作读数据操作时隙也分为读0时隙和读1时隙两个过程。读时隙是从主机把单总线拉低之后,在1微秒之后就得释放单总线为高电平,以让DS18B20把数据传输到单总线上。DS18B20在检测到总线被拉低1微秒后,便开始送出数据,若是要送出0就把总线拉为低电平直到读周期结束。若要送出1则释放总线为高电平。主机在一开始拉低总线1微秒后释放总线,然后在包括前面的拉低总线电平1微秒在内的15微秒时间内完成对总线进行采样检测,采样期内总线为低电平则确认为0。采样期内总线为高电平则确认为1。完成一个读时序过程,至少需要60US才能完成。VCC单线总线GND控制器读0时隙控制器读1时隙15US15US30US15US控制器采样1US控制器采样图37读时隙读操作程序27/所有读时隙至少60US且两次独立的读时隙之间至少需要1US的恢复时间每次读时隙由主机发起,拉低总线至少1US。若传1,则保持总线高电平;若发送0,则拉低总线传0时DS18B20在该时隙结束时释放总线,再拉回高电平状态,主机必须在读时隙开始后的15US内释放总线,并保持采样总线状态/UCHARREADBIT_DS18B20VOIDUCHARREADBIT0RLS_DS18B20/释放总线DDR0HLD_DS18B20/MAGA16控制总线DDR1CLR_DS18B20/强制拉低DELAY_US2/延时大于1USRLS_DS18B20/释放总线,DS18B20会将总线强制拉低DELAY_US10READBITSTU_DS18B20DELAY_US50/USIFREADBITRETURN1RETURN028第四章系统仿真调试由于DS18B20采用单总线的数据传输协议,数据I/O均由一条线完成,因此对读写操作时序要求严格,一般情况下是需要通过汇编语言编写接口程序,而如今单片机编程普遍使用C语言,因此本系统采用C语言编写该数字传感器的接口程序,该程序在IAREMBEDDEDWORKBENCH编译通过。41系统开发环境本系统的开发环境是IARSYSTEMS公司开发的IAREMBEDDEDWORKBENCH,它是一款功能很强大的开发软件,软件除了C语言编译器外还集成了下载调试等功能,是一个完善的开发环境。以下是IAREMBEDDEDWORKBENCH开发界面图。411软件使用过程1打开工程2设置工程选件3下载和调试2942系统仿真调试在IAR开发环境下不能进行有效的仿真调试,所以在系统中采用PROTEUS单片机仿真工具进行仿真调试。PROTEUS软件是英国LABCENTERELECTRONICS公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。PROTEUS是世界上著名的EDA工具仿真软件,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,支持当前的主流单片机,如51系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、68000系列等。PROTEUS软件仿真功能有1提供软件调试功能2提供丰富的外围接口器件及其仿真RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。接近实际。3提供丰富的虚拟仪器,利用虚拟仪器在仿真过程中可以测量外围电路的特性,培养实际硬件的调试能力。304具有强大的原理图绘制功能图41PROTEUS软件仿真界面图31结论经过了三个多月的努力学习和工作,我终于完成了基于DS18B20单线多点温度测量系统的论文。从开始接到论文题目到系统的实现,再到论文的完成,每前进一步对我来说都是新的尝试与挑战,这也是我在大学期间独立完成的最大的项目。在这段时间里,我学到了很多知识,从对DS18B20芯片和单片机的一无所知,温度检测等相关技术的不了解,我开始了独立的学习和试验,查看相关的资料和书籍,让自己对论文的总体思路变得清晰,使自己的作品一步步完善起来,每一次改进我都会有所收获,每一次试验的成功都能让我得到提高。通过这次的毕业设计我了解了DS18B20温度控制芯片的工作原理和性能特点,同时在运用所学的C语言知识进行实际编程的过程中也遇到许多问题,不过在老师的及时帮助下最终克服了所有的困难。这次毕业设计对于我而言收获很多,对单片机的编程一直以来都是我弱项,这次设计不仅使我巩固了原来的知识体系,同时也明白自己还有很多地方需要学习。这次写论文的经历也会使我终身受益,我感受到做论文是要用心去做的,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破,那也就不叫论文了。希望这次的经历能让我在以后学习中激励我继续进步。32致谢四年的大学生活即将画上句号,而对于我来说却一个新的起点。我将走向社会,去迎接新的挑战和机遇。四年的大学生活充满了激情和收获。感谢一直以来支持和鼓励我的同学和一直关心我们学习生活的老师。在论文快要完成之际,感慨万千。今年2月,我就开始了我的毕业设计任务,时至今日,历时将近四个月,毕业设计基本完成。回忆这段时间的经
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外研版(三年级起点)小学四年级英语上册Unit5Part1 GetreadyStartup主题导入与语言启动教案
- 小学六年级数学第二学期核心素养导向的期中测评难点突破教案
- 人教版一年级下册《十几减9:在操作与迁移中建构退位减法算理》教学设计
- 高中数学一年级上学期开学第一课教学设计
- 初中八年级英语“家庭生活”第三课时听说课教学设计
- 初中九年级英语Unit 3礼貌问路与宾语从句语法深化教案
- 初中劳动技术八年级下册《深耕厚植·砺志锄禾》教学设计
- 小学英语四年级上册Unit 1 Lesson 4 听说课教案
- 初中三年级物理中考一轮复习专题教案:基于核心素养的受力分析与受力作图深度建构
- 2026学年河南省登封市三年级数学期末评估经典测试题附答案详细答案和解析
- 2026年高三上学期数学秋季开学摸底考(江苏专用)
- GB/T 6904-2026工业循环冷却水及锅炉用水中pH的测定
- 浙江省舟山市2025-2026学年高二下学期6月期末考试技术试题含答案
- 餐饮储值卡销售合同
- 2025年中邮资产管理公司招聘笔试备考题库(带答案详解)
- 学堂在线 新闻摄影 期末考试答案
- 叩背排痰护理指南
- 唐山市城市规划管理技术指南
- 人工智能课件说课稿模板
- 登革热防控知识培训
- 《慢性阻塞性肺疾病急性加重(AECOPD)诊治中国专家共识(2023年修订版)》解读
评论
0/150
提交评论