1. 系统概述

点击下载protues仿真设计:https://download.csdn.net/download/qq_39020934/92091182

基于单片机的正弦波与方波峰峰值与频率测量系统是一种典型的数字测量仪器设计方案,主要用于对周期性模拟信号进行实时采集、分析与参数提取。系统能够对输入的正弦波和方波信号进行峰峰值(Vpp)、频率以及方波占空比等关键参数的测量,并通过LCD1602液晶屏进行实时显示,实现对信号特征的直观可视化分析。

该系统以单片机为核心控制单元,通过A/D采样模块对模拟信号进行高速采样,再结合数字信号处理算法完成波形分析。系统具备自动波形识别能力,可区分正弦波与方波,并根据不同信号类型选择对应的测量策略,从而提高测量精度与稳定性。

系统整体结构包括信号调理模块、A/D采样模块、单片机控制模块、数据处理模块以及LCD显示模块,具有结构清晰、扩展性强、测量精度高等特点,可广泛应用于电子测量实验、信号分析系统以及教学实验平台。

2. 系统功能设计

2.1 峰峰值测量功能

系统通过A/D转换对输入信号进行采样,获取离散电压数据,并通过算法计算信号的最大值与最小值,从而得到峰峰值。

峰峰值计算公式如下:

Vpp = Vmax - Vmin

系统在采样过程中采用高频率采样策略,以确保波形细节被完整捕获。通过滤波与数据平滑处理,能够有效减少噪声干扰,使测量误差控制在±1%以内。

测量结果示例:

Wave: SINE
Vpp: 3.32V

2.2 频率测量功能

频率测量基于周期检测方法实现。系统通过检测信号的过零点或阈值触发点,记录相邻两个周期之间的时间间隔,从而计算频率。

频率计算公式:

f = 1 / T

其中T为周期时间。

系统采用定时器捕获技术,提高时间测量精度,适用于正弦波与方波信号。

测量结果示例:

Freq: 1.00kHz

2.3 方波占空比测量功能

对于方波信号,系统额外测量高电平持续时间与完整周期时间,从而计算占空比。

占空比计算公式:

D = Thigh / T × 100%

该功能特别适用于PWM信号分析、电机控制信号检测等应用场景。

输出示例:

Duty: 45%

2.4 自动波形识别功能

系统通过对采样数据特征进行分析,实现对输入波形类型的自动识别。

判别依据包括:

  • 波形平滑程度(正弦波)
  • 边沿突变特征(方波)
  • 占空比稳定性(PWM)

判断逻辑如下:

if (rapid_edge == true) → Square Wave
else → Sine Wave

该功能提高系统智能化程度。


2.5 LCD1602数据显示功能

系统通过LCD1602实时显示测量结果,用户可以直观查看信号状态。

显示内容包括:

  • 波形类型
  • 峰峰值
  • 频率
  • 占空比

显示格式示例:

SINE WAVE
Vpp: 3.32V
F: 1.00kHz

对于方波信号:

SQUARE WAVE
Vpp: 5.00V
F: 500Hz
D: 50%

2.6 测量精度控制功能

系统通过优化采样频率、增加数据平均滤波算法以及提高ADC分辨率来保证测量精度。

误差控制目标:

Error ≤ ±1%

通过多次采样取平均值,提高稳定性。


3. 系统总体方案设计

系统采用模块化设计结构,各模块协同工作。

系统主要组成如下:

  1. 单片机控制模块
  2. 信号调理模块
  3. A/D采样模块
  4. 波形分析模块
  5. LCD显示模块
  6. 定时器测量模块
  7. 电源模块

系统运行流程如下:

系统上电
   ↓
初始化系统
   ↓
信号采样
   ↓
数据滤波
   ↓
波形识别
   ↓
参数计算
   ↓
LCD显示
   ↓
循环执行

4. 系统电路设计

4.1 单片机最小系统设计

单片机作为系统核心控制器,负责数据采集与计算处理。

最小系统包括:

4.1.1 时钟电路

提供系统运行基准时钟。

常用频率:

11.0592MHz / 12MHz

作用:

  • 提高采样稳定性
  • 保证定时器精度
  • 支持高速数据处理

4.1.2 复位电路

保证系统可靠启动。

功能:

  • 上电复位
  • 手动复位
  • 异常恢复

4.2 信号调理电路设计

输入信号通常包含高频噪声,因此需要调理电路。

主要功能:

  • 电压幅值缩放
  • 滤波去噪
  • 信号保护

采用RC低通滤波结构:

Vin → R → C → Vout

4.3 A/D采样电路设计

系统采用ADC模块进行模拟信号采样。

功能:

  • 模拟量转换数字量
  • 提供数据基础
  • 支持高频采样

采样过程:

模拟信号 → ADC → 数字信号 → 单片机

4.4 LCD1602显示电路设计

LCD1602用于显示测量结果。

显示内容:

  • Vpp
  • 频率
  • 占空比
  • 波形类型

显示结构:

第一行:波形类型 + Vpp
第二行:频率 + 占空比

4.5 定时器捕获电路设计

用于测量信号周期。

功能:

  • 捕获上升沿
  • 计算时间间隔
  • 得到周期T

结构:

上升沿 → 定时器捕获 → 时间差计算

4.6 电源模块设计

系统采用稳定5V供电。

功能:

  • 单片机供电
  • ADC供电
  • 显示模块供电

保证系统稳定运行。


5. 系统程序设计

5.1 主程序设计

主程序负责系统调度。

void main()
{
    System_Init();

    while(1)
    {
        ADC_Sample();

        Wave_Analyze();

        Frequency_Calc();

        Duty_Calc();

        LCD_Display();
    }
}

5.2 ADC采样程序设计

unsigned int ADC_Read()
{
    return ADC_VALUE;
}

5.3 峰峰值计算程序设计

void Vpp_Calc()
{
    Vmax = Find_Max();
    Vmin = Find_Min();

    Vpp = Vmax - Vmin;
}

5.4 频率测量程序设计

void Frequency_Calc()
{
    T = Time_Difference();

    Freq = 1.0 / T;
}

5.5 占空比计算程序设计

void Duty_Calc()
{
    Duty = (Thigh * 100) / T;
}

5.6 波形识别程序设计

void Wave_Detect()
{
    if(edge_count > threshold)
        wave = SQUARE;
    else
        wave = SINE;
}

5.7 滤波处理程序设计

int Filter(int *data)
{
    int sum = 0;

    for(int i=0;i<N;i++)
        sum += data[i];

    return sum / N;
}

5.8 LCD显示程序设计

void LCD_Display()
{
    LCD_Show("Vpp:", Vpp);

    LCD_Show("F:", Freq);

    LCD_Show("D:", Duty);
}

5.9 定时器捕获程序设计

void Timer_ISR()
{
    static unsigned int last = 0;
    unsigned int now = TIMER;

    T = now - last;

    last = now;
}

6. 系统运行过程分析

系统上电后完成初始化,包括ADC模块、定时器模块以及LCD显示模块初始化。随后系统进入循环采样状态,通过ADC不断采集输入信号数据,并存入缓冲区进行处理。程序首先对采样数据进行滤波处理,然后计算峰峰值、频率以及占空比等参数。如果检测到信号边沿特征明显,则判定为方波,否则判定为正弦波。最终将所有计算结果通过LCD1602实时显示,使用户能够直观获取信号参数。整个系统在高频采样与优化算法支持下,实现了高精度测量能力。

7. 系统总结

基于单片机的正弦波与方波峰峰值与频率测量系统通过ADC采样与数字信号处理技术,实现了对模拟信号的高精度测量。系统能够完成峰峰值、频率以及方波占空比的实时测量,并具备自动波形识别与LCD显示功能。通过优化采样算法与定时器测量机制,系统测量误差控制在±1%以内,具有较高的工程应用价值,可广泛用于电子测量仪器、实验教学以及信号分析领域。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐