版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机的水库水位监测报警器设计摘要随着科技日新月异般的发展,传统的测量方法难以满足工业等测量环境恶劣的行业中的测量要求,随之而出的无接触式测水位仪越来越受人们的青睐。超声波测量其原理为通过检测超声波发送与反射的时间差来计算液位高度,其亦具备安装容易、灵活性高等特点,通常可安装于高处进行非接触式测量。本测水位系统不仅仅能够实现测水位、还能实时对所测水位距离进行展示并进行危险警示,而且在不同的应用场景中使用者可自行更改报警距离,更具有实用意义。该测水位系统从实际考虑出发,选择以STC89C52单片机为主体,配合超声波模块测量液面距离的水位监测报警器,其中还包括显示屏模块显示实时液位,温度测量模块进行温度补偿、声光报警模块进行报警。同时设计了按键设置模块,可以根据实际需要修改报警的安全距离,满足不同情况的需求。本文基于STC89C52单片机设计了一款超声波测量水库水位监测系统,可以基本满足目前水库的水位监测和报警功能。关键词:单片机;显示屏;超声模块;报警模块目录TOC\o"1-3"\h\u第一章绪论 第一章绪论1.1背景和意义在现代化的工业生产中,液位测量几乎遍及生产过程的各个环节。在许多生产领域,不但对液位测量精度要求高,还需要测量仪表很好地适应工业现场的特殊环境,例如高温、高压、强腐蚀性、强放射性的场合以及远距离传送和在密闭压力容器内使用等情况。目前测水位的方式有很多:浮球式、电容式、静压式、光电折射式等,其中本文选择了超声波式。超声波一般为20KHz以上的,且通过人耳无法直接获取的声波。正是因为它频率高的优势,因此包含很多低频声波所没有的优点,也增加了许多特殊的用途。比如其高度集中的能量可以用来切割、打孔等;其准确的定向性可以在工业和医学方面用来进行探测,尤其是在无接触测水位领域得到了广泛的应用。使用超声波设计的传感器将在工业、医疗等方面发挥无可替代的作用,根据目前的发展趋势,为了达到日新月异的发展需求,高能量、高定位、高精度是它下一步的发展目标。比如水下武器所利用声呐进行准确定位测水位,进而对目标进行识别并进行武器攻击,这些都离不开超声波的帮助。超声波不仅在高科技发展中应用广泛,而且在我们日常生活的实际应用中也使用甚广。比如我们常见的水位的高度的测量,如果使用传统的仪器仪表进行测量,暂且不论测量精度是否准确,一般物体在水中搁置较长时间都会对仪器仪表造成腐蚀,不但成本较高,测量精度自然也不会准确,而采用可以安装在水库高处无接触进行测量的超声波便能够完美的地处理此类实际应用问题。因此本文结合实际情况,设计并研发出基于STC89C52控制的小巧式的超声波测水位仪,还具有成本低、便于携带、精度高等优势。1.2国内外研究现状随着各项科学技术日新月异般的发展,尤其是在智能测水位领域,出现了很多不同以往的新的测水位方式,如通过超声波、激光等技术针对不同场景实现有效测水位,并且均已在各领域得到广泛应用。超声波测水位则是根据超声波方向性强,能量集中等性质进行测水位。计算距离的方式与激光测水位类似,需要注意的是在不同的介质中的传递速度各异。近年来已经研发出多种超声波测水位仪,根据超声波的不同可划分为两种不同的模式:电气式和机械式。以电气作为超声波产生来源的方式包括压电型以及磁致伸缩型等;以机械作为超声波的产生来源的方式包括加尔统笛以及气流旋笛等。可根据用途选择相适应型号的超声波发生器。其中压电式超声波发生器的应用较为普遍,其主要通过压电晶体所产生的谐振来进行测水位工作。超声波技术包含物理、电子信息、仪器仪表等多种基础学科知识,而且使用范围甚为广泛。该技术主要包含超声波的发射、传递以及接收等过程,然后根据超声波在检测目标所处环境下的传播速度和时间来计算与目标之间的距离,在生产安全等科技发展史上留下了色彩浓厚的一笔。超声波在不同物体中的传递形式主要有横波、纵波以及表面波三种。三种不同形式的声波之间的特点以及区别如表1.1所示。表1.1声波区别Table1.1Soundwavedifference名称特点传播介质横波震动方向与前进方向垂直固体纵波震动方向与前进方向一样固体、液体、气体表面波震动方向处于横波和纵波之间、沿物体表面传播物体表面此外,超声波测水位一般通过微处理器进行测水位控制,将不同测水位模式、计算以及其它一些自动化功能融合在一起,使使用者更加高效快捷的进行工作。就目前而言,超声波测水位的应用已经不仅仅局限在功能单一的测水位系统中,在泊车系统、地形测量、目标测水位、移动机器人等场景中都有广泛的应用。
第二章系统设计原理2.1设计思路本文采用STC89C52进行程序控制,结合超声波模块、1602显示屏、蜂鸣器等研发水库水位监测系统。其中显示屏可以实时显示当前检测到的距离,而蜂鸣器则起到警示的作用,当检测到的距离小于等于设定值的时候将会自动触发蜂鸣器进行报警。水库水位监测系统框图如图2.1所示。图2.1系统框图Figure2.1Systemdiagram2.2单片机的选型通过对比分析各类功能单一系统所采用的单片机型号的优缺点,并结合水库水位监测系统要求所选单片机处理器处理速度高、运行功耗低以及抗干扰能力强等特点,本系统采用STC89C52型号单片机,该芯片不仅具有以上特点,更具有优势。STC89C52在许多工业、医学、煤矿等控制系统中应用甚广,尤其是在功能简单或者功能单一的控制系统中的应用更是数不胜数。STC89C52主要参数如下表2.1所示:表2.1STC89C52主要参数Table2.1STC89C52Mainparameter参数名称STC89C52单片机工作电压3.3-5.5V工作频率范围0-40MHZ,实际可达48MHZFlash程序存储器8KSRAM静态存储器512B可编程定时器/计数器3个(T0、T1、T2)EEPROM功能4K兼容性指令代码向下完全兼容传统8051通用I/O口32个工作温度范围-40~+85℃(工业级)两种可选择节电模式空闲模式:当CPU停止工作时,其余的模块如定时器/计数器、RAM、中断、串口等可以继续保持工作状态,从而不受影响。掉电模式:RAM数据被保存,振荡器停止工作,其余各模块也均停止工作,当遇到中断或者复位指令时恢复正常。2.3超声波模块的选型超声波测水位模块的类型数不胜数,较为常见的有URM37、HC-SR04以及SRF系列超声波模块。超声波模块大都为可调节的232/TTL接口,精度可达到cm级别。其中本文主要是通过超声波在前进方向中碰到物体便会改变方向折回的特性来达到测水位的目的,综合考虑决定采用HC-SR04作为本设计中的超声波传感器。该模块有十分稳定的性能,且测水位精度高等特点。因其性能优势,所以在测水位、水位监测、机器人避障等领域均有广泛应用。测水位时首先通过TRIG(注:一般以保持10us以上的高电平为标准)触发模块进行测水位工作;然后连续发射8个40KHz的方波信号,同时开始等待接收返回的信号;当接收到反射回来的信号时,ECHO持续输出高电平信号(持续时间为从发射信号到接收到信号的时间),再根据DS18B20所检测的温度自动判断是否需要进行温差弥补,最后通过程序自动计算检测水位离并显示到显示屏上。HC-SR04主要参数如下表2.2所示:表2.2HC-SR04主要参数Table2.2HC-SR04Mainparameter参数名称HC-SR04工作电压DC-5V静态电流小于2mA电平输出高5V电平输出低0V感应角度小于等于15°探测水位离0.02m-4m测量精度2mm2.4显示屏的选型显示屏在本设计中主要是用来展示实时测量的距离,让使用者有直观的数据体验,因此本文显示模块采用应用较广的LCD1602字符型液晶显示屏。其主要由LCD、控制驱动电路、扩展驱动电路以及其他元器件在PCB板上集成。LCD1602与STC89C52的连接方式分为直接控制方式和间接控制方式。这两种连接方式的主要不同是所用于连接的数据线的根数不一样,间接控制方式所使用的数据线比直接控制方式少一半,因此在读写数据时需要将数据的高低位分别进行读写,本文采用直接控制方式。其中,只需要将LCD1602的8根数据线以及E、RS和R/W引脚与单片机连接在一起就可以进行工作,读写数据时不用区分高低位。在使用时大都是直接给LCD1602写入数据,而LCD1602直接将其进行显示即可。LCD1602主要参数如下表2.3所示:表2.3LCD1602主要参数Table2.3LCD1602Mainparameter参数名称LCD1602显示容量16*2byte工作电压4.5-5V工作电流2mA(5V)最佳工作电压5V字符尺寸2.95*4.35mm(W*H)2.5温度传感器的选型本文添加温度传感器,主要是因为室外温度并不能保证恒定,偶尔出现的高温或低温情况时,测量水位距离时容易产生误差,需要根据实际温度在公式中代入合适的声速。DS18B20可以将测量的温度值直接以数字化的形式进行输出,不仅体积小,而且抗干扰能力强,一般将其进行封装后使用,目前在化工业、农业、机械业等领域应用甚广。DS18B20相对于DS1820等温度传感器具有较高的分辨率以及较短的延迟时间,而且通信时只需要一根数据线即可完成通信,普遍适用于在环境较差的场景中进行测温。主要有以下特点:能够精确测量-55℃至+125℃之间的温度(注:在-10℃至+85℃之间测量精度可达±0.5℃);在利用该模块时可以不加其他外围元器件;可以将多个DS18B20并联在一根线上,从而实现多个测量点同时测温;掉电保护,即使因为未知原因导致系统断电,它也可以将当前所设置的参数保存下来,因此本文选择DS18B20作为测温传感器。2.6测水位原理目前常用的实现超声波测水位的方式有往返测水位、相位测水位以及声波的幅值测水位等。本文采用往返测水位,该测水位方式是通过超声波模块发射并接收固定频率的超声波,通过超声波在媒介中的传播速度,同时检测在媒介中的传播时间,进而实现测水位的目的。测水位原理如图2.2所示。图2.2测水位原理Figure2.2Principleofwaterlevelmeasurement 假设V为某一固定频率超声波在空气中的传播速度,超声波从测水位仪发射到超声波遇到目标物体反射回来并被接收的时间为T,则检测的距离为L,如公式2-1所示。 (2-1) 公式2-1适用于对距离的测量精度要求不高的场景,而对于一些精度要求高的场合,则需要考虑如介质的温、湿度所引起的超声波在介质中传播速度的变化。通过对V进行调整来达到增大精度的目的。如公式2-2所示。 (2-2) 其中C1为温度影响系数,如有湿度等其它影响因素可进行类似的考虑调整。传播速度随温度的变化如表2.4所示。表2.4声速温度变化Table2.4Temperaturevariationofsoundvelocity温度(℃)-30-20-100102030100声速(m/s)313319325323338344349386对于一般的测水位应用,一般默认声速是固定值,取340m/s,即室温声速。本文添加了温度传感器,在室外温度过高或过低时,可以进行调整补差。2.6本章小结本章对水库水位监测系统的设计思路以及主要的元器件,单片机、超声波模块、显示屏以及温度传感器的选型进行介绍,最后对超声波的测水位原理进行详解。第三章硬件电路设计3.1最小系统电路测水位系统处理器控制电路主要是由STC89C52、电源电路、时钟电路以及复位电路等部分构成。其中电源电路可谓是测水位系统乃至任何电子系统能够保证平稳工作的重要前提条件,单片机系统在运行时往往会因外界环境的干扰而出现异常,而稳定的电源往往能有效克制这种现象;时钟电路也可以说是振荡电路,晶振是单片机系统中必不可少的元件之一,少了它将不能产生单片机系统中的时钟频率,处理器的任何指令的有效执行都需要依靠晶振所产生的时钟频率,而且时钟频率与单片机的执行速率成正比;复位电路的实现较为简单,但也却是不可或缺一个模块,复位的目的是将该系统恢复到原始设置的状态。本设计中有上电自动复位和按键手动复位,上电自动复位即系统通电后自己进行复位操作,也就是上电后的初始化;按键手动复位是通过按键进行人工复位,主要用于解决系统卡死之类的情况。最小系统电路如图3.1所示。图3.1最小系统电路Figure3.1Minimumsystemcircuit3.2超声波模块电路测水位模块是由单片机所控制的,当接到单片机开始测水位的命令时HC-SR04便进行测水位,发射超声波信号的同时等待接收反射回来的信号,与此同时计算从发射信号到接收到信号所用的时间,并以此来计算所测量的距离。超声波测水位模块的TRIG引脚和ECHO引脚分别与STC89C52的P23和P24引脚进行连接,分别用于产生发射的超声波信号和等待接收反射回来的信号。超声波模块与单片机连接电路如图3.2所示:ECHOTRIGECHOTRIG图3.2超声波模块电路Figure3.2Ultrasonicmodulemicrocomputer在进行超声波测水位的时候,主要是利用单片机的P23引脚发送10KHz的方波,当需要测量距离时,单片机通过P3.0引脚控制超声波模块的TRIG引脚发射超声波,与此同时将程序中选择的定时器清零并计时,ECHO也进入等待接收返回的超声波信号,当接收到返回信号时,通过P24引脚得到反馈,与此同时停止定时器计时并读取时间,然后在程序中进行距离计算并将计算结果显示在显示屏上面。图3.3超声波模块与单片机连接电路Figure3.3Connectingcircuitbetweenultrasonicmoduleandsinglechipmicrocomputer3.3按键设置电路报警距离通过单独的三个功能按键来进行设置,即“设置”按键、“+”按键以及“-”按键。第一次按一下“设置”按键就会进入设置报警距离的界面,然后可以分别选择增加或者减少当前设置的报警距离,设置完成之后再次按一下“设置”按键即可保存当前所设置的报警距离并返回正常测水位显示界面。报警距离设置电路如图3.3所示。图3.4报警距离设置电路Figure3.4Alarmdistancesettingcircuit在设置报警距离的时候,需要先按下S2(设置按键),接着根据显示界面所显示的当前报警距离来调整,如果当前距离大于想要设置的报警距离,则连续按S4(减小按键)至想要设置的值;如果当前距离小于想要设置的报警距离,则连续按S3(增大按键)至想要设置的值(注:每按一下S4或者S3代表当前值减小或者增大1cm)。目前程序为了演示方便,并没有设置很高的数值,如果投入使用,则需要修改内部程序,扩大可修改范围即可。图3.5报警距离设置电路与单片机连接电路Figure3.5AlarmdistancesettingcircuitandMCUconnectioncircuit3.4声光报警电路当水位超过所设范围时,报警电路将发出警报。报警电路主要是通过受单片机控制的蜂鸣器构成。由上文可知,本系统可以自己设置报警距离,因此,当所测得的距离小于自己所设置的报警距离的时候会引起蜂鸣器报警提示,同时LED亮起。警示电路的构成也相对简单而且易实现。蜂鸣器报警提示部分由三极管、LED、蜂鸣器以及电源即可构成。遇到当前所测水位离小于危险警示距离的时候,STC89C52通过P20引脚为BUZZER提供低电平,BEEP1回路被导通并发出警报声音。图3.6报警提示电路Figure3.6Alarmpromptcircuit图3.7报警提示电路与单片机连接电路Figure3.7AlarmpromptcircuitandMCUconnectioncircuit3.5显示模块电路显示模块可以对当前水位测量信息或设置内容实现显示,它的主要电路在LCD1602内部已经集成,因此只需要将相应的引脚与单片机进行正确连接即可通过单片机程序进行显示内容的读写。显示模块电路如图3.5所示。图3.8液晶集电路Figure3.8LiquidcrystalcollectorcircuitLCD1602的数据位通过上拉电阻连接到STC89C52的P00-P07引脚,P13-P15连接到LCD1602的RS、RW以及EN控制引脚,其中RS对应寄存器转换;RW对应LCD1602的读写功能转换;EN则对应工作使能位。单片机对LCD1602的读写操作主要是利用P0口进行。图3.9液晶集电路与单片机连接电路Figure3.9Liquidcrystalcollectorcircuitandsinglechipmicrocomputerconnectioncircuit3.6温度传感器电路本文选用DS18B20温度传感器进行温度测量补偿,由于已是封装件,只需将其引脚与单片机正确连接即可使用。图3.10温度传感器电路Figure3.9TemperaturesensorcircuitDS18B20温度传感器共三个引脚,除去电源引脚和接地引脚外,第三脚与单片机的P1.7连接即可。图3.11温度传感器电路与单片机连接电路Figure3.11TemperaturesensorcircuitandMCUconnectioncircuit3.7测水位系统总体电路测水位系统的总体电路由各个子模块的电路所集成。测水位系统总体电路如图3.9所示。图3.10测水位系统总体电路Figure3.8Overallcircuitofwaterlevelmeasuringsystem3.8本章小结 本章主要利用单片机、模电等基础知识以及AltiumDesigner工具进行研发。在各个子模块以及总体电路实现的过程中对所学的基础理论知识有了更深的了解与掌握,在实际动手制作这些硬件电路的过程中更是锻炼了单独解决问题的能力,更加体会到纸上得来终觉浅,绝知此事要躬行的意义。第四章软件程序设计4.1系统软件设计在单片机系统的研发中,软件部分的设计和实现与硬件的设计与实现同样重要。目前而言,汇编软件与电子系统均在与日更新,而KEIL自然而然的成为了目前使用最受欢迎的开发工具。因此本系统软件设计部分选择通过C语言在KEIL上进行开发。4.2超声波子程序设计超声波子程序主要是通过发射接收超声波信号来达到测量距离的目的。超声波子程序流程图如图4.2所示。图4.2超声波子程序流程图Figure4.2Flowchartofultrasonicsubroutine 系统上电之后先进行程序初始化,之后发送一个开始脉冲,同时打开定时器并进入等待;然后当接收到返回的信号时根据定时器所得时间值计算所测水位。4.3显示子程序设计显示子程序有实时测水位显示界面和设置界面。实时显示界面为实时显示所测得的距离;设置界面用于用户设置报警距离。显示子程序流程图如图所示。图4.3显示子程序流程图Figure4.3Showsubroutineflowchart本测水位系统中所采用的LCD1602可以显示两行内容,在实时测量显示界面中分别显示实时测量的距离值和报警距离值。4.4报警子程序设计报警子程序主要是为了提醒用户当前与所测目标的距离小于所设置的安全距离,系统初始化所默认的安全距离为10cm,当小于该距离时程序会自动触发蜂鸣器和LED同时警示用户。报警子程序流程图4.5所示。是否是否图4.4报警子程序流程图Figure4.4Flowchartofalarmsubroutine在测水位的过程中,每次计算出测得的距离之后在程序中与设定的安全距离进行比较,当所测水位离小于安全距离的时候会触发蜂鸣器和LED同时对用户进行警示。4.5按键子程序设计由于在不同的环境下所需要的报警距离也不太一样,因此按键子程序主要是让用户根据测量环境和目标自主设置报警距离。按键子程序有两个功能独立的按键和一个复用功能的设置按键,独立按键的功能分别是对当前所设定的安全值进行更改(增大或者减小);复用功能的设置按键用来切换实时安全距离设置界面的增大和减小,并对更改后的安全距离进行保存。按键子程序流程图如图4.6所示。是否是否图4.5按键子程序流程图Figure4.5Keysubroutineflowchart系统上电后会先进行初始化设置,并将初始化设置的值10cm保存在RAM中。当重新更改安全距离时,先从RAM中读取当前所设定的值,然后根据增大或减小按键进行更改并即时更新保存到RAM中。此外,为了消除抖动引起的按键异常,该程序中通过延时判断的方式消除该因素引起的误差。4.6主程序设计主程序的设计主要是从各模块子程序的调用考虑。通过合理的调用各模块子程序使得测水位系统按照预期目标进行正常的工作。主程序流程图如图所示。是否是否图4.6主程序流程图Figure4.6Mainprogramflowchart4.7本章小结本章采用C语言以及KEIL开发工具对测水位系统的软件部分进行研发。在各个子模块程序以及主程序的实现的过程中不仅对C语言以及KEIL软件有了更进一步的学习,同时也加深了对测水位系统各个子模块的理解与应用。第五章系统集成与调试前面分别对测水位系统的元器件选型以及软硬件进行设计与实现,接下来主要对已完成的测水位系统进行集成与调试。本系统的研发首先分别对各个子模块进行设计与实现,最后将各个子模块以单片机为处理器进行集成;同时,调试环节也是在各个子模块完成的时候先进行调试,最后对集成后的系统进行整体联调。5.1系统构成及功能介绍测水位系统由STC89C52、超声波模块、LCD1602模块、蜂鸣器、LED、按键、继电器以及其它元器件集成,测水位系统实物如图5.1所示:图5.1测水位系统实物图Figure5.1Physicaldrawingofwaterlevelmeasuringsystem(1)STC89C52为测水位系统核心,负责各模块的合理调用;(2)蜂鸣器和LED用于危险报警提示;(3)超声模块配合定时器为距离的测量提供所需要的变量值;(4)LCD1602以及按键模块主要用于测水位结果的显示以及安全距离设置操作过程的显示;(5)电源模块负责供给整个测水位系统的电源;5.2系统调试调试是所有系统研发之后必不可少的一个过程,可以有效地帮助研发人员发现并调整系统中所出现的失误。系统调试有很多种方法,常用的分类有软硬件调试以及模块调试和系统联调。本系统采用单个模块调试和系统联调的方式进行,调试过程中主要使用的工具有以下几种。一是硬件调试类工具,主要有示波器、万用表等常用工具。主要是对各子模块的硬件电路进行调试,确保系统硬件的正确性。二是软件类调试工具,主要是KEIL。主要对各子模块的程序以及最后整个系统程序进行调试,KEIL还可直接生成.hex文件烧录进STC89C52配合硬件进行各个模块功能的调试。5.2.1子模块测试 子模块测试主要是对超声波子模块、显示子模块、按键子模块以及报警子模块在实现过程中分别进行调试。 (1)超声波子模块的调试:超声波子模块实现之后首先对HC-SR04与STC89C52的引脚连接进行检查。 (2)显示子模块和按键子模块的调试:显示模块实现首先对LCD1602、按键与STC89C52的引脚连接进行检查,接着对按键电路进行有无虚焊、脱焊等的检查,然后就可以配合超声波子模块将设计的程序通过KEIL生成.hex文件烧录进STC89C52进行调试,看是否能正常显示测水位值以及按下相应的按键时显示内容是否随之发生相应的改变。 (3)报警子模块的调试:报警子模块实现后首先对蜂鸣器、LED与STC89C52的引脚连接进行检查,接着对蜂鸣器电路和LED电路进行有无虚焊、脱焊等的检查。然后配合以上完成的各模块进行小于报警距离的测水位调试,主要看当所测水位离小于报警距离时蜂鸣器和LED是否正常警示。5.2.2系统联调各子模块的调试完成之后对测水位系统进行系统联调。将各模块子程序整合到一起,通过KEIL进行编译并生成.hex文件烧录到测水位系统的STC89C52中。软件编译图见5.2所示:图5.2软件编译图Figure5.2Softwarecompilationdiagram接着对测水位系统的测水位功能、按键设置报警距离功能、测水位结果实时显示功能、系统联调结果如图5.3所示。图5.3系统联调结果Figure5.3Systemjointcommissioningresults如上图所示,从上到下是调整高限位,同时移动模拟水位障碍物测水位显示的结果。可对应不同的测水位场合进行调整。本系统设置的测量距离是2-300cm,在该距离范围内可进行任意测试,接下来以报警距离为3.5-20cm对测水位系统分别就报警距离以内、正常测水位范围内以及超出测水位范围分别进行试验。表5.1测试结果Table5.1Temperaturevariationofsoundvelocity实际距离结果显示危险警示误差1cmAlarm!蜂鸣器响、LED亮5cm5无010cm10无035cm超过限制!蜂鸣器响、LED亮5.3遇到问题及解决思路调试的过程中不可避免的会遇到各种各样的问题,而这些实际问题难以使用以往学习的理论知识所解决,但正是这些问题锻炼了实践能力。在测水位系统调试时所出现的两个主要问题及解决思路如下。一是软件程序调试所出现的问题。KEIL开发工具的设计可以说是非常的人性化,但是仍会不可避免的遇到一些程序逻辑等出错的问题。因此在软件程序设计与实现的过程中采用先实现各个子模块的功能、然后对整个系统的程序进行融合。通过该方式不但可以清晰地知道具体哪个子模块的程序有问题,还可以快速找到出问题的地方在哪,有效的提高的测水位系统程序实现的效率,也为后期调试找错误并修改提供了方便。二是如何对测水位系统进行调试的问题。调试时依旧采取先针对各个子模块的单一功能进行调试,然后对整个测水位系统进行联调。联调的时候预先设计各个不同的测试情景,每个情景所侧重的测试功能有所不同,所有情景的功能测试覆盖整个测水位系统所有的功能。该方式不仅有效测试了各个子模块的功能,还可以验证该测水位系统的普遍适用性。第六章总结和展望6.1总结本文进行了基于单片机的水库水位监测系统的研发。根据设计内容可分为硬件部分的设计与实现、软件部分的设计与实现以及测水位系统实物的制作。最后经过全面的测试,该测水位系统在2-30cm(可调整范围)中可以实现高效测水位,达到了预期设计目的。硬件部分主要是利用单片机、模电等基础知识以及AltiumDesigner工具包括对超声波模块电路、危险警示电路以及显示模块电路等的设计与实现。软件部分主要是采用C语言以及KEIL开发工具对超声波子程序、显示子程序、按键子程序、计算子程序以及主程序等的设计与实现。实物制作主要通过实际的元器件、焊接工具以及程序烧录等实现测水位系统,并达到预期的实际测水位要求。通过上面所述三方面的主要内容,本测水位系统在实际测水位使用中能有效使用,并可根据使用者设置的安全距离通过蜂鸣器和LED及时进行警示。6.2展望本文所研发的测水位系统虽然达到了预期的设想,但是仍有很大的扩展空间,日后将着重从以下几个方面进行继续研发:一是该测水位系统的人机交互不够完善,下一步可以增加语音功能进行人机交互,使得测水位系统更加智能化。二是信息管理方面,该测水位系统对所测水位离不能够实现有效保存以及统计,后续的研发中可以为测水位系统增加无线通信对所测水位离值进行采集并发送至上位机信息系统进行数据的保存以及分析处理,增加测水位系统的适用范围。三是实际应用方面,本次做到的仅仅是一个内部电路板,还需要一个合适的保护外壳进行安装后才能投入使用。由于安装位置可以做到无接触测量,相对的需求条件也可以做到减少。参考文献[1]张安东,基于STM32单片机的水库水位监测系统设计与实现[J].铜陵职业技术学院学报,2020,19(03):51-53+58.[2]吴恩仪,陈凌君.基于STC89C52单片机的水库水位监测系统设计[J].南方农机,2020,51(06):124.[3]霍海波.基于单片机的水库水位监测系统设计[J].电子技术与软件工程,2019(14):246-247.[4]罗紫阳,陈鹏.基于单片机控制的水库水位监测系统设计与实现[J].数字通信世界,2019(06):91.[5]李倩.基于单片机的水库水位监测系统设计与实现[J].无线互联科技,2018,15(24):36-38.[6]周晴.基于单片机的超声波测水位仪系统设计[J].电脑知识与技术,2018,14(35):216-217.[7]周建国,彭志雄.基于单片机的水库水位监测系统设计[J].山东工业技术,2016(06):232.[8]姚存治,王大文.基于AT89S52单片机的水库水位监测系统设计[J].郑州铁路职业技术学院学报,2015,27(04):24-27.[9]王香梅,薛英龙.基于AT89C51单片机的水库水位监测系统设计[J].新技术新工艺,2015(05):35-38.[10]张威,石友义,唐鑫鑫,张继.基于51单片机的简易水库水位监测系统设计[J].信息通信,2015(05):62-64.[11]周全,邹华东,刘领.基于STC单片机的水库水位监测系统设计[J].六盘水师范学院学报,2014,26(03):63-66.[12]邓胡滨,陈梅,周洁,黄德昌.单片机原理及应用技术[M].人民邮电出版社,201412.[13]吴恩仪,陈凌君.基于STC89C52单片机的超声波测距系统设计[J]:南方农机,2020-03-28.[14]胡林林,付龙.基于STC89C52单片机的超声波测距设计[J].仪表技术,2018-02-15.[15]李秀忠.PLC在供水控制系统中的应用[J].煤矿机电,2005-08-30.[16]TianhuWang,TianyuChen,YueHu,XiaoyongZhou,NaipingSong,.DesignofintelligentLEDlightingsystemsbasedonSTC89C52microcomputer[J].Optik,2018-04-26.[17]ShanchaoJiang,JiangShanchao,WangLiming,YangBengong.Designofmulti-parameterauto-detectinginstrumentsystemforhydrologicalholepumpingtestbasedonsingle-chipmicrocomputer,Journalofphysics[J].Conferenceseries,2020-09-01.[18]RaaziaSyeedah,DarAbdulQayoom..InsightsintothehydrogeologicalframeworkoftheNWHimalayanKarewas(India)[J].EnvironmentalChallenges,2021(prepublish).[19]KangSanggoo,DavidDafnikSarilKumar,YangMuil,YuYin,Chao,Ham,Suyun.Energy-EfficientUltrasonicWaterLevelDetectionSystemwithDual-TargetMonitoring[J].Sensors,2021,21(6).[20]Dao-bing,Zhang,Jin,Jiang,Jia-huaZhang.TheStabilityofUpperBoundAnalysisofSoftRockTunnelFacesUnderDifferentUndergroundWaterLevels[J].GeotechnicalandGeologicalEngineering.2021(prepublish).附录附录1实际程序附录1.1端口定义#include<reg52.h> //调用单片机头文件#defineucharunsignedchar//无符号字符型宏定义 变量范围0~255#defineuintunsignedint //无符号整型宏定义 变量范围0~65535#include<intrins.h>sbitc_send=P3^3; //超声波发射sbitc_recive=P3^2; //超声波接收//这三个引脚参考资料sbitrs=P1^0; //1602数据/命令选择引脚H:数据 L:命令sbitrw=P1^1; //1602读写引脚 H:数据寄存器 L:指令寄存器sbite=P1^2; //1602使能引脚下降沿触发ucharcodetable_num[]="0123456789abcdefg";sbitbeep=P1^6;//蜂鸣器IO口定义sbitdianji=P1^7;//电机IO口定义bitflag_300ms;longdistance; //距离uintset_gh,set_gl; //距离bitflag_csb_juli;//超声波超出量程uintflag_time0;//用来保存定时器0的时候的//按键的IO变量的定义ucharkey_can; //按键值的变量ucharmenu_1;//菜单设计的变量uchara_a;bitflag_lj_en; //按键连加使能bitflag_lj_3_en; //按键连3次连加后使能加的数就越大了ucharkey_time,key_value;//用做连加的中间变量bitkey_500ms;uintshuiwei;uintsw_jz;//基准水位附录1.2LCD1602液晶显示相关程序voidwrite_com(ucharcom){ e=0; rs=0; rw=0; P0=com; delay_uint(25); e=1; delay_uint(100); e=0;}voidwrite_data(uchardat){ e=0; rs=1; rw=0; P0=dat; delay_uint(25); e=1; delay_uint(100); e=0; }voidwrite_string(ucharhang,ucharadd,uchar*p){ if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); while(1) { if(*p=='\0')break; write_data(*p); p++; } }voidwrite_sfm3(ucharhang,ucharadd,uintdate){ if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); write_data(0x30+date/100%10); write_data('.'); write_data(0x30+date/10%10); write_data(0x30+date%10); write_data('m');}voidinit_1602()//1602初始化{ write_com(0x38); write_com(0x0c); write_com(0x06); delay_uint(1000); write_string(1,0,"Gaodu:.m"); write_string(2,0,"H:00.0mL:00.0m"); write_sfm3(2,2,set_gh); //显示设置的高水位 write_sfm3(2,10,set_gl); //显示设置的低水位}附录1.3按键设置程序ucharkey_can; //按键值voidkey() //独立按键程序{ staticucharkey_new; key_can=20;//按键值还原 P3|=0xf0; if(key_500ms==1) //连加 { key_500ms=0; key_new=1; } if((P3&0xf0)!=0xf0) //按键按下 { delay_1ms(1); //按键消抖动 if(((P3&0xf0)!=0xf0)&&(key_new==1)) { //确认是按键按下 key_new=0; switch(P3&0xf0) { case0x70:key_can=1;break; //得到k2键值 case0xb0:key_can=2;break; //得到k3键值 case0xd0:key_can=3;break; //得到k4键值 } } flag_lj_en=1; //连加使能 } else { if(key_new==0) { key_new=1; flag_lj_en=0; //关闭连加使能 flag_lj_3_en=0; //关闭3秒后使能 key_value=0; //清零 key_time=0; } } }voidkey_with(){ if(menu_1==0) { if((shuiwei>set_gl)&&(shuiwei<set_gh))//正常水位 { if(key_can==2) dianji=0;//手动进水 if(key_can==3) dianji=1;//手动停止进水 } } if(key_can==1) //设置键 { menu_1++; if(menu_1>2) { menu_1=0; init_1602();//1602初始化 } if(menu_1==3)//显示水位 { write_string(1,0,"juli:.m"); write_string(2,0,"Jizhun:m"); } } if(menu_1==1) //设置高水位 { if(key_can==2) { if(flag_lj_3_en==0) set_gh++; //加1 else set_gh+=10; //加10 if(set_gh>500) set_gh=500; } if(key_can==3) { if(flag_lj_3_en==0) set_gh--; //减1 else set_gh-=10; //按键按下未松开自动减三次之后每次自动减10 if(set_gh<=set_gl) set_gh=set_gl+1; } write_sfm3(2,2,set_gh); //显示设置的高水位 write_sfm3(2,10,set_gl); //显示设置的低水位 write_com(0x80+0x40+2);//将光标显示地址 write_com(0x0f);//显示光标并且闪烁 } if(menu_1==2) //设置低水位 { if(key_can==2) { if(flag_lj_3_en==0) set_gl++; //加1 else set_gl+=10; //加10 if(set_gl>set_gh) set_gl=set_gh-1; } if(key_can==3) { if(flag_lj_3_en==0) set_gl--; //减1 else set_gl-=10; //按键按下未松开自动减三次之后每次自动减10 if(set_gl<=10) set_gl=10; } write_sfm3(2,2,set_gh); //显示设置的高水位 write_sfm3(2,10,set_gl); //显示设置的低水位 write_com(0x80+0x40+10);//将光标显示地址 write_com(0x0f);//显示光标并且闪烁 } if(menu_1==3) { if(distance!=888) { if(key_can==2) sw_jz=distance; if(key_can==3) sw_jz=distance; } write_sfm3(2,8,sw_jz); //显示基准水位 write_com
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 母婴护理学行业标准
- 消化内科护理中的健康教育
- 烟草企业应急管理指南
- 电梯运行试验记录(完整版)
- (完整版)UASB反应器施工方案(专家论证版)
- 2026年室内设计师考试题库及答案
- 2026年公积金归集专干经典试题及答案
- 专科护士培养方案
- 护理急救与重症监护
- 早期康复护理的国际交流
- 2024-2025学年辽宁省丹东市第十九中学七年级下学期期中考试数学试题
- 幼儿园中班数学课《认识数字1-10》课件
- 2024广东海洋大学教师招聘考试真题及答案
- 劳技课编手链课件
- 猫宁供应商入驻考试答案50题苏宁考试题库
- 2025年人教版七年级数学下册期中复习题(基础版)(范围:相交线与平行线、实数、平面直角坐标系)解析版
- 武侯祠历史讲解
- 推进信息化建设“十五五”规划-(2025-2025年)-根据学校十五五
- 2025年高考数学全国一卷试题真题及答案详解(精校打印)
- 2025年中考一模卷(贵州)历史试题含答案解析
- 商业购物中心广告氛围形象管理规范课件分享
评论
0/150
提交评论