基于单片机的两路PWM信号输出及频率占空比相位差调节系统

1. 系统概述

点击链接下载protues仿真设计资料:https://download.csdn.net/download/m0_51061483/92081465

基于单片机的两路PWM信号输出及频率占空比相位差调节系统是一种面向数字信号控制与嵌入式信号生成应用的实验与工程平台。PWM(Pulse Width Modulation,脉宽调制)技术在电机控制、电源调节、信号模拟以及通信系统中具有广泛应用。本系统以51单片机为核心控制器,通过软件定时与硬件计时相结合的方式,实现两路独立PWM信号的生成,并支持对频率、占空比以及相位差的实时调节。

系统不仅具备基础PWM输出能力,还通过按键交互方式实现参数动态修改,同时借助LCD1602液晶显示模块实时显示当前输出状态,使系统具有良好的可视化操作体验与工程实用性。

整体系统结构清晰,控制逻辑明确,适用于嵌入式课程设计、数字电源控制实验以及电机控制基础研究。


2. 系统功能设计

2.1 两路PWM信号输出功能

系统核心功能是输出两路独立PWM信号:

text 复制代码
PWM1:通道1信号输出
PWM2:通道2信号输出

两路信号可以独立控制,占空比与频率可分别调节。

PWM信号特点:

text 复制代码
周期性方波
高低电平可调
平均电压可控

适用于模拟控制信号或驱动执行器。


2.2 频率调节功能

系统支持PWM频率调节,用户通过按键改变定时参数。

频率范围设计:

text 复制代码
1Hz ~ 10kHz(软件可扩展)

频率变化本质:

text 复制代码
f = 1 / T

通过调整定时器重装值实现频率变化。


2.3 占空比调节功能

占空比表示高电平时间占周期比例:

text 复制代码
D = Ton / T × 100%

系统支持动态调节:

text 复制代码
0% ~ 100%

通过改变高电平与低电平时间比例实现控制。


2.4 相位差调节功能

系统支持两路PWM之间的相位差控制。

相位差定义:

text 复制代码
φ = (Δt / T) × 360°

控制方式:

  • 延迟启动第二路PWM
  • 调整计时偏移量

实现不同控制波形同步或错位输出。


2.5 按键控制功能

系统通过按键实现参数调整:

text 复制代码
KEY1:频率增加
KEY2:频率减少
KEY3:占空比增加
KEY4:占空比减少
KEY5:相位差增加
KEY6:相位差减少

实现人机交互控制。


2.6 LCD显示功能

系统通过LCD1602显示实时参数:

text 复制代码
FREQ: 1000Hz
DUTY: 60%
PHASE: 90°

便于用户观察当前状态。


3. 系统总体设计方案

3.1 系统结构组成

系统主要由以下模块构成:

  1. STC89C52单片机最小系统
  2. PWM输出模块(双通道)
  3. 按键输入模块
  4. LCD1602显示模块
  5. 定时器控制模块
  6. 电源模块

系统结构如下:

text 复制代码
按键输入
    ↓
单片机控制核心
 ┌──┬────┬────┐
 ↓  ↓    ↓    ↓
PWM1 PWM2 LCD Timer

3.2 系统工作流程

text 复制代码
系统上电
   ↓
初始化
   ↓
参数默认设置
   ↓
PWM开始输出
   ↓
按键调节参数
   ↓
实时更新PWM
   ↓
LCD显示状态

4. 系统电路设计

4.1 单片机最小系统设计

系统采用STC89C52作为核心控制器。

4.1.1 时钟电路

text 复制代码
11.0592MHz晶振

作用:

text 复制代码
提供系统运行时基准时钟

4.1.2 复位电路

采用RC复位电路:

text 复制代码
上电自动复位

确保系统稳定启动。


4.2 PWM输出电路设计

PWM信号通过单片机IO口输出。

输出特点:

text 复制代码
TTL电平 0V / 5V

驱动方式:

  • 直接IO输出
  • 定时器中断控制

适用于外部驱动电路扩展。


4.3 按键输入模块设计

采用独立按键结构。

按键连接方式:

text 复制代码
上拉电阻 + 低电平触发

软件处理:

text 复制代码
消抖处理 + 状态检测

4.4 LCD1602显示模块设计

LCD用于显示参数。

接口方式:

text 复制代码
8位并行通信
RS RW E 数据线

显示内容:

text 复制代码
PWM频率
占空比
相位差

4.5 定时器模块设计

系统采用定时器生成PWM基准。

工作原理:

text 复制代码
定时中断 → 翻转IO口 → 生成PWM

通过调整重装值改变频率。


4.6 电源模块设计

系统采用5V直流供电。

供电对象:

  • 单片机
  • LCD模块
  • 按键模块

保证系统稳定运行。


5. 系统程序设计

5.1 软件总体结构

系统采用模块化设计:

text 复制代码
主程序
PWM生成程序
定时器中断程序
按键扫描程序
LCD显示程序
参数处理程序

5.2 主程序设计

c 复制代码
void main()
{
    System_Init();

    while(1)
    {
        Key_Scan();

        PWM_Update();

        LCD_Display();
    }
}

5.3 系统初始化程序

c 复制代码
void System_Init()
{
    Timer0_Init();

    LCD_Init();

    Freq = 1000;

    Duty = 50;

    Phase = 0;
}

5.4 PWM生成程序设计

通道1PWM

c 复制代码
void PWM1()
{
    if(flag1)
        PWM1_PIN = 1;
    else
        PWM1_PIN = 0;
}

通道2PWM(带相位差)

c 复制代码
void PWM2()
{
    Delay(Phase);

    if(flag2)
        PWM2_PIN = 1;
    else
        PWM2_PIN = 0;
}

5.5 定时器中断程序设计

c 复制代码
void Timer0_ISR() interrupt 1
{
    counter++;

    if(counter >= Period)
    {
        counter = 0;

        PWM_Flip();
    }
}

用于生成PWM周期。


5.6 频率调节程序设计

c 复制代码
void Set_Freq(int f)
{
    Period = 1000000 / f;
}

实现频率动态调整。


5.7 占空比调节程序设计

c 复制代码
void Set_Duty(int duty)
{
    High_Time = Period * duty / 100;

    Low_Time = Period - High_Time;
}

控制高低电平比例。


5.8 相位差控制程序设计

c 复制代码
void Set_Phase(int p)
{
    Phase = (Period * p) / 360;
}

实现相位偏移。


5.9 按键扫描程序设计

c 复制代码
void Key_Scan()
{
    if(KEY1 == 0)
        Freq++;

    if(KEY2 == 0)
        Freq--;

    if(KEY3 == 0)
        Duty++;

    if(KEY4 == 0)
        Duty--;

    if(KEY5 == 0)
        Phase++;
}

5.10 LCD显示程序设计

c 复制代码
void LCD_Display()
{
    LCD_ShowString(0,0,"F:");

    LCD_ShowNum(2,0,Freq);

    LCD_ShowString(0,1,"D:");

    LCD_ShowNum(2,1,Duty);
}

6. 系统运行过程分析

系统启动后,单片机完成初始化配置,PWM默认输出设定频率与占空比的方波信号。用户通过按键调节频率、占空比及相位差,系统实时响应参数变化,并更新PWM输出信号。定时器中断不断触发PWM翻转逻辑,实现稳定波形输出。同时LCD1602实时显示当前参数,使用户能够直观观察系统状态。两路PWM信号在相位控制下可实现同步或错位输出,适用于电机控制与信号实验应用。


7. 系统总结

本系统基于51单片机实现了双路PWM信号生成与参数可调控制功能,通过定时器中断与软件控制结合的方式实现频率、占空比及相位差的动态调节。系统结构清晰、控制逻辑灵活、扩展性强,适用于嵌入式控制教学、电机驱动实验以及数字信号生成应用场景,具有较高的工程实践价值与学习参考意义。

相关推荐
iCxhust2 小时前
MTK8088单板机制作(一)时钟电路
汇编·单片机·嵌入式硬件·微机原理·8088单板机
2601_958352902 小时前
双麦 DSP 音频拾音模块 A-68:多场景远场语音交互的声学解决方案
嵌入式硬件·音视频·降噪·回音消除·音频处理模块
崇山峻岭之间2 小时前
单片机直流有刷电机速度环PID控制实验
单片机·嵌入式硬件
xiangw@GZ3 小时前
智能锁浮空系统指纹头金属环ESD防护技术分析
单片机·嵌入式硬件
ACP广源盛139246256733 小时前
IX7008 PCIe 交换芯片@ACP#RTX Spark 经济型 8 口扩展芯片(对比 ASM1806)
大数据·人工智能·分布式·嵌入式硬件·gpt·spark·电脑
项目題供诗3 小时前
STM32-DMA直接存储器存储(二十)
stm32·单片机·嵌入式硬件
耳朵东先生3 小时前
STM32 开发利器:SEGGER RTT 日志打印与 Shell 实践解析
单片机·嵌入式硬件
ACP广源盛139246256733 小时前
IX6012 PCIe 交换芯片@ACP#RTX Spark 入门级 12 口存储外设扩展方案(对比 ASM1812)
大数据·人工智能·分布式·嵌入式硬件·gpt·spark·电脑
2601_958352903 小时前
对讲系统音频优化实战:解决回声、啸叫、环境噪音与远场拾音难题
嵌入式硬件·音视频·语音识别·降噪处理·音频处理模块·硬件开发模块
振南的单片机世界4 小时前
RS485组网三要素:负载、距离、终端电阻
arm开发·stm32·单片机·嵌入式硬件