超声波传感器测液位_第1页
超声波传感器测液位_第2页
超声波传感器测液位_第3页
超声波传感器测液位_第4页
超声波传感器测液位_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章超声波测油罐液位的总体方案超声波测液位原理我们一般把声波频率超过20kHz的声波称为超声波,超声波是机械波的一种,即是机械振动在弹性介质中的一种传播过程,它的特征是频率高、波长短、绕射现象小,另外方向性好,能够成为射线而定向传播。超声波在液体、固体中衰减很小,因而穿透能力强,尤其是在对光不透明的固体中,超声波可穿透几十米的长度,碰到杂质或界面就会有显著的反射,超声波测量物位就是利用了它的这一特征。超声波测液位的原理是利用超声波的发射和接受,根据超声波传播的时间来计算出传播距离。实用的测距方法有两种,一种是在被测距离的两端,一端发射,另一端接收的直接波方式,适用于身高计;一种是发射波被物体反射回来后接收的反射波方式,适用于测距仪。此次设计采用反射波方式。测距仪的分辨率取决于对超声波传感器的选择。超声波传感器是一种采用压电效应的传感器,常用的材料是压电陶瓷。由于超声波在空气中传播时会有相当的衰减,衰减的程度与频率的高低成正比;而频率高分辨率也高,故短距离测量时应选择频率高的传感器,而长距离的测量时应用低频率的传感器。在超声波检测技术中,不管那种超声波仪器,都必须把电能转换超声波发射出去,再接收回来变换成电信号,完成这项功能的装置就叫超声波换能器,也称探头。将超声波换能器置于被测液体上方,向下发射超声波,超声波穿过空气介质,在遇到水面时被反射回来,又被换能器所接收并转换为电信号,电子检测部分检测到这一信号后将其变成液位信号进行显示并输出。由超声波在介质中传播原理可知,若介质压力、温度、密度、湿度等条件一定,则超声波在该介质中传播速度是一个常数。因此,当测出超声波由发射到遇到液面反射被接收所需要的时间,则可换算出超声波通过的路程,即得到了液位的数据。发射器发出的超声波以速度U在空气中传播,在到达液面时被反射返回,由接收器接收,其往返时间为t,传感器距油罐底的距离为h,由公式:s=h一v*t/2即可算出油罐液位高度。在测距时由于温度变化,可通过温度传感器自动探测环境温度,确定计算距离时的波速V,较准确地得出该环境下的超声波经过得路程,提高了测量精确度。下表列出了几种不同温度下的声速。在使用时,如果温度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正。

表1-1超声波波速与温度的关系表温度(°C)-30-20-100102030100声速(m/s)313319325323338344349386系统总体框图AT89C51通过TO的方式2实现P1.0输出脉冲宽度为25us、载波为40kHz的超声波脉冲串。采用CX20106A红外检波接收和超声波接收芯片接收超声波,超声波接收器将接收到的超声波信号送到单片机的INT0口,启动中断程序测得时间为t,再由软件进行判别、计算,得出距离数并送四位共阴数码管动态扫描显示,显示电路采用简单实用的4位共阴LED数码管,段码直接由8255a的PA0口输出信号驱动,位码用PNP三极管8050驱动。若此值超过了设定的液位上下限,声光报警电路就会启动进行报警。总体设计电路如图1-1所示。第二章超声波测油罐液位硬件电路系统硬件电路主要由单片机AT89C51,传感器:超声波传感器和温度传感器DS18B20,I/O口扩展芯片8255a,显示电路,声光报警电路,485总线等。2.1AT89C51单片机性能及引脚功能AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图2-1所示:23斗567823斗567813小122143119189亠1P10POOP11P01P12P02P13P03P14P04P15P05P16P06P17P07INT1P20INTOP21P22T1P23TOP24P25EA/VPP26P27XIX2RESETRXDTXDRDALE/PWRPSEN图2-1AT89C51引脚图39383736353433322122232425262728 1011贺29C——其管脚说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在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口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INTO(外部中断0)P3.3/INT1(外部中断1)P3.4TO(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地

位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。AT89C51的复位电路和震荡电路如图2-2所示。345§仅VPXIX2Rli&ETrrmINTITOT1n.on.iru345§仅VPXIX2Rli&ETrrmINTITOT1n.on.iruFl.Iri.5ri.6ri<3S3^36:上:VI333221222321252(5严r16■J301110RDWKPSEHALE示rwRXD7»p012345672r2.2.2fc2fc2.2.2.PPPPPPPP图2-2复位电路和震荡电路芯片擦除:整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。

此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。串口通讯单片机的结构和特殊寄存器,这是你编写软件的关键。至于串口通信需要用到那些特殊功能寄存器呢,它们是SCON,TCON,TMOD,SCON等,各代表什么含义呢?SBUF数据缓冲寄存器这是一个可以直接寻址的串行口专用寄存器。有朋友这样问起过“为何在串行口收发中,都只是使用到同一个寄存器SBUF?而不是收发各用一个寄存器。”实际上SBUF包含了两个独立的寄存器,一个是发送寄存,另一个是接收寄存器,但它们都共同使用同一个寻址地址一99H。CPU在读SBUF时会指到接收寄存器,在写时会指到发送寄存器,而且接收寄存器是双缓冲寄存器,这样可以避免接收中断没有及时的被响应,数据没有被取走,下一帧数据已到来,而造成的数据重叠问题。发送器则不需要用到双缓冲,一般情况下我们在写发送程序时也不必用到发送中断去外理发送数据。操作SBUF寄存器的方法则很简单,只要把这个99H地址用关键字sfr定义为一个变量就可以对其进行读写操作了,如sfrSBUF=0x99;当然你也可以用其它的名称。通常在标准的reg51.h或at89x51.h等头文件中已对其做了定义,只要用#include引用就可以了。SCON串行口控制寄存器通常在芯片或设备中为了监视或控制接口状态,都会引用到接口控制寄存器oSCON就是51芯片的串行口控制寄存器。它的寻址地址是98H,是一个可以位寻址的寄存器,作用就是监视和控制51芯片串行口的工作状态。51芯片的串口可以工作在几个不同的工作模式下,其工作模式的设置就是使用SCON寄存器。它的各个位的具体定义如下:SM0SM1SM2RENTB8RB8TIRISMO、SM1为串行口工作模式设置位,这样两位可以对应进行四种模式的设置。串行口工作模式设置。SM0SM1模式功能波特率000同步移位寄存器fosc/120118位UART可变1029位UARTfosc/32或fosc/641139位UART可变在这里只说明最常用的模式1,其它的模式也就一一略过,有兴趣的朋友可以找相关的硬件资料查看。表中的fosc代表振荡器的频率,也就是晶振的频率。UART为(UniversalAsynchronousReceiver)的英文缩写。

SM2在模式2、模式3中为多处理机通信使能位。在模式0中要求该位为0。REM为允许接收位,REM置1时串口允许接收,置0时禁止接收。REM是由软件置位或清零。如果在一个电路中接收和发送引脚P3.0,P3.1都和上位机相连,在软件上有串口中断处理程序,当要求在处理某个子程序时不允许串口被上位机来的控制字符产生中断,那么可以在这个子程序的开始处加入REM=0来禁止接收,在子程序结束处加入REM=1再次打开串口接收。大家也可以用上面的实际源码加入REM=0来进行实验。TB8发送数据位8,在模式2和3是要发送的第9位。该位可以用软件根据需要置位或清除,通常这位在通信协议中做奇偶位,在多处理机通信中这一位则用于表示是地址帧还是数据帧。RB8接收数据位8,在模式2和3是已接收数据的第9位。该位可能是奇偶位,地址/数据标识位。在模式0中,RB8为保留位没有被使用。在模式1中,当SM2=0,RB8是已接收数据的停止位。TI发送中断标识位。在模式0,发送完第8位数据时,由硬件置位。其它模式中则是在发送停止位之初,由硬件置位。TI置位后,申请中断,CPU响应中断后,发送下一帧数据。在任何模式下,TI都必须由软件来清除,也就是说在数据写入到SBUF后,硬件发送数据,中断响应(如中断打开),这时TI=1,表明发送已完成,TI不会由硬件清除,所以这时必须用软件对其清零。RI接收中断标识位。在模式0,接收第8位结束时,由硬件置位。其它模式中则是在接收停止位的半中间,由硬件置位。RI=1,申请中断,要求CPU取走数据。但在模式1中,SM2=1时,当未收到有效的停止位,则不会对RI置位。同样RI也必须要靠软件清除。常用的串口模式1是传输10个位的,1位起始位为0,8位数据位,低位在先,1位停止位为1。它的波特率是可变的,其速率是取决于定时器1或定时器2的定时值(溢出速率)。AT89C51和AT89C2051等51系列芯片只有两个定时器,定时器0和定时器1,而定时器2是89C52系列芯片才有的。波特率在使用串口做通讯时,一个很重要的参数就是波特率,只有上下位机的波特率一样时才可以进行正常通讯。波特率是指串行端口每秒内可以传输的波特位数。有一些初学的朋友认为波特率是指每秒传输的字节数,如标准9600会被误认为每秒种可以传送9600个字节,而实际上它是指每秒可以传送9600个二进位,而一个字节要8个二进位,如用串口模式1来传输那么加上起始位和停止位,每个数据字节就要占用10个二进位,9600波特率用模式1传输时,每秒传输的字节数是9600F10=960字节。51芯片的串口工作模式0的波特率是固定的,为fosc/12,以一个12M的晶振来计算,那么它的波特率可以达到1M。模式2的波特率是固定在fosc/64或fosc/32,具体用那一种就取决于PCON寄存器中的SMOD位,如SMOD为0,波特率

为focs/64,SM0D为1,波特率为focs/32。模式1和模式3的波特率是可变的,取决于定时器1或2(52芯片)的溢出速率。那么我们怎么去计算这两个模式的波特率设置时相关的寄存器的值呢?可以用以下的公式去计算。波特率=(2SM0DF32)X定时器1溢出速率上式中如设置了PCON寄存器中的SMOD位为1时就可以把波特率提升2倍。通常会使用定时器1工作在定时器工作模式2下,这时定时值中的TL1做为计数,TH1做为自动重装值,这个定时模式下,定时器溢出后,TH1的值会自动装载到TL1,再次开始计数,这样可以不用软件去干预,使得定时更准确。在这个定时模式2下定时器1溢出速率的计算公式如下:溢出速率=(计数速率)/(256-TH1)上式中的“计数速率”与所使用的晶体振荡器频率有关,在51芯片中定时器启动后会在每一个机器周期使定时寄存器TH的值增加一,一个机器周期等于十二个振荡周期,所以可以得知51芯片的计数速率为晶体振荡器频率的1/12,一个12M的晶振用在51芯片上,那么51的计数速率就为1M。通常用11.0592M晶体是为了得到标准的无误差的波特率,那么为何呢?计算一下就知道了。如我们要得到9600的波特率,晶振为11.0592M和12M,定时器1为模式2,SMOD设为1,分别看看那所要求的TH1为何值。代入公式:11.0592M9600=(2/32)*((11.0592/12)/(256—TH1))TH1=25012M9600=(2/32)*((11.0592/12)/(256—TH1))TH1~249.49上面的计算可以看出使用12M晶体的时候计算出来的TH1不为整数,而TH1的值只能取整数,这样它就会有一定的误差存在不能产生精确的9600波特率。当然一定的误差是可以在使用中被接受的,就算使用11.0592M的晶体振荡器也会因晶体本身所存在的误差使波特率产生误差,但晶体本身的误差对波特率的影响是十分之小的,可以忽略不计。传感器部分人们为了从外界获取信息,必须借助于感觉器官。而单靠人们自身的感觉器官,在研究自然现象和规律以及生产活动中它们的功能就远远不够了。为适应这种情况,就需要传感器。因此可以说,传感器是人类五官的延长,又称之为电五官。新技术革命的到来,世界开始进入信息时代。在利用信息的过程中,首先要解决

的就是要获取准确可靠的信息,而传感器是获取自然和生产领域中信息的主要途径与手段。在现代工业生产尤其是自动化生产过程中,要用各种传感器来监视和控制生产过程中的各个参数,使设备工作在正常状态或最佳状态,并使产品达到最好的质量。因此可以说,没有众多的优良的传感器,现代化生产也就失去了基础。在基础学科研究中,传感器更具有突出的地位。现代科学技术的发展,进入了许多新领域:例如在宏观上要观察上千光年的茫茫宇宙,微观上要观察小到nm的粒子世界,纵向上要观察长达数十万年的天体演化,短到s的瞬间反应。此外,还出现了对深化物质认识、开拓新能源、新材料等具有重要作用的各种极端技术研究,如超咼温、超低温、超咼压、超咼真空、超强磁场、超弱磁砀等等。显然,要获取大量人类感官无法直接获取的信息,没有相适应的传感器是不可能的。许多基础科学研究的障碍,首先就在于对象信息的获取存在困难,而一些新机理和高灵敏度的检测传感器的出现,往往会导致该领域内的突破。一些传感器的发展,往往是一些边缘学科开发的先驱。传感器早已渗透到诸如工业生产、宇宙开发、海洋探测、环境保护、资源调查、医学诊断、生物工程、甚至文物保护等等极其之广泛的领域。可以毫不夸张地说,从茫茫的太空,到浩瀚的海洋,以至各种复杂的工程系统,几乎每一个现代化项目,都离不开各种各样的传感器。由此可见,传感器技术在发展经济、推动社会进步方面的重要作用,是十分明显的。世界各国都十分重视这一领域的发展。相信不久的将来,传感器技术将会出现一个飞跃,达到与其重要地位相称的新水平。传感器工作原理的分类物理传感器应用的是物理效应,诸如压电效应,磁致伸缩现象,离化、极化、热电、光电、磁电等效应。被测信号量的微小变化都将转换成电信号。化学传感器包括那些以化学吸附、电化学反应等现象为因果关系的传感器,被测信号量的微小变化也将转换成电信号。向传感器提供±15V电源,激磁电路中的晶体振荡器产生400Hz的方波,经过TDA2030功率放大器即产生交流激磁功率电源,通过能源环形变压器T1从静止的初级线圈传递至旋转的次级线圈,得到的交流电源通过轴上的整流滤波电路得到±5V的直流电源,该电源做运算放大器AD822的工作电源;由基准电源AD589与双运放AD822组成的高精度稳压电源产生±4.5V的精密直流电源,该电源既作为电桥电源,又作为放大器及V/F转换器的工作电源。当弹性轴受扭时,应变桥检测得到的mV级的应变信号通过仪表放大器AD620放大成1.5v±1v的强信号,再通过V/F转换器LM131变换成频率信号,通过信号环形变压器T2从旋转的初级线圈传递至静止次级线圈,再经过外壳上的信号处理电路滤波、整形即可得到与弹性轴承受的扭矩成正比的频率信号,该信号为TTL电平,既可提供给专用二次仪表或频率计显示也可直接送计算机处理。由于该旋转变压器动一静环之间只有零点几毫米的间隙,加之传感器轴上部分都密封在金属外壳之内,形成有效的屏蔽,因此具有很强的抗干扰能力。有些传感器既不能划

分到物理类,也不能划分为化学类。大多数传感器是以物理原理为基础运作的。化学传感器技术问题较多,例如可靠性问题,规模生产的可能性,价格问题等,解决了这类难题,化学传感器的应用将会有巨大增长。本设计传感器有超声波传感器和温度传感器DS18B20组成,其中超声波传感器又分为超声波发射电路和超声波接收电路,发射电路由五个反相器组成,接收电路由CX20106a组成。2.2.1超声波传感器超声波发射电路:超声波发射电路原理图如图2-3所示。发射电路主要由反相器74LS04和超声波发射换能器T构成,单片机P1.0端口输出的40kHz的方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极,用这种推换形式将方波信号加到超声波换能器的两端,可以提高超声波的发射强度。输出端采两个反向器并联,用以提高驱动能力。上位电阻R2O、R21一方面可以提高反向器74LS04输出高电平的驱动能力,另一方面可以增加超声波换能器的阻尼效果,缩短其自由振荡时间。U13A U13EU13A U13E图2-3超声波发射电路压电式超声波换能器是利用压电晶体的谐振来工作的。超声波换能器内部有两个压电晶片和一个换能板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片会发生共振,并带动共振板振动产生超声波,这时它就是一个超声波发生器;反之,如果两电极问未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收换能器。超声波发射换能器与接收换能器在结构上稍有不同,使用时应分清器件上的标志。超声波接收电路:集成电路CX20106A是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38kHz与测距的超声波频率40kHz较为接近,可以利用它制作超声波检测接收电路(如图2-5)。实验证明用CX20106A接收超声波(无信号时输出高电平),具有很好的灵敏度和较强的抗干扰能力。适当更改电容C4的大小,可以改变接收电路的灵敏度和抗干扰能力。其内部结构图如图2-4所示:前置电路将接收到的信号,转换成CX2010可以接收的标准数字信号,送到CX20106的①脚,CX20106的总放大增益约为80dB,其⑦脚输出的控制脉冲序列信号幅度在3.5~5V范围内。总增益大小由②脚外接的Rl、C1决定,R1越小或C1越大,增益越高。但取值过大时将造成频率响应变差,C1为luF。采用峰值检波方式检波电容C2为3.3uF°R2为带通滤波器中心频率f0的外部电阻。积分电容C3取330pF。经CX20106处理后的脉冲信号由⑦脚输出给AT89c51进行译码处理。使用CX20106A集成电路对接收探头受到的信号进行放大、滤波。其总放大增益80db。以下是CX20106A的引脚注释。图2-5由CX20106组成的超声波接收电路1脚:超声信号输入端,该脚的输入阻抗约为40kQ。脚:该脚与地之间连接RC串联网络,它们是负反馈串联网络的一个组成部分,改变它们的数值能改变前置放大器的增益和频率特性。增大电阻R1或减小C1,将使负反馈量增大,放大倍数下降,反之则放大倍数增大。但C1的改变会影响到频率特性,一般在实际使用中不必改动,推荐选用参数为R1=4.7Q,C1=1pF。脚:该脚与地之间连接检波电容,电容量大为平均值检波,瞬间相应灵敏度低;若容量小,则为峰值检波,瞬间相应灵敏度高,但检波输出的脉冲宽度变动大,易造成误动作,推荐参数为3.3》f。脚:接地端。5脚:该脚与电源间接入一个电阻,用以设置带通滤波器的中心频率fO,阻值越大,中心频率越低。例如,取R=200kQ时,fO~42kHz,若取R=220kQ,则中心频率fO~38kHz。6脚:该脚与地之间接一个积分电容,标准值为330pF,如果该电容取得太大,会使探测距离变短。7脚:遥控命令输出端,它是集电极开路输出方式,因此该引脚必须接上一个上拉电阻到电源端,推荐阻值为22kQ,没有接受信号是该端输出为高电平,有信号时则产生下降。8脚:电源正极,4.5〜5V。注意事项:对于CX20106的调试并不是像某些书上讲的那样十分简单,虽然外围器件少,但要做到稳定需要注意细节部分(比如2脚的阻容调试-即增益),另外若有示波器观察实际波形将在调试中很有帮助;当CX20106A接收到40KHz(发射频率和解制必须一致)信号时,会在第7脚产生一个低电平下降脉冲,这个信号可以接到单片机的外部中断引脚作为中断信号输入用于计算时间差。在实际调试的时候只关心芯片的7脚在收到信号是是否有一个下降沿产生。在本电路的调试中,如果一直发射超声波,在7脚将会有周期的低电平产生。不会像通常认为的那样,即一直发射信号时,7脚一直为低电平。这是刚用CX20106时的一个常见错误。只要通过单片机来来计算发射信号时到收到信号是产生下降沿这段时间的长度,再通过数学计算,转化为距离,然后在显示器上显示。温度传感器DS18B20DS18B20是美国DALLAS公司继DS1820之后推出的增强型单总线数字温度传感器,它在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,这给用户带来了更方便的使用和更令人满意的效果。DS18B20的存储器包括高速暂存器RAM和可电擦除RAM,可电擦除RAM又包括温度触发器TH和TL,以及一个配置寄存器。存储器能完整的确定一线端口的通讯,数字开始用写寄存器的命令写进寄存器,接着也可以用读寄存器的命令来确认这些数字。当确认以后就可以用复制寄存器的命令来将这些数字转移到可电擦除RAM中。当修改过寄存器中的数时,这个过程能确保数字的完整性DS18B20的主要特性1、 适应电压范围更宽,电压范围:3.0〜5.5V,在寄生电源方式下可由数据线供电2、 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯3、 DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温4、 DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内5、 温范围一55°C〜+125°C,在-10〜+85°C时精度为土0.5°C6、 可编程的分辨率为9〜12位,对应的可分辨温度分别为0.5°C、0.25°C、0.125C和0.0625C,可实现高精度测温7、 在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快8、 测量结果直接输出数字温度信号,以〃一线总线〃串行传送给CPU,同时可传

送CRC校验码,具有极强的抗干扰纠错能力9、负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。DS18B20内部结构主要由四部分组成:64为光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的内部结构如图2-5:电源检测电源检测图2-5DS18B20内部结构图其外形和管脚如下图2-5所示。GNDI/OUDDPR-35封装DS18B201 2 3GNDI/OUDDPR-35封装DS18B201 2 3VccNCNCNC图2-6DS18B20管脚及封装图DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。DS18B20的测温原理为:内部计数器对一个受温度影响的振荡器的脉冲计数,低温时振荡器的脉冲可以通过门电路,而当到达某一设置高温时,振荡器的脉冲无法通过门电路。计数器设置为—55°C时的值,如果计数器到达0之前门电路未关闭,则温度寄存器的值将增加,这表示当前温度高于一55°C。同时,计数器复位在当前温度值上,电路对振荡器的温度系数进行补偿,计数器重新开始计数直到回零。如果门电路仍然未关闭,则重复以上过程。温度转换所需时间不超过750ms,得到的温度值的位数因分辨率不同而不同[2]。DS18B20同AT89C52单片机的接口电路只需占用单片机一根口线,与智能仪器或智能测控系统中的其它单片机或DSP的接口也可采用类似的方式。在DS1820中,转换温度值是以9位二进制形式表示的,而输出温度则是以16位符号扩展的二进制补码读数形式提供。采用的办法是将低八位用补码表示,第九位以符号扩展形式扩展至其它七位。2.3可编程并行接口芯片8255A所谓可编程,实际上就是具有可选择性。例如,选择芯片中的哪一个或哪几个数据端口与外设连接;选择端口中的哪一位或哪几位作输入,哪一位或哪几位作输出;选择端口与CPU之间采用哪种方式传送数据等,均可由用户在程序中写入方式字或控制字来进行指定。因此,它们具有广泛的适应性及很高的灵活性,在微机系统中得到广泛应用。由于我们现在常用的微机系统均以并行方式处理数据,所以,并行接口也是最常用的接口电路。2.3.1并行接口的特点并行接口有以下几方面的特点:(1) 并行接口是在多根数据线上,以数据字节(字)为单位与输入/输出设备或被控对象传送信息的,如打印机接口、A/D、D/A转换器接口、IEEE—488接口、开关量接口、控制设备接口等。在实际应用中,凡在CPU与外设之间同时需要两位以上信息传送时,就要采用并行口。并行口适用于近距离传送的场合。由于各种I/O设备和被控对象多为并行数据线连接,CPU用并行口来组成应用系统很方便,故使用十分普遍。(2) 并行传送的信息,不要求固定的格式,这与串行传送的信息有数据格式的要求不同。例如,异步串行通信的格式是一个数据,它包括起始位、数据位、校验位和停止位。(3) 从并行接口的电路结构来看,并行口有硬线连接接口和可编程接口之分。硬线连接接口的工作方式及功能用硬线连接来设定,用软件编程序的方法不能加以改变;如果接口的工作方式及功能可以用软件编程序的方法加以改变,则就叫可编程接口。8255A及其特征Intel8086/8088系列的可编程外设接口电路(ProgrammablePeripheralInterface)简称PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。本系统由于只有一个外部扩展芯片,因此用74LS138译码器时,只要使A,B,C口都为高电平即可。8255A是40引脚双列直插式芯片,片内有A,B,C3个8位I/O端口,可提供24条可编程的输入/输出端口线。Inter8255A的基本特性如下:(1)具有两个8位(A口和B口)和两个4位(C口高/低四位)并行输入/输出端口,C口可按位操作。(2)具有3种工作方式:方式0——基本输入/输出(A,B,C口均有);方式1——选通输入/输出(A,B口具有);方式2——双向选通输入/输出(A口具有)。(3) 可用程序设置各种工作方式并查询各种工作状态。(4) 在方式1和方式2时,C口作A口、B口的联络线。(5)内部有控制寄存器、状态寄存器和数据寄存器供CPU访问。(6)有中断申请能力,但无中断管理能力(7)40根引脚,+5V供电,与TTL电平兼容。8255A内部结构8255A的内部结构如图2-7所示。(JAVA动画图说明)它由以下4个部分组成:

图2-78255a内部结构图数据总线缓冲器这是一个三态双向8位缓冲器,它是8255A与CPU系统数据总线的接口。所有数据的发送与接收,以及CPU发出的控制字和8255A来的状态信息都是通过该缓冲器传送的。读写控制逻辑读写控制逻辑由读信号RD,写领带WR,选片信号CS以及端口选择信号A1A0等组成。读写控制逻辑控制了总线的开放与关闭和信息传送的方向,以便把CPU的控制命令或输出数据送到相应的端口;或把外设的信息或输入数据从相应的端口送到CPU。数据端口A、B、C8255A包括3个8位输入/输出端口(POPT)。每个端口都有一个数据输入寄存器和一个数据输出寄存器,输入时端口有三态缓冲器的功能,输出时端口有数据锁存器功能。在实际应用中,PC口的8位可以分为两个4位端口(方式0下),也可以分成一个5位端口和一个3位端口(方式1下)来使用。A组和B组控制电路控制A、B和C3个端口的工作方式,A组控制A口和C口的上半部(PC7〜PC4),B组控制B口和C口的下半部(PC3〜PC0)的工作方式和输入/输出。A组、B组的控制寄存器还接收按位控制命令,以实现对PC口的按位置位/复位操作。2.3.48255A的引脚及其功能、工作方式8255A是一个单+5V电源供电,40个引脚的双列直插式组件,其外部引线如图2-8所示。D0PAOD1PAID2PA2D0PAOD1PAID2PA2D3PA3D4PA4D5PA5D6PA6D7PA7RDPEDWRPEIAOPE2AlPE?RESETPE4CSPETPEEPE7PCDPCIPC219PC3PC4PC5PC6PC734333277302928方354T匚4039383718772077222324251417亘T777To-图2-88255a引脚图(1)外部引线作为接口电路的8255A具有面向主机系统总线和面向外设两个方向的连接能力,它的引脚正是为了满足这种连接要求而设置的。面向系统总线的信号线有:D7〜DO:双向数据线。CPU通过它向8255A发送命令、数据;8255A通过它向CPU回送状态、数据。CS:选片信号线,该信号低电平有效,由系统地址总线经I/O地址译码器产生。CPU通过发高位地址信号使它变成低电平时,才能对8255A进行读写操作。当CS为高电平时,切断CPU与芯片的联系。A1,A0:芯片内部端口地址信号线,与系统地址总线低位相连。该信号用来寻址8255A内部寄存器。两位地址,可形成片内4个端口地址。RD:读信号线,该信号低电平有效。CPU通过执行IN指令,发读信号将数据或状态信号从8255A读至CPU。WR:写信号线,该信号低电平有效。CPU通过执行OUT指令,发写信号,将命令代码或数据写入8255A。RESET:复位信号线,该信号高电平有效。它清除控制寄存器并将8255A的A、B、C3个端口均置为输入方式;输出寄存器和状态寄存器被复位,并且屏蔽中断请求;24条面向外设的信号线呈现高阻悬浮状态。这种状态一直维持,直到用方式命令才能改变,使其进入用户所需的工作方式。面制I/O设备的信号线有:PAO〜PA7:端口A的输入/输出线PBO〜PB7:端口B的输入/输出线PCO〜PC7:端口C的输入/输出线这24根信号线均可用来连接I/O设备,通过它们可以传送数字量信息或开关量信息。8255a有三种工作方式,分别为方式0、方式1、方式2。方式0是一种基本输入或输出方式,它适用于无需握手信号的简单输入输出应用场合,端口A、B、C都可作为输入或输出数据使用,输出有锁存而输入无锁存。方式1也称选通的输入/输出方式。在这种方式下,无论是输入还是输出都通过应答关系实现,这时端口A或B用作数据口,端口C的一部分引脚用作握手信号线与中断请求线。•若端口A工作于方式1,则B可工作于方式0;•若端口B工作于方式1,则A可工作于方式0或余下的13位可工作于方式0;•若端口A和B同时工作于方式1,端口C余下的两位还可用于传送数据或控制信号。方式2也称选通的双向I/O方式,仅适用于端口A,这时A口的PA7-PA0作为双向的数据总线,端口C有5条引脚用作A的握手信号线和中断请求线,而B口和C口余下的3位仍可工作于方式0或1。它可以认为是方式1输出和输入的组合但有以下不同:(1)当CPU将数据写入A口时,尽管OBF变为有效,但数据并不出现在PA7-PA0上,只有外设发出ACKA信号时,数据才进入PA7-PA0。(2)输出和输入引起的中断请求信号都通过同一引脚输出,CPU必须通过查询OBF和IBF状态才能确定是输入引起的中断请求还是输出引起的中断请求。(3)ACKA和STBA信号信号不能同时有效,否则将出现数据传送“冲突”。电源电路直流稳压电源又称直流稳压器。它的供电电压大都是交流电压,当交流供电电压的电压或输出负载电阻变化时,稳压器的直接输出电压都能保持稳定。稳压器的参数有电压稳定度、纹波系数和响应速度等。前者表示输入电压的变化对输出电压的影响。纹波系数表示在额定工作情况下,输出电压中交流分量的大小;后者表示输入电压或负载急剧变化时,电压回到正常值所需时间。直流稳压电源分连续导电式与开关式两类。前者由工频变压器把单相或三相交流电压变到适当值,然后经整流、滤波,获得不稳定的直流电源,再经稳压电路得到稳定电压(或电流)。这种电源线路简单、纹波小、相互干扰小,但体积大、耗材多,效率低(常低于40%〜60%)。后者以改变调整元件(或开关)的通断时间比来调节输出电压,从而达到稳压。这类电源功耗小,效率可达85%左右,但缺点是纹波大、相互干扰大。所以,80年代以来发展迅速。从工作方式上可分为:可控整流型。用改变晶闸管的导通时间来调整输出电压。斩波型。输入是不稳定的直流电压,以改变开关电路的通断比得到单向脉动直流,再经滤波后得到稳定直流电压。变换器型。不稳定直流电压先经逆变器变换成高频交流电,再经变压、整流、滤波后,从所得新的直流输出电压取样,反馈控制逆变器工作频率,达到稳定输出直流电压的目的。本系统中只需要设计一种级别的电源即可,即传感器和系统其他芯片使用的+5V的电源。考虑本次设计的实际要求使系统稳定的工作,提高产品的性价比,电源电路的设计如图2-9所示。如图所示电路为输出电压+5V、输出电流1.5A的稳压电源。它由电源变压器B桥式整流电路D1〜D4,滤波电容Cl、C3,防止自激电容C2、C3和一只固定式三端稳压器(7805)极为简捷方便地搭成的。220V交流市电通过电源变压器变换成交流低压,再经过桥式整流电路D1〜D4和滤波电容C1的整流和滤波,在固定式三端稳压器LM7805的Vin和GND两端形成一个并不十分稳定的直流电压(该电压常常会因为市电电压的波动或负载的变化等原因而发生变化)。此直流电压经过LM7805的稳压和C3的滤波便在稳压电源的输出端产生了精度高、稳定度好的直流输出电压。本稳压电源可作为TTL电路或单片机电路的电源。三端稳压器是一种标准化、系列化的通用线性稳压电源集成电路,以其体积小、成本低、性能好、工作可靠性高、使用简捷方便等特点,成为目前稳压电源中应用最为广泛的一种单片式集成稳压器件。图2-9电源电路电源电路的具体设计如上图,+5v电源是这样实现的:220v的交流电压通过TF1变压器经过变压输出15v电压,然后通过4个IN4007晶闸管整流,再并联两个电容,最后接到LM7805的Vin端,由LM7805的Vout输出+5v电压,即为该系统所需电压。使用LM7805需要注意的事项有一下三点:输入输出压差不能太大,太大则转换效率急速降低,而且容易击穿损坏;2.输出电流不能太大,l.5A是其极限值。大电流的输出,散热片的尺寸要足够大,否则会导致高温保护或热击穿;输入输出压差也不能太小,大小效率很差。声光报警电路声光报警装置能帮助值班人员正确地判断运行设备的故障情况,以便及时排除故障,保证设备的安全运行。实验表明,在用声音或灯光报警时,连续的声响或常亮的灯光往往不易引起人们的警觉,只有断续的声音或闪烁的灯光,才能取得最佳报警效果。由门控振荡器组成的声光报警电路如图2-10所示。由与非门CD4011构成的两级门控振荡器。其中上面两个组成低频振荡器,震荡频率fl=lHz,周期约为Is。R5为下拉电阻,常态下使输入为0V。仅当输入为高电平信号时电路才起振,B0端交替输出的高、低电平经过VT1,使发光二极管LED闪烁发光,闪光周期也是Is。下面两个与非门组成音频振荡器,振荡频率为lKHz。仅当B0为1时,第二级振荡器才起振,通过达林顿管级输出变压器,驱动扬声器发出断续的“嘀、嘀、„„”报警声。Q.-ITU图2-10声光报警电路LED显示电路LED的静态显示虽然有编程容易、管理简单等优点,但是静态显示所要占的I/O口资源很多,所以在显示的LED点较多的情况下,一般都采用动态显示方式。在多位7段LED显示中,为了简化电路,降低成本,则将所有位的段选线并联在一起,刚好由8个I/O口来控制8个段。而公共端(共阳极/共阴极)则分别由相应的I/O口控制,以实现各个位的分时选通。由于所有的段选线并联到同一个I/O,由这个I/O口来控制,因此,若是所有的4位7段LED都选通的话,4位7段LED将会显示相同的字符。要使各个位的7段LED显示不同的字符,就必须采用动态扫描方法来轮流点亮每一位7段LED,即在每一瞬间只选通一位7段LED进行显示单独的字符。在此段点亮时间内,段选控制I/O口输出要显示的相应字符的段选码,而位选控制I/O口则输出位选信号,向要显示的位送出选通电平(共阴极则送出低电平,共阳极则送出高电平),使得该位显示相应字符。这样将四位7段LED轮流去点亮使得每位分时显示该位应显示的字符。由于人眼的视觉暂留时间为0.1秒,当每位显示的间隔未超过33ms时,并在显示时保持直到下一位显示,则由于人眼的视觉暂留效果眼睛看上去就像是4位7段LED都在点亮。设计时,要注意每位显示的间隔时间,由于一位7段LED的熄灭时间不能超过100ms,也就是说点亮其它位所用的时间不能超过100ms,这样当有N位的7段LED用来显示时,每一位间隔的时间t就必须符合下面的式子:t=100ms/(NT)比如,现在使用4位,也就是N=4,则由式子可以算出t=33ms,就是每一位的间隔时间不能超过33ms。当然时间可以也设得短一些,比如5ms或1ms也可以。本系统采用动态扫描显示电路,由于单片机的I/O口数量有限,因此需要通过8255a进行I/O口的扩展,由于所有6位选线皆由一个I/O口控制,因此,在每一瞬间,6位LED会显示相同的字符。要想每位显示不同的字符,就必须采用扫描方法轮流点亮各位LED,即在每一瞬间只使某一位显示字符。在此瞬间,段选控制I/O口输出相应字符段选码(字型码),而位选则控制I/O口在该显示相应字符。如此轮流,使每位分时显示该位应显示字符,根据人眼视觉特性,当LED所加信号频率大于50Hz时,人眼不能感觉其变化,所以每位显示的间隔不能超过20ms,也就是说要在20ms之内分时的点亮所有LED,LED越多所分的时间越短,亮度就会不足;如果增加点亮时间,又会使扫描频率下降,有闪烁感容易造成人眼的彼劳,这种方式就是我们大家常用的动态扫描方式,这种扫描方式仅适用于LED不超过10个时的场合。本系统通过扩展的8255a的PA口来控制四个数码管的段选信号,PB0-PB3来控制其位选信号,其连接图如图2-11所示。RP01234567DDDDDDDDAI0A1A2A3A4A5A6A7PPPPPPPPM51236RD阪AOAlRESET>5sPEOPEIPB2PE:3PB4PB5PE:6PB7PCOPCIPC2PCSPC4.^.^-4%|^.*-了RP01234567DDDDDDDDAI0A1A2A3A4A5A6A7PPPPPPPPM51236RD阪AOAlRESET>5sPEOPEIPB2PE:3PB4PB5PE:6PB7PCOPCIPC2PCSPC4.^.^-4%|^.*-了*-1:=r丁丁丁丁丁丁丁■f-f-f-c-f-f-c-i:llj213r22r31r440r539n538r737rlI2r3I4r5rfr7IS161514131211-109DP¥i■:DPY'ifDPYg23242514IJ16I?图2-11LED动态扫描显示电路的连接RS-485总线RS485总线作为一种简易、廉价的通信技术,其收发器采用平衡驱动和差分接收,具有抑制共模干扰的能力。RS485接收器灵敏度可达±200mV,因而大大提高了通信距离。在100kb/s速率下电缆长度可达1200m,如果通信距离缩短,最大速率更可达10Mb/s。RS485总线上允许带多个驱动器和接收器,最新的收发器可带128个节点,用于构建多点通信网络。由于RS485总线具有设备简单、价格低廉、能进行长距离通信的特点,故在工程中得到了广泛应用。由于本设计需要同时测量多个油罐的液位,因此,本设计选用了485来进行多机通讯,如图2-12所示。为了实现总线与单片机系统的隔离,在8031的异步通信口与75176之间采用光耦隔离。由于应用系统中,主机与分机相隔较远,通信线路的总长度往往超过400米,而分机系统上电或复位又常常不在同一个时刻完成。如果在此时某个75176的DE端电位为“1”那么它的485总线输出将会处于发送状态,也就是占用了通信总线,这样其它的分机就无法与主机进行通信。这种情况尤其表现在某个分机出现异常情况下(死机),会使整个系统通信崩溃。因此在电路设计时,应保证系统上电复位时75176的DE端电位为“0”由于8031在复位期间,/O口输出高电平,故下图电路的接法有效地解决复位期间分机“咬”总线的问题。图2-12 RS-485通讯电路图2.7.1RS-485接口标准传输方式:差分传输介质:双绞线标准节点数:32最远通信距离:1200m共模电压最大、最小值:+12V、-7V差分输入范围:-7V到+12V接收器输入灵敏度:±200mV接收器输入阻抗:$12kQ2.7.2节点数及半双工和全双工通信1.节点数所谓节点数,即每个RS485接口芯片的驱动器能驱动多少个标准RS485负载。根据规定,标准RS485接口的输入阻抗为$12kQ,相应的标准驱动节点数为32。为适应更多节点的通信场合,有些芯片的输入阻抗设计成1/2负载($24kQ)、1/4负载($48kQ)甚至1/8负载($96kQ),相应的节点数可增加到64、128和256。2.半双工和全双工RS-485接口可连接成半双工和全双工两种通信方式。半双工通信的芯片有SN75176、SN75276、SN75LBC184、MAX485、MAX487、MAX1487、MAX3082、MAX1483等;全双工通信的芯片有SN75179、SN75180、MAX488-MAX491、MAX1482等。根据本设计的要求,需要测量20个点的液位,因此选用半双工通用芯片SN75176,在由单片机构成的多机串行通信系统中,一般采用主从式结构:从机不主动发送命令或数据,一切都由主机控制。并且在一个多机通信系统中,只有一台单机作为主机,各台从机之间不能相互通讯,即使有信息交换也必须通过主机转发。采用RS-485构成的多机通讯原理框图,如图2-13所示。

2端终口32接325235325235口32接3252352端终口32接325235325235口32接3252354:85接口RS232/RS485转换器232接口485接口RS232/RS485转换器232接口3252354:85RS232/RS485232接口转换器接口485RS232/RS485232接口转换器接口232终«127接口图2-13采用RS-485构成的多级通信原理框图2.7.3使用485通讯要遵循的原则复位时,主从机都应该处于接收状态。SN75176芯片的发送和接收功能转换是由芯片的RE*,DE端控制的。RE*=1,DE=1时,SN75176发送状态;RE*=O,DE=O时,SN75176处于接收状态。一般使用单片机的一根口线连接RE*,DE端。在上电复位时,由于硬件电路稳定需要一定的时间,并且单片机各端口复位后处于高电平状态,这样就会使总线上各个分机处于发送状态,加上上电时各电路的不稳定,可能向总线发送信息。因此,如果用一根口线作发送和接收控制信号,应该将接口线反向后接入SN75176的控制端,使上电时SN75176处于接收状态。另外,在主从机软件上也应附加若干处理措施,如:上电时或正式通讯之前,对串行口做几次空操作,清除端口的非法数据和命令。控制端RE*,DE的信号的有效脉宽应该大于发送或接收一帧信号的宽度。在RS-232,RS-422等全双工通讯过程中,发送和接收信号分别在不同的物理链路上传输,发送端始终为发送端,接收端始终为接收端,不存在发送、接收控制信号切换问题。在RS485半双工通讯中,由于SN75176的发送和接收都由同一器件完成,并且发送和接收使用同一物理链路,必须对控制信号进行切换。控制信号何时为高电平,何时为低电平,一般以单片机的TI,RI信号作参考。发送时,检测TI是否建立起来,当TI为高电平后关闭发送功能转为接收功能;接收时,检测RI是否建立起来,当RI为高电平后,接收完毕,又可以转为发送。总线上所连接的各单机的发送控制信号在时序上完全隔开。为了保证发送和接收信号的完整和正确,避免总线上信号的碰撞,对总线的使用权必须进行分配才能避免竞争,连接到总线上的单机,其发送控制信号在时间上要完全隔离。总之,发送和接收控制信号应该足够宽,以保证完整地接收一帧数据,任意两个单机的发送控制信号在时间上完全分开,避免总线争端。RS485总线缺点RS485总线的通讯容量较少,理论上最多仅容许接入32个设备,不适于以楼宇为结点的多用户容量要求。RS485总线的通讯速率低,常用波特率为9600bps。而且其速率与通讯距离有直接关系,当达到数百米以上通讯距离时,其可靠通讯速率<1200bps。RS485芯片功耗较大,静态功耗达到2-3mA,工作电流(发送)达到20mA,若加上偏置电阻及终端电阻,工作电流会更大。增加了线路电压降,不利于远程布线。RS485总线构成的网络只能以串行布线,不能构成星形等任意分支。串行布线对于小区实际布线设计及施工造成很大难度,不遵循串行布线规则又将大大降低通讯的稳定性。RS485总线自身的电气性能决定了其在实际工程应用中稳定性较差,在多节点、长距离场合需对网络进行阻抗匹配等调试,增添工程复杂性。RS485总线通常不带隔离,当网络上某一节点出现故障会导致系统整体或局部的瘫痪,而且又难以判断其故障位置。74LS138译码器74LS138为3线-8线译码器,共有54/74S138和54/74LS138两种线路结构型式。由于本设计需要用的一片I/O口扩展芯片8255A,因此要想选中此芯片就必须给片选信号CS/有效电平,因此需要用到74LS138译码器来进行选中信号。其工作原理如下:当一个选通端(E1)为高电平,另两个选通端(E2)和/(E3))为低电平时,可将地址端(A0、Al、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。比如:A0A1A2=110时,则Y6输出端输出低电平信号。利用E1、E2和E3可级联扩展成24线译码器;若外接一个反相器还可级联扩展成32线译码器。若将选通端中的一个作为数据输入端时。74LS138共有16根引脚,其引脚图如2-14所示:74LS138有三个附加的控制端、和。当、时,输出为高电平(S=1),译码器处于工作状态。否则,译码器被禁止,所有的输出端被封锁在高电平。这三个控制端也叫做“片选”输入端,利用片选的作用可以将多篇连接起来以扩展译码器的功能。带控制输入端的译码器又是一个完整的数据分配器。如果把作为“数据”输入端(在同一个时间),而将作为“地址”输入端,那么从送来的数据只能通过所指定的一根输出线送出去。这就不难理解为什么把叫做地址输入了。例如当A2A1AO=1O1时,门的输入端除了接至输出端的一个以外全是高电平,因此的数据以反码的形式从输出,而不会被送到其他任何一个输出端上。74LS138的作用:利用Gl、/(G2A)和/(G2B)可级联扩展成24线译码器;若外接一个反相器还可级联扩展成32线译码器。若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。咯蓝EXE疏只吒16151413121110974LS1381.2345678吗4禺務爲弘Egnd图2-1474LS138引脚图用与非门组成的3线-8线译码器74LS138的内部电路如图2-15所示:

无论从逻辑图还是功能表我们都可以看到74LS138的八个输出管脚,任何时刻要么全为高电平1—芯片处于不工作状态,要么只有一个为低电平0,其余7个输出管脚全为高电平1。如果出现两个输出管脚在同一个时间为0的情况,说明该芯片已经损坏。3线-8线译码器74LS138的功能表如表2-1所示:

表2-1 74LS138功能表输入输出S1S2/+S3/A2A1A0Y0/Y1/Y2/Y3/Y4/Y5/Y6/Y7/0XXXX11111111X1XXX1111111110000011111111000110111111100101101111110011111011111010011110111101011111101110110111111011011111111110第三章系统软件的设计通过学习51系列单片机,我们知道汇编语言有执行效率高,速度快,编写的程序代码短,与硬件结合紧密等特点。尤其在进行I/O口管理是,使用汇编语言快捷、直观。但汇编语言比高级语言难度大,可读性差,不便于移植,应用系统设计的周期长,调试和排错也比较难,开发的时间长。C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。而C语言作为一种高级程序设计语言,在程序设计时相对来说比较容易,支持多种数据类型,功能丰富,表达能力强,应用灵活、方便,应用面广,目标程序效率高,可移植性好,而且能够直接对计算机硬件进行操作。既有高级语言的特点,也具有汇编语言的特点,能够对硬件直接访问,能够按地址方式访问存储器或I/O端口。现在,采用C语言编写程序进行单片机应用系统开发已经成为主流。当然,采用C语言编写的应用程序必须由单片机的C语言编译器转换生成单片机可执行且与汇编语言一一对应的代码程序。超声波测距仪的软件设计主要由主程序、超声波发生子程序、超声波接收中断子程序、超限报警子程序及显示子程序组成。其主要程序流程图如图3-1所示。主程序首先是对系统环境初始化,设置定时器TO工作模式为16位定时计数器模式。置位总中断允许位EA并给显示端口P0和P1清0。然后调用超声波发生子程序送出一个超声波脉冲,为了避免超声波从发射器直接传送到接收器引起的直射波触发,需要延时约0.1ms(这也就是超声波测距仪会有一个最小可测距离的原因)后,才打开外中断0接收返回的超声波信号。由于采用的是12MHz的晶振,计数器每计一个数就是1“s,当主程序检测到接收成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)经单片机计算处理,测得超声波传感器与油罐底之间的距离即可得油罐的液位高度。

其程序如下:#include<reg51.h>#include<absacc.h>#defineucharunsignedchar#defineunitunsignedint#definePAXBYTE[0x0000]//A口地址#definePBXBYTE[0x0001]//B口地址#definePCXBYTE[0x0002]//C口地址#definePCTXBYTE[0x0003]//控制口地址sbits40kHz=p1A0;//==========================================units,t,h; //s为测量距离(单位:mm),t为测量时间,h为超声波传感器与油罐底之间的距离uchard[4]; //显示缓存uchar temperature;uchar ultrasonic_counter;uchar temperature;uchar ultrasonic_counter;uchar sign_failure;uchar sign_complete;//当前温度值,单位为摄氏度//发送超声波的周期数寄存器//测量失败标志//测量完成标志//voiddelay(){ucharI;for(I=0;I<4;I++){d[0]=s%10;d[1]=s/10%10;d[2]=s/100%10;d[3]=s/100%10;}}//==========================================voiddisplay(unitt) //循环扫描t遍{ucharI;ucharcodeBCD_7[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//BCD——7[10]为灭的译码for(;t>0;t--){for(I=0;I<4,I++){P0=BCD_7[d[I]];

P2|=0x10<<I;delay();P2=0x0f;}}}//==========================================voidmeasure(){sign_failure=0;voidmeasure(){sign_failure=0;sign_complete=0;TH1=TL1=0;TH0=(256-12);TL0=(256-13);ultrasonic_counter=0;TR0=1;TR1=1;while(ultrasonic_counter<16);TR0=0;while(sign_complete==0){if(sign_failure)(650536ms*314m/s=20.5m),测量失败//超声波测距子函数//测量开始,清测量失败标志//测量开始,清测量完成标志//发送超声波的周期数寄存器清0//开始发射超声波//计时开始//等待发送完8个脉冲//关闭T0//等待测量完成//若T2溢出也未能检测到回波{TR1=0;return;}}TR2=0;s=h-t*0.157; //s=h-314000*(t*0.000001)/2,h为超声波传感器与油罐底的距离;}//==========================================voidmain(){ucharI;TOMD=0x02;T2CON=0X09;EA=1;ET0=1;//TO工作在方式2的定时器模式//T1工作在捕获状态//开总中断//使能定时器O中断ET1=1; //使能定时器1中断EX0=1;s=0;for(I=0;I<4;I++)d[i]=0;while(1){measure();wdbuchang();display(120);baojing();}}//==========================================voidT0_ISR(){if(TH0==(256-12))TH0=256-13; 〃半周期12us,半周期13uselseTH0=256-12;s40kHz=!s40kH

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论