1、 自动蓄水系统设计 精品文档 毕 业 论 文 (正文部分) 题 目 自动蓄水系统设计 姓 名 肖平安 学 号 20126024 系 部 理工系 专业年级
2、 电子信息工程2012级 指导教师 彭沛夫 2016年 5 月 28日 中南林业科技大学涉外学院本科毕业论文诚信声明 本人郑重声明:所呈交的本科毕业论文,是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议,除论文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品成果。对本论文的研究做出重要贡献的个人和集体均已在文中以明确方式
3、标明。本人完全意识到本声明的法律结果由本人承担。 本科毕业论文作者签名: 年 月 日 摘 要 蓄水装置在日常生活和工业应用中发挥这重要作用。该设计是针对水位检测和控制的实际问题开发的一种基于单片机的超声波水位控制器,深入讨论了用超声波作为信号源进行液位检测的可行性以及优越性,同时实现了水位的自动控制这一功能。基于传统的测量距离必须要碰触到物体这个不便之处。比如,距离液面高度测量,以
4、前都是使用采用差位分布电极,通电来检测液面,但是检测器长期放在液体介质里面,容易受到破坏,无法保持良好性能,要进行非接触性的测距,因此想到运用超声波。结合单片机STC89C52,使得超声波测距系统更加智能自动化。系统的显示模块则是采用LCD1602液晶显示屏,显示水位信息以及设定的水位数值。该系统使用超声波水位传感器对水位进行检测然后将检测到的信号传给单片机STC89C52进行处理,从而实现对水位的监测、超限报警等功能。最后,使用LCD1602液晶显示屏显示当前水位高度,并且可以通过使用手动按键来调整目标水位的深度。本系统适用在不同的用水场合下的需要,能节省工作时间,提高系统整体的工作效率,实
5、现对蓄水池水位的自动控制。 关键词 单片机STC89C52;超声波;模块;水位;检测 Abstract: Water storage device in our daily life and play the important role in industrial application. This design is aimed at water level detection and control of the practical problems of the development of a ultrasonic wa
6、ter level controller based on single chip microcomputer, discussed how to use ultrasound as a source for the feasibility and the advantages of the liquid level detection, realized the automatic control of water level at the same time this feature. Based on the traditional measuring distance must tou
7、ch the object of this inconvenience. Distance liquid level height measurement, for instance, is using the difference before electrodes, electricity to detect liquid level, but the detector in a liquid medium for a long time, easy to damage, unable to keep good performance, must carry on the non-cont
8、act ranging, so think of using ultrasound. Combining microcontroller STC89C52, make ultrasonic ranging system more intelligent automation. System is adopt LCD1602 LCD screen display module, display water level information and set the water level value. The system USES ultrasonic water level sensor t
9、o test the water and then detect the signals to single chip microcomputer STC89C52 processing, so as to realize the function such as water monitoring, overrun alarm. Finally, using the LCD1602 LCD display shows the current water level, and can be through the use of manual buttons to adjust the depth
10、 of the target level. This system is the need of water in different occasions, can save the working time, improve the working efficiency of the system as a whole, realize the automatic control of the reservoir water level. Keywords: MCU STC89C52;Ultrasonic;module;water level, testing
11、 目录 1 引言..............................................................5 1.1 选题背景及意义.................................................5 1.2 国内外研究状况及发展趋势.......................................5 1.3设计思路与结构.................................................6 2 系统硬件设计...............................
12、7 2.1 主控部分.......................................................8 2.1.1 单片机STC89C52系统.........................................8 2.1.2LCD1602液晶显示模块.........................................8 2.1.3蜂鸣器报警模块..............................................8 2.2 超声波测距部分.........
13、9 2.2.1 超声波发射电路.............................................10 2.2.2 超声波接收电路.............................................11 2.2.2 超声波控制蓄水.............................................11 3 系统软件设计.....................................................12 3.1软件设
14、计总流程................................................12 3.2 单片机驱动HC-SR04模块程序设计................................13 3.3单片机STC89C52计算测试模块与障碍物距离算法设计................14 3.4 单片机STC89C52定时器计时程序设计.............................15 3.5 LCD1602液晶驱动程序设计.......................................16 3.6 蜂鸣器报警模块程序设计..
15、19 4 系统调试及结果分析...............................................20 4.1 调试过程中出现的问题及解决方法................................20 4.1.1 回波信号的误接收...........................................20 4.1.2 外部中断0的触发方式.......................................20 4.2 测距结果及分析.........
16、20 结论...............................................................22 参考文献...........................................................23 致谢...............................................................24 1 引言 1.1 选题背景及意义 超声波测距是一种传统而实用的非接触测量方法,和激光、涡流和
17、无线电测距方法相比,具有不受外界光及电磁场等因素的影响的优点,在比较恶劣的环境中也具有一定的适应能力,且结构简单,成本低,因此在工业控制、建筑测量、机器人定位方面得到了广泛的应用。但由于超声波传播声时难于精确捕捉,温度对声速的影响等原因,使得超声波测距的精度受到了很大的影响,限制了超声测距系统在测量精度要求更高的场合下的应用。 距离是在不同的场合和控制中需要检测的一个参数,测距成为数据采集中要解决的一个问题。而由于超声波的速度相对光速小的多,其传播时间比较容易检测,并且易于定向发射,方向性好,强度好控制,因而人类采用仿真技能利用超声波测距。超声波测距是一种利用超声波特性、电子技术、光电开
18、关相结合来实现非接触式距离测量的方法。因为它是非接触式的,所以它就能够在某些特定场合或环境比较恶劣的情况下使用。比如要测量有毒或有腐蚀性化学物质的液面高度或高速公路上快速行驶汽车之间的距离。 将超声波测距应用于自动蓄水池设计也是近年来非常重要的研究课题。 超声波测距水位是一种极有潜力的方法,本文结合超声波的特性设计了一个简单实用的超声测距系统。 1.2 国内外研究状况及发展趋势 我们国家早在建国初期就已经对超声波以及其特性做过了较多的研究与探测,并取得了举世瞩目的成就。进入21世纪后在电子科学技术的飞跃发展前提之下,尤其是嵌入式和微处理器技术的高速发展,使得之前相对来说复杂的超
19、声波测距系统设计变为可能并且迅速得到发展,如采用zilog公司的z86E08单片机控制的超声波测距数显装置,以8098单片机为核心的智能物位测量仪等。随着工业生产的不断提高,对于科技的要求也越来越高,而距离的测量在许多工业生产中都有着重要作用,并且人们对于距离和长度的测量环境和精度的要求越来越高,国内科研人员在超声波回波信号处理方法、新型超声波换能器研发、超声波发射脉冲选取等方面进行了大量理论分析与研究,并针对超声测距的常见影响因素提出温度补偿、接收回路串入自动增益调节环节等提高超声波测距精度的措施。本设计所研究的超声波测距是一种典型的非接触测量,它与红外测距,激光测距等相比较,超声波测距对外
20、界的色彩,光线和电磁影响的抗干扰能力更强,并且在有毒、灰尘、以及烟雾等恶劣的环境下仍然能工作,由于声波在空气中的传播速度要远远小于光波和无线电波在空气中的传播速度,所以其适用于测量精度不要求太高的场合,超声波测距的系统更容易实现,结构也相对简单,耗费更低,且超声波在传输过程中不受烟雾等能见度的影响,所以其在众多的领域都有广泛的应用,如测量海洋深度,建筑高度的测量,机器人智能识别,汽车倒车防撞系统等。 1.3 设计思路与结构 本设计采用STC89C52型号单片机作为主控器件,HC-SR04是专门用于超声波发射和接收的模块,虽然其内部电路较为复杂,但是作为一个模块,其外设接口简单,可以很方便地
21、与单片机连接构成超声波测距系统,因此只需要根据超声波发射遇到障碍物反射回来的特性,就可以较为方便地设计出测距系统。只要用单片机给超声波发射和接收模块一个发射信号,模块就发射超声波并且在发射的同时开启定时器计时,超声波在遇到障碍物后就会反射回来被模块接收到超声波,此时此刻停止计时,然后就可以很快地将时间换算成为我们所测得距离。由于超声波在空气中的传播速度受温度影响较大,因此该设计还增加了测量当前环境温度的模块,主要是用于温度补偿。 2 系统硬件设计 HC-SR04超声波测距模块 单片机STC89C52系统 DS18B20测温模块 按键模块
22、LCD1602 显示模块 蜂鸣器报警模块 系统由单片机主控部分和超声波测距模块部分组成。主控部分包括单片机STC89C52系统、LCD1602显示模块、DS18B20测温模块模块、串口通信模块和蜂鸣器报警模块。超声波测距部分包括HC-SR04超声波测距模块:超声波发射模块和接收模块。结构如图1所示。 图1 总体设计框图 本设计采用单片机STC89C52作为中央处理器,用于控制HC-SR04超声波测距模块发射和接收声音,同时利用其内部的定时器得到超声波发射和接收所用的时间,并且根据DS18B2
23、0测出温度参数通过一定算法换算成测距系统与被测物之间的距离,最后通过LCD1602显示其距离,并且该系统还具备自行设置测距范围,测距范围的设置由薄膜键盘按键实现,然后再加上蜂鸣器报警模块,当所测距离超出范围时,单片机STC89C52将控制蜂鸣器发声,以实现报警功能。超声波测距模块主要用于根据单片机STC89C52控制信号发射声音,并且单片机此时会将接受回来的声波用于编码,然后解码,从而实现单片机发射和接收功能。DS18B20主要是测试环境温度,并且把测试到的环境温度输入单片机处理。LCD1602用于显示测距系统与被测物间的距离和实时环境温度。薄膜键盘用于设置测量范围值,蜂鸣器则是用作报警。
24、2.1 主控部分 2.1.1 单片机STC89C52系统 单片机控制模块为系统的核心控制单元。单片机 STC89C52的INT1/P3.3端口用于输出发射器所需的40kHz 方波信号,INT0/P3.2端口用于检测接收器输出的返回信号。液晶显示电路采用LCD1602,使用单片机的P0口和P2口完成显示功能。RXD/P3.0和TXD/P3.1端口用于串口数据的接收与发送。P1.2和P1.3分别为超声波的接收与发送使能端口。P3.4端口用于接收从温度传感器DS18B20获取的温度信息。 2.1.2LCD1602液晶显示模块 液晶显示模块用于显示当前的环境温度和测得的距离值。显示器件L
25、CD1602的优点是微功耗、体积小、显示内容丰富。它识别的是ASCII码,可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值。单片机的P0口和P2口与液晶模块相连,其中P0.0~P0.7端口用于LCD1602的数据输出,P2.0~P2.2端口分别用于显示模块的数据命令选择,读写选择和使能控制。R6和R7分别用于调节LCD1602的亮度和对比度。 2.1.3蜂鸣器报警模块 本测距系统带有超出手动设置量程报警的功能,报警装置采用压电式蜂鸣器发声来报警。蜂鸣器是目前使用较多的一种小型发声类器件。通常采用直流电源供电,广泛被用在小型嵌入式装置,声控系统,实验开发箱,报警装置
26、打印装置中。蜂鸣器按照其工作方式来分类可分为压电式蜂鸣器和电磁式蜂鸣器。压电式蜂鸣器主要由压电发声片、阻抗匹配电路及共鸣器、多谐振荡器、塑料外壳等组成。多谐振荡器由三极管或者CMOS管组成,也可由专门IC组成。当接通1.5V-15V电源后,多谐振荡器起振,输出1.5-2.5kHz的音频信号,阻抗匹配器推动压电蜂鸣片发声。压电蜂鸣片由特殊的化学压电陶瓷材料制成。在陶瓷片的两面镀有一层电极,在经过极化处理后,再与另外一种金属片粘贴在一起来构成。在嵌入式应用的设计上,很多设计都需要用到蜂鸣器,由于蜂鸣器的发声稳定特性,经常将蜂鸣器用作报警和提示的作用,还有也可用作按键、步骤提示或是故障停止等方面作
27、用。由于自激蜂鸣器大部分是采用直流电压来驱动,而很少使用交流电,只需对驱动口输出驱动电平并通过三极管放大驱动电流就能使蜂鸣器发出声音。蜂鸣器报警模块如图2所示。 图2 蜂鸣器报警模块原理图 2.2 超声波测距部分 超声波测距单元的框图如图3所示。系统中采用的换能器是中心频率为40.0kHz±0.1Hz的发射器255-400ST16和接收器255-400SR16。该换能器具有很高的灵敏度和较强的抗干扰能力。安装时应保持2个换能器中心轴线平行并相距4~8cm,若能将超声波接收电路用金属壳屏蔽起来,可提高抗干扰能力。 图
28、3超声波测距单元 2.2.1 超声波发射电路 只要使用40kHz的方波激励换能器就可以产生超声 波。超声波发射电路如图4所示。电路中使用MOSFET管 ZXM61P03F进行电源管理,当单片机的P1.3端口为低电平 时,电路通电。MAX864为电压转换芯片,它将输入的5V电源进行加倍,转换为正电源+10V和负电源-10V两路输出,提供给其后的LM8261使用。FC1和FC0为MAX864内部晶振频率选择位,当FC1和FC0均为高电平时,晶振频率为最大值,高频率可以保证MAX864不会对其它电路造成干扰,此时所需的外围电容值(C9,C11,C12,C13)为1μF。LM8261是一个具有高
29、输出电流的运算放大器,较高的输出电流可以使产生的超声波有足够的能量传播较远的距离。LM8261的同相输入端与单片机的INT1/P3.3端口相连,在这个端口连续发出高低电平时,LM8261的输出端就会产生方波。当方波的频率为40kHz时,就会激励超声波发射器发出超声波。 图4 超声波发射电路 2.2.2 超声波接收电路 接收电路主要负责将超声波信号转变为电信号。换能器在接收到超声波信号时,由于压电效应会在两个接头上产生微弱的电压信号,一般为毫伏级。微弱的电压信号需通过放大电路进行放大、整形,进一步设计比较器电路将模拟信号转变成为数字信号。 因此,接收电路包括
30、接收换能器,放大电路以及比较整形电路3部分。电路如图5所示。回波放大电路使用的是具有两级放大功能的LMV822MM,R15和R16组成分压电路,为同相输入端提供基准电压。其中可以通过调节第二级中的电位器R22来改变放大器的增益,从而调节放大电路的电压放大倍数,以适应接收信号变化范围大的需要。 回波放大电路和稳压电路输出的是模拟信号,电路中利用运算放大器LMC7215组成的比较器将模拟信号转变为数字信号,以便单片机进行处理。R20和R21为比较器提供基准电压。当反向输入端电压超过基准电压时,输出低电平,否则输出为高电平。这样,若有超声波信号被接收,比较器电路输出端会有由高到低的电平跳变。单片机的
31、INT0/P3.2端口连接到比较器的输出,以捕捉电平的跳变,从而判断超声波是否被接收。同时,比较器还解决了发射换能器发出的超声波脉冲没有经过反射物直接被接收器所接收的问题。 图5 超声波接收电路 2.2.3 超声波控制蓄水 首先设定目标水位值,如设定目标水位为N,根据超声波探测到的数值M反馈到单片机STC89C52,如果M小于N,灯光显示为绿色,则可以继续蓄水,如果M大于或等于N,灯光显示为红色,报警器发出警报,系统将停止蓄水,并且开始启动排水系统,将多余的水排出蓄水池知道M数值等于N。目标值和实际测量值均可在LCD1602显示器上显示。
32、 3 系统软件设计 3.1软件设计总流程 Step1:系统的初始化工作。主要包括在液晶显示屏LCD1602上显示两行预设字符,“Temp:”和“Dist:”,分别为环境温度和测量距离的提示字符;设置定时器、外部中断的触发方式;打开发送使能端P1.3和接收使能端P1.2;清零测量成功标志succeedFlag。 Step2:利用温度传感器DS18B20测量环境温度,并将温度值显示在液晶显示屏第一行“Temp:”的后面;根据公式(2)计算出超声波的传播速度。 Step3:启动定时器T1开始计时,同时连续发送8个频率 为40kHz的超声波信号(对P3.3口的高、低电平分
33、别进行 12μs、13μs的延时,实现从P3.3口输出频率为40kHz的方 波信号);延时10μs后,打开外部中断EX0和总中断EA,等待IT0/P3.2处电平的跳变。10μs的延时也可以有效地避免发射换能器发出的超声波脉冲没有经过反射物直接被接收器所接收的问题。 Step4:超声波在传播过程中,遇障碍物后反射回波。当接收探头接收到回波时,外部中断0被触发,此时执行中断服务程序。即取出定时器的高低位TH1和TL1,置位测量成功标志succeedFlag,并关闭中断。定时器所计的数据即为超声波所经历的时间。 tep5:由以上步骤中所得定时器的值和超声波速度,根据式(1)计算测量距离。
34、Step6:重复步骤2~5五次后,获得5次测距值。去除其中的最大值和最小值,取中间3值的平均值为当前的测距结果,并将测距结果显示在液晶显示屏第二行“Dist:”之后。 Step7:重复步骤2~6,当有连续三次的预备显示测距结果与当前的显示结果不同时,将预备显示测距结果显示在液晶显示屏上。这样设计是为了避免显示频繁导致的液晶显示抖动。 Step8:重复步骤2~7进行连续地测量。 程序中显示一次测距结果的流程图如图6所示。 图6 程序一次测距流程图 3.2 单片机驱动HC-SR04模块程序设计 等待LCD初始化与DS18B20测温完毕后,单片机将I0口P2
35、6电平拉高并且维持10us以上,之后HC-SR04将自动产生8个40kHz的方波驱动发射头发射超声波,并且使得P2.7口位高电平,当HC-SR04模块接收到发射回来的超声波后,将P2.7端口电平拉低,其时序逻辑图如图7所示。 输出回响 信号 回响电平输出 与检测距离成正比 图7 HC-SR04时序逻辑图 3.3单片机STC89C52计算测试模块与障碍物距离算法设计 单片机控制模块通过控制发射换能器发射超声波到固定端面,同时启动定时器开始计时。超声波经反射后由接
36、收换能器接收,当单片机控制模块接收到第一个反射波信号即停止计时。单片机根据计时器值计算出时间间隔t。由于此系统是利用超声波的传输时间来测量距离,就需要考虑声音传输媒介的弹性模量和密度对声速的影响。在空气中,气体的温度,湿度,压强等因素会引起空气密度和弹性模量的变化,气体声速主要受密度的影响,超声波在气、液、固三者中传播速度关系是固体>液体>气体。气体中声速受温度影响较大,温度补偿模块采集数字温度,根据公式(1)计算出超声波速度v。 其中T是空气介质的温度(℃)。在测量精度要求较高的场合,需要采用温度补偿的方式对超声波的速度校正。 最后利用公式(2)计算出换能器到障碍物之间的距离d。
37、 液晶显示模块显示当前的温度值T和计算所得的距离 d。薄膜键盘按键模块可以通过按键在线下载单片机程序。 3.4 单片机STC89C52定时器计时程序设计 单片机STC89C52内部有两个16位可编程的定时器/计数器,它们均是二进制加计数器,当计数器计时后溢出时,CPU自行产生溢出中断并且置位标志位,用于标示计时时间达到或计数已经终止。两个定时器/计数器均可编程设置为定时模式和计数模式两种,在这两种模式下又均可设定4种工作方式。其各类控制字节和状态标示位都存储在特定存储器中,人为设定存储器的初始值,就可改变工作方式和状态。定时模式下的定时时间和计数模式下的计数值在程序运行之处就可装载
38、相应存储器中。定时器和计数器主要由16位加法计数器,工作方式寄存器TMOD和控制寄存器TCON组成,定时器/计数器的工作方式,TCON用于控制T0,T1的启动/停止计数。 TCON寄存器的格式如表1所示。TCON的高四位用于定时器/计数器控制,并且可以进行位寻址。TR0与TR1用于控制定时器/计数器的启动和停止,1为启动,0为停止。TF0和TF1分别为T0与T1的溢出标志位,当定时或者计数溢出时,由单片机自动置位为1。 表1 控制寄存器TCON的格式 位 D7 D6 D5 D4 D3 D2 D1 D0 地址 8FH 8EH 8DH 8CH 8BH 8AH
39、 89H 88H TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TMOD的格式如表2所示,TMOD寄存器不支持位寻址,高四位为T1方式字段,低四位为T0方式字段,GATE用于控制定时器逻辑输入,C/T控制为定时模式还是计数模式,1为计数,0为定时,M1,M0用于选择定时器的工作方式,其工作方式如表3所示。 表2 方式控制寄存器TMOD格式 位 D7 D6 D5 D4 D3 D2 D1 D0 TMOD GATE C/T M1 M0 GATE C/T M1 M0 表3 定时器工作方式 M1 M0 工作
40、方式 0 0 方式0,为13位定时器/计数器 0 1 方式1,为16位定时器/计数器 1 0 方式2,8位初始值自动重载8位定时器/计数器 1 1 方式3,仅适用于T0,分成两个8位计数器,T1停止计数 由定时器的工作原理,我们发射超声波之前配置好定时器工作方式,在单片机发出控制超声波发射的同时开启定时器,一直等到接收到反射回来的超声波时再关闭定时器,就可得到超声波的传播时间。 3.5 LCD1602液晶驱动程序设计 VDD与VSS分别为电源正极和电源负极,VL为液晶显示器的对比度调节端口,接VCC时对比度最弱,其对比度取决于VCC电压值与VL接口电压的差值,对比
41、度过高会产生影子。通常情况下VL端口外接一个电位器,用户可根据需要调节电位器就可以调节对比度。RS为数据/命令选择端,当RS为高电平时,选择为数据端口,当RS为低电平,选择为命令端口。RW为读/写选择端,当RW为高电平时写,低电平时读。E为使能信号,LCD1602正常工作时,E为高电平,当E为低电平时,LCD1602停止工作。D0-D7为并行数据端口,一般情况下接单片机的一组I0口,BLA与BLK分别为背光电源的正极和负极,用于背光的供电。LCD1602的接口信号说明如表4所示。 表4 LCD1602接口信号说明 编号 符号 引脚说明 编号 符号 引脚说明 1 VSS 电源
42、地 9 D2 Data I/0 2 VDD 电源正极 10 D3 Data I/0 3 VL 液晶显示偏压信号 11 D4 Data I/0 4 RS 数据/命令选择端(H/L) 12 D5 Data I/0 5 R/W 读/写选择端(H/L) 13 D6 Data I/0 6 E 使能信号 14 D7 Data I/0 7 D0 Data I/0 15 BLA 背光源正极 8 D1 Data I/0 16 BLK 背光源负极 LCD1602可以一次显示32个字符,每行显示16个,其控制器内部带有80*
43、8位(80字节)的RAM缓冲区,RAM地址与屏幕位置对应关系如图8所示。其中第一行有效的地址为00H-0FH,剩余的10H-27H为不可显示的,主要用于移屏操作时使用。第二行的有效地址为40H-4FH,剩余的也为移屏操作时使用。 图8 LCD1602RAM地址映射图 LCD1602有四种工作方式分别为读状态,读数据,写状态,写数据,读状态时RS=0,RW=1,E=1,主要用于检测LCD1602此时的工作状态。读数据时RS=1,RW=1,E=1,用于读取LCD1602中的数据,一般情况下不使用读数据操作。写状态时RS=0,RW=0,E=1,用于控制LCD的工作状态。写数据时RS=1,RW
44、0,E=1,将要显示的内容写入到LCD1602中去。LCD1602的指令说明如表5所示。其中指令码38H为显示模式设置,指令码00001DCB为显示开/关,以及光标设置指令,其中B、C、D为可选择的,可为1,也可为0.其中指令码80H+RAM映射中的地址值为数据指针的物理位置,用于设置地址指针的位置,也就是字符要显示的位置,指令码01H为清屏指令,指令码02H为显示回车指令。 表5LCD指令说明 指令码 功能 0 0 1 1 1 0 0 0 设置16*2显示,5*7点阵,8位数据接口 0 0 0 0 1 D C B D=1,开显示
45、 D=0,关显示 C=1,显示光标 C=00,不显示光标 B=1,光标闪烁 B=0,光标不闪烁 0 0 0 0 0 1 N S N=1,当读或写一个字符后地址指针加1,且光标加1 N=0,当读或写一个字符后地址指针减1,且光标减1 0 0 0 0 0 1 N S S=1,当写一个字符后,整屏显示左移 S=0,当写一个字符后,整屏显示不移动 80H加上地址码(0-27H,40H-67H) 设置数据指针指令 0 0 0 0 0 0 0 1 显示清屏:1、数据指针清0 2、说有显示清0 0 0 0 0
46、0 0 0 2 显示回车:数据指针清0 LCD1602的显示程序包括初始化LCD1602,设置显示位置,写入要显示的数据。在初始化过程中包括设置显示模式,显示关闭,显示清屏,显示光标移动设置和显示开和显示光标设置。写入的数据为ASCII码值,在程序中用字符串形式定义要显示的数据,编译器在编译后自动译为ASCII值。其显示程序流程图如图9所示。 图9 LCD1602显示流程图 3.6 蜂鸣器报警模块程序设计 当所测得的距离超过了人为设置的量程时,单片机STC89C52将驱动蜂鸣器报警,蜂鸣器的负端口通过一个100欧姆的电阻接地,蜂鸣器的正极接到了一个NPN型三极管的发射极
47、三极管的基极连接到单片机的I0口,因此我们只需要控制单片机的I0口的高低电平就可以驱动蜂鸣器报警。在这里三极管只起到一个驱动的作用,当I0口为高电平时候,三极管导通,蜂鸣器正端为高电平,当I0口为低电平时候,三极管截止,蜂鸣器正端为低电平。而压电式的蜂鸣器,只需要在其正端产生正负交替变化的方波,就能够使得其发出声音。 4 系统调试及结果分析 4.1 调试过程中出现的问题及解决方法 4.1.1 回波信号的误接收 由于超声波发射探头和接收探头距离较近,当发射探头 发射超声波后,有部分超声波没经过障碍物反射就直接绕射到接收探头上,这部分信号影响了系统的
48、测量结果。设计中采用了两个方法来解决这个问题,一是略微增大发射探头和接收探头之间的距离,使影响降低;二是在发射完超声波之后,开外部中断之前增加10μs的延时,接收电路对此期间接 收到的任何信号不予理睬,延时之后接收到的信号才是有效的回波信号。 4.1.2 外部中断0的触发方式 没有接收到超声波信号时,INT0/P3.2引脚为高电平;接收到超声波信号之后,该引脚变为低电平。因此理论上外部中断0的触发方式采用下降沿触发和低电平触发均可。而在实际电路中,当采用下降沿触发方式时,由于噪声的影响,在没有回波被接收的情况下,P3.2引脚的高电平经常会出现向下的毛刺信号,该信号引起外部中断,造成了接
49、收到回波信号的误判。解决方法是采用低电平触发,同时在进入外部中断之后判断低电平的持续时间是否大于20μs,只有当满足持续时间要求时,才判定接收到的信号为回波信号,而非噪声。 4.2 测距结果及分析 为了验证系统的性能,在实验室进行了实地测量。将超声波探头正对平整的墙壁进行测量,根据距离不同记录了12次实验结果,测距结果如表6所示。表中的实际距离是用塑料软尺测量得到的,测量距离为测量5次结果之后的平均值。 实际距离/cm 测量距离/cm 绝对误差/cm 8 8.11 -0.11 9 8.90 0.1 10 10.09 -0.09 11 10.96 0.04
50、12 12.12 -0.12 13 13.21 -0.21 14 13.90 0.1 15 15.05 -0.05 表6 测距结果 误差产生及测量范围有限的原因主要有: (1)超声波能量的衰减。由于超声波在传播途中回波幅度 随传播距离成指数规律衰减,使得远距离回波很难检测,即使系统已采用相关措施来避免误差,但是超声波能量的衰减是不可能避免的; (2)测量盲区。超声波测距系统测量盲区的计算方法为启 动定时器与打开外部中断之间的时间间隔的一半与超声波速度的乘积; (3)接收整形电路造成的时延,信号传输和发射中的失真。






