单片机
返回首页

基于51单片机及NB-IoT的水箱水位监测系统原理图PCB

2025-10-28 来源:bilibili

功能简介:

1.基于C51单片机作为控制器

2.LCD1602作为系统的显示器

3.NB通信模块采用SIM7020C

4.HC-SR04超声波模块实现水箱水位的检测

5.利用继电器可控制水阀的关断与闭合

6.电源采用dc002直接输入5V供电

PCB:

代码:

#include "main.h"


/*******************变量定义*********************/

enum _MODE_DF_ dispMode;

bit modeFlag = AUTO; //模式标记

uchar setIndex = 0;


bit flag = 1;


float distance = 0;//水位距离

xdata int distance_H = 500;//水位上限

xdata int distance_L = 50;//水位下限


bit drawFlag1 = 0; //抽水标志1

bit buzzerFlag1 = 0; //蜂鸣器标志1


/********************************************************

函数名称:void mian()

函数作用:主函数

参数说明:

********************************************************/

void main()

{

    TRIG = 0;


    LCD_Init();   //初始化液晶

    DelayMs(200); //延时有助于稳定

    LCD_DispStr(4, 0, "Welcome!");


    Uart_Init(); //初始化串口


    lte_reset();

    LTE_Process();


    Timer0_Init();

    Timer1_Init(); //初始化定时器0

    LCD_Clear();  //清屏

    LCD_DispStr(0, 0," H:      L:     ");

    LCD_DispStr(0, 1,"   Now:    mm   ");

    Disp4Num(3, 0, (int)distance_H);

    Disp4Num(11, 0, (int)distance_L);


    while (1) //死循环

    {

        if (flag == 1)

        {

            flag = 0;

            if (distance > (1050 - distance_L)) //达到水位下限,1050是因为要除去超声波的盲区50mm

            {

                drawFlag1 = 1; //开启抽水

                buzzerFlag1 = 1;

            }

            else if (distance < (1050 - distance_H)) //达到水位上限

            {

                drawFlag1 = 0; //停止抽水

                buzzerFlag1 = 0;

            }

            else

            {

                buzzerFlag1 = 0;

            }


            if (buzzerFlag1) //蜂鸣器报警

            {

                BUZZER = ON;

            }

            else

            {

                BUZZER = OFF;

            }


            if (drawFlag1) //抽水

            {

                RELAY_DRAW_WATER = ON;

            }

            else

            {

                RELAY_DRAW_WATER = OFF;

            }

        }

        else

        {

            LTE_Process();

        }

    }

}


void LTE_Process(void)

{

    if (!(lte_init_flag && lte_net_flag && lte_connect_flag)) // 如果核心板未初始化、未网络配置、未连接则进行初始化

    {

        err_num = lte_init(); // 核心板初始化,并将初始化结果保存在 err_num

        // sprintf(dis, "%1d %1d %1d %5d", (int)lte_init_flag ,(int)lte_net_flag, (int)lte_connect_flag, (int)err_num);

        // LCD_DispStr(0, 1, dis);

    }




    if (!(lte_net_flag && lte_connect_flag) && lte_init_flag) // 初始化完成,未网络配置,未连接

    {

        err_num = lte_net_config(); // 进行核心板网络配置

        // sprintf(dis, "%1d %1d %1d %5d", (int)lte_init_flag ,(int)lte_net_flag, (int)lte_connect_flag, (int)err_num);

        // LCD_DispStr(0, 1, dis);

    }



    if (!lte_connect_flag && lte_init_flag && lte_net_flag) // 完成初始化和网络配置,开始连接服务器

    {

        err_num = lte_connect(); // 开始 TCP 连接

        // sprintf(dis, "%1d %1d %1d %5d", (int)lte_init_flag ,(int)lte_net_flag, (int)lte_connect_flag, (int)err_num);

        // LCD_DispStr(0, 1, dis);

    }


实物演示视频:

https://www.bilibili.com/video/BV1kd4y1q7oN/


进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦线性调频增强器

  • 1瓦四级调频发射机

  • 500W MOS场效应管电源逆变器,12V转110V/220V

  • 红外开关

  • LM317过压保护

  • 0-30V/20A 大功率稳压电源(采用LM338)

    相关电子头条文章