📄 specana.c
字号:
#include <inttypes.h>
#include <avr/io.h>
#include "ks0108.h"
#include "fftAvr.h"
// Die H鰄e der Balken im Spektrum
uint8_t spectrumBuffer[FFT_MIXED_LEN];
// Die Y-Koordinaten, der Peaks
uint8_t peakBuffer[FFT_MIXED_LEN];
int main(void) {
uint8_t data, h;
// TWI initialisieren
TWBR = 10;
// Display Initialisieren
for(volatile uint16_t i=0; i<50000; i++);
ks0108Init(0);
while(1) {
// Spektrum lesen
fftAvrReadSpectrum(FFT_MIXED, spectrumBuffer);
while(!fftAvrTransComp);
fftAvrReadSpectrum(FFT_MIXED_PEAK, peakBuffer);
while(!fftAvrTransComp);
// Graph zeichnen
// Die Bild-Daten werden direkt generiert - das zeichnen der einzelnen
// Linien ist zu langsam.
for(int8_t j=56; j>=0; j-=8) {
ks0108GotoXY(0, j);
// In dieser Schleife werden die 8bit hohe Zeilen (beginnend bei
// der untersten) ins Display geschrieben.
for(uint8_t i=0; i<FFT_MIXED_LEN; i++) {
h = spectrumBuffer[i];
data = 0xFF;
if(!h) {
data = 0x00;
} else if(h<8) {
data <<= 8-h;
spectrumBuffer[i] = 0;
} else {
spectrumBuffer[i] -= 8;
}
h = 64-peakBuffer[i];
if(j <= h && h-j < 8) {
data |= 1<<(h-j);
}
ks0108WriteData(data);
}
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -