16-51_直流电机PWM调速_仿真
基于51单片机的直流电机PWM调速系统
定时器PWM · 按键调速 · 数码管显示档位 · Proteus仿真
一、项目简介
本项目通过51单片机产生PWM方波控制直流电机转速。定时器产生可调占空比的PWM信号,通过L298N驱动模块控制电机。用户通过按键调节PWM占空比(0~100%),实现10档速度调节。数码管显示当前速度档位。支持正转/反转/停止控制。
项目属性 | 说明 |
主控平台 | AT89C52(Proteus仿真) |
开发语言 | C语言 |
开发环境 | Keil C51 / Keil MDK |
仿真工具 | Proteus(部分项目) |
图1-1 系统整体效果图
二、系统总体架构
本系统以单片机为核心,外围连接传感器、显示模块、按键模块和执行机构。系统总体架构如下:单片机通过相应接口与各外设通信,采集传感器数据后进行处理,结果输出至显示模块,同时根据逻辑控制执行机构动作。
图2-1 系统总体架构框图
模块 | 功能描述 |
主控模块 | 系统核心,负责数据采集、逻辑处理和输出控制 |
传感器模块 | 采集环境参数(温度/光照/按键输入等) |
显示模块 | LCD1602/OLED实时显示数据和状态 |
按键模块 | 用户输入,参数调整和模式切换 |
执行机构 | 蜂鸣器/LED/电机等,执行报警和驱动动作 |
三、硬件设计
3.1 核心器件选型
器件 | 型号 | 说明 |
主控芯片 | AT89C52 | Proteus仿真 |
电机驱动 | L298N | H桥驱动直流电机 |
直流电机 | Proteus虚拟 | PWM调速 |
数码管 | 4位 | 显示档位 |
按键 | ×4 | 加速/减速/正反转/停止 |
图3-1 核心器件实物图
3.2 引脚分配
单片机各引脚分配如下表所示,在设计时需注意引脚复用和电平匹配问题:
引脚 | 连接 | 功能描述 |
P1.0 | PWM | PWM输出至L298N ENA |
P1.1 | IN1 | L298N方向控制1 |
P1.2 | IN2 | L298N方向控制2 |
P1.3~P1.6 | KEY1~4 | 调速/方向/停止 |
P0 | 数码管段 | 段选 |
P2.0~P2.3 | 数码管位 | 位选 |
图3-2 引脚分配电路原理图
四、软件设计
4.1 软件流程
定时器T0中断中维护PWM计数器,与占空比比较后翻转P1.0输出高低电平。按键调节占空比变量(10档),数码管显示档位。方向按键控制IN1/IN2电平切换正反转。
图4-1 主程序流程图
4.2 模块划分
源文件 | 模块名称 | 功能描述 |
pwm.c | PWM产生 | 定时器中断产生可调占空比PWM |
segdisplay.c | 数码管 | 档位显示 |
main.c | 主程序 | 按键处理、PWM调节、方向控制 |
4.3 关键代码
以下代码均从项目工程源文件中直接提取,完整展示了各模块的核心实现:
📄 main.c




📄 LCD1602.c




📄 Key.c

📄 Timer0.c


五、项目文件结构
项目工程的目录结构如下,展示了源代码文件的组织方式:

六、功能演示
系统功能演示步骤如下:
1. 上电后电机低速运转,数码管显示"1"
2. 按加速键,档位递增到5,电机加速
3. 按反转键,电机反向旋转
4. 按停止键,电机停转
图6-1 功能演示照片/截图
图6-2 运行状态特写
七、总结
本项目展示了PWM调速的完整方案。定时器中断产生PWM是核心技术,通过调节占空比控制电机平均电压,实现平滑调速。L298N的H桥结构方便地实现了正反转控制。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
— END —

浙公网安备 33010602011771号