📄 说明.txt
字号:
{
if(i<(x*320/num+320/(num*2))) wave[i] = (a*num/320)*(i-x*320/num);
else wave[i] = a-(a*num/320)*(i-x*320/num);
}
}
}
/**********generate sawtooth wave**********/
void Sawtoothwave(int *wave,int a,int num) //锯齿波发生器
{ //create the sawtooth wave
int x,i;
ClearnWaveBuff(wave);
for (x=0;x<num;x++)
{
for(i=x*320/num;i<(x+1)*320/num;i++)
{
wave[i] = a-(a*num/285)*(i-x*320/num);
}
}
}
/**********draw wave**********/
void DrawWave(int x0,int y0,int a,int *wave,int colour) //在液晶屏上绘制波形
{//x0,y0是坐标的原点,a波形的幅值,用于确定波形的位置
//U32 p[320];
int shift,x,i=0;
shift = (y0-a)/2;
while(i<10)
{
i++;
Set_Color(colour);
for (x=x0+6;x<318;x++)
Draw_Line (x,wave[x-x0-6]+shift,x+1,wave[x+1-x0-6]+shift);
Delay(300);
Set_Color (GUI_BLUE);
for (x=x0+6;x<318;x++)
Draw_Line (x,wave[x-x0-6]+shift,x+1,wave[x+1-x0-6]+shift);
Delay(200);
//new wave
/*
for (x=1;x<5;x++)
p[x]=wave[x];
for (x=1;x<315;x++)
wave[x]=wave[x+4];
for (x=315;x<319;x++)
wave[x]=p[x-314];
*/
}
}
/**********display number****************/
void dispNum(int x,int y,int colour,int number) //在液晶屏上显示数字
{
switch (number)
{
case 0:
DisplayCharacter(x,y,colour,ASCII_0);
break;
case 1:
DisplayCharacter(x,y,colour,ASCII_1);
break;
case 2:
DisplayCharacter(x,y,colour,ASCII_2);
break;
case 3:
DisplayCharacter(x,y,colour,ASCII_3);
break;
case 4:
DisplayCharacter(x,y,colour,ASCII_4);
break;
case 5:
DisplayCharacter(x,y,colour,ASCII_5);
break;
case 6:
DisplayCharacter(x,y,colour,ASCII_6);
break;
case 7:
DisplayCharacter(x,y,colour,ASCII_7);
break;
case 8:
DisplayCharacter(x,y,colour,ASCII_8);
break;
case 9:
DisplayCharacter(x,y,colour,ASCII_9);
break;
default:
break;
}
}
/**********display amp****************/
void DispRange(int x,int y,int row) //波形幅度(纵轴)调整函数
{
DisplayCharacter(x,y,GUI_YELLOW,Character1);
DisplayCharacter(x+20,y,GUI_YELLOW,Character3);
DisplayCharacter(x+40,y,GUI_YELLOW,Character8);
dispNum(x+50,y,GUI_GREEN,row/1000);
dispNum(x+65,y,GUI_GREEN,(row%1000)/100);
dispNum(x+80,y,GUI_GREEN,((row%1000)%100)/10);
dispNum(x+95,y,GUI_GREEN,((row%1000)%100)%10);
DisplayCharacter(x+110,y,GUI_YELLOW,ASCII_m);
DisplayCharacter(x+125,y,GUI_YELLOW,ASCII_v);
}
/**********display time****************/
void DispTime(int x,int y,int clolumn) //时间(横轴)调整函数
{
DisplayCharacter(x,y,GUI_YELLOW,Character2);
DisplayCharacter(x+20,y,GUI_YELLOW,Character3);
DisplayCharacter(x+40,y,GUI_YELLOW,Character8);
dispNum(x+50,y,GUI_GREEN,clolumn/1000);
dispNum(x+65,y,GUI_GREEN,(clolumn%1000)/100);
dispNum(x+80,y,GUI_GREEN,((clolumn%1000)%100)/10);
dispNum(x+95,y,GUI_GREEN,((clolumn%1000)%100)%10);
DisplayCharacter(x+110,y,GUI_YELLOW,ASCII_m);
DisplayCharacter(x+125,y,GUI_YELLOW,ASCII_s);
}
/**********display time****************/
void DispAttrib(int x,int y,int attrib) //图形属性切换函数
{
DisplayCharacter(x,y,GUI_YELLOW,Character13);
DisplayCharacter(x+20,y,GUI_YELLOW,Character14);
DisplayCharacter(x+40,y,GUI_YELLOW,Character9);
DisplayCharacter(x+60,y,GUI_YELLOW,Character10);
DisplayCharacter(x+80,y,GUI_YELLOW,Character8);
switch (attrib)
{
case 0:
DisplayCharacter(x+90,y,GUI_YELLOW,Character17);
break;
case 1:
DisplayCharacter(x+90,y,GUI_YELLOW,Character18);
break;
default:
break;
}
DisplayCharacter(x+110,y,GUI_YELLOW,Character19);
}
/**********display time****************/
void DispStatus(int x,int y,int status) //键盘状态显示函数
{
DisplayCharacter(x,y,GUI_YELLOW,Character15);
DisplayCharacter(x+20,y,GUI_YELLOW,Character16);
DisplayCharacter(x+40,y,GUI_YELLOW,Character11);
DisplayCharacter(x+60,y,GUI_YELLOW,Character12);
DisplayCharacter(x+80,y,GUI_YELLOW,Character8);
switch (status)
{
case 0:
DisplayCharacter(x+90,y,GUI_YELLOW,Character1);
DisplayCharacter(x+110,y,GUI_YELLOW,Character3);
break;
case 1:
DisplayCharacter(x+90,y,GUI_YELLOW,Character2);
DisplayCharacter(x+110,y,GUI_YELLOW,Character3);
break;
case 2:
DisplayCharacter(x+90,y,GUI_YELLOW,Character13);
DisplayCharacter(x+110,y,GUI_YELLOW,Character14);
break;
default:
break;
}
}
//****************Main*********************//
void DispWave(void) //图形显示过程函数
{
int wave[320],i=0,column=5,row=1,attrib=1,key =0,alt,demo=1;
coordinate(10,180,5);
key_number = 0xfe;
while(1)
{
if(key_number !=0xff)
{
switch (key_number) //判断键盘是否有键按下
{
case 15: //按下的功能切换键
key++;
if(key>2) key = 0;
break;
case 6: //按下的是上升键
switch (key)
{
case 0:
row++;
if(row>10) row =10;
break;
case 1:
column++;
if(column>10) column =10;
break;
case 2:
attrib++;
if(attrib>1) attrib =0;
break;
default:
break;
}
break;
case 4: //按下的是下降键
switch (key)
{
case 0:
row--;
if(row<1) row =1;
break;
case 1:
column--;
if(column<1) column =1;
break;
case 2:
attrib--;
if(attrib<0) attrib =1;
break;
default:
break;
}
break;
case 0:
demo++;
if(demo>1) demo = 0;
break;
default:
break;
}
key_number = 0xff;
DispRange(15,210,row*100);
DispTime(170,210,column*100);
DispAttrib(15,230,attrib);
DispStatus(170,230,key);
}
if(demo)
{
i++;
if (i==4) i=0;
switch (i)
{
case 0:
Squarewave(wave,170/row,2*column);
break;
case 1:
Sawtoothwave(wave,170/row,2*column);
break;
case 2:
Trianglewave(wave,340/row,2*column);
break;
case 3:
Sinwave(wave,170/row,2*column);
break;
default:
break;
}
}
else
{
ClearnWaveBuff(wave);
WriteAdToBuff(wave,320); //将AD转换结果保存
}
if(!attrib)
{
kfft(wave,8,0,1);
for(alt=106;alt<320;alt++) wave[alt] = wave[106];
for(alt=106;alt>0;alt--)
{
wave[2*alt] = wave[alt];
wave[2*alt+1] = wave[alt];
wave[3*alt+2] = wave[alt];
}
}
DrawWave(10,180,170/row,wave,GUI_YELLOW);
}
}
void Main(void) //主函数
{
Target_Init(); //CPU板初始化函数
GUI_Init(); //GUI图形接口初始化
DispWave(); //绘制图形
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -