已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本 科 生 毕 业 论 文 学 院 电气信息工程学院 专 业 通信工程 届 别 2008 题 目基于80C51单片机与DS18B20的温度检测软件设计 学生姓名 庞京京 学 号 20080840133 指导教师 曾玉 教 务 处 制29云南民族大学毕业论文(设计)原创性声明本人郑重声明:所呈交的毕业论文(设计),是本人在指导教师的指导下进行研究工作所取得的成果。除论文中已经注明引用的内容外,本论文没有抄袭、剽窃他人已经发表的研究成果。本声明的法律结果由本人承担。 毕业论文(设计)作者签名: 日 期: 年 月 日关于毕业论文(设计)使用授权的说明本人完全了解云南民族大学有关保留、使用毕业论文(设计)的规定,即:学校有权保留、送交论文的复印件,允许论文被查阅,学校可以公布论文(设计)的全部或部分内容,可以采用影印或其他复制手段保存论文(设计)。(保密论文在解密后应遵守)指导教师签名: 论文(设计)作者签名: 日期: 年 月 日注:此页放在封面后,目录前。 基于80C51单片机与DS18B20的温度检测软件设计 庞京京 云南民族大学 08通信工程摘要:本次毕业设计是基于80C51单片机与DS18B20的温度检测软件设计。以80C51单片机为核心,使用单总线温度转换芯片DS18B20实现温度采集。我们的设计实验目的是对DS18B20进行编程,了解其性能特点,通过所学的C语言知识和相关资料提供的指令代码完成单片机与DS18B20的温度检测。DS18B20 是一种智能温度传感器。它能够直接读出被测温度并且可根据实际要求通过简单的编程实现912位的数字值读数方式。 使用DS18B20可使系统结构更趋简单,可靠性更高。关键词:温度测量;微处理器控制;C语言Based on 80C51 microprocessor with DS18B20 temperature measurement Jingjing,pang Yunnan University of Nationalities,School of Electrical and Information Technology,class of Communication EngineeringAbstract:The graduation project is based on 80C51 microprocessor with DS18B20 temperature measurement .80C51 microprocessor as the core of it, the use of single-chip bus temperature conversion temperature DS18B20 real-time acquisition. Our experimental purpose is programming to DS18B20 and understand its performance characteristics .The instruction code through the C language knowledge and relevant information to complete the DS18B20 temperature measurements .DS18B20 is a smart temperature sensor .The DS18B20 digital thermometer provides 9-bit to 12-bit Celsius temperature measurements.Use DS18B20 makes the system structure more simple , and higher reliability .Key words: temperature measurement; microprocessor ;C language 前 言这次的毕业设计以虚拟环境下通过80C51单片机实现DS18B20芯片温度测量为目标。DS18B20数字温度计是DALLAS公司生产的1Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以连接很多这样设备实现多路温度测量和温度报警。由于DS18B20采用的是1Wire总线通信协议方式,即在一根数据线实现数据的双向传输,而对80C51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将80C51单片机作为主设备,单总线器件DS18B20作为从设备。而每一次命令和数据的传输都是从主设备主动启动写时序开始,如果要求单总线器件回送数据,则在进行写命令后,主机需启动读时序完成数据接收。可以说对DS18B20的编译即是一个写读时隙的过程。 我们的毕业设计目的是通过80C51单片机对DS18B20进行编程,同时了解DS18B20的性能特点,通过所学的C语言知识和相关资料提供的指令代码完成基于80C51单片机与DS18B20的温度检测软件设计。目录前 言1第一章 单片机介绍11. 1 80C51 单片机的逻辑原理结构11.2 80C51单片机内部结构21.3 80C51引脚介绍31.4 设计中所编译的相关程序及系统框图5第二章 DS18B20芯片介绍72.1 DS18B20芯片特征72.2 DS18B20内部结构72.3硬件构造82.4 DS18B20引脚排列92.5 DS18B20芯片各部分介绍9第三章 DS18B20代码指令介绍及程序设计123.1 DS18B20初始化133.2 DS18B20读写操作143.3 ROM指令代码173.4 DS18B20功能指令18总 结21附录23致 谢29 第一章 单片机介绍本次毕业设计要使用到80C51单片机以及DS18B20温度测量芯片。通过对80C51单片机进行编程,从而控制DS18B20进行温度测量和温度转换。 单片机,亦称单片微电脑或单片微型计算机。它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机“【1】”。1. 1 80C51 单片机的逻辑原理结构 80C51单片机采用的是冯.诺伊曼提出的经典计算机体系结构框架,即一台计算机是由运算器、控制器、存储器、输入设备和输出设备共五个基本部分组成。MCS-51单片机在一块芯片上集成了CPU、RAM、ROM、定时器/计数器和多功能I/O口等。图1.1 单片机的系统结构框图“1”由图看出,单片机内部主要包含下列几个部件:u 一个8位CPU; u 一个时钟电路; u 4KB程序存储器; u 128KB数据存储器; u 两个16位定时/计数器; u 64KB扩展总线控制电路; u 四个8-bit并行I/O端口; u 一个可编程串行接口; u 五个中断源,其中包括两个优先级嵌套中断。1.2 80C51单片机内部结构 图1.2 80C51内部结构图“2”1. CPU CPU即中央处理器的简称,是单片机的核心部件,它完成各种运算和控制操作,CPU由运算器和控制器两部分电路组成。 (1)运算器电路 运算器电路包括ALU(算术逻辑单元)、ACC(累加器)、B寄存器、状态寄存器、暂存器1和暂存器2等部件,运算器的功能是进行算术运算和逻辑运算。运算电路以ALU为核心单元,可以完成半字节、单字节以及多字节数据的运算操作,其中包括加、减、乘、除等算术运算以及与、或、异或、求补和循环等逻辑操作,运算结果的状态由状态寄存器保存。 (2)控制器电路 控制器电路包括程序计数器PC、PC加1寄存器、指令寄存器、指令译码器、数据指针DPTR、堆栈指针SP、缓冲器以及定时与控制电路等。控制电路完成指挥控制工作,协调单片机各部分正常工作。程序计数器PC用来存放即将要执行的指令地址,它可以完成64K的外部存储器寻址,执行指令时,PC内容的高8位经P2口输出,低8位经P0口输出。数据指针DPTR为16位数据指针,它可以对64K的外部数据存储器和I/O口进行寻址,它的低8位为DPL(地址82H),高8位为DPH(地址为83H)。堆栈指针SP在片内RAM(128字节)中开辟栈区,并随时跟踪栈顶地址,它按先进后出的原则存取数据,上电复位后,SP指向07H。 1. 定时器/计数器 80C51单片机片内有两个16位的定时/计数器,即定时器0和定时器1。它们可以用于定时控制、延时以及对外部事件的计数和检测等。 2. 存储器 80C51系列单片机的存储器包括数据存储器和程序存储器,其主要特点是程序存储器和数据存储器的寻址空间是相互独立的,物理结构也不相同。80C51有4个物理上相互独立的存储器空间:即内、外程序存储器和内、外数据存储器。对于8051其芯片中共有256个RAM单元,其中后128个单元被专用寄存器占用,只有前128个单元供用户使用。 3. 并行I/O口 80C51单片机共有4个8位的I/O口(P0、P1、P2和P3),每一条I/O线都能独立地用作输入或输出。P0口为三态双向口,能带8个TTL门电路,P1、P2和P3口为准双向口,负载能力为4个TTL门电路。 4. 串行I/O口 80C51单片机具有一个采用通用异步工作方式的全双工串行通信接口,可以同时发送和接收数据。它具有两个相互独立的接收、发送数据缓冲器,两个缓冲器共用一个地址(99H),发送缓冲器只能写入,不能读出,接收缓冲器只能读出,不能写入。 5. 中断控制系统 80C51单片机的中断功能较强,以满足控制应用的需要。80C51共有5个中断源,即外中断2个,定时/计数中断2个,串行中断1个。所有中断分为高级和低级两个中断优先级。 6. 时钟电路 80C51芯片内部有时钟电路,但晶体振荡器和微调电容必须外接。时钟电路为单片机产生时钟脉冲序列,振荡器的频率范围为1.2MHz12MHz,典型取值为6MHz。7. 总线 以上所有组成部分都是通过总线连接起来,从而构成一个完整的单片机。系统的地址信号、数据信号和控制信号都是通过总线传送的,总线结构减少了单片机的连线和引脚,提高了集成度和可靠性。 1.3 80C51引脚介绍 图1.3 80C51引脚图“3” VCC:供电电压 GND:接地P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在编程时,P0 口作为原码输入口,当进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指钟写入07H,其它专用寄存器被清“0”。RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。芯片擦除:整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,80C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止“4”。1.4 设计中所编译的相关程序及系统框图80C51单片机数码管DS18B20芯片延时子程序:/-/延时子程序 (Delay(2)约为延时1us)/-void Delay(long int milliseconds)long int i;long int j;j =milliseconds;for(i = 0; i j; i +)return;系统时钟初始化设置:/-/系统时钟初始化设置/-void SYSCLK_Init (void) int i; / Delay counterOSCXCN = 0x27; / start external oscillator with 22.1184MHz crystalfor (i=0; i 1ms)OSCICN = 0x88; / select external oscillator as SYSCLK source and enable missing clock detectorreturn;/-/看门狗初始化设置/-void WATCH_Dog ()WDTCN = 0xde; WDTCN = 0xad;return;单片机I/O口初始化设置:/-/单片机I/O口初始化设置/-void PORT_Init () XBR0 = 0x04; /TX0和RX0连到P0.0和P0.1XBR1 = 0x00; XBR2 = 0x40;P0MDOUT|=0xff; P1MDOUT|=0xfd;/设置P1.1为输入P2MDOUT|=0xff; P3MDOUT|=0xff; P74OUT|=0xff;return; ACC位定义:/-/ACC位定义/-sbit ACC_0=ACC0;/数据位sbit ACC_1=ACC1;/数据位sbit ACC_2=ACC2;/数据位sbit ACC_3=ACC3;/数据位sbit ACC_4=ACC4;/数据位sbit ACC_5=ACC5;/数据位sbit ACC_6=ACC6;/数据位sbit ACC_7=ACC7;/数据位 第二章 DS18B20芯片介绍DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域“5”。 2.1 DS18B20芯片特征DS18B20 单线数字温度传感器,即“一线器件”,其具有独特的优点: ( 1 )采用单总线的接口方式 与微处理器连接时 仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。 单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。 ( 2 )测量温度范围宽,测量精度高 DS18B20 的测量范围为 -55 + 125 ; 在 -10+ 85C 范围内,精度为 0.5C 。 ( 3 )在使用中不需要任何外围元件。 ( 4 )持多点组网功能 多个 DS18B20 可以并联在惟一的单线上,实现多点测温。 ( 5 )供电方式灵活 DS18B20 可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而 使系统结构更趋简单,可靠性更高。 ( 6 )测量参数可配置 DS18B20 的测量分辨率可通过程序设定 912 位。 ( 7 )负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。 ( 8 )掉电保护功能 DS18B20 内部含有 EEPROM ,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。 DS18B20 具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。注:单总线特点单总线即只有一根数据线,系统中的数据交换,控制都由这根线完成。单总线通常要求外接一个约为 4.7K10K 的上拉电阻,这样,当总线闲置时其状态为高电平“6”。2.2 DS18B20内部结构主要由4部分组成:64 位ROM、温度寄存器、温度报警触发器TH和TL、配置寄存器。ROM中的64位序列号是出厂前被光刻好的,它可以看作 是该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。64位ROM的排的循环冗余校验码(CRC=X8X5X41)。 ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。图2.1 DS18B20内部结构图2.3硬件构造单总线系统只有一条定义的信号线。每一个总线上的器件必须是漏极开路或三态输出。这样的系统允许每一个挂在总线上的区间都能在适当的时间驱动它。DS18B20的单总线端口(DQ引脚)是漏极开路式的,单总线需要一个约5K的外部上拉电阻;单总线的空闲状态是高电平。无论任何理由需要暂停某一执行过程时,如果还想恢复执行的画,总线必须停留在空闲状态。在恢复期间,如果单总线处于非活动(高电平)状态,位与位间的恢复时间可以无限长。如果总线停留在低电平超过480us,总线上的所有器件都将被复位。图2.2 DS18B20硬件构造图“7”2.4 DS18B20引脚排列 图2.3 DS18B20引脚排列图“8”1. GND为电源 地;2. DQ为数字信号输入输出端;3. VDD为外接供电电源输入口;2.5 DS18B20芯片各部分介绍(1) 64-BIT ROM AND 1-wire PORT 每个DS18B20都有一个唯一储存在ROM中的64位编码。最前面8位是单线系列编码:28h。接着的48位是一个唯一的序列号。最后8位是以上56位的CRC编码。64位ROM和ROM操作控制区允许DS18B20作为单总线器件并按照单总线协议工作。64-BIT ROM AND 1-wire PORT8位CRC48位序列号8位系列码(2) SCRATCHPAD SCRATCHPAD有一个温度寄存器,高低温报警触发器以及配置寄存器组成。当报警功能不使用时,TH和TL 寄存器可以被当作普通寄存器使用。字节0和字节1为测得温度信息的LSB和MSB。这两个字节是只读的。第2和第3字节是TH和TL的拷贝。位4 包含配置寄存器数据,其被详述于配置寄存器节。字节第5,6 和7位被器件保留,禁止写入;这些数据在读回时全部表现为逻辑1。高速暂存器的位8是只读的,包含以上八个字节的CRC码,CRC的执行方式如CRC发生器节所述。数据通过写暂存器指令4Eh写入高速暂存器的2,3和4位;数据必须以位2为最低有效位开始传送。为了完整的验证数据,高速暂存器能够在数据写入后被读取(使用读暂存器指令BEh)。在读暂存器时,数据以字节0为最低有效位从单总线移出。总线控制器传递从暂存器到EEPROMTH,TL和配置数据必须发出拷贝暂存器指令48h。EEPROM 寄存器中的数据在器件掉电时仍然保存;上电时,数据被载入暂存器。数据也可以通过召回EEPROM命令从暂存器载入EEPROM。总线控制器在发出这条命令后发出读时序,DS18B20返回0表示正在召回中,返回1表示操作结束。图2.4 存储器图“9”(3) 配置寄存器 存储器的第4位为配置寄存器。用户可以通过按下图所示设置R0和R1位来设定DS18B20的精度。上电默认设置:R0=1,R1=1(12位精度)。 注意:精度和转换时间之间有直接的关系。暂存器的位7和位0-4被器件保留,禁止写入;在读回数据时,它们全部表现为逻辑1。 图2.5 配置寄存器组成图 图2.6 温度计精确度配置图(4)CRC发生器 CRC字节作为DS18B2064 位ROM的一部分存储在存储器中。CRC码由ROM的前56位计算得到,被包含在ROM的重要字节当中。CRC由存储在存储器中的数据计算得到,因此当存储器中的数据发生改变时,CRC的值也随之改变。CRC能够在总线控制器读DS18B20时进行数据校验。为校验数据是否被正确读取,总线控制器必须用接受到的数据计算出一个CRC 值,和存储在DS18B20 的64 位ROM 中的值(读ROM 时)或DS18B20 内部计算出的8 位CRC 值(读存储器时)进行比较。如果计算得到的CRC值和读取出来的CRC值相吻合,数据被无错传输。CRC 值的比较以及是否进行下一步操作完全由总线控制器决定。第3章 DS18B20代码指令介绍及程序设计通过单线总线端口访问DS18B20的协议如下: 步骤1. 初始化 步骤2. ROM操作指令 步骤3. DS18B20功能指令每一次DS18B20的操作都必须满足以上步骤,若是缺少步骤或是顺序混乱,器件将不会返回值。程序设计流程图:3.1 DS18B20初始化通过单总线的所有执行操作处理都从一个初始化序列开始。初始化序列包括一个由总线控制器发出的复位脉冲和其后由从机发出的存在脉冲。存在脉冲让总线控制器知道DS18B20在总线上且已准备好操作。 图3.1 初始化时序图“10”本次实验设计的初始化程序:/-/空操作/-void NOP(void)/-/向DS18B20发送RESET脉冲(低脉冲)/主机通过把TX拉低至少480us来发送RESET脉冲。/-void DS18B20_RESET(void)DQ=0;Delay(1000); /拉低保持500usDQ=1;/发送完RESET脉冲后,主机等待15us至60us的时间以等待DS18B20回复PRESENCE信号。Delay(40);/等待约20usreturn;/-/检测DS18B20回应的PRESENCE脉冲/该低脉冲持续60us至240us的时间。/-void DS18B20_PRESENCE(void)while(DQ=1)/DS18B20仍然没回应PRESENCE信号 NOP();while(DQ=0)/DS18B20发送了PRESENCE信号,该信号持续60us240us NOP();return;3.2 DS18B20读写操作主机发出各种操作命令,但各种操作命令都是向DS18B20写0和写1组成的命令字节,接收数据时也是从DS18B20读取0或1的过程。因此首先要搞清主机是如何进行写0、写1、读0和读1的。写操作:写周期最少为60微秒,最长不超过120微秒。写周期一开始做为主机先把总线拉低1微秒表示写周期开始。随后若主机想写0,则继续拉低电平最少60微秒直至写周期结束,然后释放总线为高电平。若主机想写1,在一开始拉低总线电平1微秒后就释放总线为高电平,一直到写周期结束。而做为从机的DS18B20则在检测到总线被拉底后等待15微秒然后从15us到45us开始对总线采样,在采样期内总线为高电平则为1,若采样期内总线为低电平则为0“11”。图3.2 写操作图“12”写操作程序:/-/write 0 slot:每次调用后向DS18B20写一次0/-void write_0(void)DQ=0; /写0时隙,必须拉低持续至少60usDelay(120); /维持60us DQ=1;/发送结束,单总线复位1NOP();NOP();NOP();NOP();NOP();NOP();return;/-/write 1 slot:每次调用后向DS18B20写一次1/-void write_1(void)DQ=0; /写1时隙,拉低至少一个1us,然后必须于15us内释放Delay(2); /维持至少1usNOP();NOP();NOP();NOP();NOP();NOP();DQ=1;/释放总线为1Delay(120); /每个wirte/read时隙至少维持60us,写1时隙中释放总线后时间应延迟(60 - 1)uS以上return;/-/向DS18B20写一个字节的指令/-void write_DS18B20(unsigned char Command) /该程序判断发送每位时,写0还是写1,然后调用相应子程序bit Write_Lsb=0;unsigned int i=0;/写字节时,从LSB位开始写for(i=0;i8;i+)Write_Lsb=Commandi;if(Write_Lsb=0)write_0();elsewrite_1();return;读操作:读数据操作时序也分为读0时序和读1时序两个过程。读时隙是从主机把单总线拉低之后,在1微秒之后就得释放单总线为高电平,以让DS18B20把数据传输到单总线上。DS18B20在检测到总线被拉低1微秒后,便开始送出数据,若是要送出0就把总线拉为低电平直到读周期结束。若要送出1则释放总线为高电平。主机在一开始拉低总线1微秒后释放总线,然后在包括前面的拉低总线电平1微秒在内的15微秒时间内完成对总线进行采样检测,采样期内总线为低电平则确认为0。采样期内总线为高电平则确认为1。完成一个读时序过程,至少需要60us才能完成“13”。图3.3 读时隙图“14”读操作程序:/-/读DS18B20:READ TIME SLOTS:每次调用后读出一位/读scratchpad时,读出的顺序从字节0的LSB位开始/-read_DS18B20_bit(void) bit value;DQ=0; /读时隙由主机拉低总线开始,持续至少1us并释放,然后在在之后的(15-1)us内读DS18B20的值 Delay(2);/维持1usDQ=1;Delay(18);/延时9us,最佳读数时间为1013uS左右value=DQ;Delay(120);/延时60us。每读一位数,需要延时一段时间,使整个read slot保证维持至少60us才能开始读下一位信息return(value);/-/读DS18B20,每调用一次,读出一个字节内容/读scratchpad时,读出的顺序从字节0的LSB位开始/-read_DS18B20(void) bit Read_Bit=0;unsigned int i=0;unsigned char Read_Byte=0;unsigned char Temp_Byte=0;for(i=0;i8;i+)Read_Bit=read_DS18B20_bit();Temp_Byte=Temp_Byte|Read_Bit;Temp_Byte=Temp_Bytei; /右移Read_Byte=Read_Byte|Temp_Byte;/实现lsb到msb位顺序读出到一个字节return(Read_Byte);3.3 ROM指令代码一旦总线控制器探测到一个存在脉冲,它就发出一条ROM指令。如果总线上挂有多只DS18B20,这些指令将基于器件独有的64 位ROM 片序列码使得总线控制器选出特定要进行操作的器件。这些指令同样也可以使总线控制器识别有多少个什么型号的器件挂在总线上,同样,它们也可以识别哪些器件已经符合报警条件。ROM指令有5条,都是8 位长度。总线控制器在发起一条DS18B20功能指令之前必须先发出一条ROM指令。指令名称指令代码指令功能读ROM33H读DS18B20 ROM中的编码(即读64位地址编码)ROM匹配55H发出此命令之后,接着发出64位ROM编码,访问单总线上与编码相对应DS18B20使之作出响应,为下一步对该DS18B20的读写作准备搜索ROM0F0H用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备跳过ROM0CCH忽略64位ROM地址,直接向DS18B20发温度变换命令,适用于单片机工作报警搜索0ECH该指令执行后,只有温度超过设定值上限或下限的片子才做出响应图3.4 ROM功能指令图3.4 DS18B20功能指令 在总线控制器发给欲连接的DS18B20一条ROM命令后,跟着可以发送一条DS18B20功能指令。这些命令允许总线控制器读写DS18B20的暂存器,发起温度转换和识别电源模式。指令名称指令代码指令功能温度变换44H启动DS18B20进行温度转换,转换时间最长为500ms(典型为200ms),结果存入内部9字节RAM中读暂存器0BEH读内部RAM中九字节的内容写暂存器4EH发出向内部RAM的第3,4字节写上,下限温度数据命令,紧跟该命令之后是传送两字节的数据复制暂存器48H将RAM的第3,4字节的内容复制到EEPROM中重调EEPROM0B8HEEPROM中的内容恢复到RAM中的第3,4字节读供电方式0B4H读DS18B20的供电模式,寄生供电时DS18B20发送“0”,外接供电DS18B20发送“1”其中温度转换:DS18B20中的温度传感器完成对温度的测量,用16位二进制形式提供,形式表达,其中S为符号位。 图3.5 DS18B20温度转换图例如:125的数字输出为07D0H (正温度 直接吧16进制数转成10进制即得到温度值 ) - 55的数字输出为 FC90H。 (负温度 把得到的16进制数 取反后 加1 再转成10进制数)设计中关于温度转换的程序: /- /第二次访问DS18B20读取温度值 /- DS18B20_RESET(); DS18B20_PRESENCE(); /发送ROM指令:CCh:Skip ROM Command. Command=0xcc; write_DS18B20(Command); /发送功能指令:BEh:Read Scratchpad Command. Command=0xbe; write_DS18B20(Command); /读DS18B20返回的EEPROM中的内容,顺序从字节0的LSB位开始。(字节0和字节1中分别存储了数字温度值的低8位和高8位) /发送功能指令BEh后,DS18B20将连续送出9个字节的内容,从字节0的LSB位开始, /依次为Temperature LSB,Temperature MSB(P10),TH,TL,Config,FFh,OCh,10h,CRC。 /在此,我们只需要读两次,即读出数字温度值的高低两字节即可 /主机可以在获取了所需字节后,随时以发送RESET脉冲来中止并开始下一次访问。 Temperature_Low=read_DS18B20();/读出的为数字温度
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年陕西省选调生招录(面向华东师范大学)备考题库带答案解析
- 青岛市莱西市马连庄镇社区工作者考试试题附答案解析
- 2026航天三院校园招聘历年真题汇编及答案解析(夺冠)
- 2026社会工作者(初)《社会工作实务》考试题及答案解析(夺冠)
- 2025哈尔滨工业大学(威海)秋季心理咨询岗位招聘1人笔试模拟试卷带答案解析
- 2026年陕西省选调生招录(面向厦门大学)备考题库附答案解析
- 2025河北唐山市遵化市、迁安市、迁西县、海港经济开发区第二、三批次事业单位招聘165人模拟试卷带答案解析
- 2025江西九江永修中环物产管理有限公司招聘工作人员1人历年真题库附答案解析
- 2025江西萍乡市人民医院招聘编外人员(第三批)4人笔试模拟试卷附答案解析
- 2025中国大唐集团下属能源开发公司招聘备考题库附答案解析
- 周期性麻痹的临床表现及护理
- 2025年新版护理三基知识考试必考重点题库及答案
- 小学生自制凉茶课件
- 软式内镜清洗消毒技术规范2025
- 英文检测合同协议
- 城市低空安全监管平台解决方案
- 建筑消防设施维护保养方案
- 《胸痛中心质控指标及考核标准》(第三版修订版)
- 仓库安全风险辨识清单
- 污染和泄漏应急处理
- 陕煤集团榆林化学有限责任公司招聘笔试
评论
0/150
提交评论