☰
基于STC89C52的超声波雷达系统 - 详细设计文档
2026/9/25 12:34:00 网站建设 项目流程

基于STC89C52的超声波雷达系统 - 详细设计文档

写在前面:如果有实物制作交流诉求,欢迎私聊

文章目录

  • 基于STC89C52的超声波雷达系统 - 详细设计文档
  • 前言
    • 0.实物展示与运行演示
      • 0.1 系统整体实物
      • 0.2 传感云台与 OLED 显示特写
      • 0.3 单片机核心板与独立按键
      • 0.4 供电电源
      • 0.5 上位机运行界面
      • 0.6 运行演示视频
    • 1. 系统架构总览
      • 1.1 系统框图
      • 1.2 系统功能模块划分
    • 2. 硬件模块详细设计
      • 2.1 电源模块
      • 2.2 单片机最小系统
        • 引脚分配(与当前代码一致)
        • 定时器分配(三定时器无冲突)
        • 中断向量分配
      • 2.3 超声波模块 (HC-SR04)
      • 2.4 超声波滤波算法
      • 2.5 舵机云台(单轴水平)
        • MG996R(水平舵机,当前唯一在用舵机)
        • DXW90(俯仰舵机)—— 已弃用
      • 2.6 独立按键模块(已实现)
    • 3. 软件模块详细设计
      • 3.1 主程序流程
      • 3.2 工作模式说明(当前为两种模式)
      • 3.3 OLED 显示设计
      • 3.4 串口通信协议
        • 上行数据(单片机 → PC)
        • 下行命令(PC → 单片机)
      • 3.5 PC 端上位机(radar.html)
      • 3.6 核心函数说明
        • 超声波模块(hcsr04.c)
        • 舵机模块(servo.c)
        • 串口模块(uart.c)
        • 按键模块(key.c)
    • 4. 模块实现进度
      • 已完成(已硬件验证)
      • 待开发 / 优化
    • 5. 硬件连接清单
      • 5.1 设备清单
      • 5.2 接线表(当前在用)
    • 6. 测试验证计划
      • 6.1 模块测试用例
      • 6.2 系统集成测试
    • 7. 代码文件结构
      • 7.1 文件功能说明
    • 8. 关键代码片段
      • 8.1 超声波中值平均滤波
      • 8.2 舵机 Timer2 相位法 PWM
      • 8.3 串口整合上报
      • 8.4 独立按键模式切换
    • 9. 参考资料

前言

本文档详细阐述了一个基于 STC89C52 单片机的超声波雷达系统的设计与实现。该系统旨在通过超声波测距与舵机云台扫描,构建一个能够实时探测并可视化周围障碍物分布的嵌入式平台。项目源于本科毕业设计,其核心目标是将理论知识与工程实践相结合,完成一个功能完整、软硬件协同工作的实物系统。

0.实物展示与运行演示

本节为系统实物搭建与运行实拍,所有素材位于工程根目录的展示图片视频/文件夹中。

0.1 系统整体实物

整机俯视全貌:左侧为装在 MG996R 水平舵机上的 HC-SR04 超声波模块构成的扫描云台;
中部为 STC89C52 最小系统板(40 脚 DIP 单片机、USB、电源开关、TX/RX 标识);
下方蓝色屏体为 0.96 寸 OLED;右下角为 12V→5V/3.3V 电源模块。各模块通过面包板与杜邦线连接。

接入 12V 锂电池组供电后的整机运行状态:右侧为蓝色电池组,通过桶形插座为系统供电;
此时 OLED 显示Mode: SCAN / Angle: 127 / Dist: 329 cm,表明系统处于自动扫描模式并正常测距。

0.2 传感云台与 OLED 显示特写

HC-SR04 + MG996R 扫描云台与 OLED 屏的特写。OLED 顶部显示标题ULTRASONIC RADAR,
模式行Mode: SCAN,距离行Dist: 51 cm,验证了 OLED 实时状态显示功能。

另一时刻的显示:Mode: SCAN / Angle: 64 / Dist: 98 cm,右下角电源模块绿色指示灯常亮表示供电正常。
随舵机扫描角度变化,Angle 与 Dist 实时刷新。

0.3 单片机核心板与独立按键

<
STC89C52 最小系统板特写。板上可见 11.0592MHz 晶振、TX/RX 收发指示灯(P3.0/P3.1),
以及底部一排独立按键标注INT0 / INT1 / USER1 / USER2:其中 INT0(P3^2) 切换自动扫描模式、
INT1(P3^3) 切换串口角度模式(USER1/USER2 为后续扩展预留)。

0.4 供电电源

系统电源采用 QISUO 12V / 9000mAh 锂电池组,经 12V→5V/3.3V 模块降压后为单片机、
舵机、超声波模块及 OLED 供电,使系统可脱离 PC 独立运行。

0.5 上位机运行界面

PC 端radar.html雷达上位机实拍:右上角显示串口已连接 @ 9600;右侧信息栏实时显示
当前角度ANGLE 111°、距离DISTANCE 926cm、累计数据帧FRAMES 2580及原始数据A:111 D:926cm;
中央为绿色雷达扫描盘(0°~180° 半圆、25/50/75/100cm 距离环),障碍物以亮点标出,
扫描线在障碍处截断并保留已扫描轨迹。

0.6 运行演示视频

系统自动扫描与上位机联动的完整运行演示见视频文件:

超声波雷达运行视频

1. 系统架构总览

1.1 系统框图

┌─────────────────────────────────────────────────────────────────┐ │ 雷达系统整体架构 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ STC89C52 │◄───│ 电源模块 │───►│ 12V电池模组 │ │ │ │ 单片机 │ │ 12V→5V/3.3V │ │ │ │ │ └──────┬───────┘ └──────────────┘ └──────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ 外设模块连接 │ │ │ ├──────────────┬──────────────┬──────────────┬───────────┤ │ │ │ HC-SR04 │ OLED │ 水平舵机 │ 独立按键 │ │ │ │ 超声波模块 │ 0.96" IIC │ MG996R │ INT0/INT1 │ │ │ ├──────────────┼──────────────┼──────────────┼───────────┤ │ │ │ TRIG: P1^0 │ SDA: P2^0 │ 信号:P1^2 │ INT0:P3^2 │ │ │ │ ECHO: P1^1 │ SCL: P2^1 │ (Timer2 PWM)│ INT1:P3^3 │ │ │ │ Timer0测量 │ 软件IIC │ │ 下降沿 │ │ │ └──────────────┴──────────────┴──────────────┴───────────┘ │ │ │ │ │ ▼ │ │ ┌──────────────┐ ┌──────────────┴──────────────┐ │ │ │ UART串口 │───►│ PC端 HTML雷达上位机 │ │ │ │ 9600bps │◄───│ (Web Serial, 2D扫描盘) │ │ │ └──────────────┘ └─────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘

说明:当前实物与代码采用单轴(水平)舵机方案,仅做水平 0°~180° 扫描;
原计划的 DXW90 俯仰舵机已弃用,双轴摇杆暂未接入,模式切换改由独立按键完成。

1.2 系统功能模块划分

模块名称功能描述状态
电源模块12V转5V/3.3V为系统供电待验证
单片机核心STC89C52最小系统,三个定时器分工,串口/中断控制已验证
超声波模块HC-SR04距离测量,Timer0测脉宽,中值平均滤波已验证
水平舵机MG996R,Timer2相位法生成50Hz PWM已验证
OLED显示0.96寸IIC屏幕,实时显示模式/角度/距离已验证
独立按键INT0/INT1外部中断,切换扫描/串口两种模式已验证
串口通信与PC端双向交互,9600波特率已验证
PC端上位机radar.html,Web Serial实时绘制2D雷达扫描盘已验证
俯仰舵机(DXW90)原俯仰轴方案已弃用
双轴摇杆原手动控制方案暂未接入

2. 硬件模块详细设计

2.1 电源模块

组件参数说明
输入12V DC电池模组供电
输出15V / 2A单片机、舵机、超声波模块
输出23.3V / 1AOLED屏幕
保护短路保护、过流保护自恢复保险丝

接线方式:

  • VCC(12V+) → 电源模块IN+
  • GND → 电源模块IN-
  • 5V_OUT → 单片机VCC、舵机电源、HC-SR04 VCC
  • 3.3V_OUT → OLED VCC

2.2 单片机最小系统

晶振:11.0592MHz,标准 12T 模式(1 机器周期 ≈ 1.0851us)。

引脚分配(与当前代码一致)
引脚功能连接设备定义位置
P1^0GPIO输出HC-SR04 TRIGhcsr04.h
P1^1GPIO输入HC-SR04 ECHOhcsr04.h
P1^2GPIO输出(PWM)MG996R 水平舵机信号servo.h
P2^0IIC SDAOLED 数据oled.h
P2^1IIC SCLOLED 时钟oled.h
P3^0UART RXDPC串口TX—
P3^1UART TXDPC串口RX—
P3^2INT0 (外部中断0)独立按键:切自动扫描模式key.c
P3^3INT1 (外部中断1)独立按键:切串口角度模式key.c

备注:P1^3(原 DXW90 俯仰舵机)、P14~P16(原双轴摇杆)在当前代码中未使用,作为后续扩展预留。

定时器分配(三定时器无冲突)
定时器用途模式说明
Timer0超声波 ECHO 脉宽测量模式1(16位)轮询读取,不占用中断
Timer1串口波特率发生器模式2(8位自动重装)TH1=TL1=0xFD → 9600bps
Timer2舵机 PWM 生成16位自动重装相位法,每帧2次中断
中断向量分配
中断源向量号用途
INT0interrupt 0按键切换到自动扫描模式
INT1interrupt 2按键切换到串口角度模式
串口interrupt 4接收 PC 下发的角度数据
Timer2interrupt 5维持舵机 50Hz PWM 相位

2.3 超声波模块 (HC-SR04)

参数规格
量程2cm - 400cm
精度±3mm
触发信号10us TTL脉冲
工作电压5V
工作电流15mA

工作原理:

  1. 单片机发送约10us高电平触发信号(TRIG)
  2. 模块自动发送8个40kHz超声波脉冲
  3. 检测反射信号,通过ECHO引脚返回高电平
  4. ECHO高电平持续时间 = 声波往返时间
  5. 距离 = 时间 × 声速(340m/s) / 2 = 时间(us) × 0.017cm

脉宽测量方案:

  • 使用 Timer0(16位模式1)测量 ECHO 高电平时间
  • ECHO 拉高后启动 Timer0,拉低后停止并读取计数
  • 当前实现以轮询方式等待 ECHO 边沿(while 死等),不占用中断资源

2.4 超声波滤波算法

滤波方案:中值平均滤波(SAMPLE_COUNT = 5)

步骤操作说明
1采样5次每次触发+测量,采样间隔 delay_ms(10)
2排序冒泡排序(从小到大)
3去最值去掉最小值和最大值
4取平均计算中间3个值的平均值

算法流程:

触发→测脉宽×5 → 排序 → 去最值(min/max) → 中间3值取平均 → 输出

滤波效果示例:

原始数据排序后去掉最值平均值
10, 11, 10, 100, 1010, 10, 10, 11, 10010, 10, 1110.33 → 10cm

性能说明:单次测量需 5 次采样,每次采样包含一次 ECHO 等待(空旷/超量程时模块超时脉冲最长约 38ms)与 10ms 采样间隔,故单次完整测量耗时较长。后续可通过减少采样次数、缩短采样间隔、为 ECHO 等待添加超时等方式优化。

2.5 舵机云台(单轴水平)

MG996R(水平舵机,当前唯一在用舵机)
参数规格
角度范围0° - 180°
扭矩13kg·cm (6V)
工作电压4.8V - 7.2V
PWM频率50Hz (20ms周期)
控制信号0.5ms(0°) - 2.5ms(180°)
信号引脚P1^2

PWM 生成方式(Timer2 相位法):

  • 一帧 20ms 拆成「高电平脉宽」+「低电平剩余」两段
  • Timer2 每段溢出触发一次中断,在 ISR 中翻转电平并装载下一段重装值
  • 每帧仅 2 次中断,开销小;多字节重装值更新时关总中断保护,避免半新半旧
  • 角度→脉宽映射:servo_us = 500 + angle × 2000 / 180(单位 us)
DXW90(俯仰舵机)—— 已弃用

原计划用于俯仰轴构成二维云台,现方案简化为单轴水平扫描,代码中不再驱动。

扫描范围(当前方案):

  • 水平扫描:0° - 180° 往返
  • 步进角度:1°/步
  • 步进间隔:由 main.c 宏SCAN_STEP_MS控制(当前为 1ms,可调)

2.6 独立按键模块(已实现)

按键名称引脚功能触发方式
INT0P3^2切换到自动扫描模式外部中断0(下降沿触发)
INT1P3^3切换到串口角度输入模式外部中断1(下降沿触发)

按键功能说明:

  • INT0 按键:将全局模式g_sysMode置为MODE_SCAN,进入 0°→180°→0° 自动往返扫描
  • INT1 按键:将全局模式g_sysMode置为MODE_UART,进入串口角度输入模式
  • 上电默认进入MODE_UART(串口角度输入)
  • ISR 仅做模式标志位赋值,具体动作在主循环按模式分支执行,保证中断快进快出

3. 软件模块详细设计

3.1 主程序流程

┌────────────────────────────────────────────────────────────┐ │ 主程序流程 │ ├────────────────────────────────────────────────────────────┤ │ 上电初始化: OLED / UART / HCSR04 / Servo / Key │ │ 绘制OLED静态界面, 舵机回默认角度(90°) │ │ │ │ │ ▼ │ │ ┌──────── while(1) 主循环 ────────┐ │ │ │ 判断 g_sysMode (按键切换) │ │ │ └───────┬───────────────┬─────────┘ │ │ │MODE_SCAN │MODE_UART │ │ ▼ ▼ │ │ ┌────────────────────┐ ┌────────────────────────┐ │ │ │ 1.舵机转到scan_angle│ │ 1.UART_RxProcess解析角度│ │ │ │ 2.超声波测距 │ │ 2.超声波测距 │ │ │ │ 3.串口发送角度+距离 │ │ 3.串口发送角度+距离 │ │ │ │ 4.刷新OLED │ │ 4.刷新OLED │ │ │ │ 5.角度±1往返 │ │ 5.delay 100ms │ │ │ │ 6.delay SCAN_STEP_MS│ └────────────────────────┘ │ │ └────────────────────┘ │ └────────────────────────────────────────────────────────────┘

3.2 工作模式说明(当前为两种模式)

模式宏进入方式功能描述
自动扫描MODE_SCAN按下 INT0 按键舵机 0°→180°→0° 往返,每步1°,逐点测距并上报
串口角度输入MODE_UART按下 INT1 按键(上电默认)接收 PC 下发角度并定位舵机,原地测距并上报

3.3 OLED 显示设计

静态界面(上电绘制一次):

ULTRASONIC RADAR Mode: Angle: Dist: cm

动态刷新(Display_UpdateStatus,仅在数值变化时重绘,减少闪烁与IIC开销):

  • Mode:→SCAN/UART
  • Angle:→ 当前舵机角度(3位定长,空格补齐)
  • Dist:→ 当前距离(3位定长,单位 cm)

3.4 串口通信协议

上行数据(单片机 → PC)
A:XXX D:XXXcm\r\n
字段说明格式示例
A:XXX舵机角度3位十进制A:090
(空格)分隔符固定’ ’
D:XXXcm距离值3位十进制 + 单位D:045cm

由UART_SendData(angle, distance)组装成完整字符串后一次性发送。

下行命令(PC → 单片机)
  • 协议宽松:UART_RxProcess()遍历接收缓冲区,提取其中所有数字字符拼成角度值
  • 角度限幅到[SERVO_MIN_ANGLE, SERVO_MAX_ANGLE]=[0, 180]
  • 解析成功后立即Servo_SetHorizontal()定位,并更新UART_TargetAngle
  • 以\r或\n作为一帧结束(接收中断中判定)

示例:PC 发送 “120\n” → 舵机转到 120°;发送 “A:045\n” → 同样解析为 45°。

3.5 PC 端上位机(radar.html)

项目说明
技术原生 HTML + JavaScript + Canvas
串口Web Serial API(仅 Chrome / Edge 支持)
波特率9600
解析正则A:(\d{1,3})\D+D:(\d{1,3})\s*cm
显示风格雷达扫描盘(半圆 0°~180°)

显示逻辑:

  • 用长度 181 的数组保存每个角度的最新距离:-1=未扫描,0=已扫描无障碍,>0=障碍距离(cm)
  • 扫描线在障碍物处截断并加亮,扫描过的位置保留扫描线
  • 实时读数面板显示当前角度、当前距离、帧计数
  • 网格:多个距离环 + cm 刻度 + 每30°角度射线与标签
  • 提供「连接串口」「清除」按钮,默认量程 100cm

3.6 核心函数说明

超声波模块(hcsr04.c)
函数名功能返回值
HCSR04_Init()初始化引脚与 Timer0(模式1)无
HCSR04_Trig()发送约10us触发脉冲无
HCSR04_GetDistance()5次采样+中值平均滤波距离(cm)
HCSR04_Measure()对外测量接口(调用上者)距离(cm)
舵机模块(servo.c)
函数名功能参数
Servo_Init()初始化 Timer2,输出默认90°PWM无
Servo_SetHorizontal()按角度设置脉宽并重算重装值angle(0~180)
Timer2_Servo_ISR()相位法维持PWM(interrupt 5)无
串口模块(uart.c)
函数名功能参数
UART_Init()初始化 Timer1 波特率与串口中断无
UART_SendData()组装并发送「角度+距离」一行angle, distance
UART_SendString()/UART_SendByte()发送字符串 / 字节str / dat
UART_RxProcess()解析下行角度并定位舵机无
UART_ISR()接收中断,按行缓存(interrupt 4)无
按键模块(key.c)
函数名功能
Key_Init()配置 INT0/INT1 下降沿触发并使能
INT0_ISR()interrupt 0,置g_sysMode = MODE_SCAN
INT1_ISR()interrupt 2,置g_sysMode = MODE_UART

4. 模块实现进度

已完成(已硬件验证)

序号模块任务描述验证方式状态
1OLED显示实时显示模式/角度/距离观察屏幕✅
2串口通信双向收发,整合一行上报PC收到 A:XXX D:XXXcm✅
3超声波模块距离测量 + 中值平均滤波测量已知距离物体✅
4水平舵机Timer2 相位法 PWM 控制观察舵机定位/扫描✅
5独立按键INT0/INT1 切换两种模式按键切换并观察OLED✅
6PC上位机HTML雷达扫描盘实时绘制浏览器显示障碍物✅

待开发 / 优化

序号项目说明状态
7超声波测量提速减少采样/间隔、ECHO等待加超时⏳
8摇杆控制(可选)重新接入双轴摇杆做手动控制⏳
9上位机增强数据存储、量程切换、3D展示等⏳
10论文撰写整理设计与测试数据⏳

5. 硬件连接清单

5.1 设备清单

序号设备名称数量备注
1STC89C52单片机1核心控制器
2HC-SR04超声波模块1距离测量
30.96寸OLED屏幕1IIC接口
4MG996R舵机1水平转动(在用)
5DXW90舵机1俯仰(已弃用)
6独立按键2INT0/INT1 模式切换
7双轴按键摇杆1暂未接入
812V电池模组1电源输入
912V转5V/3.3V模块1电源转换
10杜邦线 / PCB板若干连接与搭建

5.2 接线表(当前在用)

单片机引脚连接设备设备引脚
P1^0HC-SR04TRIG
P1^1HC-SR04ECHO
P1^2MG996RSIGNAL
P2^0OLEDSDA
P2^1OLEDSCL
P3^0串口模块TX
P3^1串口模块RX
P3^2独立按键1一端接地,另一端接P3^2
P3^3独立按键2一端接地,另一端接P3^3
VCC(5V)所有5V设备VCC
GND所有设备GND

6. 测试验证计划

6.1 模块测试用例

模块测试项预期结果
OLED静态/动态显示正确显示模式、角度、距离
串口上行数据PC端收到 “A:XXX D:XXXcm” 格式
串口下行命令发送数字后舵机定位到对应角度
超声波近距离测量(5cm)误差<1cm
超声波中距离测量(50cm)误差<2cm
超声波远距离测量(200cm)误差<5cm
超声波滤波效果异常值被有效过滤
舵机角度控制0°/90°/180°定位准确
舵机自动扫描0°→180°→0° 平滑往返
按键INT0/INT1切换OLED的Mode在SCAN/UART间切换

6.2 系统集成测试

  1. 自动扫描测试:按 INT0 进入扫描,舵机往返,上位机显示完整半圆扫描与障碍物
  2. 串口控制测试:按 INT1 进入串口模式,PC 下发角度,舵机定位并回传距离
  3. 模式切换测试:INT0/INT1 反复切换,OLED 模式显示与行为一致
  4. 上位机联调:浏览器连接串口,验证障碍物位置、扫描线截断与保留是否正确

7. 代码文件结构

RadarScanningSystem/ ├── SRC/ # 单片机源码目录 │ ├── hcsr04.h / hcsr04.c # 超声波模块(Timer0测脉宽 + 中值平均滤波) │ ├── servo.h / servo.c # 水平舵机(Timer2 相位法 PWM) │ ├── uart.h / uart.c # 串口通信(双向收发,9600) │ ├── key.h / key.c # 独立按键(INT0/INT1 模式切换) │ ├── oled.h / oled.c # OLED显示(软件IIC) │ ├── oledfont.h # OLED字库 │ ├── bmp.h # BMP图像定义 │ └── main.c # 主程序入口(双模式主循环 + OLED刷新) ├── radar.html # PC端HTML雷达上位机(Web Serial) ├── SYSTEM_DESIGN.md # 系统设计文档(本文件) ├── RadarScanningSystem.uvproj # Keil5工程文件 ├── RadarScanningSystem.uvopt # Keil5配置文件 └── STARTUP.A51 # 启动代码

7.1 文件功能说明

文件功能描述
hcsr04.c/.h超声波测量,Timer0测脉宽,中值平均滤波
servo.c/.h单轴水平舵机,Timer2相位法生成50Hz PWM
uart.c/.h串口收发,上行"角度+距离",下行解析角度
key.c/.hINT0/INT1外部中断,切换扫描/串口模式
oled.c/.hOLED驱动(软件IIC)与显示函数
main.c初始化各模块,双模式主循环,OLED按需刷新
radar.html上位机,Web Serial接收数据绘制2D雷达

8. 关键代码片段

8.1 超声波中值平均滤波

unsignedintHCSR04_GetDistance(void){unsignedintsamples[SAMPLE_COUNT];// SAMPLE_COUNT = 5unsignedchari,j;unsignedinttemp,sum=0;for(i=0;i<SAMPLE_COUNT;i++)// 多次采样{HCSR04_Trig();samples[i]=HCSR04_GetRawDistance();delay_ms(10);// 采样间隔}for(i=0;i<SAMPLE_COUNT-1;i++)// 冒泡排序for(j=0;j<SAMPLE_COUNT-1-i;j++)if(samples[j]>samples[j+1]){temp=samples[j];samples[j]=samples[j+1];samples[j+1]=temp;}sum=samples[1]+samples[2]+samples[3];// 去最值取中间3个平均returnsum/3;}

8.2 舵机 Timer2 相位法 PWM

// 每帧拆为「高电平脉宽」+「低电平剩余」两段,各占一次Timer2溢出中断voidTimer2_Servo_ISR(void)interrupt5{TF2=0;// Timer2溢出标志软件清零if(servo_phase==0)// 脉冲结束→拉低,装载低电平段{SERVO_HORIZ_PIN=0;TH2=rl_low_th;TL2=rl_low_tl;servo_phase=1;}else// 新帧开始→拉高,装载脉宽段{SERVO_HORIZ_PIN=1;TH2=rl_high_th;TL2=rl_high_tl;servo_phase=0;}}

8.3 串口整合上报

// 组装 "A:XXX D:XXXcm\r\n" 一次性发送voidUART_SendData(unsignedcharangle,unsignedintdistance){unsignedcharbuf[20];unsignedchari=0;buf[i++]='A';buf[i++]=':';buf[i++]=(angle/100)+'0';buf[i++]=(angle/10%10)+'0';buf[i++]=(angle%10)+'0';buf[i++]=' ';buf[i++]='D';buf[i++]=':';buf[i++]=(distance/100)+'0';buf[i++]=(distance/10%10)+'0';buf[i++]=(distance%10)+'0';buf[i++]='c';buf[i++]='m';buf[i++]='\r';buf[i++]='\n';buf[i]='\0';UART_SendString(buf);}

8.4 独立按键模式切换

unsignedcharg_sysMode=MODE_UART;// 上电默认串口模式voidKey_Init(void){IT0=1;IT1=1;EX0=1;EX1=1;EA=1;}// INT0/INT1 下降沿触发voidINT0_ISR(void)interrupt0{g_sysMode=MODE_SCAN;}// 切自动扫描voidINT1_ISR(void)interrupt2{g_sysMode=MODE_UART;}// 切串口角度

9. 参考资料

  1. STC89C52RC 单片机数据手册
  2. HC-SR04 超声波模块说明书
  3. MG996R 舵机技术规格书
  4. 0.96寸OLED SSD1306驱动芯片手册
  5. Web Serial API 规范(W3C / Chrome)

版本: V3.0
日期: 2026年6月
作者: 本科毕业设计
状态: 单轴水平扫描方案,单片机端与HTML上位机均已硬件/浏览器验证,持续优化中

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询