方波转成锯齿波和三角波的原理???

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了方波转成锯齿波和三角波的原理???相关的知识,希望对你有一定的参考价值。

参考技术A

方波转成三角波是傅里叶变换的原理,在三角波发生电路中,积分电路正向积分的时间常数远大于反向积分的时间常数,或者反向积分的时间常数远大于正向积分的时间常数,那么输出电压uO上升和下降的斜率相差很多,就可以获得锯齿波。

方波积分是三角波,三角波微分是方波。三角波再多次积分就可以得到正弦波,或者经过二极管网络转化。正弦波通过施密特触发器或比较器可转换为方波。方波是一种非正弦曲线的波形,通常会与电子和讯号处理时出现。理想方波只有“高”和“低”这两个值。

电流或电压的波形为矩形的信号即为矩形波信号,高电平在一个波形周期内占有的时间比值称为占空比,也可理解为电路释放能量的有效释放时间与总释放时间的比值。占空比为50%的矩形波称之为方波,方波有低电平为零与为负之分。

扩展资料

可以傅里叶级数表达一个理想方波,这个傅里叶级数有无限个项,如下式:以傅里叶级数来表达方波会出现吉布斯现象。非理想方波中的振铃现象被证明与此现象有关。吉布斯现象可使用σ近似来阻止,而σ近似使用Lanczos σ因子来使序列更理想地收敛。

三角波再多次积分就可以得到正弦波,或者经过二极管网络转化。正弦波通过施密特触发器或比较器可转换为方波。 

参考资料来源:百度百科-方波

C语言波形实现三角波和正弦波

方波

方波波形类似高低电平,所以设置合适的延时时间和高低电平值即可实现方波。

正弦波

#include "math.h"

#define PI       3.141592653

float WaveMin    = 1.0f;     // 波形最小峰值
float WaveMax    = 5.0f;     // 波形最大峰值

float Amplitude  = 1.0f;     // 幅值
float PeriodSin  = 100.0f;   // 正弦波周期
float Horizontal = 0.0f;     // 水平位移
float Vertical   = 0.0f;     // 垂直位移

// y = A * sin( w * x + h ) + v 
//   = A * sin( 2 * PI / T * x + h ) + v
float sin_wave( void )

    static float TimeCnt = 0;

    Amplitude = ( ( WaveMin + WaveMax ) / 2.0f - WaveMin );
    Vertical  = ( WaveMin + WaveMax ) / 2.0f; 

    float SinData = Amplitude * sin( 2 * PI / Period * TimeCnt + Horizontal ) + Vertical;
    TimeCnt++;

    return SinData;

三角波

#define False           0
#define True            1

float WaveMin    = 1.0f;     // 波形最小峰值
float WaveMax    = 5.0f;     // 波形最大峰值

float Step           = 10.0f;   // 每周期递增步长
float PeriodTriangle = 100.0f;  // 三角波周期
float WaveStart      = 1.0f;    // 波形开始值
float WaveStop       = 5.0f;    // 波形结束值
float WaveCurrent    = 0.0f;    // 当前波形值

float triangle_wave( void )

    static uint16_t TimeCnt = 0;
    static uint8_t  flag    = False;

    // 波形递增
    if( WaveCurrent < WaveStart && flag == False )
    
        if( ++TimeCnt < PeriodTriangle )
        
            WaveCurrent = WaveStart;
        
        else
        
            TimeCnt = 0;

            WaveCurrent += Step;
            WaveStart = WaveCurrent;
        
    
    // 波形递减
    else
    
        flag = True;

        if( ++TimeCnt < PeriodTriangle )
        
            WaveCurrent = WaveStop;
        
        else
        
            TimeCnt = 0;

            WaveCurrent -= Step;
            WaveStop = WaveCurrent;
        

        if( WaveCurrent < WaveMin )
        
            flag = False;
            WaveStart = WaveMax;
            WaveStop = WaveMin;
        
    

    return WaveCurrent;

以上是关于方波转成锯齿波和三角波的原理???的主要内容,如果未能解决你的问题,请参考以下文章

急求正弦波转为方波的方法(利用单片机测1Hz~3MHz的正弦波)

急!!!用运算放大器设计一个方波、正弦波、三角波的信号发生器

matlab 实现三角波倒锯齿波与锯齿波

numpy绘制锯齿波和三角波

正弦波转变为方波?

怎么把1K~10K的方波信号变换成三角波、锯齿波、正弦波?可以提供电路图的最好。