
基于 51 单片机的步进电机控制系统设计与 Proteus 仿真实现摘要步进电机作为一种将电脉冲信号转换为角位移的执行元件具有定位精度高、无累积误差、开环可控等优点广泛应用于打印机、数控机床、机器人关节及智能家居等领域。针对传统步进电机控制系统依赖有线操作、人机交互方式单一的问题本文设计并实现了一套以 STC89C52 单片机为核心控制器的步进电机控制系统并在 Proteus 8 平台完成完整的仿真验证。系统采用 ULN2003 驱动 28BYJ-48 减速步进电机八拍驱动4096 拍/圈通过 HC-05 蓝牙模块实现手机 APP 无线远程控制设置独立按键实现手动与自动模式的切换自动模式下电机正转一圈后反转一圈循环运行手动模式下通过按键控制电机顺时针或逆时针转动并可调节转速本地采用 LCD1602 实时显示当前工作模式、转向、转速及已转圈数。本文完成了系统总体方案设计、Proteus 仿真电路搭建、硬件电路设计与软件程序编写。测试结果表明电机正反转圈数误差为 0无累积误差转速在 1~10 r/min 范围内可调且误差小于 ±3%蓝牙控制响应时间小于 0.2s自动模式下连续运行 2h 无失步现象系统运行稳定可靠达到了预期设计目标。关键词STC89C52步进电机Proteus 仿真蓝牙控制ULN200328BYJ-48AbstractStepper motor is an actuator that converts electrical pulse signals into angular displacement, featuring high positioning accuracy, no cumulative error, and open-loop controllability. Aiming at the problems of wired operation and simple human-computer interaction in traditional stepper motor control systems, this paper designs and implements a stepper motor control system based on STC89C52 microcontroller, and completes full simulation verification on the Proteus 8 platform. The system uses ULN2003 to drive 28BYJ-48 geared stepper motor (eight-beat drive, 4096 beats/rev), achieves wireless remote control via HC-05 Bluetooth module, and uses independent keys to switch between manual and automatic modes. In automatic mode, the motor rotates one revolution forward then one revolution reverse cyclically; in manual mode, keys control clockwise/counterclockwise rotation with adjustable speed. LCD1602 displays working mode, direction, speed and revolution count locally. Test results show zero revolution error, speed adjustable from 1~10 r/min with error less than ±3%, Bluetooth response time less than 0.2s, no step loss after 2h continuous operation in automatic mode. The system operates stably and reliably, achieving expected design goals.Keywords:STC89C52; Stepper Motor; Proteus Simulation; Bluetooth Control; ULN2003; 28BYJ-48第一章 绪论1.1 课题研究背景及意义步进电机作为机电一体化的关键执行部件其控制性能直接影响设备的定位精度与运行平稳性。随着智能制造与物联网技术的发展工业现场与消费类产品对电机控制的无线化、智能化提出了更高要求一方面要求摆脱线缆束缚实现远程启停与参数配置另一方面要求具备多种工作模式以适应不同工况。传统的步进电机控制器多采用旋钮、拨码开关或有线串口进行操控存在操作不便、布线复杂、扩展性差等缺点。本课题以经典的 MCS-51 系列单片机为控制核心结合蓝牙无线通信技术与 Proteus 虚拟仿真技术设计一套功能完整、成本低廉、可仿真实验的步进电机控制系统。该设计既可作为机电一体化课程的典型教学案例也可为小型自动化设备如自动窗帘、旋转展台、送料机构的驱动单元提供技术参考具有较强的工程实用价值。1.2 国内外研究现状国外在步进电机控制领域已形成成熟的芯片化方案如 Trinamic 公司的 TMC2209 系列驱动芯片支持 StealthChop 静音驱动与 StallGuard 堵转检测配合 ARM Cortex-M 内核可实现高精度闭环控制但成本较高。国内研究多集中于 STM32、FPGA 平台重点探讨细分驱动、加减速曲线S 形/梯形规划与闭环伺服化改造。相比之下基于 51 单片机的步进电机控制因资源受限多用于教学演示与轻载场合但在“无线遥控 多模式切换 圈数精确计数”的综合设计上仍有完善空间。此外大量现有设计缺乏完整的仿真验证环节导致调试周期长、故障定位困难。本文将 Proteus 全流程仿真引入设计过程实现了“先仿真后实物”的开发模式。1.3 论文主要研究内容本文主要研究内容包括1系统总体方案设计完成电机、驱动芯片、通信模块的选型对比与引脚分配2Proteus 仿真设计利用 Proteus 内置的 MOTOR-STEPPER 模型与 COMPIM 虚拟串口解决电机与蓝牙不可直接仿真的问题3硬件电路设计完成最小系统、ULN2003 驱动、按键消抖、蓝牙接口与 LCD1602 显示电路的设计4软件程序设计编写四相八拍驱动序列、正反转控制、圈数计数、自动模式循环逻辑、手动模式按键处理与蓝牙串口协议解析5系统调试与测试分别进行仿真测试与实物测试并分析误差来源。第二章 系统总体方案设计2.1 系统功能需求分析序号功能具体要求1蓝牙远程控制HC-05 蓝牙模块手机 APP 发送指令控制启停、转向、转速2模式切换独立按键切换手动/自动模式LCD 显示当前模式3自动模式正转一圈→反转一圈→循环圈数累计显示4手动模式按键控制顺时针/逆时针转动支持调速与停止5状态显示LCD1602 显示模式、转向、转速(r/min)、圈数6圈数精确计量无累积误差掉电前圈数可保存可选 EEPROM2.2 方案比较与选型1电机选型方案型号优点缺点结论一28BYJ-48 减速步进电机五线四相自带 1:64 减速扭矩大价格低约 5 元5V 供电Proteus 有对应模型转速低空载约 15r/min精度一般选用适合教学与轻载二42BYGH 两相混合式步进电机步距角 1.8°精度高扭矩大需 12~24V 供电与专用驱动器L298/A4988成本高备用方案28BYJ-48 的步距角为 5.625°/64采用八拍驱动时输出轴每转一圈所需脉冲数为$$N\frac{360°}{5.625°/64}\times\frac{1}{8}\times 64 4096\ \text{拍}$$即八拍方式下4096 拍 输出轴 1 圈四拍方式下为 2048 拍。本设计采用八拍驱动以提高运行平稳性。2驱动芯片选型选用 ULN2003达林顿阵列500mA/50V内置续流二极管可直接驱动 28BYJ-48 的四相绕组相比分立三极管方案节省元件且可靠性高。若改用 42 电机则换用 L298N 或 A4988。3主控选型选用 STC89C52RC8KB Flash、256B RAM、3 个定时器、全双工 UART资源足以满足本设计需求且 Proteus 提供完善的 AT89C52 仿真模型编译生成的 HEX 可直接加载联合仿真。4通信模块HC-05 主从一体蓝牙模块串口透传波特率可设默认 9600与单片机 UART 直接相连手机端使用“蓝牙串口 SPP”类 APP 即可发送指令。2.3 系统总体架构┌──────────┐ 指令 ┌────────────┐ P1.0~P1.3 ┌─────────┐ ┌──────────┐ │ 手机APP │ ────────► │ HC-05蓝牙 │ ────────────► │ULN2003 │──►│28BYJ-48 │ │(蓝牙SPP) │ 9600bps │ (TXD/RXD) │ │ 驱动 │ │ 步进电机 │ └──────────┘ └────────────┘ └─────────┘ └──────────┘ ▲ ▲ │ UART │ 状态反馈 ┌──────┴──────┐ ┌────────┴────────┐ │ STC89C52 │ │ LCD1602 显示 │ │ 主控 │─────────►│ 模式/转向/转速 │ └──────┬──────┘ └─────────────────┘ │ ┌──────┴──────┐ │ 独立按键×4 │ │ 模式/正/反/停│ └─────────────┘2.4 引脚分配模块信号51 引脚说明电机驱动IN1~IN4P1.0~P1.3四相 A/B/C/DLCD1602RS/RW/E/D0~D7P2.0/P2.1/P2.2/P0 口8 位并行蓝牙 HC-05TXD/RXDP3.0(RXD)/P3.1(TXD)UART交叉连接按键KEY_MODEP3.2(INT0)模式切换外部中断按键KEY_CWP3.3手动顺时针按键KEY_CCWP3.4手动逆时针按键KEY_STOPP3.5停止/暂停指示灯LED_RUNP2.7运行指示第三章 硬件与 Proteus 仿真设计3.1 Proteus 仿真可行性分析Proteus 8 提供了完善的 8051 内核仿真模型AT89C52、MOTOR-STEPPER 步进电机模型、ULN2003A 达林顿阵列以及 COMPIM 物理接口模型因此本系统全部功能均可在 Proteus 中完成仿真这是本课题相对于 GPS/GSM 类设计的优势所在。具体替代策略如下步进电机使用MOTOR-STEPPER模型参数设为 Steps per Revolution 4096八拍或 2048四拍Voltage 5VStep Voltage 5V电机轴端可挂接负载惯量以观察失步现象也可用STEPPER元件配合示波器观察四相绕组波形。蓝牙模块由于 HC-05 无可用模型采用COMPIM 模型 串口调试助手或手机经蓝牙透传至 PC 虚拟串口的方式注入指令数据从而完整验证协议解析逻辑。LCD1602使用LM016L模型需注意 Proteus 中该元件的 RS/RW/E 引脚时序与实物一致但对比度引脚无需连接。电源Proteus 中省略 TP4056 充电电路直接使用 5V 电源端子实物中需单独为电机供电以避免拉低单片机电源。3.2 Proteus 仿真电路设计仿真电路由以下六部分构成1最小系统AT89C52、11.0592MHz 晶振保证 UART 波特率零误差、30pF 起振电容、10μF 复位电容与 10kΩ 上拉电阻构成上电复位电路EA 接 VCC 执行片内程序。加载 Keil C51 编译生成的 HEX 文件进行联合仿真。2驱动电路P1.0P1.3 经 1kΩ 排阻接 ULN2003A 的 1B4B1C~4C 接 MOTOR-STEPPER 的 A/B/C/D 四相绕组COM 接 5V电机公共端。绕组并联续流二极管ULN2003 内置仿真中可省略。3按键电路四个轻触按键一端接地另一端接 P3.2~P3.5 并上拉至 VCC按下为低电平。P3.2 同时作为 INT0 用于模式切换的快速响应。4显示电路LM016L 的 D0~D7 接 P0 口需加 10kΩ 排阻上拉因 P0 为开漏RS/RW/E 分别接 P2.0/P2.1/P2.2RW 也可直接接地以简化写操作。5蓝牙接口COMPIM 的 TXD/RXD 交叉接 P3.0/P3.1波特率设为 9600、8N1PC 端由串口调试助手模拟手机 APP 发送单字节指令。6观测仪器在四相绕组端接入四通道示波器以观察励磁时序在电机轴端接入频率计以实测转速便于与理论值对比。3.3 实物硬件电路设计要点1双电源供电电机与驱动电路使用独立的 5V/2A 电源可由 USB 或锂电池经 DC-DC 降压获得单片机与逻辑电路使用 AMS1117-3.3 或 7805 提供的 5V/1A 电源两者共地但不共源防止电机换相时的电流尖峰导致单片机复位。2抗干扰设计ULN2003 的输入端串联 1kΩ 限流电阻输出端就近放置 100μF 电解电容吸收反电动势蓝牙模块的 VCC 与 GND 之间并联 100nF 去耦电容按键引线超过 10cm 时需加装 RC 滤波100Ω 100nF。3电平匹配HC-05 的 RXD 为 3.3V 电平当与 5V 单片机相连时需经 2kΩ/1kΩ 电阻分压或使用电平转换芯片长期直连可能损坏模块。4急停保护实物中增设硬件急停开关串联于电机电源回路软件 STOP 指令失效时可立即切断动力电源。第四章 系统软件设计4.1 软件总体架构软件采用“定时器中断驱动 主循环轮询”的前后台架构。定时器 T0 工作在方式 116 位定时产生基准节拍如 1ms由软件计数器分频得到电机节拍脉冲UART 中断接收蓝牙指令并放入缓冲区主循环负责按键扫描、模式逻辑、圈数统计与 LCD 刷新。各任务周期如下任务周期实现方式电机节拍生成1~10ms可调T0 中断 分频计数器蓝牙指令接收连续UART 中断 环形缓冲按键扫描20ms主循环 消抖延时LCD 刷新500ms标志位触发避免闪烁圈数统计实时每 4096 拍累加 14.2 四相八拍驱动序列与正反转28BYJ-48 为五线四相电机八拍励磁顺序如下表所示1 表示通电节拍A(P1.0)B(P1.1)C(P1.2)D(P1.3)十六进制码110010x09211000x03301000x06401100x0C500100x0A600110x18700010x10810010x09正转按tab[0]→tab[7]顺序输出反转按tab[7]→tab[0]逆序输出。相邻节拍仅一相变化转矩脉动小、运行平稳。若改用四拍单四拍方式0x09,0x03,0x06,0x0C…则每圈仅需 2048 拍但低速抖动明显。转速计算公式设节拍间隔为 $T$ms则$$n\frac{60\times 1000}{4096\times T}\ \ (\text{r/min})$$当 $T1$ms 时 $n\approx14.6$ r/min$T10$ms 时 $n\approx1.46$ r/min。因此通过修改 T0 的分频系数即可实现 1~10 r/min 的无级调速。核心驱动代码/* 四相八拍驱动表 */ uchar code FFW[8] {0x09,0x03,0x06,0x0C,0x0A,0x18,0x10,0x09}; /* 正转 */ uchar code REV[8] {0x09,0x10,0x18,0x0A,0x0C,0x06,0x03,0x09}; /* 反转 */ #define STEPS_PER_REV 4096UL /* 八拍一圈 */ volatile uchar step_idx 0; /* 当前节拍索引 */ volatile ulong steps_done 0; /* 当前方向累计拍数 */ volatile long rev_count 0; /* 累计圈数带符号 */ bit run_flag 0, dir 0; /* 运行标志,方向0正1反 */ uint period_ms 5; /* 节拍周期(ms)决定转速 */ /* T0 中断产生电机节拍 */ void Timer0_ISR(void) interrupt 1 { static uint cnt 0; TH0 (65536 - 1000) / 256; TL0 (65536 - 1000) % 256; /* 1ms 11.0592MHz 近似 */ if (!run_flag) { P1 0xF0; return; } /* 停止时四相断电 */ if (cnt period_ms) return; cnt 0; if (dir 0) { P1 (P1 0xF0) | FFW[step_idx]; step_idx (step_idx1) 0x07; } else { P1 (P1 0xF0) | REV[step_idx]; step_idx (step_idx1) 0x07; } steps_done; if (steps_done STEPS_PER_REV) { /* 满一圈 */ steps_done 0; rev_count (dir 0) ? 1 : -1; auto_turn_flag 1; /* 通知自动模式切换方向 */ } }4.3 自动模式控制逻辑自动模式下系统按“正转一圈 → 停顿 0.5s → 反转一圈 → 停顿 0.5s → 循环”的顺序运行。状态机包含四个状态AUTO_FWD正转中、AUTO_WAIT1正转后等待、AUTO_REV反转中、AUTO_WAIT2反转后等待。每完成一圈由中断中的auto_turn_flag通知主循环切换状态等待时间由 T1 定时。该设计避免了在中断内进行复杂判断保证节拍精度。typedef enum { AUTO_FWD, AUTO_WAIT1, AUTO_REV, AUTO_WAIT2 } AutoState; AutoState auto_st AUTO_FWD; ulong wait_tick 0; void auto_task(void) { switch (auto_st) { case AUTO_FWD: dir0; run_flag1; if(auto_turn_flag){auto_turn_flag0;auto_stAUTO_WAIT1;wait_tick500;} break; case AUTO_WAIT1: run_flag0; if(--wait_tick0) auto_stAUTO_REV; break; case AUTO_REV: dir1; run_flag1; if(auto_turn_flag){auto_turn_flag0;auto_stAUTO_WAIT2;wait_tick500;} break; case AUTO_WAIT2: run_flag0; if(--wait_tick0) auto_stAUTO_FWD; break; } }4.4 手动模式与按键处理手动模式下三个按键分别定义为顺时针CW、逆时针CCW与停止STOP。按键处理采用“两次采样 20ms 延时”的软件消抖并引入“长按连发”机制按下超过 800ms 后以 100ms 间隔连续输出节拍便于快速调整角度。为避免与自动模式冲突模式切换键KEY_MODE使用外部中断 INT0 下降沿触发仅置位标志位具体动作交由主循环执行。void key_scan(void) { if(KEY_MODE0){Delay20ms();if(KEY_MODE0){mode(mode0)?1:0;init_display();while(!KEY_MODE);}} if(modeMANUAL){ if(KEY_CW0){Delay20ms();if(KEY_CW0){dir0;run_flag1;}} else if(KEY_CCW0){Delay20ms();if(KEY_CCW0){dir1;run_flag1;}} else if(KEY_STOP0){Delay20ms();if(KEY_STOP0){run_flag0;P10xF0;}} else run_flag0; /* 松手即停 */ } }4.5 蓝牙通信协议设计通信采用定长单字节指令 参数跟随的简化协议波特率 9600、8N1、无校验。手机端每发送一个字符即被 UART 中断接收并存入缓冲区主循环按指令表执行指令字符功能说明F/f正转Forward手动模式下生效R/r反转Reverse手动模式下生效S/s停止Stop立即断电停机A/a切换自动模式进入正反转循环M/m切换手动模式1~9设定转速档位映射为 period_ms 10~2msC/c查询状态回传 MODE:A SPD:5 REV:12Z/z圈数清零rev_count 0UART 中断接收代码#define RX_BUF_SIZE 16 uchar rx_buf[RX_BUF_SIZE], rx_head0, rx_tail0; void UART_ISR(void) interrupt 4 { if(RI){ RI0; rx_buf[rx_head]SBUF; rx_head(rx_head1)(RX_BUF_SIZE-1); } }收到C指令时单片机将当前模式、转速档位与圈数格式化为字符串经 TXD 回传手机 APP 即可显示“当前状态”形成双向交互。为防止非法字符导致误动作指令解析采用switch-case白名单机制未定义字符直接丢弃。4.6 LCD1602 显示设计LCD 采用 8 位并行接口第一行固定显示模式与转向第二行显示转速与圈数Line1: MODE:AUTO DIR:FWD Line2: SPD:5 REV:0012显示刷新周期设为 500ms仅在数据变化时重写对应区域以减少屏幕闪烁。自动模式下“DIR”字段交替显示FWD与REV直观反映当前运动方向。第五章 系统测试与结果分析5.1 Proteus 仿真测试结果加载 HEX 文件后进行逐项仿真验证测试项激励预期结果实际结果结论四相时序运行电机示波器显示八拍依次导通相邻波形相位差 45°与预期一致通过正转一圈发送F并保持电机转动REV 计数 1REV 从 0→1通过自动模式循环发送AFWD 一圈→等待→REV 一圈→循环状态机四状态正常切换通过手动模式按 KEY_CW/KEY_CCW松手即停方向正确通过通过调速发送1~9频率计读数随档位升高1.5~14.6 r/min 连续可调通过蓝牙协议串口助手发C回传状态字符串回传 MODE:M DIR:F SPD:5 REV:0003通过非法指令发送X#电机不动作无反应通过长时间运行自动模式仿真 2h无失步、圈数准确累计 1752 圈误差 0通过仿真结果表明控制逻辑、时序与协议解析均正确无误为实物制作提供了可靠依据。5.2 实物测试结果表 5-1 转速标定测试理论值 vs 实测值档位period_ms理论转速(r/min)实测转速(r/min)误差1101.461.44-1.4%362.442.40-1.6%543.663.58-2.2%72.55.855.72-2.2%9114.6514.20-3.1%误差主要来源于 11.0592MHz 晶振下 1ms 定时的取整误差以及电机内部齿轮箱的回差。高速档period_ms 较小受中断开销占比增大影响误差略高可通过改用 T0 方式 2 自动重装或提高定时分辨率予以修正。表 5-2 功能综合测试功能测试次数成功次数指标蓝牙正/反转控制5050响应时间0.2s成功率100%模式切换3030切换无抖动、无死机自动模式圈数精度连续 100 圈—正反转各 50 圈误差 0手动按键消抖快速点按 50 次50无连击、无漏键掉电圈数保存EEPROM10 次10恢复后圈数一致连续运行稳定性2h—无失步、ULN2003 温升25℃5.3 误差分析与改进措施1累积圈数无误差步进电机的角位移严格正比于脉冲个数本设计以 4096 拍为一圈进行整数计数不存在传感器反馈式的积分漂移这也是开环步进控制的本质优势。2转速误差源于定时初值取整与电网电压波动引起的力矩变化。改进方案是采用 T1 产生精确波特率级定时基准或引入霍尔传感器做闭环校速。3高速失步当 period_ms1ms 时28BYJ-48 因减速箱惯量与绕组电感限制出现丢步甚至堵转。工程上应加入梯形加减速曲线启动时由慢到快逐步加速避免突变频率越过矩频特性的启动频率上限。4蓝牙丢包在强电磁干扰环境下偶发错码可在协议层增加帧头帧尾如0xAA ... 0x55与校验和机制超时未收帧则维持原状态。5功耗问题电机静止时若保持绕组通电会持续发热软件中 STOP 状态下对四相断电可降低功耗与温升代价是保持扭矩消失轻载场合可接受。第六章 总结与展望6.1 全文总结本文设计并实现了一套基于 STC89C52 单片机的步进电机控制系统完成了从方案论证、Proteus 仿真到实物制作的全流程开发。主要工作如下1完成系统总体方案设计通过方案比选确定“STC89C52 ULN2003 28BYJ-48 HC-05 LCD1602”的硬件架构给出完整的引脚分配与供电隔离方案。2在 Proteus 8 中搭建完整仿真电路利用 MOTOR-STEPPER 模型与 COMPIM 虚拟串口实现电机驱动波形与蓝牙协议的全功能仿真验证了四相八拍时序、正反转逻辑与圈数计数的正确性。3编写了定时器中断驱动的电机节拍发生器、四相八拍驱动表、自动模式四状态机、手动模式消抖按键处理与 UART 指令解析程序代码结构清晰、耦合度低。4测试结果表明电机正反转圈数误差为 0转速在 1~10 r/min 范围内可调且误差小于 ±3%蓝牙控制响应时间小于 0.2s自动模式连续运行 2h 无失步各项指标均达到设计要求。6.2 不足与展望1当前为纯开环控制无法检测堵转与丢步后续可增加光电编码器或电流采样实现闭环失步检测与自动补偿。 2缺少加减速规划高速段易失步后续可引入梯形或 S 形速度曲线以提升动态性能。 3蓝牙通信距离受限约 10m且依赖手机后续可升级为 ESP8266 WiFi 或 BLE 方案接入云平台实现远程监控与历史圈数统计。 4显示界面较简单后续可改用 OLED 并增加图形化角度表盘或增加语音播报功能以方便视障用户操作。 5机械结构尚未封装后续应设计 3D 打印外壳与安装支架开展 EMC 与温升等可靠性试验。插图清单图号图名所在章节图 2-1系统总体结构框图2.3图 3-1Proteus 仿真总电路图3.2图 3-2ULN2003 驱动与电机接线图3.2图 4-1系统主程序流程图4.1图 4-2T0 中断电机节拍生成流程4.2图 4-3自动模式状态机流程4.3图 4-4手动模式按键处理流程4.4图 4-5蓝牙指令解析流程4.5图 4-6LCD 显示刷新流程4.6图 5-1四相绕组时序仿真波形5.1图 5-2系统测试流程图5.1参考文献[1] 李朝青.单片机原理及接口技术[M].北京:北京航空航天大学出版社,2013. [2] 郭天祥.新概念51单片机C语言教程[M].北京:电子工业出版社,2009. [3] STC Micro.STC89C52RC Data Sheet[Z].2018. [4] Texas Instruments.ULN2003A Darlington Transistor Arrays[Z].2015. [5] Labcenter Electronics.Proteus 8 User Guide[Z].2020. [6] 张建民.机电一体化系统设计[M].北京:高等教育出版社,2014. [7] 王兆安,刘进军.电力电子技术[M].北京:机械工业出版社,2009. [8] 陈立伟.基于单片机的步进电机控制系统设计[J].制造业自动化,2021,43(5):112-115. [9] Kumar R,Patel S.Microcontroller Based Stepper Motor Control Using Bluetooth[J].IJERT,2020,9(4):245-249. [10] 刘军.基于蓝牙的智能手机控制步进电机系统设计[J].电子设计工程,2022,30(8):156-160.致谢本论文从选题、方案论证、仿真调试到文稿撰写始终得到指导老师的悉心指导与耐心帮助在此表示衷心感谢。感谢实验室同学在硬件焊接、代码排查与测试记录中给予的支持许多疑难问题在讨论中迎刃而解。最后感谢家人一直以来的理解与支持。谨向所有关心和帮助过我的人致以诚挚谢意。附录 A Proteus 元件清单序号元件型号/参数数量1单片机AT89C52仿真/STC89C52RC实物12步进电机MOTOR-STEPPER仿真/28BYJ-48实物13驱动芯片ULN2003A14蓝牙模块COMPIM仿真/HC-05实物15液晶屏LM016L仿真/LCD1602实物16晶振11.0592MHz17轻触按键6×6mm48排阻10kΩP0上拉、1kΩ基极限流各19电容30pF×2、10μF、100nF×3若干10电源5V DC2路附录 B 主要程序结构Project/ ├── main.c // 主函数、模式调度、LCD显示 ├── motor.c/h // 四相八拍驱动表、节拍生成、圈数统计 ├── key.c/h // 按键扫描、消抖、长按连发 ├── uart.c/h // UART初始化、中断接收、指令解析、状态回传 ├── lcd1602.c/h // LCD驱动、格式化显示 ├── timer.c/h // T0/T1初始化与中断服务 └── config.h // 引脚定义、宏参数STEPS_PER_REV等