基于STC89C51的智能机器人 — 完整设计文档

包含项目说明,嘉立创原理图与PCB图,烧录文件

📋 目录

  1. 项目概述
  2. 系统框图
  3. 电路原理详解
  4. 元器件清单
  5. PCB设计说明
  6. 程序烧录指南
  7. 固件功能说明
  8. 操作手册
  9. 蓝牙指令集
  10. 调试指南
  11. 故障排查
  12. 扩展建议

1. 项目概述

1.1 简介

本设计是一款基于 STC89C51RC 单片机的智能机器人小车,具备以下功能:

  • 三种工作模式:蓝牙遥控、超声波自动避障、巡线行驶
  • 双电机驱动:L298N驱动两个直流减速电机
  • 超声波避障:HC-SR04测距 + SG90舵机云台扫测
  • 蓝牙遥控:HC-05模块实现手机APP远程控制
  • 巡线行驶:红外巡线传感器跟踪黑线
  • 声光指示:蜂鸣器提示、LED状态指示

1.2 技术参数

项目 参数
主控芯片 STC89C51RC @ 12MHz
供电电压 7.4V~12V (锂电池/镍氢电池)
逻辑电压 5V (经7805稳压)
电机驱动 L298N, 最大2A/通道
测距范围 2cm~400cm (超声波)
通讯方式 蓝牙 2.0 (HC-05), 9600bps
舵机 SG90, 0°~180°
PCB尺寸 54mm × 60mm
安装孔 M3 × 4

2. 系统框图

┌─────────────────────────────────────────────────────────────────┐
│                        电源管理                                  │
│   DC 7.4~12V → 开关 → 7805稳压 → 5V VCC                        │
│                         ↓                                       │
│                   L298N电机驱动(直接取Vin)                       │
└─────────────────────────────────────────────────────────────────┘

                         ↓ 5V 供电

┌──────────┐   ┌──────────────┐   ┌──────────────────────────────┐
│ HC-SR04  │   │  STC89C51RC  │   │  HC-05 蓝牙模块              │
│ 超声波   │──▶│  主控        │◀──│  串口通讯                    │
│ Trig=P2.0│   │              │   │  RXD=P3.0 TXD=P3.1           │
│ Echo=P2.1│   │              │   │                              │
└──────────┘   │              │   └──────────────────────────────┘
               │              │
┌──────────┐   │              │   ┌──────────────────────────────┐
│ SG90     │   │              │   │  手机APP                     │
│ 舵机     │◀──│  P2.2(PWM)   │   │  (蓝牙调试助手)              │
└──────────┘   │              │   └──────────────────────────────┘
               │              │
┌──────────┐   │              │   ┌──────────────────────────────┐
│ 巡线     │──▶│  P2.3        │   │  L298N 电机驱动              │
│ 传感器   │   │              │   │  IN1/IN2=P1.0/P1.1           │
└──────────┘   │              │   │  ENA=P1.2                    │
               │              │   │  IN3/IN4=P1.3/P1.4           │
┌──────────┐   │              │   │  ENB=P1.5                    │
│ 蜂鸣器   │◀──│  P2.4→S8050  │   │                              │
│ TMB12A05 │   │              │   │  OUT1/2→MOTOR_A              │
└──────────┘   │              │   │  OUT3/4→MOTOR_B              │
               │              │   └──────────────────────────────┘
┌──────────┐   │              │
│ 模式按键 │──▶│  INT0(P3.2)  │   ┌──────────────────────────────┐
│          │   │              │   │  LED 电源指示                 │
└──────────┘   │              │   │  VCC→LED→1kΩ→GND             │
               └──────────────┘   └──────────────────────────────┘

2.1 IO口分配表

IO口 连接 功能
P1.0 L298N IN1 电机A方向控制1
P1.1 L298N IN2 电机A方向控制2
P1.2 L298N ENA 电机A使能(PWM调速)
P1.3 L298N IN3 电机B方向控制1
P1.4 L298N IN4 电机B方向控制2
P1.5 L298N ENB 电机B使能(PWM调速)
P1.6~P1.7 预留
P2.0 超声波Trig 超声波触发脉冲
P2.1 超声波Echo 超声波回波接收
P2.2 舵机信号 SG90 PWM控制
P2.3 巡线传感器 巡线信号输入
P2.4 蜂鸣器基极 S8050驱动蜂鸣器
P2.5~P2.7 预留
P3.0/RXD HC-05 TXD 蓝牙接收
P3.1/TXD HC-05 RXD 蓝牙发送
P3.2/INT0 模式按键 模式切换(外部中断)
P3.3~P3.7 预留(含P0扩展口)
P0.0~P0.7 排针引出 外部扩展接口

3. 电路原理详解

3.1 MCU最小系统

3.1.1 STC89C51RC

STC89C51RC 是宏晶科技的 8051 兼容单片机,主要特性:

  • 4KB Flash, 256B RAM
  • 40引脚 PDIP封装
  • 3 个 16 位定时器/计数器
  • 全双工 UART
  • 4 个 8 位 I/O 口
  • 6 个中断源, 2 级优先级
3.1.2 时钟电路
  • 12MHz 石英晶振 + 2×30pF 电容
  • 晶振连接 XTAL1(Pin19) 和 XTAL2(Pin18)
  • 电容一端接晶振引脚, 另一端共地
  • 提供 1μs 的机器周期 (12MHz/12)
3.1.3 复位电路
  • 上电复位:10μF 电容 + 10kΩ 电阻
  • 手动复位:按键 + 10kΩ 上拉至 VCC
  • 复位引脚 RST(Pin9) 高电平有效
  • 复位时间:约 10ms(RC 充电时间常数)
3.1.4 EA/VPP 引脚

EA(Pin31) 接 VCC,选择从内部 Flash 启动。

3.2 电源电路

3.2.1 电源输入
  • DC-002 电源插座:外径 5.5mm,内径 2.1mm
  • SS12D10 拨动开关:总电源控制
  • 输入电压范围:7.4V ~ 12V(推荐 2S 锂电池或 8 节镍氢电池)
3.2.2 稳压电路
  • L7805CV 三端稳压器(TO-220封装)
  • 输入滤波:100μF 电解 + 0.1μF 瓷片
  • 输出滤波:100μF 电解 + 0.1μF 瓷片
  • 最大输出电流:1.5A(需加散热片)
3.2.3 电源去耦
  • MCU 附近:10μF + 0.1μF 并联
  • 每个 IC 电源引脚旁放置 0.1μF 电容

3.3 电机驱动电路 (L298N)

3.3.1 L298N 特性
  • 双 H 桥电机驱动器
  • 工作电压:VS(电机) 4.8~46V,VSS(逻辑) 5V
  • 最大输出电流:2A/通道
  • 内含逻辑电平转换,可直接连接 5V MCU
3.3.2 控制逻辑
IN1 IN2 ENA 电机A状态
0 0 X 刹车(停止)
1 0 1 正转(前进)
0 1 1 反转(后退)
1 1 X 刹车

ENA/ENB 接 PWM 信号可调速。
电机电源 VS 取自电池输入(VIN),经过开关控制。

3.4 超声波测距 (HC-SR04)

3.4.1 工作原理
  1. MCU 发送 10μs 高电平到 Trig
  2. 模块自动发射 8 个 40kHz 脉冲
  3. 模块将 Echo 引脚拉高
  4. Echo 高电平持续时间 = 声波往返时间
  5. 距离 = 时间 × 声速 / 2
3.4.2 计算公式
距离(cm) = Echo高电平时间(μs) / 58
距离(mm) = 距离(cm) × 10

3.5 蓝牙模块 (HC-05)

3.5.1 参数
  • 蓝牙 2.0 + EDR
  • 默认波特率:9600bps
  • 工作电压:3.3V~5V
  • 配对密码:1234
3.5.2 连接方式
HC-05 接MCU
RXD P3.1/TXD
TXD P3.0/RXD
VCC VCC(5V)
GND GND

注意:HC-05 的 RXD 是 3.3V 电平,MCU TXD 输出 5V。
实测多数 HC-05 可直接兼容 5V 输入。

3.6 舵机电路 (SG90)

3.6.1 参数
  • 工作电压:4.8V~6V
  • 扭矩:1.8 kg·cm
  • 转角:0°~180°
  • 控制信号:20ms PWM, 0.5ms~2.5ms
3.6.2 PWM 控制
0°   = 0.5ms 高电平
90°  = 1.5ms 高电平(中间位置)
180° = 2.5ms 高电平
周期 = 20ms

3.7 蜂鸣器电路

采用 S8050 NPN 三极管 驱动:

VCC → 蜂鸣器(+) → 蜂鸣器(-) → S8050(C)
S8050(E) → GND
S8050(B) → 1kΩ → P2.4(MCU)

P2.4 高电平时 S8050 导通,蜂鸣器发声。

3.8 LED 指示

  • 红色 LED:电源指示(VCC → LED → 1kΩ → GND)
  • 正常工作时常亮

4. 元器件清单

4.1 BOM 表

位号 名称 型号/规格 封装 数量
U1 主控MCU STC89C51RC-40I-PDIP40 DIP-40 1
U2 电压调节器 L7805CV TO-220 1
U3 电机驱动 L298N Multiwatt15 1
X1 晶振 12MHz HC-49S 1
C1, C2 瓷片电容 30pF 0805 2
C3 电解电容 10μF/25V 5×7mm 1
C4 电解电容 10μF/25V 5×7mm 1
C5, C6 电解电容 100μF/25V 6×7mm 2
C7, C8 瓷片电容 0.1μF (104) 0805 2
R1 贴片电阻 1kΩ 0805 1
R2 贴片电阻 1kΩ 0805 1
R3 贴片电阻 10kΩ 0805 1
S1 轻触按键 6×6×5mm DIP 1
S2 轻触按键 TS-1088 SMD 1
SW1 拨动开关 SS12D10G5 DIP 1
DC1 电源插座 DC-002E DIP 1
D1 LED 3mm 红色 直插 1
Q1 NPN三极管 S8050 TO-92 1
BZ1 有源蜂鸣器 TMB12A05 12mm 1
J1~J4 排针 2.54mm 4P 直插 4
J5, J6 排针 2.54mm 3P 直插 2

4.2 外购模块

模块 型号 数量 备注
超声波 HC-SR04 1 含超声波探头+电路板
蓝牙 HC-05 1 主从一体蓝牙模块
舵机 SG90 1 9g微型舵机
巡线传感器 TCRT5000模组 1 红外反射式
直流减速电机 N20 或 TT电机 2 带轮子
电池 7.4V 锂电池 1 2S 锂电池或电池盒

5. PCB设计说明

5.1 布局要点

  1. 电源区:7805 需加散热片,远离 MCU
  2. 晶振:紧靠 MCU XTAL 引脚,走线尽可能短
  3. 去耦电容:每个 IC 的 VCC 引脚旁放 0.1μF
  4. L298N:电机大电流走线加宽(≥40mil)
  5. 排针:放在 PCB 边缘方便插拔

5.2 走线建议

网络 线宽 说明
VCC 40mil(1mm) 电源主干
GND 40mil(1mm) 铺铜处理
VIN 50mil(1.27mm) 电机大电流
信号 10~12mil 普通信号线
电机输出 50mil 到电机的线

5.3 设计规则

  • 板子尺寸:54mm × 60mm
  • 板厚:1.6mm
  • 铜厚:1oz
  • 双层板
  • 最小线宽/线距:8mil/8mil
  • 最小孔径:0.3mm
  • 阻焊颜色:绿色

5.4 安装孔

4 × M3 非金属化安装孔, 位于四角:

位置 坐标
左上 (11, 9)mm
右上 (55, 9)mm
左下 (11, 59)mm
右下 (55, 59)mm

6. 程序烧录指南

6.1 所需工具

工具 说明
Keil C51 编译环境(μVision 4/5)
STC-ISP STC单片机下载软件
USB转TTL CH340/FT232 模块
杜邦线 母对母若干

6.2 编译步骤

1. 打开 Keil μVision
2. Project → New μVision Project
3. 选择 CPU: STC MCU → STC89C51RC  (或直接选 Intel 8051)
4. 添加 main.c 到工程
5. 配置 Target Options:
   - Xtal(MHz): 12
   - Memory Model: Small
   - Code Rom Size: Large
   - Operating System: None
6. Build (F7) 生成 .hex 文件

6.3 烧录步骤

接线(STC-ISP下载器 → 目标板):

STC-ISP         目标板
USB-TTL         MCU引脚
──────────────────────
TXD  ─────────  P3.1/RXD
RXD  ─────────  P3.0/TXD
GND  ─────────  GND
3.3V ─────────  (不接)
5V   ─────────  VCC (目标板需外部供电)

完整烧录流程

1. 打开 STC-ISP 软件
2. 选择单片机型号: STC89C51RC
3. 选择串口号 (在设备管理器查看)
4. 设置波特率: 115200
5. 点击 "打开程序文件" → 选择生成的 .hex
6. 勾选 "下次冷启动后P1.0/P1.1为0/0" (如需要)
7. 点击 "下载/编程" 按钮
8. **立即给目标板上电**(断电→上电)
9. 等待进度条完成,显示 "操作成功!"

⚠️ 重要:STC 单片机需要冷启动(先点下载,再给目标板上电)。

6.4 接线示意图

电脑USB ──→ USB转TTL ──→ 机器人PCB
                │
            TXD────P3.1(RXD)
            RXD────P3.0(TXD)
            GND────GND
            5V────(目标板自供电不接)

7. 固件功能说明

7.1 三种工作模式

模式 按键次数 指示 功能
蓝牙遥控 开机默认 蜂鸣1短声 手机APP遥控
避障模式 按1次 蜂鸣2短声 自动避障行驶
巡线模式 按2次 蜂鸣3短声 沿黑线行驶

7.2 蓝牙遥控模式

开机默认进入蓝牙遥控模式。

  • 通过手机蓝牙连接 HC-05
  • 配对密码:1234
  • 发送指令控制小车运动

7.3 超声波避障模式

  • 舵机指向正前方
  • 连续测量前方障碍物距离
  • 安全距离(>30cm):前进
  • 警戒距离(20~30cm):减速
  • 危险距离(10~20cm):停止,左右测距,转向较空方向
  • 极危险(<10cm):后退再转向

7.4 巡线模式

  • 持续检测巡线传感器信号
  • 检测到黑线:前进
  • 脱线:停止→左右寻线→后退重找

7.5 模式切换

  • 模式按键(INT0)切换模式
  • 模式顺序:蓝牙 → 避障 → 巡线 → 蓝牙(循环)
  • 切换时蜂鸣器提示,电机停止

8. 操作手册

8.1 开机检查

□ 电池电压正常 (7.4V~12V)
□ 电源开关处于 OFF 位置
□ 所有排线连接牢固
□ 电机轮子安装到位
□ 超声波模块朝前
□ 舵机云台在中间位置

8.2 开机步骤

1. 接通电池
2. 打开电源开关 (SW1)
3. 绿色 LED 常亮 → 供电正常
4. 蜂鸣器 "嘀嘀" 两声 → 系统启动
5. 默认为蓝牙遥控模式

8.3 蓝牙连接

1. 打开手机蓝牙
2. 搜索设备: "HC-05" 或 "BT-01"
3. 配对: 密码 1234
4. 打开蓝牙串口APP (推荐: 蓝牙调试器)
5. 连接成功后 HC-05 指示灯慢闪

8.4 遥控操作

按键 功能
F/f 前进
B/b 后退
L/l 左转
R/r 右转
S/s 停止
U/u 舵机左转
D/d 舵机右转
M/m 舵机回中
V/v 切换模式
Z/z 蜂鸣器测试

8.5 关机

1. 发送停止指令(S)让小车停下
2. 关闭电源开关
3. 断开电池(长期不用)

9. 蓝牙指令集

9.1 指令格式

单字符指令,大小写均可,无结束符要求。

9.2 指令表

指令 ASCII 功能
F/f 0x46/0x66 前进
B/b 0x42/0x62 后退
L/l 0x4C/0x6C 左转
R/r 0x52/0x72 右转
S/s 0x53/0x73 停止
U/u 0x55/0x75 舵机左转
D/d 0x44/0x64 舵机右转
M/m 0x4D/0x6D 舵机回中
V/v 0x56/0x76 切换模式
Z/z 0x5A/0x7A 蜂鸣器测试

10. 调试指南

10.1 串口调试

程序会通过串口输出调试信息(9600bps),可用 USB-TTL + 串口助手查看:

=== Smart Robot v1.0 ===
Bluetooth mode ready!
F=Forward B=Back L=Left
R=Right S=Stop M=Mode
=========================
Mode: Bluetooth
Mode: Avoid
Mode: Line

10.2 超声波校准

如果测距不准确,调整超声波测距函数中的参数:

// 修正系数 (根据实际测试调整)
distance = distance * 10 / 58;  // cm
// 可改为:
distance = distance * 10 / 58 * 100 / 95;  // 增加5%修正

10.3 舵机角度校准

不同品牌舵机的 PWM 范围可能不同:

// 调整以下值以匹配实际舵机
#define SERVO_MID   90      // 实测中间角度
#define SERVO_LEFT  180     // 实测最左角度
#define SERVO_RIGHT 0       // 实测最右角度

10.4 巡线传感器校准

巡线传感器有可调电位器,调整至:

  • 在白色桌面上:输出 0
  • 在黑线上:输出 1

11. 故障排查

11.1 电源问题

现象 可能原因 解决办法
LED 不亮 电池没电/开关未开 测量电池电压、检查开关
7805 发热严重 电流过大/散热不良 加散热片、检查是否有短路
电压不稳 滤波电容失效 检查100μF和0.1μF电容

11.2 电机问题

现象 可能原因 解决办法
电机不转 L298N 供电不足 检查 VIN 连接、电池电压
电机只转一个方向 控制信号问题 检查对应 IN/EN 引脚连接
电机无力 电池电压低/驱动电流不足 充电、检查 L298N VS 供电

11.3 通讯问题

现象 可能原因 解决办法
蓝牙搜不到 模块未供电/损坏 检查 VCC/GND、更换模块
蓝牙连不上 密码错误/波特率不符 默认密码1234, AT模式检查
串口乱码 波特率不匹配 检查程序115200/9600设置

11.4 超声波问题

现象 可能原因 解决办法
测距一直为0 Trig/Echo连接反 检查接线
测距不准 障碍物形状/声波干扰 加软件滤波、多次平均
超时 距离太远/模块损坏 测试在0.2~2m范围内

11.5 烧录问题

现象 可能原因 解决办法
下载失败/超时 冷启动顺序不对 先点下载再上电
芯片识别失败 波特率太高 降低到 9600 或 2400
程序运行不对 晶振频率设置错误 Keil 中 Xtal 设 12MHz

12. 扩展建议

12.1 硬件扩展

  • 增加测速码盘:在电机上安装霍尔码盘,实现里程计和精确转向
  • 增加 MPU6050 陀螺仪:实现姿态感知和走直线校正
  • 增加 OLED 显示屏:显示距离、模式、电量等信息
  • 增加 WiFi 模块(ESP8266):实现 Wi-Fi 远程控制和视频传输
  • 增加机械臂:用舵机搭建简单的抓取机械臂
  • 增加摄像头:OpenMV/K210 实现视觉识别

12.2 软件扩展

  • PID 控制:改善电机速度控制和巡线精度
  • 路径规划:A* 或 Dijkstra 算法实现自主导航
  • 多传感器融合:超声波 + 红外 + 陀螺仪数据融合
  • 上位机软件:用 Python/PyQt 开发桌面控制端
  • OTA 升级:通过蓝牙远程更新固件(需额外 Bootloader)

12.3 预留IO口用途建议

IO口 建议用途
P0.0~P0.7 8位并行数据/扩展LCD
P1.6~P1.7 额外传感器输入
P2.5 第二路巡线传感器
P2.6 电量检测(ADC)
P2.7 RGB LED 控制
P3.2/INT0 已用作模式按键
P3.3/INT1 测速码盘中断
P3.4/T0 外部计数
P3.5/T1 外部计数
P3.6/WR I2C SCL
P3.7/RD I2C SDA

附录

A. STC89C51RC 引脚图

          ┌──────────┐
  P1.0 ──┤1        40├── VCC
  P1.1 ──┤2        39├── P0.0/AD0
  P1.2 ──┤3        38├── P0.1/AD1
  P1.3 ──┤4        37├── P0.2/AD2
  P1.4 ──┤5        36├── P0.3/AD3
  P1.5 ──┤6        35├── P0.4/AD4
  P1.6 ──┤7        34├── P0.5/AD5
  P1.7 ──┤8        33├── P0.6/AD6
   RST ──┤9        32├── P0.7/AD7
  RXD  ──┤10       31├── EA/VPP ← VCC
  TXD  ──┤11       30├── ALE/PROG
 INT0  ──┤12       29├── PSEN
 INT1  ──┤13       28├── P2.7/A15
   T0  ──┤14       27├── P2.6/A14
   T1  ──┤15       26├── P2.5/A13
   WR  ──┤16       25├── P2.4/A12
   RD  ──┤17       24├── P2.3/A11
 XTAL2 ──┤18       23├── P2.2/A10
 XTAL1 ──┤19       22├── P2.1/A9
   GND ──┤20       21├── P2.0/A8
          └──────────┘

B. 参考资料

  • STC89C51RC 数据手册: www.stcmcudata.com
  • L298N 数据手册: www.st.com
  • HC-SR04 说明书: 通用模块资料
  • HC-05 AT指令集: 通用蓝牙模块资料
  • 嘉立创EDA教程: lceda.cn/learn

文档版本: v1.0
生成日期: 2026-05-07
作者: Naimi AI Assistant

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐