当前位置: 首页 > news >正文

基于单片机的正弦波与方波峰峰值与频率测量系统设计

基于单片机的正弦波与方波峰峰值与频率测量系统设计

点击链接下载设计资料:https://download.csdn.net/download/m0_51061483/91860308


1. 系统功能概述

本系统基于 51 系列单片机 设计,面向正弦波和方波信号的高精度测量需求,实现 峰峰值测量、频率测量、方波占空比测量及LCD实时显示。通过 A/D 采样和数据处理算法,系统能够在 ±1% 的测量误差范围内准确获取输入信号的电压和频率信息,满足实验室测试、电子设备调试以及 PWM 信号监测等应用需求。

主要功能包括:

  1. 峰峰值测量功能
    对输入正弦波和方波信号进行高精度采样和计算,获取峰峰值(Vpp),并进行电压单位显示。

  2. 频率测量功能
    系统自动测量输入信号周期,计算频率(Hz),可区分正弦波与方波信号类型,并实时显示频率值。

  3. 方波占空比测量功能
    对方波信号高电平持续时间与周期进行比值计算,得到占空比(Duty Cycle),显示单位为百分比(%),适用于 PWM 信号监测。

  4. LCD 数据显示功能
    LCD1602 液晶屏实时显示信号类型、峰峰值、电压单位、频率及占空比,直观反映测量结果。

  5. 高精度测量控制
    通过优化 A/D 采样和数据处理算法,实现整体测量精度控制在 ±1% 以内,确保测量数据可靠、稳定。


2. 系统电路设计

系统电路采用模块化设计,包括 主控单元、A/D 采样模块、信号调理模块、频率测量模块、占空比测量模块、LCD 显示模块及电源模块,各模块协同工作,实现高精度测量与显示功能。

2.1 主控单元设计

核心采用 STC89C52 单片机,负责信号采样、数据处理、测量计算和显示控制。

  • I/O 分配

    • A/D 采样输入:P1.0
    • 方波输入计数:P1.1
    • LCD 数据口:P2 口,RS、RW、E 控制端口单独占用
  • 任务分配

    • 接收采样数据并进行峰峰值计算
    • 测量信号周期并计算频率
    • 对方波信号进行占空比计算
    • 更新 LCD 显示内容,实现实时反馈

2.2 A/D 采样模块

采用 ADC0809 或 STM32 内置 ADC 模拟接口 进行高精度采样。

  • 信号采样流程

    • 将输入信号经过缓冲和限幅电路进入 ADC
    • 定时采样以捕获完整波形
    • 对采样数据进行峰值和平均值计算,实现峰峰值测量
  • 电路特点

    • 输入缓冲电路保证高阻抗,防止测量信号失真
    • 限幅保护电路避免过压损坏 ADC
    • 多通道设计可同时测量不同信号

2.3 信号调理模块

信号调理模块确保输入信号在 ADC 范围内,并滤除高频干扰。

  • 调理功能

    • 放大或衰减信号幅度,使其适合 ADC 输入范围(0~5V)
    • 低通滤波去除高频噪声,提高测量精度
    • 可选缓冲放大器提高驱动能力

2.4 频率测量模块

频率测量模块通过单片机外部中断或定时器计数实现。

  • 计数方法

    • 方波或正弦波信号通过中断触发计数
    • 测量两个连续上升沿间隔时间,计算周期 T
    • 频率 F = 1/T,单位 Hz
  • 波形自动识别

    • 根据信号幅值波动判断信号类型
    • 方波信号直接计数,占空比测量
    • 正弦波信号通过峰值检测和零交叉点计算频率

2.5 方波占空比测量模块

占空比测量采用 高电平计时与周期计时比值计算

  • 测量流程

    • 方波信号输入中断口,检测上升沿开始计时
    • 高电平持续期间计数器累加,低电平期间计数器停止
    • 占空比 = 高电平时间 / 信号周期 × 100%
  • 模块特点

    • 高精度计数器保证测量误差 <1%
    • 支持 1Hz~100kHz 信号范围

2.6 LCD 显示模块

LCD1602 实时显示测量结果,包括信号类型、峰峰值、电压单位、频率和占空比。

  • 接口设计

    • 数据口 P2,控制口 RS、RW、E 使用单片机 P3 口
    • 支持 4 位或 8 位数据总线模式,保证高速刷新
  • 显示内容

    • 第一行显示信号类型与峰峰值
    • 第二行显示频率与方波占空比,单位清晰标注

2.7 电源模块

  • 单片机供电:5V 稳压电源
  • 模拟电路供电:采用低噪声 5V 或 3.3V 电源
  • 滤波设计:采用电容滤波和稳压二极管保护,保证信号稳定采样

3. 程序设计

程序采用模块化 C 语言设计,主要包括 主程序、A/D 采样模块、峰峰值计算模块、频率测量模块、占空比测量模块、LCD 显示模块及辅助函数模块

3.1 主程序设计

主程序完成系统初始化、信号采样、计算调度和 LCD 更新。

#include <reg52.h>
#include "adc.h"
#include "lcd.h"
#include "frequency.h"
#include "duty.h"float vpp;
float freq;
float duty;
char signal_type;void main()
{LCD_Init();ADC_Init();Frequency_Init();Duty_Init();while(1){signal_type = Detect_Signal_Type();vpp = Measure_Vpp(signal_type);freq = Measure_Frequency(signal_type);if(signal_type == 'P') duty = Measure_Duty();LCD_Display(signal_type, vpp, freq, duty);}
}

3.2 A/D 采样与峰峰值计算模块

float Measure_Vpp(char type)
{unsigned int max_val = 0, min_val = 1023;unsigned int adc_val;int i;for(i=0;i<1000;i++){adc_val = ADC_Read();if(adc_val > max_val) max_val = adc_val;if(adc_val < min_val) min_val = adc_val;}return (max_val - min_val) * (5.0/1023.0); // 转换为电压
}

3.3 频率测量模块

float Measure_Frequency(char type)
{unsigned int t1, t2;t1 = Capture_Clock();t2 = Capture_Clock();return 1000000.0 / (t2 - t1); // 微秒单位转换为 Hz
}

3.4 方波占空比测量模块

float Measure_Duty(void)
{unsigned int high_time, period;high_time = Measure_High_Level();period = Measure_Period();return ((float)high_time / period) * 100; // 百分比
}

3.5 信号类型检测模块

char Detect_Signal_Type(void)
{float sample = ADC_Read();if(sample > 2.0 && sample < 3.0) return 'S'; // Sinusoidelse return 'P'; // Pulse/Square
}

3.6 LCD 显示模块

void LCD_Display(char type, float vpp, float freq, float duty)
{if(type == 'S') LCD_ShowString(0,0,"Sin:");else LCD_ShowString(0,0,"Square:");LCD_ShowNum(0,5,(int)(vpp*100),4); // 峰峰值显示LCD_ShowString(0,9,"V");LCD_ShowNum(1,0,(int)freq,5);LCD_ShowString(1,5,"Hz");if(type == 'P'){LCD_ShowNum(1,8,(int)duty,3);LCD_ShowString(1,11,"%");}
}

4. 系统运行与功能总结

本系统通过 51 单片机实现了正弦波与方波信号的 高精度峰峰值、频率和方波占空比测量,并通过 LCD 实时显示测量结果。系统特点如下:

  • 高精度测量:峰峰值及频率测量误差控制在 ±1%
  • 多功能测量:同时支持正弦波和方波信号
  • 方波占空比计算:适用于 PWM 信号监测和电子实验
  • 实时显示:LCD1602 显示信号类型、Vpp、电压单位、频率及占空比
  • 模块化设计:采样、计算、显示模块分工明确,便于系统扩展和维护

该系统可广泛应用于电子测量、实验室测试、信号调试以及 PWM 信号分析,为高精度电子测量提供了可靠、稳定的解决方案。

http://www.dtcms.com/a/598065.html

相关文章:

  • 爱站网关键词搜索成都网站建设新网创想
  • Vivado2018.3——BRAM Generator和BRAM Controller的深度设置小坑
  • ​CUDA C++编程指南(3.2.8)——异步并发执行
  • 论坛网站建设视频教程手机上做app的软件
  • RabbitMQ 从入门到实战:核心特性、应用场景与高级用法全解析
  • 止盈和止损(二)
  • 婚纱摄影网站建站wordpress 获取标签所有文章
  • Vue主要版本的差异
  • 厦门有什么网站制作公司信誉比较好的商家可做网站
  • 做网站带吗百度店铺怎么入驻
  • 试述电子商务网站的建设流程免费简历
  • nginx作业
  • 网站开发 外包 哪家开发公司账务处理
  • 【python】python安装使用pytorch库环境配置
  • 建设工程八大员考试网站网站验证码调用
  • 织梦网站面包屑导航怎么做淘宝培训
  • 网站建设分工的通知广州网站建设外包建设推广
  • 从3W到LNMP搭建私有云存储
  • 第4章:数据获取与质量控制
  • linux磁盘分区挂载
  • 双指针:算法新手的第一道砍
  • 建设网站的语言北京最新进出京政策
  • 金融监管制度问答助手项目学习笔记(二)----RAG和评估
  • QT linux 静态编译问题记录
  • QT -- 初识
  • 平台推广网站排名嘉兴做网站优化
  • iis 网站访问权限设置网页设计学科门类是啥
  • ubuntu双网卡绑定分享
  • Android监听运行应用的任务变化包含Activity及Service
  • 免费网站推荐货源深圳高端家政服务公司