上一文中研究,在LCD上畫實時曲線已經實現了,現在想改成幅頻特性曲線,經過查資料實現思路如下
幅頻特性曲線是以橫軸為頻率,縱軸為幅度,這里可認為是電壓值。如果是實時曲線,1MS采集一個值將它顯示在屏幕上,實際上它的頻率已固定就是1000HZ,也就是1s中采集1000次,然后計算出1000次數據的平均值這是他在頻率為1000HZ時的幅度值。
如果我們通過更改變量實現在每1S內采集的次數不相等,不就實現頻率值的變化了嗎。
首先,我們定義個變量u8 FRE_NUM;FRE_NUM=100,然后我們編寫一個函數,GET_ADC_VALUE(u8 channel,u8 times,u8 delayalue);該函數中channel代表ADC采集的通道,times代表采集的次數,delay代表1/times的延時單位為毫秒。舉個例子 1s中采集20次 調用GET_ADC_VALUE(u8 channel,20,50);及頻率為20HZ,
制作一個表格分別顯示10HZ,20HZ,50HZ,100HZ,500HZ下的幅度值。
value=GET_ADC_VALUE(0,10,100);
draw_point(100,value,color);
value=GET_ADC_VALUE(0,20,100);
draw_point(120,value,color);
value=GET_ADC_VALUE(0,50,100);
draw_point(140,value,color);
value=GET_ADC_VALUE(0,100,100);
draw_point(160,value,color);
value=GET_ADC_VALUE(0,500,100);
draw_point(180,value,color);
這樣便可以實現幅頻特性曲線的畫法了。 |