0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

常見的濾波算法及其在單片機(jī)中的應(yīng)用介紹(三)

冬至子 ? 來源:HITwh汽院智能車團(tuán)隊 ? 作者:汽小智 ? 2023-11-21 14:52 ? 次閱讀

01

低通濾波

原理

低通濾波(Low Pass Filter)用于從一個信號中去除高于某個頻率的成分。它的基本原理是,信號中高于某個頻率的成分在信號傳輸或接收過程中會發(fā)生衰減,而低于該頻率的成分則不受影響。因此,通過將信號通過一個低通濾波器,可以去除高頻噪聲,保留信號中的低頻成分。

低通濾波器可以采用不同的設(shè)計方法,包括基于時域、頻域、以及模擬電路等不同的技術(shù)。其中,最常見的是基于時域的差分方程實現(xiàn)的數(shù)字濾波器,通??梢苑譃镕IR濾波器和IIR濾波器兩種。

FIR濾波器(Finite Impulse Response Filter)是一種基于差分方程的數(shù)字濾波器,其特點是在時域上具有有限沖激響應(yīng)。FIR濾波器的實現(xiàn)較為簡單,可以通過離散時間的加法和乘法運算實現(xiàn),具有線性相位和穩(wěn)定的特點。由于FIR濾波器的階數(shù)與其響應(yīng)的精度有直接關(guān)系,因此,設(shè)計高階FIR濾波器會面臨計算量和存儲空間的限制。

IIR濾波器(Infinite Impulse Response Filter)是另一種基于差分方程的數(shù)字濾波器,其特點是在時域上具有無限沖激響應(yīng)。IIR濾波器相較于FIR濾波器具有更高的階數(shù)和更好的頻率選擇性能,但其存在非線性相位和穩(wěn)定性的問題。由于IIR濾波器的差分方程中包含反饋回路,因此對于不當(dāng)?shù)?a target="_blank">參數(shù)設(shè)置或?qū)崿F(xiàn),可能會導(dǎo)致濾波器不穩(wěn)定或發(fā)生振蕩。

低通濾波器在信號處理領(lǐng)域中應(yīng)用廣泛,例如音頻處理、圖像處理、通信系統(tǒng)中的調(diào)制解調(diào)和解擾等等。它可以通過選擇不同的濾波器類型、濾波器參數(shù)和濾波器級數(shù)等方式來達(dá)到不同的濾波效果和性能。

智能車競賽中的低通濾波常指加權(quán)遞推平均濾波。

代碼

C++
#define ALPHA 0.2

double lowPassFilter(double currentVal, double prevFilteredVal)
{
double filteredVal;
filteredVal = ALPHA * currentVal + (1 - ALPHA) * prevFilteredVal;
return filteredVal;
}

其中,ALPHA表示濾波器的參數(shù),需要根據(jù)具體應(yīng)用進(jìn)行調(diào)整。該函數(shù)的返回值為當(dāng)前經(jīng)過低通濾波后的數(shù)值。

使用示例

C++
#include
#include
#include

#define ALPHA 0.2

double lowPassFilter(double currentVal, double prevFilteredVal);

int main()
{
double data[10];
double filteredData[10];
double prevFilteredVal = 0;
int i;

srand(time(NULL));

for (i = 0; i < 10; i++) {
    data[i] = rand() % 100;
    filteredData[i] = lowPassFilter(data[i], prevFilteredVal);
    prevFilteredVal = filteredData[i];
    printf("Original data: %.2f, Filtered data: %.2fn", data[i], filteredData[i]);
}

return 0;

}

輸出結(jié)果如下所示:

Plain Text
Original data: 67.00, Filtered data: 13.40
Original data: 23.00, Filtered data: 16.72
Original data: 68.00, Filtered data: 24.18
Original data: 98.00, Filtered data: 38.54
Original data: 36.00, Filtered data: 41.03
Original data: 48.00, Filtered data: 45.43
Original data: 41.00, Filtered data: 43.34
Original data: 89.00, Filtered data: 53.67
Original data: 26.00, Filtered data: 47.94
Original data: 77.00, Filtered data: 55.55

可以看出,經(jīng)過低通濾波后,數(shù)據(jù)的波動幅度有所減小。

02

高通濾波

原理

高通濾波(High Pass Filter)可以濾除信號中的低頻部分,保留高頻部分。高通濾波器的應(yīng)用非常廣泛,例如在音頻處理中可以用來去除低頻噪聲、在圖像處理中可以用來增強(qiáng)圖像的邊緣等。

高通濾波算法的基本思想是:將信號分解成高頻和低頻兩部分,去掉低頻部分,只保留高頻部分。高通濾波的實現(xiàn)可以通過頻域方法和時域方法兩種方式實現(xiàn)。

頻域方法是將信號轉(zhuǎn)換到頻域進(jìn)行處理,常用的有傅里葉變換和小波變換等。通過濾波器在頻域中濾除低頻成分,然后再將信號轉(zhuǎn)換回時域。

時域方法則是通過差分等方式,直接在時域中濾除低頻部分。其中最簡單的高通濾波器是一階高通濾波器,可以使用下面的公式表示:

Plaintext
y[n] = a * y[n-1] + a * (x[n] - x[n-1])

其中x[n]是輸入信號,y[n]是輸出信號,a是濾波器的系數(shù)。該濾波器的作用是去除輸入信號中的低頻分量,只保留高頻部分。

高通濾波器也可以使用其他階數(shù)的濾波器進(jìn)行實現(xiàn),如二階高通濾波器、Butterworth高通濾波器等。不同階數(shù)的濾波器可以達(dá)到不同的濾波效果。

需要注意的是,高通濾波器會使得信號的振幅發(fā)生變化,因此在應(yīng)用高通濾波器時需要謹(jǐn)慎選擇濾波器的參數(shù)和階數(shù),以免對信號造成不必要的影響。

代碼

C++
#define FILTER_ALPHA 0.5 // 濾波系數(shù)

float highpass_filter(float input, float prev_output)
{
float output = FILTER_ALPHA * (prev_output + input - prev_input);
prev_input = input;
return output;
}

在這個函數(shù)中,prev_input 和 prev_output 是上一次輸入和輸出的值,F(xiàn)ILTER_ALPHA 是濾波系數(shù),控制著濾波器對當(dāng)前值和先前值的權(quán)重。

使用示例

C++

#include

int main()

{

float input[] = {2.0, 3.0, 4.0, 5.0, 4.0, 3.0, 2.0, 1.0}; // 輸入信號

float prev_output = 0.0; // 上一個輸出值

int len = sizeof(input) / sizeof(float); // 輸入信號長度



printf("原始信號:");

for (int i = 0; i

C++
#include

int main()
{
float input[] = {2.0, 3.0, 4.0, 5.0, 4.0, 3.0, 2.0, 1.0}; // 輸入信號
float prev_output = 0.0; // 上一個輸出值
int len = sizeof(input) / sizeof(float); // 輸入信號長度

printf("原始信號:");
for (int i = 0; i < len; i++) {
    printf("%.2f ", input[i]);
}

printf("n高通濾波后:");
for (int i = 0; i < len; i++) {
    prev_output = highpass_filter(input[i], prev_output);
    printf("%.2f ", prev_output);
}

return 0;

}

在這個示例中,我們定義了一個包含 8 個值的輸入信號,然后通過高通濾波函數(shù) highpass_filter 處理這個信號,最終輸出濾波后的結(jié)果。在濾波的過程中,我們保存了上一次的輸出值,將其作為本次輸入的“前一個值”傳遞給濾波函數(shù)。

03

帶通濾波

原理

帶通濾波是一種可以濾除某一頻率范圍內(nèi)信號的濾波器。它可以保留一定頻率范圍內(nèi)的信號,而抑制其他頻率范圍內(nèi)的信號。一般來說,帶通濾波可以通過將高通濾波器和低通濾波器串聯(lián)而實現(xiàn)。

具體來說,帶通濾波器可以使用以下的傳遞函數(shù)來表示:

Plaintext
H(s) = (s/w_0) / ((s/w_0)^2 + (s/Q*w_0) + 1)

其中,s 是頻率域中的復(fù)變量,w_0 是中心頻率,Q 是質(zhì)量因子,用來描述帶通濾波器的帶寬。質(zhì)量因子越大,帶寬越窄,信號在帶內(nèi)的幅值越大。

在時域中,帶通濾波器可以通過以下的差分方程來實現(xiàn):

Plaintext
y[n] = 2*cos(w_0)y[n-1] - y[n-2] + x[n] - 2cos(w_0)*cos(w_c)*x[n-1] + cos(w_c)*cos(w_c)*y[n-1]

其中,x[n] 和 y[n] 分別表示輸入和輸出信號,w_c 是帶通濾波器的截止頻率,通過 w_c 和 w_0 可以計算出帶通濾波器的上下截止頻率。

使用帶通濾波器可以在信號處理中削弱或抑制不需要的頻率,從而濾除干擾信號或濾除噪聲信號,保留需要的信號。

代碼

C++
#include
#include
#include

#define PI 3.1415926

/* 生成帶通濾波器 */
void bandPassFilter(double f1, double f2, double fs, int N, double *b, double *a) {
int i, j;
double w1 = 2 * PI * f1 / fs;
double w2 = 2 * PI * f2 / fs;
double bw = w2 - w1;
double M = N / 2.0;
double H[M];
double w[M];

/* 計算帶通濾波器的理想幅頻特性 */
for (i = 0; i < M; i++) {
    if (i == M / 2) {
        H[i] = bw / PI;
    } else {
        H[i] = sin(bw * (i - M / 2.0)) / (PI * (i - M / 2.0));
    }
    w[i] = 0.54 - 0.46 * cos(2 * PI * i / N);  /* 漢寧窗函數(shù) */
    H[i] *= w[i];
}

/* 求出帶通濾波器的差分方程系數(shù) */
for (i = 0; i < N; i++) {
    b[i] = 0;
    a[i] = 0;
}
b[0] = H[0];
a[0] = 1;
for (i = 1; i < M; i++) {
    b[i] = H[i];
    a[i] = 2 * cos(w1 * i);
}
for (i = N - 1, j = 1; i >= M; i--, j++) {
    b[i] = H[j];
    a[i] = 2 * cos(w2 * j);
}

}

/* 帶通濾波函數(shù) */
void filter(double *x, double *y, int N, double *b, double *a) {
int i, j;
double sum1, sum2;

for (i = 0; i < N; i++) {
    sum1 = sum2 = 0;
    for (j = 0; j <= i; j++) {
        sum1 += b[j] * x[i - j];
    }
    for (j = 1; j <= i; j++) {
        sum2 += a[j] * y[i - j];
    }
    y[i] = sum1 - sum2;
}

}

使用示例

C++
#include
#include
#include "bandPassFilter.h"

#define N 100 /* 采樣點數(shù) /
#define Fs 1000 /
采樣頻率 */

int main() {
double x[N], y[N];
double b[101], a[101]; /* b和a數(shù)組長度為N+1 */

/* 生成測試信號,包含10Hz和100Hz的正弦波 */
for (int i = 0; i < N; i++) {
    x[i] = sin(2 * PI * 10 * i / Fs) + sin(2 * PI * 100 * i / Fs);
}

/* 生成帶通濾波器 */
double f1 = 20;  /* 通帶下界頻率 */
double f2 = 80;  /* 通帶上界頻率 */
bandPassFilter(f1, f2, Fs, N+1, b, a);

/* 對測試信號進(jìn)行帶通濾波 */
filter(x, y, N, b, a);

/* 輸出濾波后的信號 */
for (int i = 0; i < N; i++) {
    printf("%f ", y[i]);
}

return 0;

}

在這個示例中,首先生成一個包含10Hz和100Hz正弦波的測試信號。然后,使用bandPassFilter函數(shù)生成一個通帶在20Hz到80Hz之間的帶通濾波器。最后,使用filter函數(shù)對測試信號進(jìn)行帶通濾波,輸出濾波后的信號。

04

自適應(yīng)濾波

原理

自適應(yīng)濾波是一種根據(jù)輸入信號自動調(diào)整濾波器參數(shù)的濾波方法。該方法通過分析信號的特性,自動調(diào)整濾波器參數(shù)以達(dá)到最優(yōu)的濾波效果。

常見的自適應(yīng)濾波方法包括基于卡爾曼濾波、基于最小均方差(LMS)算法、基于最小二乘(RLS)算法等。

其中,LMS算法是一種簡單而有效的自適應(yīng)濾波算法,它根據(jù)當(dāng)前誤差的大小自適應(yīng)地更新濾波器的系數(shù),從而達(dá)到最小化誤差的目的。LMS算法的實現(xiàn)過程如下:

a. 初始化濾波器的系數(shù),通常為0。

b. 將輸入信號x[n]送入濾波器,并得到輸出信號y[n]。

c. 計算當(dāng)前的誤差e[n] = d[n] - y[n],其中d[n]為期望輸出。

d. 根據(jù)LMS算法的公式更新濾波器系數(shù),即:w[i] = w[i] + mu * e[n] * x[n-i],其中mu為步長因子。

e. 重復(fù)2~4步直到收斂。

自適應(yīng)濾波適用于信號在時間和頻率上都隨時間變化的情況,例如音頻信號中的噪聲、抖動等干擾。它能夠自動地調(diào)整濾波器的參數(shù)以適應(yīng)輸入信號的變化,從而獲得更好的濾波效果。

代碼

下面是一個基于LMS算法的自適應(yīng)濾波器的C語言實現(xiàn)示例,包括濾波器初始化、濾波器更新、濾波器輸出三個部分。

C++
#include
#include

#define N 10 /* 濾波器長度 /
#define LAMBDA 0.1 /
步長 /
#define DELTA 0.001 /
初始誤差 /
#define M 10 /
信號長度 */

/* 自適應(yīng)濾波器初始化 */
void initFilter(double *w) {
int i;
for (i = 0; i < N; i++) {
w[i] = 0;
}
}

/* 自適應(yīng)濾波器更新 */
void updateFilter(double *w, double *x, double d) {
int i, j;
double y, e;
double u[N]; /
輸入向量 */

/* 初始化輸入向量 */
for (i = 0; i   N; i++) {
    u[i] = 0;
    for (j = 0; j   N; j++) {
        if (i  >= j) {
            u[i] += x[i - j] * w[j];
        }
    }
}

/* 計算輸出、誤差和權(quán)值更新 */
for (i = 0; i   M; i++) {
    y = 0;
    for (j = 0; j   N; j++) {
        y += x[i - j] * w[j];
    }
    e = d[i] - y;
    for (j = 0; j   N; j++) {
        w[j] += LAMBDA * e * u[j];
    }
}

}

/* 自適應(yīng)濾波器輸出 */
void filter(double *w, double *x, double *y) {
int i, j;
for (i = 0; i < M; i++) {
y[i] = 0;
for (j = 0; j < N; j++) {
y[i] += x[i - j] * w[j];
}
}
}

int main() {
int i;
double w[N]; /* 濾波器權(quán)值 /
double x[M]; /
輸入信號 /
double d[M]; /
期望信號 /
double y[M]; /
輸出信號 */

/* 初始化輸入信號和期望信號 */
for (i = 0; i < M; i++) {
    x[i] = sin(i);
    d[i] = sin(i + 1);
}

/* 自適應(yīng)濾波器初始化 */
initFilter(w);

/* 自適應(yīng)濾波器更新 */
updateFilter(w, x, d);

/* 自適應(yīng)濾波器輸出 */
filter(w, x, y);
/* 輸出結(jié)果 */
for (i = 0; i < M; i++) {
    printf("x[%d] = %f, d[%d] = %f, y[%d] = %fn", i, x[i], i, d[i], i, y[i]);
}

return 0;

}

以上代碼實現(xiàn)了基于LMS算法的自適應(yīng)濾波器,并進(jìn)行了一個簡單的測試。代碼中首先定義了濾波器的長度N、步長LAMBDA、初始誤差DELTA和信號長度M等參數(shù)。然后定義了三個主要的函數(shù):初始化濾波器權(quán)值的函數(shù)initFilter、更新濾波器權(quán)值的函數(shù)updateFilter和計算濾波器輸出的函數(shù)filter。

在main函數(shù)中,先初始化輸入信號x和期望信號d,然后調(diào)用initFilter函數(shù)初始化濾波器權(quán)值。接著,調(diào)用updateFilter函數(shù)更新濾波器權(quán)值。最后,調(diào)用filter函數(shù)計算濾波器的輸出y。程序預(yù)測輸出結(jié)果為一個長度為M的數(shù)組y,表示濾波器對輸入信號x的濾波結(jié)果。

由于輸入信號x和期望信號d是根據(jù)sin函數(shù)生成的,因此預(yù)測輸出結(jié)果也將是一個sin函數(shù)的變化曲線。具體的輸出結(jié)果將受到LAMBDA、DELTA、N和M等參數(shù)的影響。如果LAMBDA較小,則濾波器收斂速度較慢,但精度較高;如果LAMBDA較大,則濾波器收斂速度較快,但精度較低。DELTA越小,濾波器收斂速度越快。N越大,濾波器的濾波效果越好,但計算量也會增加。M越大,濾波器的濾波效果也會越好,但計算量同樣也會增加。

總的來說,濾波算法有很多種,每種算法都有自己的特點和適用范圍。選擇合適的濾波算法需要根據(jù)具體應(yīng)用場景和數(shù)據(jù)特征進(jìn)行綜合考慮。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 調(diào)制解調(diào)

    關(guān)注

    0

    文章

    75

    瀏覽量

    21634
  • 濾波器
    +關(guān)注

    關(guān)注

    161

    文章

    7826

    瀏覽量

    178203
  • 信號處理
    +關(guān)注

    關(guān)注

    48

    文章

    1030

    瀏覽量

    103291
  • fir濾波器
    +關(guān)注

    關(guān)注

    1

    文章

    95

    瀏覽量

    19044
  • 低通濾波
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    16045
收藏 人收藏

    評論

    相關(guān)推薦

    如何用單片機(jī)實現(xiàn)數(shù)字濾波?6種數(shù)字濾波算法解析

    單片機(jī)主要作用是控制外圍的器件,并實現(xiàn)一定的通信和數(shù)據(jù)處理。但在某些特定場合,不可避免地要用到數(shù)學(xué)運算,盡管單片機(jī)并不擅長實現(xiàn)算法和進(jìn)行復(fù)雜的運算。下面主要是介紹如何用
    的頭像 發(fā)表于 02-28 09:41 ?8893次閱讀
    如何用<b class='flag-5'>單片機(jī)</b>實現(xiàn)數(shù)字<b class='flag-5'>濾波</b>?6種數(shù)字<b class='flag-5'>濾波</b><b class='flag-5'>算法</b>解析

    常見濾波算法及其單片機(jī)的應(yīng)用介紹(一)

    限幅消抖濾波法是一種簡單有效的數(shù)字濾波算法,常用于對采集到的離散信號進(jìn)行去抖動處理。它可以去除信號的瞬時噪聲和突發(fā)干擾,同時保留信號的主要特征。
    的頭像 發(fā)表于 11-21 14:47 ?1921次閱讀

    常見濾波算法及其單片機(jī)的應(yīng)用介紹(二)

    中值濾波是一種非線性濾波算法,它將信號的每個采樣點替換成該采樣點鄰域內(nèi)的中值。它的主要思想是通過找到鄰域內(nèi)的中值來消除信號的噪聲,同時盡
    的頭像 發(fā)表于 11-21 14:50 ?1553次閱讀

    單片機(jī)數(shù)據(jù)采集——數(shù)字濾波算法

    單片機(jī)主要作用是控制外圍的器件,并實現(xiàn)一定的通信和數(shù)據(jù)處理。但在某些特定場合,不可避免地要用到數(shù)學(xué)運算,盡管單片機(jī)并不擅長實現(xiàn)算法和進(jìn)行復(fù)雜的運算。下面主要是介紹如何用
    發(fā)表于 02-20 15:14

    單片機(jī)數(shù)字濾波算法

    運算,盡管單片機(jī)并不擅長實現(xiàn)算法和進(jìn)行復(fù)雜的運算。下面主要是介紹如何用單片機(jī)實現(xiàn)數(shù)字濾波。
    發(fā)表于 10-30 17:44

    如何用單片機(jī)實現(xiàn)數(shù)字濾波算法

    單片機(jī)主要作用是控制外圍的器件,并實現(xiàn)一定的通信和數(shù)據(jù)處理。但在某些特定場合,不可避免地要用到數(shù)學(xué)運算,盡管單片機(jī)并不擅長實現(xiàn)算法和進(jìn)行復(fù)雜的運算。下面主要是介紹如何用
    發(fā)表于 01-07 06:30

    單片機(jī)常用PID濾波算法資料匯總

    單片機(jī)常用PID濾波算法資料匯總
    發(fā)表于 05-21 11:45 ?26次下載

    使用51單片機(jī)實現(xiàn)MPU6050的卡爾曼濾波算法代碼免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)實現(xiàn)MPU6050的卡爾曼濾波算法代碼免費下載 。
    發(fā)表于 08-20 17:31 ?59次下載
    使用51<b class='flag-5'>單片機(jī)</b>實現(xiàn)MPU6050的卡爾曼<b class='flag-5'>濾波</b><b class='flag-5'>算法</b>代碼免費下載

    單片機(jī)晶振電路的作用及常見參數(shù)的介紹

    每個單片機(jī)系統(tǒng)里都有晶振,全程是叫晶體震蕩器,單片機(jī)系統(tǒng)里晶振的作用非常大。本文就來給大家簡單的介紹下晶振的工作過程,以及其主要的參數(shù)
    的頭像 發(fā)表于 12-24 12:35 ?3488次閱讀

    單片機(jī)入門--常見單片機(jī)PIC\STM32

    單片機(jī)入門--常見單片機(jī)PIC\STM32
    發(fā)表于 11-13 14:36 ?43次下載
    <b class='flag-5'>單片機(jī)</b>入門--<b class='flag-5'>常見</b><b class='flag-5'>單片機(jī)</b>PIC\STM32

    這篇把單片機(jī)數(shù)字濾波算法講絕了

    單片機(jī)主要作用是控制外圍的器件,并實現(xiàn)一定的通信和數(shù)據(jù)處理。但在某些特定場合,不可避免地要用到數(shù)學(xué)運算,盡管單片機(jī)并不擅長實現(xiàn)算法和進(jìn)行復(fù)雜的運算。下面主要是介紹如何用
    發(fā)表于 02-10 10:22 ?8次下載
    這篇把<b class='flag-5'>單片機(jī)</b>數(shù)字<b class='flag-5'>濾波</b><b class='flag-5'>算法</b>講絕了

    單片機(jī)十種常見的ADC濾波算法

    單片機(jī)主要作用是控制外圍的器件,并實現(xiàn)一定的通信和數(shù)據(jù)處理。但在某些特定場合,不可避免地要用到數(shù)學(xué)運算,盡管單片機(jī)并不擅長實現(xiàn)算法和進(jìn)行復(fù)雜的運算。下面給大家介紹十種
    發(fā)表于 10-02 15:21 ?1529次閱讀

    單片機(jī)十種常見濾波算法介紹

    我們都知道,單片機(jī)的主要作用是控制外圍的器件,并實現(xiàn)一定的通信和數(shù)據(jù)處理。但在某些特定場合,不可避免地要用到數(shù)學(xué)運算,盡管單片機(jī)并不擅長實現(xiàn)算法和進(jìn)行復(fù)雜的運算。
    的頭像 發(fā)表于 11-06 21:41 ?5915次閱讀

    單片機(jī)引腳的VCC和VDD有什么區(qū)別?

    單片機(jī)作為一種常見的嵌入式設(shè)備,是許多電子設(shè)備和系統(tǒng)必不可少的一部分。而在單片機(jī)的設(shè)計和應(yīng)用,電源電壓是一個非常重要的參數(shù),而其中VCC
    的頭像 發(fā)表于 04-27 17:29 ?8439次閱讀
    <b class='flag-5'>單片機(jī)</b>引腳<b class='flag-5'>中</b>的VCC和VDD有什么區(qū)別?

    單片機(jī)ADC,十大C語言濾波算法

    單片機(jī)ADC,十大C語言濾波算法
    的頭像 發(fā)表于 10-24 15:53 ?1249次閱讀