基于单片机液位自动控制与检测设计
摘要
随着社会的进步,生产工艺和生产技术的发展,人们对液位检测提出了更高的要求。由于新型电子技术、微电子技术和微型计算机被广泛应用,单片机控制系统以其控制精度高,性能稳定可靠,设置操作方便,造价低等诸多特点,被应用到液位系统的控制中来。本文介绍了以LM型液位传感器,A/D转换芯片ADC0809,以及AT89C51单片机作为主控元件的液位检测系统的设计方法。本文分别从液位检测,A/D转换,数码管显示,超限报警等几个方面对硬件电路进行了详细介绍,然后对A/D转换程序,数码管显示程序,超限报警程序等做了详细阐述,并用流程图做进一步解释。通过软件和硬件的联合调试,实现了在一定范围内对液位的调节,动态显示出液位结果,实现报警,完全实现了任务书上的要求。
关键词:液位检测、A/D转换、LM型液位传感器、超限报警
仿真、代码等资料下载地址:
https://docs.qq.com/doc/p/ffc421513a628b30450ae742547c0b850456d7c8
1 设计任务
1.1 设计目的和意义
随着现代工业的发展,液位检测在工业生产中占有重要地位。为了实现液位的自动控制和检测,设计一套基于单片机的液位自动控制与检测系统具有重要意义。通过本次设计,学生可以掌握单片机控制系统的设计方法,增强综合应用能力及单片机应用系统开发和设计能力。
1.2 设计任务要求
本设计要求实现液位的检测、显示和超限报警,具体内容如下:
- 使用LM型液位传感器检测液位信息。
- 使用ADC0809进行A/D转换,将模拟信号转换为数字信号。
- 使用AT89C51单片机进行数据处理和控制。
- 使用数码管显示液位信息。
- 实现超限报警功能。
2 系统硬件电路的设计
2.1 总体设计方案
2.1.1 总体设计原理
液位传感器将液位信息转换为电压信号,经过A/D转换芯片ADC0809转换为数字信号送入单片机。AT89C51单片机对液位信息进行处理,并判断是否超限。处理后的数据通过数码管显示,若液位超限则触发报警电路。
2.1.2 总体设计框图
单片机系统包括电源部分、液位传感器电路、A/D转换电路、单片机系统、数码管显示电路和超限报警电路。总体设计框图如图1所示。
图1 总体设计框图
2.2 具体电路设计
2.2.1 电源部分
电源部分提供+5V电压供系统各部分使用,确保系统稳定工作。
2.2.2 液位传感器电路
液位传感器电路采用LM型液位传感器,将液位信息转换为电压信号输出。
2.2.3 A/D转换电路
A/D转换电路采用ADC0809芯片,将液位传感器输出的模拟电压信号转换为数字信号,送入单片机进行处理。
2.2.4 单片机系统
单片机系统以AT89C51为核心,负责接收A/D转换后的液位信息,进行数据处理和超限判断,并控制数码管显示和报警电路。
2.2.5 数码管显示电路
数码管显示电路用于显示当前液位信息,通过单片机的I/O口控制数码管的显示。
2.2.6 超限报警电路
超限报警电路包括蜂鸣器和LED,当液位超限时,由单片机驱动蜂鸣器发声和LED闪烁报警。
2.3 整体硬件电路
整体硬件电路将上述各个模块连接在一起,通过单片机的I/O口实现各个模块的控制和协调工作。
2.4 系统所用元器件
系统所用元器件包括AT89C51单片机、LM型液位传感器、ADC0809、数码管、蜂鸣器、LED、电阻、电容等。
3 软件设计
3.1 A/D转换程序
A/D转换程序负责从ADC0809读取液位信息,并将其转换为数字信号,送入单片机进行处理。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit ADC_CS = P3^7; // ADC片选
sbit ADC_RD = P3^6; // ADC读
sbit ADC_WR = P3^5; // ADC写
sbit ADC_INTR = P3^4; // ADC中断
void ADC_Init()
{
ADC_CS = 0;
ADC_RD = 1;
ADC_WR = 1;
}
uchar ADC_Read()
{
uchar value;
ADC_WR = 0;
ADC_WR = 1;
while(ADC_INTR);
ADC_RD = 0;
value = P1;
ADC_RD = 1;
return value;
}
3.2 数码管显示程序
数码管显示程序负责将液位信息显示在数码管上。
uchar code segment[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
void Display(uchar value)
{
P0 = segment[value / 10];
P2 = 0xfe;
delay(5);
P0 = segment[value % 10];
P2 = 0xfd;
delay(5);
}
3.3 超限报警程序
超限报警程序负责检测液位是否超限,并控制蜂鸣器和LED报警。
void Alarm(uchar value)
{
if(value > 80) // 超过80%液位报警
{
P3 = 0x01; // 蜂鸣器鸣叫
P2 = 0xff; // LED闪烁
}
else
{
P3 = 0x00; // 蜂鸣器关闭
P2 = 0x00; // LED关闭
}
}
3.4 主程序设计
主程序负责系统的初始化和主循环,包括读取液位信息、显示液位、检测超限等。
void main()
{
uchar value;
ADC_Init();
while(1)
{
value = ADC_Read();
Display(value);
Alarm(value);
}
}
4 系统仿真与调试
4.1 系统软件程序的调试
系统软件程序的调试通过KEIL编程软件进行,编写并调试源程序,实现各项功能。
4.2 系统硬件电路的仿真与调试
系统硬件电路的仿真与调试通过PROTEUS仿真软件进行,仿真硬件电路的工作情况,验证设计的正确性。
5 总结
5.1 本系统的优缺点
本系统通过单片机实现了液位自动控制与检测,具有控制精度高、性能稳定可靠、设置操作方便、造价低等优点。但由于硬件资源有限,系统的扩展性和性能还有待提高。