0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >工业控制 > 基于AT89C51和AT89C2051水位控制系统的设计

基于AT89C51和AT89C2051水位控制系统的设计

来源:
2026-01-08
类别:工业控制
eye 1
文章创建人 拍明芯城

基于AT89C51和AT89C2051水位控制系统的设计

一、引言

在工业生产和日常生活中,水位控制是一个至关重要的环节。无论是水塔供水、地下水开采,还是水电站运行,都需要对水位进行精确控制,以避免“空塔”“溢塔”等现象的发生,确保系统的安全稳定运行。传统的水位控制方式多采用人工检测和机械控制,不仅劳动强度大、工作效率低,而且控制精度差、能耗高。随着单片机技术的不断发展,基于单片机的水位控制系统因其控制精度高、可靠性好、自动化程度高等优点,逐渐成为水位控制领域的主流方案。

image.png

AT89C51和AT89C2051作为经典的8位单片机,具有成本低、性能稳定、易于编程等优点,广泛应用于各种嵌入式控制系统中。本文将详细介绍基于AT89C51和AT89C2051的水位控制系统的设计,包括系统总体方案、硬件设计、软件设计以及系统调试与仿真等内容,并优选合适的元器件型号,阐述其作用和选择原因。

二、系统总体方案设计

2.1 系统功能需求分析

本水位控制系统的主要功能是实时监测水塔水位,并根据水位情况自动控制水泵的启停,以保持水位在设定的范围内。具体功能需求如下:

  • 水位检测功能:能够准确检测水塔水位的变化,并将水位信息转换为电信号传输给单片机。

  • 水位显示功能:通过数码管或液晶显示屏实时显示当前水位,方便用户直观了解水位情况。

  • 自动控制功能:根据设定的水位上下限,自动控制水泵的启停,实现水位的自动调节。

  • 报警功能:当水位超过设定的上下限或出现故障时,能够及时发出声光报警信号,提醒用户进行处理。

  • 手动控制功能:提供手动控制按钮,用户可以根据需要手动控制水泵的启停。

2.2 系统总体架构设计

本系统采用单片机作为核心控制单元,通过水位传感器检测水位信号,经信号调理电路处理后传输给单片机。单片机对接收到的水位信号进行处理和分析,根据设定的水位上下限控制水泵的启停,并通过显示电路显示当前水位,同时通过报警电路实现报警功能。系统总体架构图如下:

┌─────────────┐    ┌─────────────┐    ┌─────────────┐│ 水位传感器  │───▶│ 信号调理电路│───▶│  AT89C51/   │└─────────────┘    └─────────────┘    │  AT89C2051  │                                        └──────┬──────┘
                                              │
┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│  显示电路    │◀───│  报警电路    │◀───│  水泵控制电路│
└─────────────┘    └─────────────┘    └─────────────┘

2.3 单片机选型分析

AT89C51和AT89C2051都是基于8051内核的8位单片机,具有相似的指令集和编程方法,但在引脚数量、存储容量和功能扩展等方面存在一定差异。

  • AT89C51:拥有40个引脚,4KB的Flash程序存储器,128字节的RAM,32个I/O引脚,两个16位定时/计数器以及一个全双工串行通信接口。其较大的存储容量和丰富的I/O引脚使其适用于较为复杂的水位控制系统,能够满足更多的功能需求,如扩展多个水位传感器、实现更复杂的显示和控制功能等。

  • AT89C2051:仅有20个引脚,2KB的Flash程序存储器,128字节的RAM,15个I/O引脚,两个16位定时/计数器以及一个全双工串行通信接口。其小巧的设计和较低的成本使其适用于资源有限、功能相对简单的水位控制系统,如小型水塔、家用水箱等的水位控制。

在实际应用中,可以根据系统的具体需求和预算选择合适的单片机型号。如果系统功能较为复杂,需要扩展多个外设,建议选择AT89C51;如果系统功能简单,对成本和体积有较高要求,可以选择AT89C2051。

三、硬件设计

3.1 主芯片选型及介绍

3.1.1 AT89C51

AT89C51是一款低电压、高性能的8位CMOS微处理器,采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。其内部集成了4KB可重复擦写的Flash存储器,可反复擦除1000次,数据保留时间长达10年;128字节的内部RAM,可用于存储临时数据;32个可编程I/O口线,可用于连接各种外设;两个16位定时/计数器,可用于定时控制、计数测量等功能;5个中断源,可实现多级中断管理;一个全双工串行通信口,可用于与上位机或其他设备进行数据通信;片内振荡器及时钟电路,可为系统提供稳定的时钟信号。此外,AT89C51还支持空闲和掉电两种低功耗模式,能够有效降低系统功耗。

3.1.2 AT89C2051

AT89C2051是一款20引脚的8位微控制器,同样采用8051核心架构和CMOS工艺制造。其内部集成了2KB可重复擦写的Flash存储器,可反复擦除10000次;128字节的RAM;15个可编程I/O口线;两个16位定时/计数器;6个中断源;一个全双工串行口;一个精密模拟比较器以及两种可选的软件节电工作方式。与AT89C51相比,AT89C2051的存储容量较小,引脚数量较少,但功能基本能够满足简单的水位控制系统需求,且成本更低、体积更小。

3.2 水位检测电路设计

3.2.1 水位传感器选型

水位传感器是水位控制系统的关键部件,其作用是将水位的变化转换为电信号传输给单片机。常见的水位传感器有电极式、浮球式、压力式、超声波式等。在本系统中,考虑到成本、精度和可靠性等因素,选择电极式水位传感器。

电极式水位传感器由多根金属电极组成,将其安装在水塔的不同位置,当水位上升到电极位置时,电极与水导通,产生电信号。通过检测不同电极的导通情况,可以判断水位的高低。电极式水位传感器具有结构简单、成本低、响应速度快等优点,适用于对精度要求不是特别高的水位检测场合。

3.2.2 信号调理电路设计

电极式水位传感器输出的电信号通常为微弱的电压或电流信号,需要经过信号调理电路进行放大、滤波等处理,以提高信号的抗干扰能力和驱动能力,使其能够被单片机准确识别。信号调理电路主要由放大电路和滤波电路组成。

放大电路采用运算放大器构成,将电极式水位传感器输出的微弱信号进行放大,使其幅度达到单片机能够识别的范围。滤波电路采用RC滤波器,去除信号中的高频噪声和干扰,提高信号的稳定性。

3.3 显示电路设计

3.3.1 数码管显示电路

数码管显示电路采用共阴极数码管,通过单片机的I/O口控制数码管的段选和位选,实现水位的数字显示。数码管具有显示清晰、成本低等优点,适用于对显示要求不是特别高的场合。

在本系统中,采用动态扫描方式驱动数码管,即依次点亮各个数码管,利用人眼的视觉暂留效应,使人感觉所有数码管同时点亮。动态扫描方式可以减少I/O口的使用数量,降低系统成本。

3.3.2 液晶显示屏显示电路(可选)

如果对显示效果有较高要求,可以采用液晶显示屏(LCD)作为显示设备。LCD具有显示内容丰富、界面美观等优点,但成本相对较高。在本系统中,可以选择1602或12864等型号的LCD,通过单片机的I/O口与LCD进行通信,实现水位的字符或图形显示。

3.4 报警电路设计

报警电路的作用是在水位超过设定的上下限或出现故障时,及时发出声光报警信号,提醒用户进行处理。报警电路主要由蜂鸣器和发光二极管组成。

当水位超过上限或下限时,单片机通过I/O口输出高电平或低电平信号,驱动蜂鸣器发出声音报警,同时点亮相应的发光二极管进行灯光报警。为了提高报警的可靠性,可以采用多个发光二极管分别表示不同的报警状态,如水位上限报警、水位下限报警、故障报警等。

3.5 水泵控制电路设计

水泵控制电路的作用是根据单片机的控制信号,控制水泵的启停。水泵控制电路主要由继电器和驱动电路组成。

单片机通过I/O口输出控制信号,经过驱动电路放大后驱动继电器线圈,使继电器触点闭合或断开,从而控制水泵的电源通断,实现水泵的启停控制。驱动电路可以采用三极管或达林顿管等功率放大器件,以提高驱动能力。

3.6 电源电路设计

电源电路的作用是为整个系统提供稳定的直流电源。本系统采用交流220V转直流5V的电源模块,将市电转换为系统所需的5V直流电源,为单片机、传感器、显示电路、报警电路和水泵控制电路等提供工作电源。

3.7 优选元器件型号及作用

3.7.1 主芯片

  • AT89C51:作为系统的核心控制单元,负责接收水位传感器信号,进行处理和分析,并根据设定的水位上下限控制水泵的启停,同时实现水位显示和报警功能。

  • AT89C2051:适用于功能相对简单的水位控制系统,与AT89C51功能类似,但引脚数量和存储容量较小,成本更低。

3.7.2 水位传感器

  • 电极式水位传感器:由多根金属电极组成,安装在水塔不同位置,通过检测电极与水的导通情况判断水位高低,结构简单、成本低、响应速度快。

3.7.3 运算放大器

  • LM358:用于信号调理电路中的放大电路,将电极式水位传感器输出的微弱信号进行放大,使其幅度达到单片机能够识别的范围。LM358具有低功耗、低成本、宽工作电压范围等优点。

3.7.4 数码管

  • 共阴极数码管:用于显示当前水位,采用动态扫描方式驱动,显示清晰、成本低。

3.7.5 液晶显示屏(可选)

  • 1602 LCD:如果对显示效果有较高要求,可以选择1602 LCD作为显示设备,能够显示两行16个字符,显示内容丰富。

  • 12864 LCD:如果需要显示图形或更多字符,可以选择12864 LCD,能够显示128×64个点阵的图形或字符。

3.7.6 蜂鸣器

  • 有源蜂鸣器:用于发出声音报警信号,当水位超过设定的上下限或出现故障时,单片机控制蜂鸣器发声,提醒用户进行处理。有源蜂鸣器内部集成振荡电路,只需提供直流电源即可发声,使用方便。

3.7.7 发光二极管

  • 普通发光二极管:用于灯光报警,与蜂鸣器配合使用,当水位超过设定的上下限或出现故障时,点亮相应的发光二极管,直观显示报警状态。

3.7.8 继电器

  • JQC-3FF-S-Z:用于水泵控制电路,通过继电器的触点闭合或断开控制水泵的电源通断,实现水泵的启停控制。JQC-3FF-S-Z继电器具有触点容量大、可靠性高等优点。

3.7.9 三极管

  • 8050三极管:用于驱动继电器线圈,将单片机输出的微弱控制信号进行放大,提高驱动能力,使继电器能够可靠动作。8050三极管具有放大倍数高、成本低等优点。

3.7.10 电源模块

  • AC-DC 5V电源模块:将交流220V市电转换为直流5V电源,为整个系统提供稳定的工作电源。AC-DC 5V电源模块具有转换效率高、输出稳定等优点。

四、软件设计

4.1 程序总体流程设计

系统上电后,首先进行初始化操作,包括单片机初始化、I/O口初始化、定时器初始化、中断初始化等。然后进入主循环,不断检测水位传感器的状态,根据水位情况控制水泵的启停,并实时更新水位显示和报警状态。当检测到水位超过设定的上下限或出现故障时,触发相应的报警程序。程序总体流程图如下:

开始│
├─→ 初始化
│   │
│   ├─→ 单片机初始化│   ├─→ I/O口初始化│   ├─→ 定时器初始化
│   └─→ 中断初始化

├─→ 主循环
│   │
│   ├─→ 检测水位传感器状态
│   ├─→ 根据水位情况控制水泵启停
│   ├─→ 更新水位显示
│   ├─→ 检测报警状态
│   └─→ 触发报警程序(如果需要)

└─→ 结束

4.2 主程序设计

主程序是系统的核心程序,负责协调各个子程序的运行,实现系统的整体功能。主程序主要包括以下几个部分:

4.2.1 初始化部分

初始化部分包括单片机初始化、I/O口初始化、定时器初始化、中断初始化等。单片机初始化主要是设置单片机的工作模式、时钟频率等参数;I/O口初始化是设置各个I/O口的方向和初始状态;定时器初始化是设置定时器的工作模式、定时时间等参数;中断初始化是设置中断源、中断优先级等参数。

4.2.2 水位检测部分

水位检测部分通过读取水位传感器的状态,判断当前水位的高低。在本系统中,采用查询方式检测水位传感器的状态,即不断读取与水位传感器相连的I/O口的状态,根据I/O口的状态判断水位是否超过设定的上下限。

4.2.3 水泵控制部分

水泵控制部分根据水位检测部分的结果,控制水泵的启停。当水位低于设定的下限时,启动水泵向水塔注水;当水位高于设定的上限时,停止水泵注水。水泵控制部分通过控制继电器的通断来实现水泵的启停控制。

4.2.4 水位显示部分

水位显示部分将当前水位以数字或字符的形式显示在数码管或液晶显示屏上。在本系统中,采用动态扫描方式驱动数码管显示水位,通过定时器定时刷新数码管的显示内容,实现水位的实时显示。如果采用液晶显示屏显示水位,则需要通过单片机的I/O口与液晶显示屏进行通信,按照液晶显示屏的通信协议发送显示数据。

4.2.5 报警部分

报警部分在水位超过设定的上下限或出现故障时,发出声光报警信号。当水位超过上限或下限时,单片机通过I/O口输出控制信号,驱动蜂鸣器发声,同时点亮相应的发光二极管进行灯光报警。当出现故障时,如传感器故障、水泵故障等,同样触发报警程序,发出报警信号。

4.3 子程序设计

4.3.1 延时子程序

延时子程序用于产生一定时间的延时,以满足系统各个部分的时间要求。延时子程序可以通过循环空操作或使用定时器来实现。在本系统中,采用定时器实现延时,以提高延时的精度和可靠性。

4.3.2 数码管显示子程序

数码管显示子程序用于控制数码管的显示内容。数码管显示子程序主要包括段选和位选控制两部分,通过定时器定时刷新数码管的显示内容,实现水位的实时显示。

4.3.3 液晶显示屏显示子程序(可选)

如果采用液晶显示屏显示水位,则需要编写液晶显示屏显示子程序。液晶显示屏显示子程序主要包括初始化、写命令、写数据等部分,按照液晶显示屏的通信协议与液晶显示屏进行通信,实现水位的字符或图形显示。

4.3.4 报警子程序

报警子程序用于在水位超过设定的上下限或出现故障时,发出声光报警信号。报警子程序主要包括蜂鸣器控制和发光二极管控制两部分,通过单片机的I/O口输出控制信号,驱动蜂鸣器发声和发光二极管点亮。

4.4 中断服务程序设计

中断服务程序用于处理系统中的中断事件,如定时器中断、外部中断等。在本系统中,定时器中断用于定时刷新数码管的显示内容和检测水位传感器的状态;外部中断可以用于处理紧急情况,如手动控制按钮按下等。中断服务程序的主要功能是响应中断事件,执行相应的处理程序,然后返回主程序继续运行。

五、系统调试与仿真

5.1 硬件调试

硬件调试是系统开发过程中的重要环节,主要包括电路焊接检查、电源测试、信号测试等。在硬件调试过程中,首先检查电路焊接是否正确,有无短路、断路等问题;然后测试电源是否正常,确保各个元器件能够正常工作;最后测试信号是否正常,如水位传感器输出的信号是否能够被单片机准确识别,水泵控制电路是否能够正常控制水泵的启停等。

5.2 软件调试

软件调试主要通过调试工具进行,如Keil C51、Proteus等。在软件调试过程中,首先使用Keil C51编写和编译程序,生成可执行的HEX文件;然后将HEX文件加载到Proteus中进行仿真调试,观察系统的运行情况,检查程序是否存在逻辑错误、死循环等问题;最后根据仿真结果对程序进行修改和优化,直到系统能够正常运行。

5.3 系统仿真

系统仿真是在软件环境中模拟系统的实际运行情况,以验证系统的功能和性能。在本系统中,使用Proteus软件进行系统仿真,搭建系统的硬件电路模型,加载编译好的HEX文件,运行仿真程序,观察水位检测、水泵控制、水位显示和报警等功能是否正常实现。通过系统仿真,可以提前发现系统中存在的问题,及时进行修改和优化,减少实际开发过程中的调试时间和成本。

六、结论

本文详细介绍了基于AT89C51和AT89C2051的水位控制系统的设计,包括系统总体方案、硬件设计、软件设计以及系统调试与仿真等内容。通过合理选型和设计,本系统能够实现水位的自动检测、显示、控制和报警等功能,具有控制精度高、可靠性好、自动化程度高等优点,能够满足工业生产和日常生活中的水位控制需求。在实际应用中,可以根据系统的具体需求和预算选择合适的单片机型号,进一步优化系统设计,提高系统的性能和稳定性。同时,本系统的设计方法


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯

拍明芯城微信图标

各大手机应用商城搜索“拍明芯城”

下载客户端,随时随地买卖元器件!

拍明芯城公众号
拍明芯城抖音
拍明芯城b站
拍明芯城头条
拍明芯城微博
拍明芯城视频号
pcb
广告
恒捷广告
广告
深亚广告
广告
原厂直供
广告