页面外观

基于零成本准入机制的自动衣物清洁终端插件使用全周期操作规范研究指南

基于零成本准入机制的自动衣物清洁终端插件使用全周期操作规范研究指南

从零到一:基于 STC8G1K08A 的4按键串口发送板设计全流程(PCB/焊接/代码/烧录)

本文记录并分享一个极简且实用的硬件项目:基于 STC8G1K08A 单片机(SOP-8封装),制作一块 5V 供电的独立 4 按键控制板。按下不同按键,能够以 2400 波特率 连续发送指定的 16 进制控制指令。

本项目覆盖了从 原理图设计、PCB 打样、手工焊接、环境搭建、代码编写到冷启动烧录 的完整全流程,非常适合单片机初学者和嵌入式开发者作为小型控制组件参考。


目录

  1. 硬件设计与电路规划
  2. PCB 设计与打样要点
  3. 元器件清单与焊接实战
  4. 开发环境与编译前置准备
  5. C 语言程序源码与编译
  6. 在系统编程(ISP)烧录与核心避坑点
  7. 功能验证与串口测试
  8. 产物安装与使用

1. 硬件设计与电路规划

1.1 需求说明

  • 供电电压:DC 5V
  • 通信接口:标准 UART,波特率 2400 bps,8位数据,无校验,1位停止位
  • 控制输入:4 个轻触按键
  • 指令集(十六进制)(来自神秘聊天记录):
    • 按键 1:AA 06 01 98 03 01 D0 AC
    • 按键 2:AA 06 01 98 02 02 B2 0A
    • 按键 3:AA 06 01 98 01 03 51 C6 随后紧跟 AA 06 00 9F 01 03 09
    • 按键 4:AA 06 01 98 04 00 75 03

1.2 引脚分配表 (STC8G1K08A SOP-8)

引脚号 芯片引脚名称 硬件连接 功能说明
Pin 1 P5.4 / RST 按键 1 (另一端接 GND) 触发发送指令 1
Pin 2 VCC 5V 电源正极 系统供电
Pin 3 P5.5 / CMP- 按键 2 (另一端接 GND) 触发发送指令 2
Pin 4 GND 电源负极 (公共地) 系统参考地
Pin 5 P3.0 / RXD 预留烧录排针 程序下载接收端
Pin 6 P3.1 / TXD 串口输出端 / 预留排针 信号发送端
Pin 7 P3.2 / INT0 按键 3 (另一端接 GND) 触发连续发送指令 3
Pin 8 P3.3 / INT1 按键 4 (另一端接 GND) 触发发送指令 4

电路设计小技巧:按键一端直接连单片机引脚,另一端接地。外部不需要接上拉电阻,直接使用 STC8G 内部集成的准双向口/弱上拉电阻即可,极大精简外围元件。

Pix-Pin-2026-10-15-21-57-28.png


2. PCB 设计与打样要点

在绘制 PCB 时,为了方便后续的烧录和接线,有两点需要特别注意:

  1. 电源滤波:在芯片的 Pin 2 (VCC) 和 Pin 4 (GND) 之间,尽量靠近芯片放置一颗 0.1μF (104) 贴片电容,滤除高频噪声(如果觉得贴片焊接麻烦可以不加,不影响本项目功能实现)。
  2. 下载/调试接口:一定要从 Pin 2 (VCC)、Pin 4 (GND)、Pin 5 (RXD)、Pin 6 (TXD) 引出一个 4-Pin 的 2.54mm 排针接口(标记为 VCC, GND, TX, RX),方便我们后续使用 USB-TTL 烧录器。

设计好的板子(没加滤波电容)
完成设计后导出 Gerber 文件,直接在嘉立创等打样平台下单即可。

PCB


3. 元器件清单与焊接实战

3.1 BOM 清单

  • STC8G1K08A-8Pin (SOP-8) × 1
  • 轻触按键 (6×6mm 或贴片按键) × 4
  • 0.1μF 0805 贴片电容 × 1
  • 2.54mm 单排针 × 若干

3.2 焊接步骤

  1. 先矮后高:首先焊接 0.1μF 电容,其次焊接 SOP-8 芯片。芯片焊接时注意 Pin 1 的小圆点丝印标识,切勿焊反。
  2. 焊接开关与接口:焊接 4 个轻触按键以及外部连接用的排针。
  3. 短路测试:在通电前,务必使用万用表蜂鸣档测量 VCC 与 GND 之间是否短路! 确认无短路后方可进入下一步。

渲染图


4. 开发环境与编译前置准备

4.1 安装必要工具

  • Keil uVision5 C51 版本:代码编写与编译工具。
  • STC-ISP 烧录软件:宏晶官方提供的芯片烧录与配置工具(官方下载链接)。

4.2 向 Keil 中添加 STC 器件库

默认安装的 Keil 中没有 STC 单片机的选型,需要使用 STC-ISP 软件添加:

  1. 打开 STC-ISP 软件。
  2. 点击右侧工具栏的 “Keil仿真设置” 选项卡。
  3. 点击 “添加MCU型号到Keil中”。
  4. 选择你电脑中 Keil 的安装根目录(如 C:\Keil_v5),提示成功即可。

Pix-Pin-2026-10-16-14-11-50.png


5. C 语言程序源码与编译

我们采用芯片出厂默认的 24.000 MHz 内部 RC 振荡器 IRC,并在代码中利用 1T 模式的 Timer 1 精准生成 2400 波特率。

5.1 完整源码 (main.c)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <STC8G.H>
#include <intrins.h>

// ================= 1. 引脚定义 =================
sbit BTN1 = P5^4; // 按钮1 -> Pin 1
sbit BTN2 = P5^5; // 按钮2 -> Pin 3
sbit BTN3 = P3^2; // 按钮3 -> Pin 7
sbit BTN4 = P3^3; // 按钮4 -> Pin 8

// ================= 2. 待发送的十六进制指令集 =================
unsigned char code data1[] = {0xAA, 0x06, 0x01, 0x98, 0x03, 0x01, 0xD0, 0xAC}; // 按钮1数据
unsigned char code data2[] = {0xAA, 0x06, 0x01, 0x98, 0x02, 0x02, 0xB2, 0x0A}; // 按钮2数据
unsigned char code data3_1[] = {0xAA, 0x06, 0x01, 0x98, 0x01, 0x03, 0x51, 0xC6}; // 按钮3数据第1段
unsigned char code data3_2[] = {0xAA, 0x06, 0x00, 0x9F, 0x01, 0x03, 0x09}; // 按钮3数据第2段
unsigned char code data4[] = {0xAA, 0x06, 0x01, 0x98, 0x04, 0x00, 0x75, 0x03}; // 按钮4数据

// ================= 3. 毫秒级延时函数 (@24.000MHz) =================
void Delay_ms(unsigned int ms) {
unsigned char i, j;
while(ms--) {
_nop_();
i = 32;
j = 40;
do {
while (--j);
} while (--i);
}
}

// ================= 4. 串口初始化函数 (2400bps @ 24MHz) =================
void UART_Init(void) {
SCON = 0x50; // 8位可变波特率,允许接收
AUXR |= 0x40; // 定时器1工作在1T模式
AUXR &= 0xFE; // 串口1使用定时器1作为波特率发生器
TMOD &= 0x0F; // 设置定时器1模式

// 重装载值: 65536 - (24000000 / 4 / 2400) = 63036 = 0xF63C
TL1 = 0x3C;
TH1 = 0xF6;

ET1 = 0; // 禁止定时器1中断
TR1 = 1; // 启动定时器1
}

// ================= 5. 数据发送函数 =================
void UART_SendByte(unsigned char dat) {
SBUF = dat;
while (!TI); // 等待发送完毕
TI = 0; // 清除发送中断标志位
}

void UART_SendArray(unsigned char *arr, unsigned char len) {
unsigned char i;
for(i = 0; i < len; i++) {
UART_SendByte(arr[i]);
}
}

// ================= 6. 引脚模式初始化 =================
void GPIO_Init(void) {
// 设置按键对应引脚为准双向口模式(带内部上拉)
P3M1 &= ~0x0C; P3M0 &= ~0x0C; // P3.2, P3.3
P5M1 &= ~0x30; P5M0 &= ~0x30; // P5.4, P5.5
}

// ================= 7. 主逻辑 =================
void main(void) {
GPIO_Init();
UART_Init();

while(1) {
// --- 按钮 1 ---
if (BTN1 == 0) {
Delay_ms(20); // 软件消抖
if (BTN1 == 0) {
UART_SendArray(data1, sizeof(data1));
while(BTN1 == 0); // 松手检测
}
}

// --- 按钮 2 ---
if (BTN2 == 0) {
Delay_ms(20);
if (BTN2 == 0) {
UART_SendArray(data2, sizeof(data2));
while(BTN2 == 0);
}
}

// --- 按钮 3 (连续双包发送) ---
if (BTN3 == 0) {
Delay_ms(20);
if (BTN3 == 0) {
UART_SendArray(data3_1, sizeof(data3_1));
Delay_ms(10); // 帧间微延时,防止接收端黏包
UART_SendArray(data3_2, sizeof(data3_2));
while(BTN3 == 0);
}
}

// --- 按钮 4 ---
if (BTN4 == 0) {
Delay_ms(20);
if (BTN4 == 0) {
UART_SendArray(data4, sizeof(data4));
while(BTN4 == 0);
}
}
}
}

5.2 编译输出 HEX 文件

  1. 打开 Keil 工程,点击菜单栏的 Project -> Options for Target(快捷键 Alt + F7)。
  2. 点击 Output 标签页,**务必勾选 [√] Create HEX File**。
  3. 点击编译(Build),确保控制台输出 0 Error(s), 0 Warning(s),工程根目录下此时已生成 .hex 烧录文件(生成好的Hex文件)。

6. 在系统编程(ISP)烧录与核心避坑点

这是最关键的一步,请严格按照以下步骤操作。

6.1 接线方式

准备一个 USB 转 TTL 模块(如 CH340),使用杜邦线与我们板子上的烧录排针相连:

  • USB-TTL 的 5V <–> 板子的 VCC(注意:此线先不要插上!)
  • USB-TTL 的 GND <–> 板子的 GND
  • USB-TTL 的 TXD <–> 板子的 RXD (Pin 5)
  • USB-TTL 的 RXD <–> 板子的 TXD (Pin 6)

6.2 烧录软件参数配置

打开 STC-ISP 软件:

  1. 单片机型号:选择 STC8G1K08A。
  2. 串口号:选择识别到的 CH340 对应的 COM 端口号。
  3. 打开程序文件:加载刚才 Keil 编译出的 .hex 文件。
  4. 内部 IRC 频率:输入并选择 24.000 MHz。
  5. 极其重要的硬件选项(防翻车必看):
    • 切换到软件底部的 【硬件选项】 页面。
    • 找到 “复位脚用作:” 这一项。
    • **必须勾选改为:作普通I/O口 (P5.4)**!
    • (解释:如果不改,引脚1出厂默认是硬件复位脚,按下按钮1单片机就会瞬间死机重启,完全无法工作)*。

6.3 执行“冷启动”烧录

STC 芯片必须经历一次彻底断电再上电的过程才能触发烧录:

  1. 确保此时 5V (VCC) 处于断开状态。
  2. 在 STC-ISP 软件右下角,点击 【下载/编程】 按钮。
  3. 软件右侧状态栏会滚动显示:正在检测目标单片机 ...
  4. 此时将 5V 电源线插上(或打开供电开关)。
  5. 软件检测到芯片冷启动,绿色的烧录进度条跑动,最后显示 **操作成功 !**。

7. 功能验证与串口测试

烧录完成后,便可脱离烧录器,进行最终的闭环验收测试:

  1. 测试连接:
    • 保持板子正常供电(5V)。
    • 将板子的 TXD (Pin 6) 接到电脑 USB-TTL 的 RXD,两者的 GND 相连共地。
  2. 打开电脑端串口助手:
    • 选择对应串口号。
    • 波特率设置为 **2400**,数据位 8,停止位 1,无校验。
    • 勾选 “十六进制显示 / HEX 显示”。
  3. 按下按键验证:
    • 按下按键 1:接收到 AA 06 01 98 03 01 D0 AC
    • 按下按键 2:接收到 AA 06 01 98 02 02 B2 0A
    • 按下按键 3:接收到 AA 06 01 98 01 03 51 C6 AA 06 00 9F 01 03 09
    • 按下按键 4:接收到 AA 06 01 98 04 00 75 03

8. 产物安装与使用

!!!务必断电操作!!!

将自动衣物清洁终端的外壳拆开,内部主要由主板和无线模块组成,二者由串口线连接,断开无线模块接上我们的自制模块即可。

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

评论

  • Copyrights © 2020-2026 Amano陽菜&丁同勖
  • 访问人数: | 浏览次数: