基于AT89C51单片机超声波测距仪的设计.doc

上传人:文库蛋蛋多 文档编号:4148056 上传时间:2023-04-07 格式:DOC 页数:48 大小:623KB
返回 下载 相关 举报
基于AT89C51单片机超声波测距仪的设计.doc_第1页
第1页 / 共48页
基于AT89C51单片机超声波测距仪的设计.doc_第2页
第2页 / 共48页
基于AT89C51单片机超声波测距仪的设计.doc_第3页
第3页 / 共48页
基于AT89C51单片机超声波测距仪的设计.doc_第4页
第4页 / 共48页
基于AT89C51单片机超声波测距仪的设计.doc_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《基于AT89C51单片机超声波测距仪的设计.doc》由会员分享,可在线阅读,更多相关《基于AT89C51单片机超声波测距仪的设计.doc(48页珍藏版)》请在三一办公上搜索。

1、图书分类号:密 级:毕业设计(论文)基于AT89C51单片机超声波测距仪的设计BASED ON AT89C51 ULTRASONIC RANGEFINDER DESIGN学生姓名严海波学院名称信电工程学院专业名称电子信息工程技术指导教师高玉芹摘要超声波是一种在弹性介质中的机械振荡,它是由与介质相接触的振荡源所引起的,其频率在20000Hz以上。由于它有指向性强、方向性好、传播能量大、传播距离较远等特点,因此常用于测量物体的距离。本文介绍了基于AT89C51单片机的超声波测距仪的软硬件设计,整个系统分为单片机控制模块、发射模块和接收模块组成。程序采用模块化设计,由主程序、预置子程序、发射子程序、

2、接收子程序、显示子程序等模块组成。超声探头接收的信号经单片机综合分析处理后,实现了超声波测距仪的各种功能。关键词 超声波 AT89C51 测量距离目 录1 绪论11.1 研究背景11.2 研究内容12 相关知识22.1 超声波发生器22.2.单片机的任务22.3 AT89C51单片机主要特性和引脚功能23理论分析与计算53.1测量与控制方法53.3超声波测距误差分析64系统硬件电路设计84.1单片机系统及显示电路84.1.1 74LS244的简介94.2超声波发射电路94.3超声波监测接收电路104.4显示电路原理115系统软件设计125.1主程序125.2超声波发生子程序和接收子程序135.

3、3 超声波的接收与处理146单片机系统的可靠性156.1测试单片机系统的可靠性156.2单片机的抗干扰性157软硬件调试167.1调试167.2提高精度的方案及系统设计168系统的扩展188.1 DS18B20的简介188.11DS18B20的主要特性188.12 DS18B20的外形和内部结构188.13 DS18B20的工作原理198.14 DS18B20有4个主要的数据部件198.2 DS18B20与单片机的连接208.3 DS18B20与51单片机的连接程序21结论27致谢28参考文献29附录30附录1电路原理图30附录2程序源代码311 绪论1.1 研究背景由于社会不断进步发展,许多

4、传统的测距方法已经无法满足我们的需求,例如在井深,液位,管道长度等场合。还有在很多要求实时测距的情况下,传统的测距方法也很难完成测量的任务。于是,在这种情况下一种新的测距方法诞生了-超声波测距。超声波可用于非接触测量,具有不受光、电磁波以及粉尘等外界因素的干扰的优点,是利用计算超声波在被测物体和超声波探头之间的传输来测量距离的,对被测目标无损害。而且超声波传播速度在相当大范围内与频率无关。超声波的这些独特优点越来越受到人们的重视。目前对于超声波精确测距的需求也越来越大,如油库和水箱液面的精确测量和控制,物体内气孔大小的检测和机械内部损伤的检测等。在机械制造,电子冶金,航海,宇航,石油化工,交通

5、等工业领域也有广泛地应用。此外,在材料科学,医学,生物科学等领域中也占具重要地位。1.2 研究内容 超声波测距仪主要以单片机AT89C51为核心,其发射器是利用压电晶体的谐振带动周围空气振动来工作的.超声波发射器向某一方向发射超声波,在发射的同时开始计时 ,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器接收到反射波就立即停止计时。一般情况下,超声波在空气中的传播速度为340m/ s,根据计时器记录的时间t ,就可以计算出发射点距障碍物的距离 s,即s=340t/2。本系统的一个亮点就是利用超声波测量距离,超声波具有不受光、电磁波以及粉尘等外界因素的干扰的优点,而且超声波传播速度在

6、相当大范围内与频率无关。2 相关知识2.1 超声波发生器我们知道,由于超声波指向性强,能量消耗缓慢,在介质中传播的距离比较远,因而超声波经常用于距离的测量。利用超声波检测距离,设计比较方便,计算处理也比较简单,并且在测量精度方面也能达到日常使用的要求。超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、电动型;机械方式有加尔统笛、液哨和气流旋笛等,它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同,目前在近距离测量方面较为常用的是压电式超声波换能器。2.2.单片机的任务单片机的任务是指以单片机为核心,构建硬件部分和软件部分组

7、成,配以一定的外围电路和软件,实现某几种功能,完成相应的任务。硬件是系统的基础,软件则是在硬件的基础上对其合理的调配和使用,从而完成应用系统所要完成的基础。一般来讲,所要完成的任务不同,相应的硬件配置和软件配置也就不同。因此,单片机的设计应包括硬件设计和软件设计两大部分。2.3 AT89C51单片机主要特性和引脚功能AT89C51是带4K字节闪烁可编程可擦除只读存储器(EPEROM)的低电压、高性能CMOS 8位微处理器(俗称单片机)。该单片机与工业标准的MCS-51型机的指令集和输出引脚兼容。AT89C51将多功能8位CPU和闪烁存储器组合在单个芯片中,为很多嵌入式控制提供了灵活性高且价格低

8、廉的方案。AT89C51的主要特性如下:寿命达1000写/擦循环;数据保留时间:10年;全静态工作:0Hz-24MHz;三级程序存储器锁定;128 * 8位内部RAM;32可编程I/O线;2个16位定时器/计数器;5个中断源;可编程串行通道;低功耗闲置和掉电模式;片内振荡器和时钟电路;AT89C51引脚排列如图1所示,引脚功能如下图2-1所示:图2-1AT89C51引脚图VCC(40):+5V.GND(20):接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八

9、位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故

10、。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址

11、锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSE

12、N信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3理论分析与计算3.1测量与控制方法声波在其传播介质中被定义为纵波。当声波受到尺寸大于其波长的目标物体阻挡时就会发生反射;反射波称为回声。假如声波在介质中传播的速度是已知的,而且声波从声源到达目标然后返回声源的时间可以测

13、量得到,从声波到目标的距离就可以精确地计算出来。这就是本系统的测量原理。超声波传感器的结构如图3-1所示。图3 -1 超声波传感器结构超声波测距器的系统框图如图3-2所示:图3-2超声波测距器的系统框图超声波也是一种声波,其声速c与温度有关,表3-3列出了几种不同温度下的超声波声速。在使用时,如果温度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正。声速确定后,只要测得超声波往返的时间,即可求得距离。 表3-3 不同温度下超声波声速表温度/c-30-20-100102030100声速c/(m/s)3133193253233383443493863.2理论

14、计算图3-4 测距的原理如图3-4所示为反射时间法,是利用检测声波发出到接收到被测物反射回波的时间来测量距离其原理如图所示,对于距离较短和要求不高的场合我们可认为空气中的声速为常数,我们通过测量回波时间T利用公式S=C*(T/2) 其中,S为被测距离、V为空气中声速、T为回波时间(T=T1+T2),可以计算出路程,这种方法不受声波强度的影响,直接耦合信号的影响也可以通过设置“时间门”来加以克服。这样可以求出距离:S=C(T1-T2)/23.3超声波测距误差分析(1) 发射接收时间对测量精度的影响分析 采用 TR40 压电超声波传感器,脉冲发射由单片机控制,发射频率 40KHz ,忽略脉冲电路硬

15、件产生的延时,可知由软件生成的起始时间对于一般要求的精度是可靠的。对于接收到的回波,超声波在空气介质的传播过程中会有很大的衰减,其衰减遵循指数规律。 设测量设备基准面距被测物距离为h,则空气中传播的超声波波动方程为:由以上公式可知,超声波在传播过程中存在衰减,且超声波频率越高,衰减越快,但频率的增高有利于提高超声波的指向性。 经以上分析,超声波回波的幅值在传播过程中衰减很大,收到的回波信号可能十分微弱,要想判断捕获到的第一个回波确定准确的接受时间,必须对收到的信号进行足够的放大,否则不正确的判断回波时间,会对超声波测量精度产生影响。 (2) 当地声速对测量精度的影响分析 当地声速对超声波测距测

16、量精度的影响远远要比收发时间的影响严重。超声波在大气中传播的速度受介质气体的温度、密度及气体分子成分的影响,即: 由上式知,在空气中,当地声速只决定于气体的温度,因此获得准确的当地气温可以有效的提高超声波测距时的测量精度。工程上常用的由气温估算当地声速的公式如下: 式中 C0=331.4m/s ; T为绝对温度,单位K 。 此公式一般能为声速的换算提供较为准确的结果。实际情况下,温度每上升或者下降 1oC, 声速将增加或者减少 0.607m /s ,这个影响对于较高精度的测量是相当严重的。因此提高超声波测量精度的重中之重就是获得准确的当地声速。 4系统硬件电路设计硬件电路主要分为单片机系统及显

17、示电路、超声波发射电路和超声波检测接收电路三部分。4.1单片机系统及显示电路 单片机采用AT89C51或其兼容系列。采用12MHZ高精度的晶振,以获得较稳定的时钟频率,减小测量误差。单片机用P1.0端口输出超声波换能器所需的40KMZ方波信号,利用外中断0口监测超声波接收电路输出的返回信号。显示电路采用简单实用的4位共阳LED数码管,段码用74LS244驱动,位码用PNP三极管8550驱动。单片机系统及显示电路如下图4-1所示图4-1单片机系统及显示电路4.1.1 74LS244的简介(1)74LS244引脚图如下4-2所示:图4-2 74LS244引脚图(2)引脚功能:1A11A4,2A12

18、A4 输入端 /1G, /2G 三态允许端(低电平有效) 1Y11Y4,2Y12Y4 输出端4.2超声波发射电路超声波发射电路原理图如下图4-3所示。发生电路主要由反向器74LS04和超声波发射换能器T构成,单片机P1.0端口输出的40KMz方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极。用这种推挽形式将方波信号加到超声波换能器两端,可以提高超声波的发射强度。输出端采用两个反向器并联,用以提高驱动能力。上拉电阻R10、R11一方面可以提高反向器74LS04输出高电平的驱动能力,另一方面可以增加超声换能器的阻尼效果,缩短其自由振荡的时间。

19、压电式超声波换能器是利用压电晶体的谐振来工作的。超声波换能器内部结构它有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动产生超声波,这时它就是一个超声波发生器;反之,如果两电极间未加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收换能器了。超声波发射换能器与接收换能器其结构上稍有不同,使用时应分清器件上的标志。图4-3超声波发射电路4.3超声波监测接收电路 集成电路CX20106A是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38

20、KHz与测距的超声波频率40kHz较为接近,可以利用它制作超声波检测接收电路。实验证明用CX20106A接收超声波(无信号时输出高电平),具有很高的灵敏度和较强的抗干扰能力。适当更改电容C4的大小,可以改变接收电路的灵敏度和抗干扰能力。如图4-4所示:图4-4超声波检测电路4.4显示电路原理 超声波测距仪显示模块如下图4-5所示。通过单片机的15、16、17三个管脚的信号控制三个三极管的B级,利用三极管的开关特性,实现数码管的点亮,从而实现动态显示。4-5显示模块5系统软件设计5.1主程序主程序首先是对系统环境初始化,设置定时器T0工作模式为16位定时计数器模式,置位总中断容许位EA并给显示端

21、口P0和P2清0.然后调用超声波发生子程序送出一个超声波脉冲,为了避免超声波从发射器直接传送到接收器引起的直射波触发,需要延时约0.1ms(这也就是超声波测距器会有一个最小可测距离的原因)后,才打开外中断0接收返回的超声波信号。由于采用的是12MHz的晶振,计数器每计一个数就是1us,当主程序检测到接收成功的标志位后,将计数器T0中的数(即超设波来回所用的距离)按下式计算,即可得被测物体与测距器之间的距离,设计时取20度时的声速为344m/s则有: S=(C*T)/2=172T0/10000cm其中T0为计数器T0的计数值。测出距离后结果将以十进制BCD码方式送往LED显示约0.5s,然后再发

22、超声波脉冲重复测量过程。为了有利于程序结构化合容易计算出距离,主程序采用C语言编写。图5-1为主程序流程图 图5-1流程图5.2超声波发生子程序和接收子程序(1)超声波发生子程序的作用是通过P1.0端口发送2个左右的超声波信号频率约40KHz的方波,脉冲宽度为12us左右,同时把计数器T0打开进行计时。(2)超声波测距器主程序利用外中断0检测返回超声波信号,一旦接收到返回超声波信号(INT0引脚出现低电平),立即进入中断程序。进入该中断后就立即关闭计时器T0停止计时,并将测距成功标志字赋值1。(3)如果当计时器溢出时还未检测到超声波返回信号,则定时器T0溢出中断将外中断0 关闭,并将测距成功标

23、志字赋值2以表示此次测距不成功。如下图5-2所示:图5-2超声波发生子程序和超声波接收中断程序流程图5.3 超声波的接收与处理 接收头采用与发射头配对的UCM40R,将超声波调制脉冲变为交变电压信号,经运算放大器IC1A和IC1B两极放大后加至IC2。IC2是带有锁定环的音频译码集成块LM567,内部的压控振荡器的中心频率f0=1/1.1R8C3,电容C4决定其锁定带宽。调节R8在发射的载频上,则LM567输入信号大于25mV,输出端8脚由高电平跃变为低电平,作为中断请求信号,送至单片机处理。 前方测距电路的输出端接单片机INT0端口,中断优先级最高,左、右测距电路的输出通过与门IC3A的输出

24、接单片机INT1端口,同时单片机P1.3和P1.4接到IC3A的输入端,中断源的识别由程序查询来处理,中断优先级为先右后左。部分源程序如下: receive1:push psw push acc clr ex1 ;关外部中断1 jnb p1.1, right ;P1.1引脚为0,转至右测距电路中断服务程序jnb p1.2, left ;P1.2引脚为0,转至左测距电路中断服务程序 return:SETB EX1;开外部中断1 pop acc pop psw reti right: . ;右测距电路中断服务程序入口 AJMP RETURN left:. ;左测距电路中断服务程序入口 AJMP R

25、ETURN 6单片机系统的可靠性6.1测试单片机系统的可靠性当一个单片机系统设计完成后,对于不同的单片机系统产品会有不同的测试项目和方法,但是有一些是必须测试的。(1)测试单片机软件功能的完整性。这是针对所有单片机系统功能的测试,测试软件是否写得正确完整。(2)上电、掉电测试。在使用中用户必然会遇到上电和掉电的情况,可以进行多次开关电源,测试单片机系统的可抗性。(3)老化测试。测试长时间工作情况下,单片机系统的可抗性。必要的话可以放置在高温、高压以及强电磁干扰的环境下测试。(4)ESD和EFT等测试。可以使用各种干扰模拟器来测试单片机系统的可抗性。例如使用静电模拟器测试单片机系统的抗静电ESD

26、能力;使用突波杂讯模拟器进行快速脉冲抗干扰EFT测试等。6.2单片机的抗干扰性 影响单片机系统可靠安全运行的主要因素主要来自系统内部和外部的各种电气干扰,并受系统结构设计、元器件选择、安装、制造工艺的影响。这些都是单片机系统的干扰因素,常会导致单片机系统运行失常,轻则影响产品质量和产量,重则会导致事故,造成重大经济损失。形成干扰的基本要素有三个:(1)干扰源。指产生干扰的元件、设备或信号,用数学语言描述为du/dt、di/dt大的地方就是干扰源,如雷电、继电器、可控硅、电机、高频时钟等都可能成为干扰源(2)传播路径。指干扰从干扰源传播到敏感器件的通路或媒介。典型的干扰传播路径是通过导线的传导和

27、空间的辐射。(3)敏感器件。指容易被干扰的对象,如A/D、D/A变换器,单片机,数字IC,弱信号放大器等。 7软硬件调试7.1调试测试是为了发现程序中的错误而执行程序的过程。具体地说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计出一批测试用例,并利用测试用例来运行程序,以发现程序错误的过程。超声波测距仪的制作和调试,其中超声波发射和接收采用15的超声波换能器TCT40-10F1(T发射)和TCT40-10S1(R接收),中心频率为40kHz,安装时应保持两换能器中心轴线平行并相距48cm,其余元件无特殊要求。若能将超声波接收电路用金属壳屏蔽起来,则可提高抗干扰能力。根据测量

28、范围要求不同,可适当调整与接收换能器并接的滤波电容C的大小,以获得合适的接收灵敏度和抗干扰能力。7.2提高精度的方案及系统设计 (1)温度校正的方法提高测距精度 由上述的误差分析知,如果能够知道当地温度,则可根据公式 求出当地声速,从而能够获得较高的测量精度。而问题的关键在于获得温度数据的方法。采用热敏电阻、热电耦、集成温度传感器都可以获得较为准确的温度值。 为了便于对温度信号的数据采集及处理,我们采用 DALASS 公司生产的 DS18B20 集成温度传感器。 DS18B20 采用了 DALASS 公司的 1-WIRE 总线专利技术,能够仅在占用控制器一个 I/O 口的情况下工作(芯片可由数

29、据线供电),极大的方便了使用者的调试使用,而且其在 10oC 85oC 的工作环境下可以保持 0.5% 的使用精度,在这个空间内足以保证为超声波测距设备提供足够的精度范围。 通过 DS18B20 芯片获得的数据信号经由 1-WIRE 总线传至 MCU ,由软件进行声速换算。为了更好的实现换算过程同时兼顾设备的使用成本,我们采用宏晶公司的最新推出的 STC12C5410 单片机实现超声波测距的各项功能。 STC12C5410 采用了低成本、低功耗、强抗干扰设计,并且在最高支持 48MHz 的前提下能够实现 1 个时钟 / 机械周期的运行速度。由于能够使用高频率的晶振,因此相对于普通单片机来说可以

30、有效的减少由计时问题带来的量化误差,能够满足较高精度超声波测距仪的设计要求。 (2)标杆校正的方法提高测距精度 在复杂环境下,如果难于获得环境温度,或者不便获得环境温度时,如果仍旧要求较高的测量精度,我们采用所谓标杆校正的方法实现超声波测距精度的校正。标杆校正的示意图下图7-1 所示。图7- 1标杆校正的示意图超声波测距装置首先测量距离已知为 h 的基平面(标杆)声波往返所用的时间,而后由测得的时间和距离 h 根据公式 求出当地声速。通过这样的方法,我们也能够顺利的求出声速,省去了使用传感器测量温度所带来的麻烦。因此,只用为测距设备设定“标定”和“测量”两种状态,即能够实现温度校正所能实现的高

31、精度测距功能。8系统的扩展超声波测距系统在测量距离时,容易受到温度的影响,从而导致误差,在此通过DS18B20对其进行改进。8.1 DS18B20的简介8.11DS18B20的主要特性(1)适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电。(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。(3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。(4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。(5)温范围55

32、125,在-10+85时精度为0.5。(6)可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。(7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。(8)测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。(9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。8.12 DS18B20的外形和内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和T

33、L、配置寄存器。DS18B20的外形及管脚排列如下图8-1:图8-1DS18B20的外形及管脚排列8.13 DS18B20的工作原理DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。 DS18B20测温原理如图3所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时

34、,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图8-2中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。图8-2DS18B20测温原理框图8.14 DS18B20有4个主要的数据部件(1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码

35、(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。(2)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。表1: DS18B20温度值格式表这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实

36、际温度。表2: DS18B20温度数据表(3)DS18B20温度传感器的存储器 DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。 (4)配置寄存器该字节各位的意义如下:表3: 配置寄存器结构TMR1R0 1 1 1 1 1低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。8.2 DS18B20与单片机的连接在硬件上,DS18B20与单片机的连接有两种方法,一种是Vcc接外部电源,GND接地,I/O与单片机的

37、I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接5K左右的上拉电阻。CPU对DS18B20的访问流程是:先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。DS18B20每一步操作都要遵循严格的工作时序和通信协议。如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。8.3 DS18B20与51单片机的连接程序; FL

38、AG1: 标志位,为1时表示检测到DS18B20; DQ: DS18B20的数据总线接脚; TEMPER_NUM:保存读出的温度数据; 晶振为12MHZ左右TEMPER_L EQU 36HTEMPER_H EQU 35HDQ BIT P1.7; DS18B20初始化程序;/*/INIT_1820: SETB DQ NOP CLR DQ MOV R0,#06BHTSR1: DJNZ R0,TSR1 ; 延时 SETB DQ MOV R0,#25HTSR2: JNB DQ,TSR3 DJNZ R0,TSR2 LJMP TSR4 ; 延时TSR3: SETB FLAG1 ; 置标志位,表示DS182

39、0存在 LJMP TSR5TSR4: CLR FLAG1 ; 清标志位,表示DS1820不存在 LJMP TSR7TSR5: MOV R0,#06BHTSR6: DJNZ R0,TSR6 ; 延时TSR7: SETB DQ RET;/*/; 读出转换后的温度值;/*/GET_TEMPER: SETB DQ ; 定时入口 LCALL INIT_1820 JB FLAG1,TSS2 RET ; 若DS18B20不存在则返回TSS2: MOV A,#0CCH ; 跳过ROM匹配 LCALL WRITE_1820 MOV A,#44H ; 发出温度转换命令 LCALL WRITE_1820 LCALL

40、 INIT_1820 MOV A,#0CCH ; 跳过ROM匹配 LCALL WRITE_1820 MOV A,#0BEH ; 发出读温度命令 LCALL WRITE_1820 LCALL READ_1820 MOV TEMPER_NUM,A ; 将读出的温度数据保存 RET;/*/; 读DS18B20的程序,从DS18B20中读出一个字节的数据;/*/READ_1820: MOV R2,#8RE1: CLR C SETB DQ NOP NOP CLR DQ NOP NOP NOP SETB DQ MOV R3,#7 DJNZ R3,$ MOV C,DQ MOV R3,#23 DJNZ R3,

41、$ RRC A DJNZ R2,RE1 RET;/*/; 写DS18B20的程序;/*/WRITE_1820: MOV R2,#8 CLR CWR1: CLR DQ MOV R3,#6 DJNZ R3,$ RRC A MOV DQ,C MOV R3,#23 DJNZ R3,$ SETB DQ NOP DJNZ R2,WR1 SETB DQ RET;/*/; 读DS18B20的程序,从DS18B20中读出两个字节的温度数据;/*/READ_18200: MOV R4,#2 ; 将温度高位和低位从DS18B20中读出 MOV R1,#36H ; 低位存入36H(TEMPER_L),高位存入35H(TEMPER_H)RE00: MOV R2,#8RE01: CLR C SETB DQ NOP NOP CLR DQ NOP NOP NOP SETB DQ MOV R3,#7 DJNZ R3,$ MOV C,DQ MOV R3,#23 DJNZ R3,$ RRC A DJNZ R2,RE01 MOV R1,A DEC R1 DJNZ R4,RE00 RET;/*/; 将从DS18B20中读出的温度数据进行转换;/*

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号