チーム15C8
課題名
4タップアベレージングフィルタ
研究者名
14-52 Naruki Yoshimoto
14-60 Seikai You
概要
最初の離散値の疑似デジタル的な数列の波のグラフを、LCDに表示し、4タップのアベレージフィルタにかけ、その過程をLCDに表示する。最後のすべての数字が同じ数字になる時点で、最終のグラフ表示し、グラフの上に「END」を表示させる。
最初の数列は
{0,0,0,0,16,16,16,16,0,0,0,0,16,16,16,16,
0,0,0,0,16,16,16,16,0,0,0,0,16,16,16,16}
とする。
ソースコード
#include<stdio.h>
#include <device.h>
#define N 32
void main()
{
int wave[N] = {0,0,0,0,16,16,16,16,0,0,0,0,16,16,16,16, 0,0,0,0,16,16,16,16,0,0,0,0,16,16,16,16}; int avewave[N]; int i; int boolean=0; LCD_Char_1_Start(); LCD_Char_1_ClearDisplay();
CyGlobalIntEnable;
for(i=0;i<32;i++){ LCD_Char_1_DrawVerticalBG(1,i,1,wave[i]); if(wave[i]>8){ LCD_Char_1_DrawVerticalBG(0,i,1,wave[i]-8); } } CyDelay(1000);
while(1){ LCD_Char_1_ClearDisplay(); for(i=0;i<N;i++){ avewave[i]=wave[i]; } for(i=0;i<N;i++){ wave[i]=(avewave[i]+avewave[(i+1)%32]+avewave[(i+2)%32]+avewave[(i+3)%32])/4; } for(i=0;i<N;i++){ LCD_Char_1_DrawVerticalBG(1,i,1,wave[i]); if(wave[i]>8){ LCD_Char_1_DrawVerticalBG(0,i,1,wave[i]-8); } } CyDelay(750); boolean=1; for(i=0;i<N;i++){ if(wave[i]!=wave[(i+1)%32]) boolean =0; } if (boolean ==1){ break; }
}//while loop LCD_Char_1_Position(0,0); LCD_Char_1_PrintString("End");
}
考察
LCD_Char のピンアサインはP2[6:0]間違わずに!
SW_1は実装されていないので気にしないで!!
- 最終更新:2015-07-13 16:03:57