当前位置: 首页 > news >正文

【51单片机】【protues仿真】基于51单片机水位监测系统

 目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、数码管显示当前水位值
2、按键设置水位上下限阈值
3、当水位低于下限,启动蜂鸣器警报并抽水至水位上限停止抽水
4、电机模拟水泵,蜂鸣器,指示灯显示

二、使用步骤

51单片机水位监测系统是一种基于8051架构的嵌入式液位检测装置,通过模拟量/数字量传感器采集水位信息,结合控制算法实现水位监控与报警功能‌。该系统可广泛应用于水塔、水箱、河道等场景的水位监测与控制。

三、硬件资源

1、51单片机核心模块
2、按键模块
3、水位传感器模块、adc模块
4、蜂鸣器模块
5、继电器模块
6、数码管显示模块

四、软件设计

#include "reg51.h"
#include <PCF8591.h>
#define uchar unsigned char
#define uint unsigned int
sbit out=P3^3;//抽水机
sbit led1=P3^6;//指示灯
sbit led2=P3^7;
sbit smg1=P2^0;//数码管
sbit smg2=P2^1;     
sbit smg3=P2^2;
sbit smg4=P2^3;
sbit k1=P1^0;//按钮
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit k5=P1^4;
sbit beep=P1^7;//蜂鸣器
uchar time=0,mode=0;//系统变量     
uchar water=0;//水位
uchar lim1=40,lim2=60;//阀值
uchar key=0;
uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9,无小数点
//延时
void delay(uint i)
{
    while(i--);
}
 //按键检测
uchar key_scan()
{
    uchar i=0;
    if(!k1 &&(key!=1))
    {
        key=1;
        i=1;
    }
    if(!k2 &&(key!=2))
    {
        key=2;
        i=2;
    }
    if(!k3 &&(key!=3))
    {
        key=3;
        i=3;
    }
    if(!k4 &&(key!=4))
    {
        key=4;
        i=4;
    }
    if(!k5 &&(key!=5))
    {
        key=5;
        i=5;
    }
    if(k1 && k2 && k3 && k4 && k5 )
        key=0;
    return i;
}

//主函数
void main()
{
    uchar i=0,k=0;

    TMOD|=0X01;
    TH0=0X3C;
    TL0=0XB0;    
    ET0=1;//打开定时器0中断允许
    EA=1;//打开总中断
    TR0=1;//打开定时器
    while(1)
    {
        i=key_scan();//按键检测
        //设置按钮
        if(i==2)
        {
            mode=1;
        }
        if(i==1)
        {
            mode=2;
        }
        if(mode==1)//设置下限
        {
        if(i==4)
        {
            if(lim1<lim2)
                lim1++;
        }
        if(i==5)
        {
            if(lim1>0)
                lim1--;
        }
        }
        if(mode==2)//设置上限
        {
        if(i==4)
        {
            if(lim2<100)
                lim2++;
        }
        if(i==5)
        {
            if(lim2>lim1)
                lim2--;
        }
        }
        if(i==3)//OK
        {
            mode=0;
        }
        //点亮LED
        if(water<lim1)//水位低
        {
            led1=0;led2=1;
        }
        else if(water>lim2)//水位高
        {
            led1=1;led2=0;
        }
        else
        {
            led1=1;led2=1;
        }
        //显示水位
        if(mode==0)
        {
            P0=smgduan[water/100];        smg2=0;delay(100);smg2=1;
            P0=smgduan[water%100/10];    smg3=0;delay(100);smg3=1;
            P0=smgduan[water%10];        smg4=0;delay(100);smg4=1;
        }
        //显示下限
        if(mode==1)
        {
            P0=0x38;        smg1=0;delay(100);smg1=1;
            P0=smgduan[lim1/100];        smg2=0;delay(100);smg2=1;
            P0=smgduan[lim1%100/10];    smg3=0;delay(100);smg3=1;
            P0=smgduan[lim1%10];        smg4=0;delay(100);smg4=1;
        }
        //显示上限
        if(mode==2)
        {
            P0=0x76;        smg1=0;delay(100);smg1=1;
            P0=smgduan[lim2/100];        smg2=0;delay(100);smg2=1;
            P0=smgduan[lim2%100/10];    smg3=0;delay(100);smg3=1;
            P0=smgduan[lim2%10];        smg4=0;delay(100);smg4=1;
        }
    }
}

五、实验现象

演示视频:

http://www.xdnf.cn/news/1341523.html

相关文章:

  • 鸿蒙开发中的List组件详解
  • 机器学习-集成算法
  • Django的生命周期
  • 项目1总结其三(图片上传功能)
  • leetcode-python-242有效的字母异位词
  • 阿里巴巴推出Qoder:面向真实软件开发的智能编程平台
  • 计算机视觉(opencv)实战六——图像形态学(腐蚀、膨胀、开运算、闭运算、梯度、顶帽、黑帽)
  • 计算机视觉第一课opencv(三)保姆级教学
  • 大语言模型原理(Transformer架构)
  • c# 和 c++ 怎样结合
  • Chrome 插件开发实战:从入门到进阶
  • Docker:安装配置
  • 【框架篇二】FastAPI路由与请求处理
  • Linux 网络命令大全
  • uniapp 自定义组件封装、easycom匹配规则
  • 2025-08-21 Python进阶4——错误和异常
  • 用 Python 写的自动化测试 WPF 程序的一个案例
  • 【GaussDB】使用gdb定位GaussDB编译package报错
  • Spring Boot整合Amazon SNS实战:邮件订阅通知系统开发
  • 第三阶段数据库-6:sql中函数,多表查询,运算符,索引,约束
  • 我从零开始学微积分(2)- 函数与图形
  • 与森马品牌代言人王安宇专注日常力量,再启新常服故事
  • Qt二维码生成器项目开发教程 - 从零开始构建专业级QR码生成工具
  • 精算中的提升曲线(Lift Curve)与机器学习中的差别
  • Design Compiler:逻辑库名与逻辑库文件名及其指定方式
  • 交易高光时刻-01
  • langgraph快速搭建agent后端和react前端
  • springboot 启动后get请求任意接口地址会跳到登录页
  • 【TrOCR】模型预训练权重各个文件解读
  • 【Java集合】List,Map,Set-详细讲解