大学生
最后登录1970-1-1
在线时间 小时
注册时间2016-4-24
|
我现在在做音乐频谱采集的实验,把采集的频谱显示到液晶屏上,ili9341,但是显示的每段频谱柱都出现断断续续的情况,
unsigned int INDEX_Y[64];//保存上一次的值
void lcd_show_fft(unsigned int *p)
{
unsigned int *pp = p+1;
unsigned int height=0;
//p+1相当于我直接把0HZ部分滤掉了
unsigned int i = 0;
for(i = 0;i<64;i++)
{
//分辨率187.5hz *63=11.8khz
//每个小矩形宽度为5,其实这里没有显示完所有的,只有64个值
//64个值,频率可达到11.8KHZ了,其实人耳超过5KHZ的频率听起来就不舒服了。
//0.125是我根据屏幕显示高度调整的一个值 320*240屏幕
height=*pp*0.048;
if(height >= INDEX_Y[i])//新值如果大于上一次的值,就在当前频谱柱上延升
{
LCD_SetBackColor(WHITE);
ILI9341_Clear (i,INDEX_Y[i],5,height-INDEX_Y[i]);
}
//LCD_Fill(0,i*5,*pp*0.125,(i+1)*5,WHITE); //有效部分绿色
else
{
LCD_SetBackColor(BLACK);
ILI9341_Clear(i,INDEX_Y[i]-height,5,INDEX_Y[i]); //新值如果小于上一次的值,就在当前频谱柱下降
}
INDEX_Y[i]=height;//保存这次的值
pp++;
}
}
|
|