Skip to content

综合实训:海洋环境监测节点 ​

课程定位:C51 单片机课程综合实训周项目(融合海洋特色) 学习目标:综合运用全部 C51 + Proteus + LCEDA 知识,完成一个"海洋环境监测节点"的设计、仿真与实物制作,体验完整的硬件开发流程。

项目背景 ​

湛江地处南海之滨,海洋牧场、水产养殖、近岸水质监测是本地特色产业。本实训以海洋环境监测为应用场景,设计一个可部署在海洋牧场/养殖区的环境监测节点,实时采集并显示水温、光照等关键参数。

🐟 海洋特色融入:本项目将通用传感器教学与海洋应用场景结合,学生可扩展为溶解氧、盐度、水位、浊度等海洋专属参数监测。

一、项目需求 ​

功能要求 ​

功能说明
水温采集用 DS18B20 数字温度传感器采集水温(0~50℃)
光照检测用光敏电阻 + ADC 检测环境光照强度
实时显示LCD1602 液晶屏显示温度、光照、状态
超限报警水温超过设定阈值,蜂鸣器报警 + LED 指示
阈值设置按键调整报警阈值(上调/下调/确认)
串口上报通过串口将采集数据上传上位机(模拟数据上报)

系统框图 ​

mermaid
flowchart LR
    A[DS18B20 水温传感器] --> D[STC89C52 主控]
    B[光敏电阻+ADC] --> D
    C[按键×3 阈值设置] --> D
    D --> E[LCD1602 显示]
    D --> F[蜂鸣器+LED 报警]
    D --> G[串口上报]

二、硬件设计 ​

元件清单 ​

元件型号/参数数量用途
单片机STC89C52RC1主控
温度传感器DS18B201水温采集
液晶屏LCD16021数据显示
光敏电阻GL55281光照检测
电位器10K1ADC 分压
蜂鸣器有源 5V1报警
LED红/绿各1状态指示
按键轻触3阈值设置
电阻4.7K/10K/330Ω若干上拉/限流

关键电路 ​

DS18B20 接线(单总线):

STC89C52                DS18B20
┌──────┐   ┌──[4.7K上拉]──VCC
│ P3.7 ├───┤              │
│      │   │  ┌───────────┘
│      │   ├──┤ DQ
│      │   ├──┤ VCC ── 5V
│      │   └──┤ GND ── GND
└──────┘

光敏电阻 + ADC(用单片机的比较器/PWM 或外接 ADC0809):

VCC ──[光敏电阻 GL5528]──┬──[电位器 10K]──GND
                         │
                       P1.0 (ADC输入)

三、程序设计 ​

模块划分 ​

main.c          主程序:系统初始化、主循环
ds18b20.c       温度传感器驱动(单总线时序)
lcd1602.c       LCD 显示驱动
adc.c           ADC 采样(光照)
key.c           按键扫描与阈值设置
alarm.c         超限判断与报警
uart.c          串口上报

主程序框架 ​

c
/****************************************************
 * 海洋环境监测节点 - 主程序
 ****************************************************/
#include <reg51.h>
#include "ds18b20.h"
#include "lcd1602.h"
#include "adc.h"
#include "key.h"

// 全局参数
unsigned int temperature;   // 水温(℃×10)
unsigned char light;        // 光照等级
unsigned int alarm_temp = 300; // 报警阈值(30.0℃)

void main(void)
{
    lcd_init();          // LCD 初始化
    uart_init();         // 串口初始化

    lcd_show(0, 0, "Ocean Monitor");
    lcd_show(0, 1, "Temp: --.- C");

    while (1)
    {
        // 1. 采集数据
        temperature = read_ds18b20();   // 读温度
        light = read_light();           // 读光照

        // 2. 更新显示
        lcd_show_temp(temperature);
        lcd_show_light(light);

        // 3. 超限判断
        if (temperature > alarm_temp)
            alarm_on();     // 蜂鸣+LED
        else
            alarm_off();

        // 4. 阈值设置(按键)
        key_handle(&alarm_temp);

        // 5. 串口上报
        uart_send_data(temperature, light, alarm_temp);

        delay_ms(500);      // 采样周期
    }
}

DS18B20 温度读取(单总线核心时序) ​

c
// 复位脉冲
bit ds18b20_reset(void)
{
    bit presence;
    DQ = 0; delay_us(480);  // 拉低 480us
    DQ = 1; delay_us(60);   // 释放
    presence = DQ;          // 读存在脉冲
    delay_us(420);
    return presence;        // 0=存在
}

// 读温度
unsigned int read_ds18b20(void)
{
    unsigned char low, high;
    ds18b20_reset();
    write_byte(0xCC);       // 跳过 ROM
    write_byte(0x44);       // 启动转换
    delay_ms(750);          // 等待转换

    ds18b20_reset();
    write_byte(0xCC);       // 跳过 ROM
    write_byte(0xBE);       // 读暂存器
    low  = read_byte();     // 低字节
    high = read_byte();     // 高字节
    return (high << 8) | low; // 原始 16 位数据
}

四、仿真验证(Proteus) ​

  1. 在 Proteus 中绘制完整电路(单片机 + DS18B20 + LCD1602 + 光敏电阻 + 蜂鸣器 + 按键)
  2. Keil 编写完整程序,编译生成 HEX
  3. 加载 HEX 运行仿真
  4. 用 Proteus 虚拟仪器验证:
    • 虚拟终端查看串口上报数据
    • 调节 DS18B20 温度值(双击元件改温度),观察 LCD 与报警联动
    • 调节光照(电位器),观察光照显示变化
仿真验收要点:
□ LCD 正确显示温度/光照
□ 温度超过阈值时蜂鸣器响 + LED 亮
□ 按键能调整阈值
□ 串口能上报数据帧

五、PCB 设计与制作(LCEDA) ​

  1. 在 LCEDA 中绘制原理图(STC89C52 最小系统 + 各外设)
  2. 布局布线:主控居中,DS18B20/蜂鸣器等传感器接口放板边
  3. DRC 检查 0 错误
  4. 导出 Gerber,嘉立创打样
  5. 焊接调试

板级设计建议 ​

设计点建议
传感器接口用排针/端子引出,便于外接探头
防水考虑预留硅胶密封槽位(海洋场景防护)
供电USB 供电 + 稳压,预留电池接口(户外部署)
天线预留扩展串口/WiFi 模块接口(后续联网)

六、项目验收 ​

功能验收 ​

验收项标准
温度采集显示与实际温度误差 ±1℃
光照检测光照变化能反映到显示
超限报警阈值触发蜂鸣器+LED 正常
阈值设置按键可调整并保存
串口上报数据帧格式正确

文档验收 ​

  • 提交实验报告(见下一节模板)
  • 提交 Proteus 仿真文件 + Keil 源码
  • 提交 LCEDA 原理图 + PCB 文件
  • 提交实物照片 + 演示视频(可选)

七、评分标准 ​

项目分值
方案设计与答辩20
仿真功能完整25
PCB 设计质量20
实物功能演示25
报告规范10

拓展方向 ​

  1. 海洋专属参数:扩展 DS18B20 之外的溶解氧传感器、盐度传感器(电导率法)
  2. 无线组网:接入 ZigBee/WiFi 模块,实现多节点海洋监测组网
  3. 低功耗设计:间歇采集、休眠唤醒,延长节点续航
  4. 太阳能供电:设计太阳能充电电路,适配野外/海上部署

aioteer · 物联网专业课程群

💬AI 伴学配置