超声波测距毕设_第1页
超声波测距毕设_第2页
超声波测距毕设_第3页
超声波测距毕设_第4页
超声波测距毕设_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、1 引言1.1 课题提出的背景 一些传统的距离测量方式在某些特殊场合存在不可克服的缺陷。例如,液面测量就是一种距离测量,传统的电极法是采用差位分布电极,通过给电或脉冲来检测液面,电极长期浸泡于水中或其他液体中,极易被腐蚀、电解,失去灵敏性。利用超声波就可以解决这些问题。随着经济发展,电子测量技术应用越来越广泛,而超声波测量精确度高,成本低,性能稳定则备受青睐。超声波是指频率在20kHz以上的声波,它属于机械波的范畴。超声波也遵循一般机械波在弹性介质中的传播规律,如在介质的分界面处发生反射和折射现象,在进入介质后被介质吸收而发生衰减等。正是因为具有这些性质,使得超声波可以用于距离的测量中,超声波

2、测距技术正在被广泛应用于人们日常工作和生活之中。1.2 课题研究的意义由于超声测距是一种非接触检测技术,不受光线、被测对象颜色等的影响,较其它仪器更卫生,更耐潮湿、粉尘、高温、腐蚀气体等恶劣环境,具有少维护、不污染、高可靠、长寿命等特点。因此可广泛应用于纸业、矿业、电厂、化工业、农业用水、环保检测、食品、防汛、水文、空间定位、公路限高等行业中。可在不同环境中进行距离准确度在线标定,可直接用于水、酒、糖、饮料等液位控制,可进行差值设定,直接显示各种液位罐的液位、料位高度,在特殊环境下有较广泛的应用。利用超声波检测往往比较迅速、方便、计算简单、易于实现实时控制,并且在测量精度方面能达到工业实用的指

3、标要求。同时由于超声波测距系统具有以上的这些优点,因此在移动机器人的研究和汽车倒车雷达的研制方面也得到了广泛的应用。1.3 超声波测距的发展状况一般认为,关于超声波的研究最初始于1876年F.Galton的气哨实验。当时Galton哨在空气中产生的频率达300KHz,这是人类首次有效产生的高频声波。这些年来,随着超声波技术研究的不断深入,再加上其具有的高精度、无损、非接触等优点,超声波的应用变得越来越普及。目前已经广泛地应用在机械制造、电子冶金、交通等工业领域。此外在材料科学、医学、等领域中也占据重要地位。 国外在提高超声波测距方面做了大量的研究,国内一些学者也作了相关的研究。超声波测距的精度

4、主要取决于所测的超声波传输时间和超声波在介质中的传输速度,二者中以传输时间的精度影响较大,所以大部分文献采用降低传输时间的不确定度来提高测距精度。目前相位探测法和声谱轮廓分析法或二者结合起来的方法是主要的降低探测传输不确定度的方法。 意大利的Carullo等人介绍了一种自适应系统,采用特殊的发射波形来获得好的回波包络,同时采用对环境的噪声进行估测,设置一定的回波开门电平,且采用自动增益的控制放大器,通过这些措施来提高超声波的探测精度。另外也有大量的文献研究采用数字信号处理技术和小波变换理论来提高传输时间的精度。这些处理方法都取得了较好的结果。随着科学技术的快速发展,超声波将在测距仪中的应用越来

5、越广泛。当今对超声波测距仪方面的技术是比较成熟的,在国内市场上,有多种超声波测距仪,且其性能和测量范围都是非常优越的,完全满足实际应用的需要。 当然,这方面的技术虽然已经相当的成熟了,并不是说已经没有了研究其的必要性了。其实不然,多数测距仪由于其功能的复杂,导致其市场价格飙升,而限制了它在一些特殊场合的应用,例如物位(液位)检测,机器人防撞,各种超声波接近开关,以及防盗报警等相关领域,只需作为整个系统的一部分而使用,因而需要研究一种既简单,又实用;既经济又实惠的超声波测距系统,是势在必行的。因此利用超声波是一个正在蓬勃发展而又有无限前景的技术及产业领域。展望未来,超声波测距仪作为一种新型的非常

6、重要有用的工具在各方面都将有很大的发展空间,它将朝着更加高定位高精度的方向发展,以满足日益发展的社会需求,如声呐的发展趋势基本为:研制具有更高定位精度的被动测距声呐,以满足水中武器实施全隐蔽攻击的需要;继而发展采用低频线谱检测的潜艇拖拽线列阵声呐,实现超远程的被动探测和识别。毋庸置疑,未来的超声波测距仪将与自动化智能化接轨,与其他的测距仪集成和融合,形成多测距仪。随着测距仪的技术进步,面貌一新的测距仪将发挥更大的作用。1.4超声波测距的基本原理超声波为直线传播方式,频率越高,绕射能力越弱,但反射能力越强。利用超声波的这种性能就可制成超声传感器,或称为超声换能器,它是一种既可以把电能转化为机械能

7、、又可以把机械能转化为电能的器件或装置。换能器在电脉冲激励下可将电能转换为机械能,向外发送超声波;反之,当换能器处在接收状态时,它可将声能(机械能)转换为电能。1.4.1 超声波发生器原理 为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。总体上讲,超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。目前较为常用的是压电式超声波发生器。压电式超声波发生器实际上是利用压电晶体的谐振来工作的。超声波发生器内部

8、有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。 1.4.2 超声波测距原理最常用的超声测距的方法是回声探测法,超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为C,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离s,即:s=Ct/2. 由于超声波也

9、是一种声波,其声速C与温度有关。在使用时,如果传播介质温度变化不大,则可近似认为超声波速度在传播的过程中是基本不变的。如果对测距精度要求很高,则应通过温度补偿的方法对测量结果加以数值校正。声速确定后,只要测得超声波往返的时间,即可求得距离。这就是超声波测距仪的基本原理。s=Ct/2 (11)式中,C为超声波在空中的传播速度,0时为331m/s,25时为347m/s,其与环境温度T()的关系如式(1-2)。 C=331.4+0.61T (12)超声波发射超声波接收图1.1超声波测量距离原理示意图由此可见,声速与温度有密切关系。如果温度变化不大,并且无特殊精度要求,可认为声速是基本不变的。否则,必

10、须进行温度补偿。温度补偿通常有两种方法:补偿方法1:每次先按照式(1-2)计算当时声速C,然后再按照式(1-1)计算距离。其特点是:根据当时的温度得到当时的精确声速,从而计算得到的距离也比较精确;但程序中牵涉到浮点数运算,对于微处理器系统实现,难度相对较大。补偿方法2:根据当前的环境温度,查取特征温度值-声速表中最接近温度对应的声速值,作为当前声速,然后按照式(1-1)进行距离计算。其特点是:避免了复杂的声速计算,可采用事先计算得到温度-声速二维表,将之固化到系统程序中,然后直接使用查表法得到声速值,程序实现比较简单,但精度没有方法1高。另外,从图1-1还可以看出,由于超声波利用接收发射波来进

11、行距离的计算,因而不可避免地存在发射与反射之间的夹角,其大小为2。当很小时,可直接按式(1-1)进行计算得到距离;但较大时,则必须进行距离修正,修正公式为式(1-3)。S=cos (13) 在式(13)中,倾角与超声波发射装置和接收装置的安装位置有关。我们在实际应用时应注意适当安装。2 超声波测距硬件设计概况超声波测距仪主要包括:温度检测电路,超声波发射及控制电路,超声波接收及信号处理电路,显示电路,微处理器及其辅助电路5部分组成。2.1 整体电路设计整体电路的控制核心为单片机AT89S52。超声波发射和接收电路中都对相应信号进行整形及放大,以保证测量结果尽可能精确。超声波探头接OUT口实现超

12、声波的发射和接收。另外还有温度测量电路测量当时的空气温度,等到把数据送到单片机后使用软件对超声波的传播速度进行调整,使测量精度能够达到要求。整体结构图包括超声波发射电路,超声波接收电路,单片机电路,显示电路与温度测量电路等几部分模块组成。而超声波发射与接收电路还要加入放大电路。在发射后把信号放大,接收前也要再次放大。整体电路结构图如图2.1。图2.1超声波测距结构图单片机发出40kHZ的信号,经放大后通过超声波发射器输出;超声波接收器将接收到的超声波信号经放大器放大,用锁相环电路进行检波处理后,启动单片机中断程序,测得时间为t,再由软件进行判别、计算,得出距离数并送LED显示。2.2 超声波发

13、送器超声波发送器包括超声波产生电路和超声波发射控制电路两个部分,可采用软件发生法和硬件发声法产生超声波。前者利用软件产生40kHz的超声波信号,通过输出引脚输入至驱动器,经过驱动器驱动后推动探头产生超声波。这种方法的特点是充分利用软件,灵活性好,但需要设计一个驱动电流为100mA以上的驱动电路。第二种方法是利用超声波专用发生电路或通用发生电路产生超声波信号,并直接驱动换能器产生超声波。这种方法的特点是无需驱动电路,但缺乏灵活性。超声波发射电路原理图如图2.2。图2.2超声波产生原理图 2.3 超声波接收器超声波接收器包括超声波接收探头、信号放大电路及波形变换电路三部分。超声波探头必须采用与发射

14、探头对应的型号,主要是频率要一致,否则,因无法产生共振而影响接收效果。由于经探头变换后的正弦波电信号非常弱,因此必须经放大电路放大。正弦波信号不能直接被微处理器接收,因此必须进行波形变换。超声波在空气中传播时,其能量的衰减程度与距离成正比,即距离越近,信号越强,距离越远,信号越弱,通常在1mV-1V之间。当然,不同的接收探头的输出信号强度存在差异。由于输入信号的范围较大,对放大电路的增益提出了两个要求:(1)放大增益要大,以适应小信号时的需要;(2)放大增益要能变化,以适应信号变化范围大的需要。另外,由于输入信号为正弦波,因此必须将放大电路设计成交流放大电路。图2.3 超测声波检接收电路原理图

15、2.4 DS18B20的温度测量电路 在精度有要求的情况下,需要考虑温度对超声波传播速度的影响,对超声波传播速度加以修正,以减小误差。下面公式是超声波传播速度与空气温度的关系。V = 3314 + 0607T 式中,T为实际温度单位为,v为超声波在介质中的传播速度单位为ms。表 2.1 超声波波速与温度的关系表温度()-30-20-100102030100声速(ms)313319325323338344349386这里采用的主要元器件是是美国Dallas半导体公司生产的单总线数字温度传感器DS18B20,其具有精度高、智能化、体积小、线路简单等特点。将DS18B20数据线与单片机的P1.1口相

16、连,就可以实现温度测量。温度测量电路基于DS18B20数字温度传感器,电路非常简洁。DS18B20是美国DALLS公司推出的DS1820的替代品,具有9、10、11和12位转换精度,未编程时默认精度为12位,测量精度一般为0.5,软件处理后可达0.1。温度输出以16位符号扩展的二进制形式提供,低位在先,以0.0625/LSB形式表达。十六位温度读数形式如表2.2:表2.2十六位温度读数形式SSSSS262524232221202-12-22-32-4其中,高五位为扩展符号位。转换周期与转换精度设定有关,9位精度时,最大转换时间为93.75ms;12位精度时,最大转换时间为750ms。DS18B

17、20的引脚判断方法是:字面朝人,从左到右分别是1(GND)、2(输出/输入)、3(VDD)。DS18B20数字温度计以9位数字量的形式反映器件的温度值。DS18B20通过一个单线接口发送或接收信息,因此在中央微处理器和DS18B20之间仅需一条连接线(加上地线)。用于读写和温度转换的电源可以从数据线本身获得,无需外部电源。因为每个DS18B20都有一个独特的片序列号,所以多只DS18B20可以同时连在一根单线总线上,这样就可以把温度传感器放在许多不同的地方。 2.5 AT89S52微处理器及辅助电路主机电路设计的关键是AT89S52微处理器及其辅助电路的设计,另外还包括基于MAX7219串行数

18、码管驱动接口电路的设计。2.5.1 AT89S52简介图2.4 AT89S52引脚图2.5.2 AT89S52主要性能1、与MCS-51单片机产品兼容;2、8K字节在系统可编程Flash存储器;3、1000次擦写周期;4、全静态操作:0Hz-33MHz;5、三级加密程序存储器;6、32个可编程I/O口线;7、三个16位定时器/计数器;8、六个中断源;9、全双工UART串行通道;10、低功耗空闲和掉电模式;11、掉电后中断可唤醒;12、看门狗定时器;13、双数据指针;14、掉电标识符。2.5.3 AT89S52功能描述AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程F

19、lash 存储器。使用Atmel 公司高密度非易失性存储器技术,与工业标准80C51 产品指令和引脚兼容。片上Flash允许程序存储器在系统可编程,也适于常规编程器。在单芯片上,拥有多功能的8 位CPU 和在系统可编程Flash,Atmel的AT89S52功能强大,为众多嵌入式控制应用系统提供解决方案。AT89S52具有以下标准功能: 三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM

20、内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。2.5.4 MAX7219驱动电路 6位共阴极数码管采用MAX7219进行驱动,MAX7219是微处理器和共阴极七段-八位LED显示,片内包括BCD译码器、多路扫描控制器、字和位驱动器和8X8静态RAM。外部只需要一个电阻设置所有LED显示器字段电流。MAX7219和微处理器只需三根导线连接,每位显示数字有一个地址由微处理器写入。允许使用者选择每位是BCD译码或不译码。使用者还可选择停机模式、数字亮度控制、从18选择扫描位数和对所有LED显示器的测试模式。MAX7219工作原理如下:MAX7219和单片机连接有三条引线

21、(DIN、CLK、LOAD),采用l6位数据串行移位接收方式,即单片机将l6位二进制数逐位发送到DIN端,在CLK上升沿到来前准备就绪,CLK的每个上升沿将一位数据移入MAX7219内移位寄存器,当l6位数据移入完,在LOAD引脚信号上升沿将l6位数据装MAX7219内的相应位置,在MAX7219内部硬件动态扫描显示控制电路作用下实现动态显示。3 软件设计3.1 程序完成的功能本次设计的程序需要完成的功能有:(1)超声波的发射和接受控制; (2)消除余振(3)对回波信号的检测(4)测距时间到距离的换算(5)距离的显示3.2 编程语言的选择 计算机的程序设计中可以用到三种语言: 1.机器语言 机

22、器语言就是用二进制(可缩写为十六进制)代码来表示指令和数据,也称为机器代码、指令代码。机器语言是计算机唯一能识别和执行的语言,用其编写的程序执行效率最高,速度最快,但由于指令的二进制码很难记忆和辨认,给程序的编写、阅读和修改带来很多困难,所以几乎没有人直接使用机器语言来编写程序。 2.汇编语言 计算机所能执行的每条指令都对应一组二进制码。为了容易理解和记忆计算机的指令,人们用一些英语单词和字符等作为助记符来描述每一条指令的功能。用助记符表示的指令就是计算机的汇编语言,汇编语言与机器语言一一对应。用汇编语言编写程序,每条指令的意义一目了然,给程序的编写、阅读和修改带来很大的方便。而且用汇编语言编

23、写的程序占用内存小,执行速度快,尤其适用于实时应用场合的程序设计,因此在单片机应用系统中主要使用汇编语言来编写程序。汇编语言也有它的缺点:缺乏通用性,程序不易移植,是一种面向机器的低级语言。即使用汇编语言编写程序时,仍必须熟悉机器的指令系统、寻址方式、寄存器的设置和使用方法。每个计算机系统都有它自己的汇编语言,不同计算机的汇编语言之间不能通用,但是掌握了一种计算机的汇编语言,却有助于学习其他计算机的汇编语言。 3.高级语言高级语言是一种面向算法、过程和对象的程序设计语言,它采用更接近人们自然语言和习惯的数学表达式及直接命令的方法来描述算法、过程和对象,如BASIC、C语言等。高级语言的语句直观

24、、易学、通用性强,便于推广、交流,但高级语言编写的程序经编译后所产生的目标程序大,占用内存多,运行速度较慢,这在实时应用是一个突出的问题。 在编程语言的选择上,我主要考虑使用我所学过的汇编语言。3.3超声波测距仪的软件规划超声波测距仪的程序主要包括以下功能模块:(1) DS18B20温度传感器接口模块,分为初始化子程序、写入子程序及读取子程序等部分;(2) 基于MAX7219的显示模块,分为MAX7219初始化子程序、写入子程序及显示子程序等部分;(3) 温度补偿与距离计算模块,分为超声波发射控制程序、接收处理子程序、温度补偿子程序及距离计算子程序等部分;(4) 主模块,分为系统的初始化、按键

25、处理及各子程序的调度管理等部分。系统框图3.1形象地描述了各模块功能及相互之间的关系。DS18B20初始化温度检测温度补偿超声波发射显示模块距离计算超声波接收按键处理图3.1 系统软件方框图3.4超声波发生和接收中断子程序3.4.1超声波发生子程序超声波发生子程序在P1.0产生40KHz方波脉冲宽度约12us,作为超声波发射器的输出信号。同时打开计数器T0计时。流程图如图3.2所示。图3.2 超声波发生子程序流程图3.4.2超声波接收中断子程序 超声波测距器主程序利用外中断0检测返回超声波信号,一旦接收到返回超声波信号(INT0引脚出现低电平),立即进入中断程序。进入该中断后就立即关闭计时器T

26、0停止计时,并将测距成功标志字赋值1.如果当计时器溢出时还未检测到超声波返回信号,则定时器T0溢出中断将外中断0关闭,并将测距成功标志字赋值2以表示此次测距不成功。图3.3 接收中断子程序流程图3.5 DS18B20的接口程序设计DS18B20的一线工作协议流程是,初始化ROM操作指令存储器操作指令数据传输。其工作时序包括:初始化时序、写时序和读时序,每种工作时序都有相应的要求。3.5.1 DS18B20的初始化DS18B20初始化的实质是使DS18B20复位,主要是通过判断存在脉冲的形式来实现的。首先,主机发复位脉冲,即宽度范围为480ust960us的负脉冲,拉高1590us以延时等待,然

27、后通过输入/输出线读出存在脉冲,为低则说明存在,复位成功;否则说明不存在,复位失败,必须对DS18B20重新初始化。3.5.2字节写DS18B20程序字节写的时序是拉低输入/输出线至少15us以作为起始信号,按从低位到高位顺序取出预写字节中的1位数据,写入输入/输出线,延时等待15us后将输入/输出线拉高作为停止信号,以等待下一位的写入。字节写DS18B20的程序设计只要严格按照上述时序即可。3.5.3读DS18B20程序字读DS18B20的程序设计思想结合程序代码进行阐述,16位数据同样也是从低位到高位被逐一读出并存储的。而且,由于读出的温度值是补码形式,在使用前必须进行补码转换,默认12位

28、精度的转换时间为750ms,即要等到750ms后才能读到新温度值。对DS18B20进行温度读取操作的流程可用图3.4描述。图3.4温度读取操作流程图3.6 显示程序设计基于MAX7219的6位数码管显示程序实际上包括以下几个部分:(1) 对MAX7219初始化部分;(2) 对MAX7219的字写入操作部分;(3) 显示子程序部分(也即写MAX7219的8字节显示RAM的部分)。前两个为低层接口子程序,后一个为应用层子程序。3.6.1 MAX7219初始化对于MAX7219的初始化,实际上就是指对MAX7219的扫描限制寄存器(扫描数码管个数)、亮度寄存器、译码式寄存器及工作寄存器进行正确设置。

29、在进行程序前,必须清楚一点,那就是MAX7219采用16位数据包的形式,也就是说对MAX7219写入时是以16位数作为一个整体进行的,也即两个字节,高字节为寄存器地址或显示RAM地址,低字节为命令或数据。地址字节的高4位为无关位,通常全取为1。 3.6.2 字写MAX7219程序字写MAX7219也就是将16位数据包写入MAX7219,其程序设计只要遵循MAX7219的时序要求即可,简要描述为:在时钟的上升沿数据被锁入片内16位移位寄存器;16位数据的输出顺序必须是从高到低。对于微处理器来说,一般均自然满足MAX7219对串行时钟不能高于10MHz的要求。16位写入完成后,必须通过12脚(LO

30、AD)正跳变(即上升沿)将数据锁入,从而使新数据(命令)有效。3.6.3 显示子程序显示子程序的作用是将非压缩BCD码形式的显示代码写入对应的数码管显示RAM寄存器,常用的09和AF的显示代码对应为00H09H和0AH0FH。如果在对应位上显示小数点,只要将对应的显示代码的最高位置为1即可。例如,要显示“0.”,其显示代码应为80H。3.7 距离计算及其程序实现距离计算程序设计中设计到温度补偿问题、声速 计算问题、数制转换(十六进制数转换为BCD码)与数据标定问题,以及多字节十六进制数大小比较问题等。以下主要讨论温度补偿、数制转换于数据标定处理及距离计算等问题。距离计算及转换程序流程图如下图3

31、.5。图3.5 距离计算及转换程序流程图3.7.1 距离计算表3.1 温度与声速的二维关系表温度声速(m/s)折合后的声速对应的十六进制数303138492212CH20319865421CEH1032588172271H03329007232FH10338917023D2H2034493332475H30349946824FCH403559631259FH5036197942642H距离计算式见式(1-1),程序设计的关键在于根据温度值进行声速的温度补偿,得到声速,以及超声波的发送与接收的时间差的获取。温度补偿及声速计算已在上面进行了介绍,时间差的获取则是通过定时器1的计数,得到第1回波信号

32、停止计数。假定时间值为2字节(单位:us),高字节在JSH中,低字节在JSL中。计数值为两字节整数值,该乘法运算已在声速的温度补偿过程中事先进行,不需要在程序中进行处理了。3.7.2 数制转换与数据标定处理数制转换的原因在于:经过求补得到的16位的原码为十六进制数,无法直接进行显示,必须转换为能为MAX7219所接收的BCD显示代码。数据标定的原因在于:在温度补偿和距离计算过程中没有考虑小数的存在,而实际显示结果必须考虑小数和有效位,这样势必要对计算得到的结果进行取舍,取舍的过程就是标定的过程。就本系统而言,标定的依据是:(1)温度标定处理依据温度只能以2位方式进行显示,而DS18B20的测量

33、温度范围为55125,因此取常用的温度部分,不考虑小数部分,即5599。据前所述,16位原码中的最高5位为扩展符号位,0表示正数,1表示负数,最低4位为小数部分,其余7位为整数部分。例如,温度值018CH对应的温度是+24.75,而FF5EH对应的二进制为11110,首先从扩展符号位可知,其为负温度,求补操作后得到原码为00001,显然其整数部分为10,即10,而精度温度为10.125。(2)距离标定处理依据距离只能显示4位整数,不考虑小数部分。由于在距离计算过程中没有考虑物理单位,标定时通常采用从高到低取前4位即可。数据转换程序包括温度转换和距离转换。其中,温度具有正负属性,可直接从16位数

34、据的扩展符号位得到正负符号通过设置FUHAO位标志传递给显示子程序。十六进制数转换为十进制数显示代码的原理以两字节十六进制数53A1H(十进制数为21049)为例加以说明:两字节无符号数的最大值为65535,因此转换的过程就是余数依次除以10000、1000、100、10的过程。首次是53A1H除以10000,其商2即为对应的最高位BCD码,余数为1409,除以1000,得千位BCD码为1,余数409除以100,得百位BCD码为4,依次完成转换。3.8 主程序与AT89S52的初始化程序3.8.1 AT89S52的初始化程序设计为对基于AT89S52开发的应用程序进行汇编(或编译),必须首先对

35、AT89S52的特殊功能寄存器(SFR)进行定义,否则无法生成所需的机器代码。从这个意义上说,这也是AT89S52的初始化工作之一。就测距仪而言,由于使用了AT89S52的若干个端口,以及使用了片内复位电路、时钟电路,因此对它的初始化包含两个方面:(1) 编程时的配置;(2) 程序中对微处理器的初始化,3.8.2主程序设计按照自上而下的设计理念,主程序设计是整个软件系统设计的关键。主程序设计的过程实际上包含着软件规划的过程。从这个意义上说,构建主程序框架是一个反反复复的过程。不同的系统有不同的构建要求,也就会出现不同的构建过程和构建结果。主程序首先是对系统环境初始化,设置定时器T0工作模式为1

36、6位定时计数器模式。置位总中断允许位EA并给显示端口P0和P1清零。然后调用超声波发生子程序送出一个超声波脉冲,为了避免超声波从发射器直接传送到接收器引起的直射波触发,需要延时约0.1ms(这也就是超声波测距仪会有一个最小可测距离的原因)后,才打开外中断1接收返回的超声波信号。主程序流程图如3.6所示。图3.6 主程序流程图4 系统软件调试4.1 Keil uVision2集成开发环境系统软件的调试主要是通过用Keil uVision2软件来实现的。Keil uVision2是美国Keil Software 公司出品的51系列兼容单片机,使用接近于传统c语言的语法来开发,保留了汇编代码高效,快

37、速的特点。uVision2集成开发环境包括以下两个部分:项目管理:工程(project)是由源文件、开发工具选项以及编程说明三部分组成的。一个单一的uVision2工程能够产生一个或多个目标程序。产生目标程序的源文件构成“组”。开发工具选项可以对应目标,组或单个文件。 uVision2包含一个器件数据库(device database),可以自动设置汇编器、编译器、连接定位器及调试器选项,来满足用户充分利用特定微控制器的要求。此数据库包含:片上存储器和外围设备的信息,扩展数据指针(extra data pointer)或者加速器(math accelerator)的特性。 uVision2可以

38、为片外存储器产生必要的连接选项:确定起始地址和规模。集成功能:uVision2的强大功能有助于用户按期完工。用详细的符号信息来优化用户变数存储器。 文件寻找功能:在特定文件中执行全局文件搜索。工具菜单:允许在V2集成开发环境下启动用户功能。 可配置SVCS接口:提供对版本控制系统的入口。 PCLINT接口:对应用程序代码进行深层语法分析。Infineon的EasyCase接口:集成块集代码产生。Infineon的DAVE功能:协助用户的CPU和外部程序。DAVE工程可被直接输入uVision2。4.2 代码调试 在Keil 软件中编写并运行调试程序,在编译时给出的语法错误的信息,根据提示的信息

39、具体找出程序中错误之处并改之,从上至下逐一改正。应当注意的是:有的提示出错行并不是真正出错的行,如果在提示出错的行上找不到错误的话,则应该到上行再找。图4.1为在Keil中的编写和调试界面。图4.1 程序在KEIL_uVision2软件中的调试界面结论通过这几个月的努力,基于单片机的超声波测距仪设计的软件部分终于完成了。这次毕业设计,这不仅是对我的一种锻炼,也是对我大学四年所学知识的综合考核。从开始设计到设计的完成,我感觉收获甚多,不仅是理论上的升华,还有实践中的锻炼,这次的毕业设计激发了我对电子技术的浓厚兴趣,这对我以后进一步学习电子方面的知识都有很大帮助。由于个人水平有限,所以在设计思路和

40、实现功能上难免有不足之处,望各位老师多多指正。致谢毕业设计是对我们大学四年学习的一次综合考核,在整个毕业设计过程中,非常感谢我的指导老师张月红老师的远程精心指导,他们不仅在百忙之中通过邮件等通讯工具耐心的辅导我对设计提出的疑问,而且特别注意引导我独立思考,启发我自主解决问题。从老师一丝不苟的钻研态度中,我看到了治学严谨的科研精神,同时激励了我在学业上不断进取的精神。在老师的谆谆指导下,使我的专业水平得到很大的提高。在实际操作调试过程中,我也遇到困难,在老师的指导和硬件部分合作者陈辰同学的帮助下一一得到解决。在此,我向所有帮助我的老师和同学表示忠心的感谢,正是得意于他们的帮助,才使我的毕业设计顺

41、利完成。最后感谢学校和老师们大学四年对我的培养。感谢父母对我的养育之恩,同时向答辩委员会审阅我论文的各位专家领导表示衷心感谢。参考文献 1 李锡雄,陈婉儿 .微型计算机控制技术.第1版.北京:科学出版社,1999.8 2 潘新民,王燕芳.微型计算机控制技术.第1版.北京:电子工业出版社,2003. 3 胡汉才.单片机原理及接口技术.北京:北京航空航天大学出版社,1993.11 4 孙育才.MCS-51系列单片微型计算机及其应用.第3版.东南大学出版社,1997.3 5 黄胜军等.微机控制应用实验与实例.北京:清华大学出版社,1999.11 6 章兼源.微机控制技术 .北京:电子工业出版社,20

42、037 王福瑞.单片微机测控系统设计大全.北京:北京航空航天出版社,1998.4 8 丁镇生.传感器及传感技术应用.电子工业出版社,1998 9 张谦琳.超声波检测原理和方法.北京:中国科技大学出版社,1993 10 时德刚,刘哗.超声波测距的研究.计算机测量与控制,2002.10 11 苏伟,巩壁建.超声波测距误差分析.传感器技术,2004.5 12 康华光.电子技术基础(数字部分)北京:高等教育出版社,2000附录A:系统硬件总图附录B:程序清单*; DS18B20初始化(复位)子程序;如果存在,则EXIST1,否则0*DS18B20_RST:CLR WDIOMOV R7, #32LCAL

43、L DELAY15USSETB WDIOMOV R7, #4LCALL DELAY15USCLR EXISTJB WDOP, DS18B20_RST_0SETB EXISTMOV R7, #28LCALL DELAY15USDS18B20_RST_0:RST*;DS18B20写字节子程序;待写字节数据在A中*DS18B20_WRITE:CLR CMOV R1, #8DS18B20_WR_1:CLR WDIOMOV R7, #1LCALL DELAY15USRRC AMOV WDIO, CLCALL DELAY15USMOV R7, #1LCALL DELAY15USSETB WDIONOPDJ

44、NZ R1,DS18B20_WR_1SETB WDIO RET*;DS18B20连续2字节子程序;读出值储存在全局变量:TEMP,TEMP+1*DS18B20_READ:CLR C MOV R1, #2MOV R0, #TEMPDS18B20_RD_1:MOV R2, #8DS18B20_RD_2:SETB WDIO NOPNOPCLR WDIONOPNOPSETB WDIOMOV R7, #1LCALL DELAY15USMOV C, WDIORRC ADJNZ R2, DS18B20_RD_2MOV R0, AINC R0DJNZ R1, DE18B20_RD_1RET*;启动DS18B2

45、0转换子程序;默认12位精度的转换时间为750ms,即要等到750ms后才能读到新温度值*DS18B20_START:LCALL DS18B20_RSTJNB EXIST, DS18B20_ST_0MOV A, #0CCHLCALL DS18B20_WRITEMOV A, #44HLCALL DS18B20_WRITEDS18B20_ST_0:RET*;读取DS18B20温度子程序*DS18B20_GET:LCALL DS18B20_RSTMOV A, #0CCHLCALL DS18B20_WRITELCALL DS18B20_READRET*;部分AT89S52特殊功能寄存器定义*sfr P

46、0=0x80;sfr P1=0x90;sfr P2=0xA0;sfr P3=0xB0;sfr TMOD=0x89;sfr TL0=0x8A;sfr TL1=0x8B;sfr TH0=0x8C;sfr TH1=0x8D;sfr IE=0xA8;sfr IP=0xB8;sfr SCON=0x98;sfr SBUF=0x99;*;MAX7219初始化程序*INIT_7219:MOV R3, #0CHMOV R4, #0LCALL WRITE7219LCALL DELAY1MSLCALL DELAY1MSLCALL DELAY1MSMOV R3, #0BHMOV R4, #07LCALL WRITE7

47、219MOV R3, #0AHMOV R4, #0DHLCALL WRITE7219MOV R3, #09HMOV R4, #0FFHLCALL WRI TE7219MOV R3, #0CHMOV R4, #01HRET*;MAX7219有关引脚定义*CLK7219 EQU P2.0DIN7219 EQU P2.2LOAD7219 EQU P2.1*;MAX7219写入程序;入口参数:R3寄存器地址,R4为命令数据*WRITE7219:MOV R2, #8MOV A, R3SETB LOAD7219W7219_1: RLC AMOV DIN7219, CNOPNOPNOPCLR CLK7219NOPNOPNOPSETB CLK7219DJNZ R2, W7219_1MOV A, R4MOV R2, #8W7219_2: RLC AMOV DIN7219, CNOPNOPNOPC

温馨提示

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

评论

0/150

提交评论