1、题目(中 文):基于单片机的超声波水位控制器的设计(英 文):The Design of Ultrasonic Water Level Controller Based on MCU 目 录绪论11 系统总体方案设计42 超声波和超声波传感器62.1 超声波62.1.1 定义62.1.2 超声波的主要参数62.1.3 超声波的特性62.1.4 超声波的特点62.2 超声波传感器的主要应用72.3 超声波传感器测距原理72.3.1 超声波传感器72.3.2 超声波传感器的性能指标72.3.3 超声波传感器的结构82.3.4 声波测距原理93 各单元硬件电路设计103.1 主控制器芯片AT89C5
2、2概述103.2 最小工作系统113.3 蜂鸣器报警电路原理123.4电机驱动电路原理133.5 按键功能电路原理133.6 液晶LM016L显示功能电路144 系统程序的设计154.1 程序语言介绍154.2 程序设计步骤154.3 软件的安全冗余设置154.4 程序流程图165仿真测试185.1 测试过程185.2 仿真电路检测185.3 检测遇到的问题及解决方案185.4 功能实现19结论20参考文献21附录一 系统protues仿真图:22附录二 程序源代码23致 谢29插图索引图1-1方案一 方框图4图1-2方案二 方框图4图2-1 超声波传感器工作原理9图3-1 AT89C52的引
3、脚图说明10图3-2 最小系统原理图11图3-3复位电路11图3-4晶振电路12图3-5蜂鸣器报警功能电路12图3-6电机驱动电路13图3-7按键功能电路13图3-8液晶LM016L显示电路图14图4-1程序总体流程图16图4-2 PWM按键调整子程序流程图17图5-1 低水位仿真示意图19图5-2 正常水位仿真示意图20基于单片机的超声波水位控制器的设计摘 要蓄水装置在日常生活和工业应用中发挥着重要的作用。该设计是针对水位检测和控制的实际问题开发的一种基于单片机的超声波水位控制器,深入讨论了用超声波作为信号源进行液位检测的可行性以及优越性,同时实现了水位的自动控制这一功能。该系统使用超声波水
4、位传感器对水位进行检测然后将检测到的信号传给单片机AT89C52进行处理,从而实现电机的调速、蜂鸣器鸣笛报警等功能。最后,使用LM016L液晶显示屏显示当前水位的状态以及电动机的转速情况。并且可以通过使用手动按键调整PWM(Pulse Width Modulation )来实现电机调速等功能。本系统适应在不同的用水场合下的需要,能够节省工作时间,提高了系统整体的工作效率,实现水位的自动控制。【关键词】单片机控制 水位检测 LM016L显示 PWM电机调速The design of ultrasonic water level controllerbased on MCUAbstractStor
5、age devices play an important role in daily life and industrial applications. The design for the water level detection and control of practical problems developed a ultrasonic water level controller based on single-chip microcomputer, and discussed how to use ultrasound as a source for the feasibili
6、ty and superiority of liquid level detection, and has realized the automatic control of water level at the same time.The system use ultrasonic water level sensor to test the water and will detect the signals to single chip microcomputer AT89C52 , so as to realize the compilation control of motor spe
7、ed, Sirens sounded buzzer alarm and so on. Finally, current levels and motor speed are shown with LM016L LCD screen in this system. This system realizes the buzzer low level alarm, low whistle warning level automatic processing, normal level alarm or normal water buzzer sirens and manual buttons Pul
8、se Width Modulation. This system realizes the automatic control in different water situation of water to save the working time, speed, and also improves the overall efficiency of water level.【Key words】SCM control Water detection LM016L display PWM motor speed绪论1 研究的背景和意义 单片机超声波水位控制器在很多场合有广泛的应用,诸如工业
9、自动控制,建筑工程测量和水面高度测量等方面。与激光测距、微波测距等测量方法相比,由于超声波在空气中传播速度远远小于光线和无线电波,时间测量精度的要求也远小于激光测距、微波测距等,因而超声波水位仪电路结构简单,造价低廉,容易设计,且超声波在传播过程中不易受烟雾、空气能见度等因素的影响,在各个场合均得到广泛应用。然而超声波水位仪在实际应用中也有很多局限性会对测量数据的精确度造成一定的影响。诸如,环境温度、风速等,使其无法达到要求1。如何解决这些问题,提高超声波水位仪的精度,具有较大的现实意义。近年来,随着工业的发展,计算机、微电子、传感器等高新技术的应用和研究,水位仪表的研制得到了长足的发展,以适
10、应越来越高的应用要求。在目前市场上,按测量水位的感应元件与被测液体是否接触,水位仪表可以分为接触型和非接触型两大类。接触型水位测量主要有:人工检尺法、浮子测量装置、伺服式水位计、电容式水位计以及磁致伸缩水位计等。它们的共同点是测量的感应元件与被测液体接触,即都存在着与被测液体相接触的测量部件且多数带有可动部件。因此存在一定的磨损且容易被液体玷污或粘住,尤其是杆式结构装置,还需有较大的安装空间,不方便安装和检修。非接触型水位测量主要有微波雷达水位计、射线水位计以及激光水位计等。顾名思义,这类测量仪表的共同特点是测量的感应元件与被测液体不接触。因此测量部件不受被测介质影响,也不影响被测介质,因而其
11、适用范围较为广泛,可用于接触型测量仪表不能满足的特殊场合,如粘度高、腐蚀性强、污染性强、易结晶的介质。超声波水位测量计就属于非接触型水位测量的一种,所以它也有不受被测介质影响,不影响被测介质,能适应粘度高、腐蚀性强、污染性强、易结晶、高温、 高压、低温、低压、有辐射性、毒性、易挥发易爆等特殊介质的测量的特点,能适应的范围比其它的测量手段更广泛2。这次对超声波水位控制器的设计获得了具有很大的成果和意义,在这个科学技术是第一生产力的时代,应用科学技术去解决生活中和工作的困难变得具有更高的价值。在设计中,我加深了对超声波的认识,对它的原理掌握的更好了。此外我认识到单片机在各方面都有很大的应用潜能,在
12、自动控制领域它更是发挥了不可替代的作用。本设计利用超声波实现水位的测量,检测方便,易于实时控制,达到了工业的要求,因此具有实际的意义和广泛的应用前景。2 国内外研究现状3 课题研究的目的和主要内容进口的水位仪功能齐全,精度较高,但是价格比较昂贵且维修不是很方便。对于小型用户来说,不是理想之选。而国内自行研制生产的水位仪价格相对便宜,但精度不高,功能相对单一。为了设计出价格便宜,精度较高的超声波水位仪,本设计采用AT89C52 为核心的单片机电路,同时使用双探头的方式发射和接收声波,基于超声波测距的原理,算出水位的高度。由于在户外测距,受到天气的干扰因素比较多,因此会考虑外部因素造成的误差。除此
13、之外,也可以使用数字平均滤波的方式来提高数据的精确度。因为超声波在空气中的传播速度大约为 334m/s(常温下),在同一介质中其传播速度相对恒定,与激光的速度(3108m/s)相比,它的传播速度要慢得多,所以对超声波信号的处较为容易。因此,这也体现了超声波测距的独到之处,加之其成本较低,所以超声波是比较理想的信号源。超声波水位测量方法与其它的水位测量方法相比不易受光线、被测对象颜色等因素影响,利用这样的特性,一般将仪器放置于黑暗、有灰尘、烟雾、电磁干扰、有毒等恶劣的环境之中。同时超声波探头具有结构简单、价格便宜、体积小、信号处理可靠等特点。综合而言,超声波水位仪具有非接触、精度较高、实时测量、
14、可靠性强等优点,较为适合国内市场。本篇论文研究的主要内容是通过对其蓄水容器水位的控制对外供水,以满足需要。该系统使用超声波水位传感器对水位进行检测并将检测到的信号传给单片机AT89C52进行处理,并采用C语言编写控制程序,从而实现电机的调速、蜂鸣器鸣笛报警等功能。最后,使用LM016L液晶屏显示当前水位状态以及电动机的转速。该系统实现了过低水位蜂鸣器鸣笛报警、过低警戒水位自动处理、正常水位蜂鸣器鸣笛报警以及正常水位处理、手动按键调整PWM(Pulse Width Modulation)电机调速等功能。本系统适应在不同的用水场合下的用水速度需要,节省工作时间,提高了整体工作的效率,实现水位的自动
15、控制。1 系统总体方案设计方案一:本方案采用555电路进行控制,即当水位探测传感器探测到低水位时送一个低于1/3VCC的低电平给NE555芯片,555的输出即为高电平驱动水泵加水;当在正常的水位时候,送给NE555为1/3VCC-2/3VCC的电平,即保持前一个水泵不加水的状态;当水位居于高水位时,给NE555电路一个高电平,这时NE555输出电平翻转为低电平,不能驱动水泵,水泵停止加水。图1-1方案一方框图方案二:本方案采用单片机AT89C52作为我们的控制芯片,主要工作过程是当储水容器中的水在低水位时,超声波水位传感器将信号送给单片机,然后单片机驱动电机加水和蜂鸣器报警;当水位在正常范围内
16、时,电机不动,蜂鸣器不报警。图1-2方案二方框图方案论证:第一种方案设计使用起来比较方便也简单,不用编程等软件方面的设计,但是没有稳压电路,使输入NE555芯片的电平十分不稳定,容易发生误判水位引起混乱的情况,且NE555电路只有一个输出端,不能连接显示系统,所以不能完成显示功能。另外,此方案不能精确测量出液位高度,铜丝长时间浸泡在水中表面会发生氧化,长时间会是系统的误判率升高。第二种方案中使用了单片机芯片和超声波传感器,单片机控制和超声波测距技术是信息时代用于精密测量的技术。此系统使用过程中采用稳压电路能够准确地把输入的电平送给单片机不会产生误判的情况,由于AT89C52单片机有四端口32引
17、脚能够非常方便地设计显示系统。综上,我们已经清楚地看到了两种方案的优劣,要能够很好地完成本次设计的各个指标和达到设计的目的,我选择第二种方案作为我的设计方案。2 超声波和超声波传感器2.1 超声波2.1.1 定义科学家们将每秒钟振动的次数称为声音的频率,它的单位是赫兹。我们人类耳朵能听到的声波频率为2020000赫兹。当声波的振动频率大于20000赫兹或小于20赫兹时,我们便听不见了。因此,我们把频率高于20000赫兹的声波称为“超声波”4。2.1.2 超声波的主要参数2.1.3 超声波的特性 (1)2.1.4 超声波的特点(1)超声波在传播时,方向性强,能量易于集中。 (2)超声波能在各种不
18、同媒质中传播,且可传播足够远的距离。 (3)超声波与传声媒质的相互作用适中,易于携带有关传声媒质状态的信息(诊断或对传声媒质产生效应)。超声波是一种波动形式,它可以作为探测与负载信息的载体或媒介(如B超等用作诊断);超声波同时又是一种能量形式,当其强度超过一定值时,它就可以通过与传播超声波的媒质的相互作用,去影响,改变以致破坏后者的状态,性质及结构(用作治疗)6。2.2 超声波传感器的主要应用超声波传感技术应用在生产实践的不同方面,而医学应用是其最主要的应用之一,下面以医学为例子说明超声波传感技术的应用。超声波在医学上的应用主要是诊断疾病,它已经成为了临床医学中不可缺少的诊断方法。超声波诊断的
19、优点是:对受检者无痛苦、无损害、方法简便、显像清晰、诊断的准确率高等。因而推广容易,受到医务工作者和患者的欢迎。超声波诊断可以基于不同的医学原理,我们来看看其中有代表性的一种所谓的A型方法。这个方法是利用超声波的反射。当超声波在人体组织中传播遇到两层声阻抗不同的介质界面时,在该界面就产生反射回声。每遇到一个反射面时,回声在示波器的屏幕上显示出来,而两个界面的阻抗差值也决定了回声的振幅的高低。 在工业方面,超声波的典型应用是对金属的无损探伤和超声波测厚两种。过去,许多技术因为无法探测到物体组织内部而受到阻碍,超声波传感技术的出现改变了这种状况。当然更多的超声波传感器是固定地安装在不同的装置上,“
20、悄无声息”地探测人们所需要的信号。在未来的应用中,超声波将与信息技术、新材料技术结合起来,将出现更多的智能化、高灵敏度的超声波传感器7。2.3 超声波传感器测距原理2.3.1 超声波传感器超声波传感器是利用超声波的特性研制而成的传感器。超声波是一种振动频率高于声波的机械波,由换能晶片在电压的激励下发生振动产生的,它具有频率高、波长短、绕射现象小,特别是方向性好、能够成为射线而定向传播等特点。超声波对液体、固体的穿透本领很大,尤其是在阳光不透明的固体中,它可穿透几十米的深度。超声波碰到杂质或分界面会产生显著反射形成反射成回波,碰到活动物体能产生多普勒效应。因此超声波检测广泛应用在工业、国防、生物
21、医学等方面。超声波传感器采用T/R40-16 型超声波传感器。T/R40-16 为收发分体式压电陶瓷超声波传感器,T40-16 为发射探头,能发射中心频率为40KHz 的超声波;R40-16 为接收探头,可以接收中心频率为40KHz 的超声波并转换为电信号。以超声波作为检测手段,必须产生超声波和接收超声波。完成这种功能的装置就是超声波传感器,习惯上称为超声换能器,或者超声探头。2.3.2 超声波传感器的性能指标超声探头的核心是其塑料外套或者金属外套中的一块压电晶片8。构成晶片的材料可以有许多种。晶片的大小,如直径和厚度也各不相同,因此每个探头的性能是不同的,我们使用前必须预先了解它的性能。超声
22、波传感器的主要性能指标包括: (1)工作频率。工作频率就是压电晶片的共振频率。当加到它两端的交流电压的频率和晶片的共振频率相等时,输出的能量最大,灵敏度也最高。中心频率为40KHZ。(2)工作温度。由于的居里点一般比较高,特别是诊断用超声波探头使用功率较小,所以工作温度比较低,可以长时间地工作而不会失效。医疗用的超声探头的温度比较高,需要单独的制冷设备。 (3)灵敏度。主要取决于制造晶片本身。机电耦合系数大,灵敏度高;反之,灵敏度低。(4)测量范围和精度。测量范围约为0.15m3.5m,测量精度为1.5%。2.3.3 超声波传感器的结构超声波探头主要由压电晶片组成,既可以发射超声波,也可以接收
23、超声波。小功率超声探头多作探测作用。它有许多不同的结构,直探头、斜探头、表面波探头、兰姆波探头、双探头等。2.3.4 声波测距原理 S=340t/2L=CT(2.2)由于超声波易于定向发射、方向性好、强度易控制、与被测量物体不需要直接接触的优点,是作为液体高度测量的理想手段10。图2-1为超声波传感器工作原理。图2-1 超声波传感器工作原理3 各单元硬件电路设计3.1 主控制器芯片AT89C52概述 AT89C52是一个低电压,高性能CMOS8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度
24、、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。主要性能:1、兼容MCS51指令系统2、8kB可反复擦写(大于1000次)Flash ROM;3、32个双向I/O口;4、256x8bit内部RAM;5、3个16位可编程定时/计数器中断;6、时钟频率0-24MHz;7、2个串行中断,可编程UART串行通道;8、2个外部中断源,共8个中断源;9、2个读写中断口线,3级加密位;10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产
25、品的需求11。图3-1 AT89C52的引脚图说明3.2 最小工作系统图3-2 最小系统原理图此图是单片机工作的最小系统原理图,在这个电路中又可以分为复位电路和晶振电路,如图3-4和图3-5所示:图3-3复位电路 复位电路可以分为上电复位和手动按键复位两种。在系统上电的一瞬间单片机上电复位,原理是利用电容两端的电压不能突变,在一上电的瞬间电容好比短路,所以加在第九脚RST的电平是高电平,虽然时间很短,但是足以让单片机系统复位。手动按键复位的原理是,在系统正常工作的过程中可以手动触动按键使单片机复位。具体原理是按下S1按键,因此5V电压经过一个200欧姆的电阻分压后加到系统的RST上,手动按键按
26、下到抬起的过程足以使系统复位。图3-4晶振电路对于单片机系统而言,晶振电路就好比是人的心脏一样,是一个跳动的动力来源,18,19号引脚接的是11.0592M的晶振。 3.3 蜂鸣器报警电路原理图3-5蜂鸣器报警功能电路 蜂鸣器报警功能电路使用的是三极管8550驱动,三极管8550是PNP三极管,射极接电源+5V,基极通过一个电阻接到P1.0口,集电极接蜂鸣器,当P1.0为高电平时,三极管截止,蜂鸣器不响,当P1.0为低电平时,三极管导通,蜂鸣器发出响声。3.4电机驱动电路原理 图3-6电机驱动电路 电机驱动电路和蜂鸣器的电路基本相同,同样使用8550三极管驱动,三极管的基极接P1.1,当P1.
27、1为高电平时,电机不转动,当P1.1为低电平时,电机转动。 3.5 按键功能电路原理图3-7按键功能电路按键功能电路里面有两种按键,一种按键是模仿容器水位开关的功能按钮,一种是电机PWM输出的调整按钮。原理是通过一个10k的电阻接到+5v电源线上,当按键没有按下时,按键没有导通,所以没有电流,但对于连到引脚上的那一端来讲是高电平。当按键按下时,因为电路导通,有电流流过,和单片机引脚接触的那一端接地,所以是低电平。因此能检测到信号的变化,交给程序处理后做出相关的动作。3.6 液晶LM016L显示功能电路图3-8液晶LM016L显示电路图LM016L液晶模块采用HD44780控制器,hd44780
28、具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。 4 系统程序的设计4.1 程序语言介绍C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的
29、操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。因此广泛地移植到了各类各型计算机上,形成了多种版本的C语言10。4.2 程序设计步骤 程序设计就是用计算机所能接受的语言把所需解决问题的步骤逐一描述出来,也就是编制计算机的程序,在设计应用系统时,软件的编制是重要环节。软件的质量直接影响整个系统功能的实现。应用程序的设计因系统而异,但程序设计总是有共同特点及其规律的。在编写程序时,采取如下几个步骤:(1)分析问题,明确所要解决问题的要求,将软件分成若干个相对独立的部分。根据功能关系和时序关系,设计出合理的软件总体结
30、构。(2)定程序框图,即根据所选择的计算方法制定框图,这不仅是程序设计的一个重要组成,而且是决定成败的关键部分。(3)合理分配系统资源,包括定时器/计数器、中断、堆栈等。分配好单元后,进一步将程序框图画成详细的操作流程。(4)根据程序的流程图和指令系统编写出程序。注意在程序的有关位置处写上功能注释,提高程序的可读性。(5)程序调试。通过编辑软件编辑出的源程序,必须用编译程序汇编后生成目标代码。如果源程序有语法错误,需修改源文件后继续编译,直到无语法错误为止,然后利用目标代码通过仿真器进行程序调试,排除设计和编程中的错误直到成功。(6)程序优化。使各功能程序模块化,子程序化,缩短程序的长度,加快
31、运算速度和节省数据存储空间,减少程序执行的时间。4.3 软件的安全冗余设置因为是水位自动控制系统,而且用到了电动机和调速,所以我们必须考虑系统的安全性能,在电机转动的时候去调动电机的转速是很危险的,所以我们要求要在电机停止的情况下去调节电机的速度。这样对人和对电机、整个系统都是必须的。所以在软件中我们做了安全的冗余设置,当电机在转动时按下电机调速键,电机会立即停止。4.4 程序流程图 当系统按下电源开关,且确定有电源存在时候,系统进入初始化状态,灯会闪烁、蜂鸣器响一声、液晶初始化,初始化完以后,进入PWM按键调速选择,如有按键按下,进入PWM按键调整子程序,若没有,进入主程序等待状态,检测容器
32、水位的液位状态,当模拟液位低水位按键按下后,电机以显示速度启动,模拟抽水过程,此时蜂鸣器报警,灯闪烁,且液晶会显示水位过低状态。当模拟水位正常按键按下后,电机停止转动,蜂鸣器报警、液晶显示当前正常状态,然后程序进入循环,继续检测模拟水位状态按键。具体流程图的如图4-1所示。图4-1程序总体流程图在进入PWM按键子程序后,首先要做的事是先检测是否确定有按键按下,这个过程延时15ms,在确认有按键按下后,判断是哪一个按键按下,如果是速度加按键按下,电机不管在什么状态,都是首先停止,然后是调整PWM调制时间,液晶屏显示速度增加,按下减按键,也是先停止电机,调整PWM调制时间,液晶屏显示速度减少。具体
33、流程图如图4-2所示。图4-2 PWM按键调整子程序流程图5仿真测试5.1 测试过程本系统的测试为仿真和软件测试部分,由于时间关系未做硬件检测。经过初步的分析设计后,在制作仿真电路的同时,检测也在穿插进行。这样有利于问题的分析和解决,不会造成问题的积累,而且不会因为一个小问题而进行整体电路的检查,从而可以节约大量的调试时间。软件编程中,首先编写单元模块的程序,并且在仿真电路上检测问题,即可以做系统整体程序的测试。仿真测试是最重要的一部分,同时也是本设计成功的关键。5.2 仿真电路检测开启后观察电路工作性能,如不能正常工作,按原理图分模块进行电路检测,是否有连线问题;如连线正常,在按信号传递的方
34、向逐级检测,找出问题的一级,并向该级的上级进行检测,直到将故障排除。对于连线有问题的情况最好的办法是用protues里面的一个电压表接到大的回路上面如果指针显示电压很大,说明我们的线路连接是正常的。5.3 检测遇到的问题及解决方案(一) 元件问题解决方案:1. LED灯通电不亮。主要查看是否把LED灯的阴阳极接反。2.蜂鸣器不响。一是要查看蜂鸣器是否接反。二是看三极管8550驱动管是否接反,具体的检测方法是首先看8550射极是否为高电压,如果为高电压继续,脱离单片机给基极一个低电平,此时蜂鸣器应该会响,但是若不响,电压档测量射极是否为低电平,若是,则需要具体找一个6v直流电串上一个10k的电阻
35、进行直接通电,看蜂鸣器连接是否有问题。3.电机的原理和蜂鸣器的驱动原理基本一样。方法同上。4.LM016L有无显示。对于LM016L液晶有一个背光电源还有一个对比度的调节电阻,我们选用的是2k7的,一般选用10k的可调电阻,来选择比较适合的液晶显示对比度。当然液晶的使用还是很有技巧性的,应该先写一个液晶的小功能子程序把液晶测试好。液晶的主要电路是接线多,所以如果发现问题,要细致的去看看每一根线是否接好。是否有接错或者短接的现象发生。 (二) 软件问题及解决方案:1、LM016L液晶的初始化时间及发送控制命令的等待时间要参考手册,并且用C编程序很大的一个毛病就是时间不能很好的掌握,所以需要多做几
36、次实验或者参考比较成熟的延时程序。2、按键按一下会跳好几个数字:这在软件中叫做按键的抖动,因为按键机械结构的原因,不可能滤除的很好,那么只能软件里防范.检测到按键后延时一个15ms的时间,然后再一次检测,如果按键确实按下,执行按键按下命令。然后在执行完程序后我们要做一个按键是否释放的检测,这样就能在软件里把这个按键的抖动问题比较好的处理掉。5.4 功能实现系统模拟供水过程中低水位的状态。由于没有做出实物,仿真时缺少超声波传感器元件,所以这里用按键模仿超声波检测到低水位的状态,LM016L显示当前低水位、电机转速,手动按键调整电机PWM输出,低水位报警并启动电动机等基本功能。图5-1 低水位仿真
37、示意图系统模拟供水过程中正常水位的状态。由于没有做出实物,仿真时缺少超声波传感器元件,所以这里用按键模仿超声波检测到正常水位的状态,LM016L显示当前水位正常、电机转速,低水位不报警且不启动电动机等基本功能。图5-2 正常水位仿真示意图结论通过分析了设计任务,查阅大量的资料和相关的书籍,本论文选定了AT89C52单片机为核心控制器来进行系统设计。在本设计电路完成后,实现了基于单片机AT89C52的超声波水位控制系统。该系统能实现水位检测、显示当前水位功能以及实现过低警戒水位报警、过低警戒水位自动处理的系统要求,并可通过手动按键调整PWM(Pulse Width Modulation)实现电机
38、调速功能。系统程序语言是使用比较广泛的C语言进行编写,结构清晰,达到的系统控制效果很好。通过PWM电机调速完全可以适应在不同的用水场合下的用水速度需要,节省工作时间,提高了整体工作的效率,实现水位的自动控制,节约了人力资源。美中不足的是这一毕业设计由于时间问题并没有做出实物,所以应用于实际生活中还有一段距离。未来这一设计还可以在提高测量精度、充分考虑不同温度的影响、增加超声波抗干扰能力以及无线远程控制等方面优化。参考文献1 郭军,郑长风一种简易、可靠的水位自动控制装置J现代电子技术,2004,19 (3):82-83.2 张谦琳.超声波检测原理和方法M.北京:中国科技大学出版社,1993103
39、 孙汉旭,胡旭辉. 超声波水位检测装置的研究J电子产品开发与创新,2004,17(2):1-2. 4 潘登,潘宗预超声波测距精度的探讨J北京:包装工业,2003,3:43-445 牛余朋,成曙基于单片机的超声波测距系统J北京:兵工自动化2005,2:78-886 黄智伟全国大学生电子设计竞赛训练教程M西安:电子工业出社2005,17 郁有文传感器原理及工程应用M西安:西安电子科技大学出版社20008 徐科军传感器与检测技术M北京:电子工业出版社,200499 刘志壮,洪添胜,张文昭一种水位检测装置的研究J中国仪器仪表,2006,(8): 43-45. 10 Peter Hauptmann,Ra
40、lf Lucklum,Bernd HenningUltrasonic Sensors for Process Control J Sensors Update1998,311 龚运新,胡长胜单片机实用技术教程M北京师范大学出版社200512 软件世界杂志附录一 系统protues仿真图:附录二 程序源代码#include#define uint unsigned int#define uchar unsigned charsbit led=P01; /led灯显示,低电平亮sbit speaker=P10; /蜂鸣器,低电平报警sbit lcd_rs=P05; /LM016L数据选择命令端 s
41、bit lcd_rw=P06; /LM016L读写选择端 sbit lcd_enable=P07; /LM016L 使能端定义 sbit key_up=P30; /pwm速度调整端口,电机速度加一sbit key_down=P31;/pwm速度调整端口,电机速度减一sbit monter=P11;/电机驱动端口,pwm控制输出sbit water_normal=P16;/水位正常传感器模拟按键端口,低电平不报警sbit water_low=P17;/水位过低传感器模拟按键端口,低电平报警uchar code pwm_t=45,90,100,130;/模式下的pwm值,人为已经设定的时间是100
42、,可以调整上限值 uint model=1,pwmT=150,time_count=0; void key_scan(); /按键扫描函数 void check_water_level(); /检测水位是否正常函数void delay(uint z) /延时函数 uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);/*LM016L液晶显示函数*/ void lcd_write_comd(uchar comd) /LM016L写指令函数 lcd_rs=0; /选择指令 lcd_rw=0; /选择写 lcd_enable=0; delay(5); P2=comd;
43、/取命令 delay(5); lcd_enable=1; /使能有效 delay(5); lcd_enable=0;void lcd_write_data(uchar date) /LM016L写数据函数lcd_rs=1; /选择数据 /lcd_rw=0; /选择写操作 lcd_enable=1;delay(5);P2=date; /取数据操作 delay(5);lcd_enable=1; /使能有效 delay(5);lcd_enable=0;void lcd_set_xy(uchar x,uchar y) /定位具体位置 uint address; if(y=1) address=0x80
44、+x;/第一行的位置 else address=0xc0+x; /第二行的位置 lcd_write_comd(address);void lcd_write_char(uchar x,uchar y,uchar date)/写一个字符函数 lcd_set_xy(x,y); /设定位置 lcd_write_data(date); /写入数据 void lcd_write_string(uchar x,uchar y,uchar *s)/ 写一个字符串函数 lcd_set_xy(x,y); /设定位置 while(*s) /循环写入数据 lcd_write_data(*s); s+; /*电机PWM调速函数及程序主函数*/void init()/初始化函数 uchar i,count=25; led=1; /开机led灯闪烁 for(i=0;i15;i+)