1、 陕西理工学院毕业设计毕业设计(论文)题 目基于单片机的超声波测距系统的设计学生姓名学 号所在院系物理与电信工程学院专业班级电子信息科学与技术(电信1201)指导教师完成地点陕西理工学院博远楼2016年 5 月 26 日基于单片机的超声波测距系统的设计(陕西理工学院物电学院电子信息科学与技术专业2012级1班,陕西 汉中 723000)指导教师: 摘要此设计对基于单片机控制的超声波测距仪原理进行了介绍:用STC89C51控制定时器发出超声波脉冲并开始计时,得到超声波从发射到接收的所需要的时间,来得到测量的距离。在液晶屏上显示出测量距离。单片机对各探头进行综合分析,从而实现超声波测距功能。以此为
2、基础,设计了此系统的总体方案,最后以硬件和软件相结合的形式实现了各个功能模块。此系统的优点有:测距准确度高、可读性强、易控制、工作可靠和流程清晰等。 关键词STC89C51,超声波,测距Design of ultrasonic distance measurement system based on single chip microcomputer(Grade12,Class01,Major Electronic Information Science and Technology,School of Physics and Telecommunication Engineering,Sha
3、anxi University of Technology, Hanzhong,723000 Shaanxi)Tutor: J Abstract : The design of based on single-chip microcomputer control ultrasonic distance measurement principle were introduced: use STC89C51 to control the timer sends out ultrasonic pulse and the beginning of time, ultrasound from the t
4、ransmitter to receive the needed time to measure the distance. Display the measuring distance on the LCD screen.Single chip microcomputer to carry out the comprehensive analysis of the probe, so as to realize the function of ultrasonic distance measurement. Based on this, the overall scheme of the s
5、ystem is designed, and the function modules are realized by the combination of hardware and software. Part of the program flow chart and hardware circuit diagram, also gives the principle of the circuit, the system structure and the design of the program. This system has the advantages of high accur
6、acy, high accuracy, easy to control, reliable work and clear flow, etc. Key words :STC89C51, Ultrasonic wave, Measure distance目 录1绪论11.1课题研究的背景11.2课题研究的意义12超声波测距原理12.1超声波简介12.2超声波测距原理13方案论证23.1设计思路23.2系统结构设计34主要元件介绍34.1单片机STC89C5134.2超声波传感器54.3 1602显示器55 硬件电路设计65.1 STC89C51最小系统65.2超声波模块75.3显示电路76软件设
7、计86.1主程序流程8 6.2误差及特性分析9结语9致谢10参考文献10附录A16附录B171绪论1.1课题研究的背景人们生活水平越来越高,城市发展越来越好。然而,由于城市建构的历史原因,给排水系统一般都会落后于城市的建设。所以,就需要开挖已成建筑来改善给排水系统。如今城市污水困扰着人们的生活,大城市非常依赖箱涵的排污疏通系统对污水的处理。只有污水排放得到解决,人们才能生活的更加舒服。研制箱涵排水疏通机器人的核心部分是其中的自动控制系统。而控制系统的核心部分又是超声波测距,所以这一研究十分有意义1。随着科学技术的不断进步,超声波技术也将在传感器应用中产生越来越重要的作用。从现在的技术水平来说,
8、传感技术还十分有限,可以说超声波技术是一个正在迅速发展的朝阳产业。超声波传感器依靠它精度高、应用范围广的优点被用户认可。超声波测距在很多方面有着重要作用。如在声纳技术上,研制的测距声纳拥有更高的定位精度,能够实现水中武器的全隐蔽攻击;潜艇拖拽线列阵声纳采用低频线谱检测功能,能够实现超远程识别和探测;另外,为了解决浅海工作问题,研制出了潜艇声纳,进一步解决了浅海水中目标的识别问题。超声波传感器与自动化智能化相结合将推进超声波传感器更深层次的发展2。1.2课题研究的意义现实生活中,我们不得不承认一些传统的距离测量方法存在某些缺陷,影响问题的解决。就拿液面测量来说,以前我们通常使用差为分布电极的方法
9、,利用脉冲测量液面。缺陷是长期浸泡在水中的电极非常容易被腐蚀和电解。而超声波在这一问题上能够发挥很好的作用,因为它不需要直接与被测物体接触。本文设计了一款基于STC89C51单片机的超声波测距仪。它的优点是成本低、精度高、微型化。这一款单片机的出现不仅能够解决传统测量中易腐蚀、不准确的测量缺陷,还能够避开当前市面上超声波测距系统价格贵、体积大且精度低的种种问题,能够促使超声波技术的应用。2超声波测距原理2.1超声波简介物理学告诉我们,物体的振动会产生声音,人们称物体单位时间的振动次数为声音的频率,而我们人类所能听到声音的范围是在20-20000赫兹。也就是说,正常人听不到振动频率大于20000
10、赫兹或小于20赫兹的声音。超声波的概念就来源于此,即频率高于20000赫兹的声波。超声波可以用来测距、测速、焊接、碎石等,尤其是超声波方向性好,穿透性高,易于获得较集中的声能,这一特点使其在医学、军事、工业等方面具有很明显的作用3。在一定的条件下(振幅相同),一个物体振动频率与能量有正相关的关系,因而可以解释超声波通过在介质中传播从而能带来巨大能量。超声波加湿器就是运用了同样的原理,在我国北方干燥的冬季,往水罐中通入超声波会促使罐中的水破碎成小雾滴,再将小雾滴鼓吹出机器,就可以保证室内湿度。同样的原理还可以运用到很多方面,对于咽喉炎、气管炎患者,利用加湿器可以将药液雾化,然后喷至病灶;对于人体
11、内的结石,利用超声波也可以通过振动而达到打破结石的目的。2.2超声波测距原理超声波根据反射原理来测量距离,其中一端放有超声波传感器,另一端必须有能反射超声波的物体才能进行测量。在测量距离过程中,将超声波传感器与反射物对准后发射超声波,此时开始计时,在空气中超声波传播出去后到达障碍物并反射回来,反射脉冲被传感器接收到后计时立即停止,之后根据超声波在空气中的传播速度和我们测量出的时间计算出两端的距离。测量出的距离D为: (2.1)式中c为超声波在空气中传播速度; 为超声波从发射到接收所需时间的一半,即需要测量的单程时间。根据上式可知,距离测量的精度主要是由传播速度和计时精度两方面决定的。单片机定时
12、器决定计时精度,机器周期与计数次数的乘积决定定时时间,我们用12MHz的晶振使机器周期精确到1s。超声波的传播速度c受温度、空气密度和气体分子成分影响,它的关系式为 (2.2) 式中为气体定压热容与定容热容的比值,空气为1.40。R为气体普适常数,为8.314kg/mol。T为气体势力学温度,与摄氏温度的关系是T=273K+t。M为气体相对分子质量,空气为28.810-3kg/mol。C0为0时的声波速度,为331.4m/s。因为超声波在空气中传播时,受温度的影响是最大的,所以一般如果对测量的精度要求不高时,我们可认为在空气中超声波的传播速度是340m/s4。表2.2.1 超声波传播速度与温度
13、关系表项目数值温度-30-20-100102030405060100声速/( ms)3133193253323383443503563613673883方案论证3.1设计思路 我们知道测量距离的方法是有很多的,一般短距离测量可以用量尺,远距离测量可以用激光测距等,而超声波测距则适用于中长距离测量,它的精度要更高。因为在标准空气中超声波的传播速度是331.45米/秒,在单片机负责计时,我们使用12.0M晶振,因而理论上此系统的测量精度是可以达到毫米级的。 当今普遍的测距原理是通过发射一定频率的超声波对被摄目标进行探测,所用的时间为从发射出一定频率的超声波到反射回接受到一定频率的超声的总时间,然后
14、换算出测量的距离,比如说超声波探头和超声波液位、物位传感器,以及超声波测厚和超声波汽车测距告警装置等需要非接触测量的场合。超声波指向性强,在介质中传播距离远,能量消耗缓慢的特点决定了超声波可以用于测量距离。超声波测距的优点有:计算处理简单、设计方便,并且也能达到测量精度方面的要求。因为超声波具有方向性好、易于定向发射、与被测量物体不需要直接接触、强度易控制的优点,所以它是测量液体高度的理想手段。在精密的液体高度测量时需要测量精度达到毫米级,然而当今国内的超声波测距专用集成电路的测量精度都仅为厘米级。我们通过分析其误差原因,从而将测量时间的误差提高到微秒级,如果用温度传感器对声波传播速度进行补偿
15、,设计出的高精度超声波测距仪的测量精度就能达到毫米级5。如今超声波测距在社会上已经广泛应用,一般国内使用的专用集成电路是根据超声波测距原理来设计各种形式的测距仪器,然而专用集成电路的功能单一、成本较高。我们可以用单片机做出超声波测距系统,它完全能够替代专用集成电路设计出的超声波测距仪。而且它的精度更高、价格更低、可靠性更强。用以8051为内核的单片机系列,它的优点是硬件结构功能强和功能部件齐全等。特别是,除8位CPU以外,还有一个很强大的位处理器,它其实就是一个位微计算机,包含了完整的位CPU,位ROM(EPROM)、RAM,位寻址寄存器、指令集和I/O口。因此可以说8051单片机具有双CPU
16、。位处理在逻辑电路仿真、开关决策、过程测控等多方面都十分有效。我们根据设计要求和多方面的因素,决定将主控制器确定为STC89C51单片机,ASTC89C51单片机可以用来控制发射模块触发脉冲的开始时间和脉宽,响应接受超声波返回时刻并进行测量和计数发射到返回的时间间隔。当探头接到回波时,如果接收到的信号频率与振荡器的固有频率相等(此频率由RC值决定),那么它的输出引脚的电平就会从“1”变成“0”(这时锁相环已进入了锁定的状态),单片机对接收探头的接收情况进行实时监控的依据就是这种电平的变化。之后可根据测得数据对其进行优化处理。STC89C51还能控制显示电路,即1602液晶屏,在液晶屏上显示测量
17、距离6。3.2系统结构设计超声波测距仪系统结构如图3.1所示,它主要由单片机最小系统、超声波模块、LCD显示电路及电源电路组成。系统的主要功能如下:1)超声波发射和接收,以及依据计时时间测量出距离。2)液晶屏显示器显示距离。3)如果系统在非正常下运行时,用上电复位电路与电平式开关对其进行复位。AT89C51LCD显示模块电源电路模块复位电路模块超声波模块晶振电路模块图3.1 超声波测距仪系统结构框图4主要元件介绍4.1单片机STC89C51单片机是构成一台计算机的主要功能器件,如CPU(进行运算)ROM、RAM、输入/输出设备(例如:I2C串口通讯等)、中断系统等功能7。STC89C51采用的
18、是DIP封装。STC89C51是一个高性能,低电压CMOS的8位单片机,它内含4k字节的可重复擦写的Flash只读程序存储器和128字节的随机存取数据的存储器并且内置通用8位中央处理器和Flash存储单元,我们的解决方案在内置功能强大的微型计算机的STC89C51得到充分发挥。STC89C51单片机有40个引脚,32个外部双向输入/输出(I/O)端口,5个中断源和2个全双工串行通信口以及2个16位可编程定时计数器,它将Flash存储器和通用的微处理器结合于一身,可以重复擦写程序,它有效地降低了开发的成本。其引脚图如右图4.1。 图4.1 STC89C51的引脚图1) 主电源引脚第20脚 GND
19、电路接地电平。第40脚 VCC正常运行和编程校验+5V电源。2) 时钟源第19脚XTAL1它是外接晶振的其中一个引脚,可以把它作为反相放大器的输入端口。当采用外部信号的时候将这个引脚接地。 第18脚 XTAL2接外部晶振的另一个引脚,是片内反相放大器的输出端口。当采用外部振荡信号源泉的时候,这个引脚与信号源相连接。3) 控制、选通或复用第9脚 RST/VPDRESET复位信号输入端口,当单片机工作正常的时候,这个引脚输入的脉宽就是2个和2个以上机器周期的高电平复位信号到单片机。在VCC掉电的时候,这个引脚就可接通备用电源来保持片内RAM信息不受擦除。第30脚ALE它用来地址锁存信号的输出,该单
20、片机访问外部存储器的时候,ALE信号就会负跳变,并且把P0口上的低8位地址送入锁存器。 第29脚PSEN在当访问程序时为低电平有效。第31脚 EA如果要访问外部程序,EA端就要为低电平。4) 多功能I/O端口第32-39脚P0口双向I/O端口,这组口线分时转换地址和数据总线复用是访问数据存储器或程序存储器时的,在访问时就会激活内部得上拉电阻。 第1-8脚P1口双向I/O端口,在对片内程序进行程序进行编译和校验时,就可用做低8位访问地址总线。 第21-28脚P2口双向I/O端口,当单片机访问存储器时,就可用来做高8位访问地址总线。第10-17脚P3口双向I/O端口,它还具有特殊的功能。这些管脚的
21、每一位均可独立定义为第一功能的I/O口或第二变异功能。第二特殊功能的具体含义如表4.2。表4.2 P3口的第二变异功能端口引脚第二功能P3.0RXD (串行输入口)P3.1TXD (串行输出口)P3.2 (外中断0)P3.3 (外中断1)P3.4T0 (定时/计数器0)P3.5T1 (定时/计数器1)P3.6 (外部数据存储器写选通)P3.7 (外部数据存储器读选通)4.2超声波传感器 频率超过20000赫兹的机械波被称为超声波,其在恒定环境下的传播速度不会改变。超声波传感器包括压电晶体(电致压缩)和镍铁铝合金(磁致伸缩)两类材料,其中一种被称为可逆传感器的超声波传感器是由压电晶体组成,能够分
22、为接收器与发送器两种,因为它既可以将电能转变成动能从而产生超声波,同时也可以将所接收到的超声波转化成为电能。两个压电晶片与一个共振板组成超声波传感器,当压电晶片的两极加上频率形成脉冲信号,由于压电晶片的共振带动共振板的振动而将机械能转变成电能,它被称为超声波接收器,而超声波发射器结构略微有些不一样,但是外观一致,超声波换能器功能上就是利用压电效应将电能与超声波机械能之间进行相互变换。有的超声波传感器既作发送,也能作接收8。超声波有两种形式。一是横向振荡(称之为横波),一是纵向振荡(称之为纵波)。纵向振荡一般用于工业中。超声波在不同介质中的传播速度是不同的,它可以在气、液及固三态中传播。并且还会
23、出现反射和折射现象,在超声波传播的过程中会有衰减现象的发生。超声波在空气中传播的时候频率比较低,大约有几十千赫兹,而在固、液体中传播时,它的频率比较高。而且超声波在空气中传播时衰减速度比较快,在液、固体中传播时,超声波的衰减速度比较小,传播距离比较远。我们利用超声波的这种特性,可以制成各种超声波测量装置,并广泛应用于通迅、医疗家电等各方面。超声波模块是由发送传感器、接收传感器、控制部分与电源部分等构成。超声波传感器主要由如下四个部分构成:发送器:通过振子振动生成超声波和发射。接收器:接收器的振子通过与发送的超声波频率匹配后,将声音信号转换成电信号。控制部分:通过用集成电路来检测是否发送或接收到
24、超声波和超声波的大小。电源部分:采用的是+5V的直流电源9。4.3 1602显示器1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样。1062液晶显示屏引脚表4.3.1和寄存器选择控制表4.3.2如下。表4.3.1 1602液晶显示屏引脚表引脚符号功能说明1VSS一般接地2VDD接电源(+5V)3V0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。4RSRS为寄存器选择,高电平1时选择数据寄
25、存器、低电平0时选择指令寄存器。5R/WR/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。6EE(或EN)端为使能(enable)端,写操作时,下降沿使能。读操作时,E高电平有效7DB0低4位三态、 双向数据总线 0位(最低位)8DB1低4位三态、 双向数据总线 1位9DB2低4位三态、 双向数据总线 2位10DB3低4位三态、 双向数据总线 3位11DB4高4位三态、 双向数据总线 4位12DB5高4位三态、 双向数据总线 5位13DB6高4位三态、 双向数据总线 6位14DB7高4位三态、 双向数据总线 7位(最高位)(也是busy flag)15BLA背光电源正极1
26、6BLK背光 电源负极表4.3.2 寄存器选择控制表RSR/W操作说明00写入指令寄存器(清除屏等)01读busy flag(DB7),以及读取位址计数器(DB0DB6)值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据5 硬件电路设计5.1 STC89C51最小系统在该设计的超声波系统中,控制核心是STC89C51单片机,该最小系统由复位电路、晶振电路、STC89C51等构成,它用来控制周围的各个外围器件,例如STC89C51最小系统控制超声波模块和显示模块能进行正常的工作。STC89C51最小系统的正确是整个设计的保障。STC89C51最小系统原理路如下图5.1所示。图5.1 单
27、片机最小系统5.2超声波模块超声波模块是该设计中的唯一一款传感器,该模块利用超声波的来检测距离,目前它的有效测量距离可以达到10米,精确度也可以达到1cm。该模块有四个管脚,分别为VCC,GND,ECHO,TRIG。它是集成好的模块,这四个管脚可以直接与单片机相连来进行测量距离,是一款非常方便、精确的测距模块。超声波模块图如图5.2所示10。图5.2 超声波模块图5.3显示电路系统的显示电路利用1602液晶显示屏来完成,可以直接与单片机的P0口连接。利用MCU来控制1602液晶显示屏。具体与单片机连接图如5.4所示11。图5.4 1602液晶屏与单片机连接图6软件设计6.1主程序流程在实现较复
28、杂的算法时,我们一般采用C语言程序,因为它的汇编语言程序具有更高的效率,而且在计算程序的运行时间时精度更高。但是超声波测距仪的程序不仅有复杂的计算也有较为简单的计算。因此我们可采用C语言和汇编语言来对控制程序进行混合编程12。此设计采用的模块化设计方法有主程序、超声波发生子程序、超声波接收中断子程序、显示子程序、距离计算子程序等模块组成。将主程序对所有单片机系统进行初始化之后,第一步将超声波的回波接收标志位置位,然后使单片机P1.0这个端口输送一个低电平从而启动超声波的发射电路,于此同时将定时器T0启动,然后开始调用距离计算的子程序。我们根据T0定时器上的记录来记住时间差,之后再调用显示子程序
29、,把测出的距离送到液晶屏上显示,最后回波信号被主程序接收。通过看标志位是否清零来看是否接收到回波信号。如果清零,就说明回波信号被接收,这时主程序就会返回到初始端,并重新对回波信号进行标志位置位。最后在单片机的P0.1这个端口上发送低电平到超声波的发射电路上。就这样进行循环工作,最终实现距离的测量。对距离的测量是整个系统设计的关键,通过单片机来处理测量数据是相对容易的,还能精确测距。在测距过程中,超声波的余波信号对测距的精确度干扰影响是比较大的。超声波会接收到两种波信号:第一种波信号是余波信号,当发射探头发射出超声波信号之后,超声波接收探头立刻就接收到的超声波信号,即超声波的发射信号;另一种波信
30、号是有效的信号,也就是超声波经过障碍物表面反射回来的回波信号,它也是我们所需要测量的距离数值。超声波测距所需要测量的时间,也就是从超声波发射电路发射出超声波信号开始到接收到信号的时间间隔,然后通过这个时间间隔计算出所需要测量的距离,反射物体反射的回波信号是我们需要测量的信号,所以应该尽量减少检测时候检测到余波信号。所谓余波也就是在发射超声波时,超声波信号直接到达接受探头的波信号13。当超声波接收电路接收到超声波的回波后。通过电路对这个回拨进行检波整形比较,然后向单片机发出一个有效信号,单片机是通过外部中断来改变记录回波信号的到达时间,一旦中断发生,此时表示已经接收到了回波信号,计时器在这个时候
31、停止计时,单片机读取计数器中的数值,此数值就是我们需要测量的超声波往返的距离14。程序中对测距距离的计算方法是按S=17N/1000=0.017N(cm)进行计算的,其中N为计数器的值,声速的值取为340 m/s。于是我们综合分析可以得到下面的程序主流程图,系统主程序的流程图如图6.1。单片机初始化超声波复位发送超声波并启动开中断接受回波的同时中断停止计算测验距离显示距离延时开始图6.1 系统程序图6.2误差及特性分析由于超声波特性的决定,在距离测量时需要满足一定条件:一是被测目标与超声波测距仪应保持垂直状态。二是被测目标的表面应该是平坦的。三是在测量时超声波测距仪周围不能有可反射超声波的其他
32、物体。所以在测量过程中一不小心就可能接收不到超声波,而导致得不到测量结果15。因为我们用单片机STC89C51的定时器T1来记录超声波的往返时间,定时器T1在方式1下工作,它的最大定时时间是65.535ms,在常温下可得出的最大测量距离不超过10m。并且由于发射功率是有限的,测距仪也不能测量10m以外的物体。结语通过51系列单片机所制作出的测距仪能够在工作中易于操作,直观地读取数据。实际测试可以表明,这种测距仪不仅能够在工作中满足稳定的要求,对一般近距离进行测距,而且它的性价比较高。但是仍然存在某些缺陷,因为在该系统中锁相环锁定时间较长,因此所测得的距离有一定的误差,倘若使用在汽车雷达中可以忽
33、略,但面对精度要求较高的领域则不能忽略误差的存在,需要更改一些硬件缩短锁定时间,从而减小误差。本次设计可以实现十米以内距离的测量,由于超声波的一些特点,则需要在测量过程中保持传感器轴线垂直于被测物的表面;传感器、被测物与测量轴线之间无阻碍;被测物材料要尽量避避毛料的物体。致谢在此,衷心地感谢我的指导教师蒋媛老师!在我做毕业设计阶段,她虽然对我们毕设要求严格,但却总会和蔼可亲的悉心指导我们。每一位同学的论文,老师都会帮我们修改很多遍。在修改论文的过程中,她总会逐字逐段的悉心指导。毕设中存在的任何一个问题,错别字、标点符号不对、格式不对、字体不对、论文中累赘的东西,论文中缺少的东西,老师在每次给我
34、们修改过的论文稿中,都能清晰的看出来。从而也知道老师为了我们的每一篇论文都花费了大量的精力。因为老师敏捷的思维、丰富的经验,在她的悉心指导下使我能顺利地进行毕业设计,让我独立地解决了很多问题,创造性思维也有了很大的提升,使我能完成本论文的工作。蒋老师的真诚、热心使我印象很深,因为有着这样的好老师,我才学到了很多知识,再次对蒋老师表示深深的谢意!老师,您辛苦了!自上大学以来,在这四年里,每位老师总是辛勤工作,耐心的教导着我,使我在大学中综合素质提高、专业理论知识学习和实践工作能力等各方面受益匪浅。在毕业设计和论文写作中,我得到了同学们的关怀,指导和帮助,没有他们的帮助,我的论文和设计是不可能顺利
35、成功完成的,这里,我向我的同学和各位老师表示诚挚的感谢!参考文献1 宋永东,周美丽,白宗文. 高精度超声波测距系统设计J. 现代电子技术. 2008(15) 114-125.2 黄大志,申屠留芳,郭燕. 导盲机器人中超声波测距系统的研究J. 淮海工学院学报(自然科学版).2009(01)12-48.3 袁佑新,吴妍,刘苏敏,卢曰万. 可视汽车倒车雷达预警系统设计J. 微计算机信息. 2007(05) 89-102.4 高川,谈振藩. 基于STC89C2051的超声波测距系统J. 应用科技. 2006(11) 144-160.5 吴斌方,刘民,熊海斌. 超声波测距传感器的研制J. 湖北工学院学报
36、. 2004(06)49-57.6 黄璞,黎会鹏. 基于捕捉技术的超声波测距系统设计J. 仪表技术. 2013(02) 70-84.7 宋小鸿. 超声波测距高精度系统设计J. 电子制作. 2013(05) 140-155.8 戴华平,胡红亮,王旭,王玉涛,钱嘉伟. 基于耦合同步混沌系统的超声波测距方法J. 计算机工程. 2013(05)20-33.9 邱生卓,谭兴,黄宁. 超声波测距语音提示系统的研究J. 工业控制计算机. 2013(08) 60-88.10 I.M. Mahbubul,R. Saidur,M.A. Amalina,M.E. Niza. Influence of ultraso
37、nication duration on rheological properties nanofluid: An experimental study with aluminawater nanofluidJ. International Communications in Heat and Mass Transfer,2016,76:42-48.11 郭尚佳,唐艳芳,李钟慎. 一种高精度超声波测距系统的设计J. 华侨大学学报(自然科学版). 2013(05) 15-48.12 张凯瑞,吴军,郑小军. 超声波测距技术的研究J. 科技信息. 2013(10) 122-129.13 徐国华,孔蕙
38、,李贻斌,樊炳辉,初永莉. 超声波测距系统的设计与实现J. 电子技术应用. 1995(12) 30-41.14 罗兆纬,叶玲玲,黄振星,叶志敏,刘欣,郑志常. 超声波测距系统设计J. 电子制作. 2014(02) 1-18.15 Xiaolei Zhang,Song Yan,Rajeshwar Dayal Tyagi,Patrick Drogui,Rao Y. Surampalli. Ultrasonication aided biodiesel production from one-step and two-step transesterification of sludge derive
39、d lipidJ. Energy,2016(01) 8-14.附录A 系统原理图附录B#include /器件配置文件#include #include #include sbit RX=P23;sbit TX=P24;sbit LCM_RW=P26; /定义LCD引脚sbit LCM_RS=P27;sbit LCM_E=P25;/#define PI 3.1415926#define LCM_Data P1#define Busy 0x80 /用于检测LCM状态字中的Busy标识void LCMInit(void);/LCD初始化函数void DisplayOneChar(unsigned
40、char X, unsigned char Y, unsigned char DData);/LCD显示一个字符函数void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);/LCD显示一个字符串函数void Delay5Ms(void);/延时5毫秒函数void Delay400Ms(void);/延时400毫秒函数void Decode(unsigned char ScanCode);void WriteDataLCM(unsigned char WDLCM);/LCD1602写数据函
41、数void WriteCommandLCM(unsigned char WCLCM,BuysC);/LCD写命令函数/unsigned char ReadDataLCM(void);unsigned char ReadStatusLCM(void);unsigned char code ASCII13 = 0123456789.M;/static unsigned char DisNum = 0; /显示用指针 unsigned int time=0;unsigned long S=0,x,y,zz;/zz计算显示坐标扩大十倍的角度double z=30;/求正余弦计算时的角度由于double
42、型不能求余,故设置两个角度,实际两角度一样bit flag =0;unsigned char disbuff15= 0,0,0,0,0,0;/写数据void WriteDataLCM(unsigned char WDLCM) ReadStatusLCM(); /检测忙LCM_Data = WDLCM;LCM_RS = 1;LCM_RW = 0;LCM_E = 0; /若晶振速度太高可以在这后加小的延时LCM_E = 0; /延时LCM_E = 1;/写指令void WriteCommandLCM(unsigned char WCLCM,BuysC) /BuysC为0时忽略忙检测if (Buys
43、C) ReadStatusLCM(); /根据需要检测忙LCM_Data = WCLCM;LCM_RS = 0;LCM_RW = 0;LCM_E = 0;LCM_E = 0;LCM_E = 1;/读数据/*unsigned char ReadDataLCM(void)LCM_RS = 1; LCM_RW = 1;LCM_E = 0;LCM_E = 0;LCM_E = 1;return(LCM_Data);*/读状态unsigned char ReadStatusLCM(void)LCM_Data = 0xFF; LCM_RS = 0;LCM_RW = 1;LCM_E = 0;LCM_E = 0
44、;LCM_E = 1;while (LCM_Data & Busy); /检测忙信号return(LCM_Data);void LCMInit(void) /LCM初始化LCM_Data = 0;WriteCommandLCM(0x38,0); /三次显示模式设置,不检测忙信号Delay5Ms(); WriteCommandLCM(0x38,0);Delay5Ms(); WriteCommandLCM(0x38,0);Delay5Ms(); WriteCommandLCM(0x38,1); /显示模式设置,开始要求每次检测忙信号WriteCommandLCM(0x08,1); /关闭显示WriteCommandLCM(0x01,1); /显示清屏WriteCommandLCM(0x06,1); / 显示光标移动设置WriteCommandLCM(0x0c,1); / 显示开及光标