📄 430_contest.c
字号:
void main (void)
{
int i;
float f_t ;
uchar fft_on ;
initmsp430();
ADC12CTL0 &= ~ENC; // Enable conversions
ADC12CTL0 = SHT1_0 + SHT0_0 + ADC12ON + REFON +REF2_5V ;
ADC12CTL1 = SHP ;
ADC12MCTL0 = SREF_1; // Vr+=Vref+
ADC12CTL0 |= ENC; // Enable conversions
P6SEL |= 0x01; // P6.0 ADC option select
ADC12CTL0 |= ADC12SC;
/* /////////
for(i=0;i<128;i++)
{
while ((ADC12IFG & BIT0)==0);
fft_r[i] = ADC12MEM0;
ADC12CTL0 |= ADC12SC;
delay(10);
_NOP();
_NOP();
_NOP();
}
for ( i = 0 ; i < 128 ; i++ )
{
fft_r[i] = fft_r[i] / 4095 ;
fft_r[i] = fft_r[i] * 2.5 ;
//fft_r[i] = ( fft_r[i] - Bm ) / Am ;
temp[i]=fft_r[i];
wave_data[i]=temp[i]/(2.0/40.0);
}
//lcd_display_wave(wave_data);
//////////
*/
lcd_initial() ; // 初始化液晶
lcd_clear() ; // 液晶清屏
Init_Keyboard() ; // 初始化键盘
//*****************************
// lcd_display_wave(wave_data);
//*****************************
// while(1);
Show_Title() ; // 显示初始界面
delay_ms(3000) ; // 等待两秒
lcd_clear() ; // 液晶清屏
p = 0 ;
vmax = 0 ;
fft_on = 0 ;
step = 20 ; // 初始步进20Hz
state = 0 ; // 菜单状态
while (1)
{
switch ( state )
{
case 0:
Show_Menu() ;
break ;
case 2:
if ( fft_on )
{
for(i=0;i<128;i++)
{
while ((ADC12IFG & BIT0)==0);
fft_r[i] = ADC12MEM0;
ADC12CTL0 |= ADC12SC;
delay(10);
_NOP();
_NOP();
_NOP();
}
for ( i = 0 ; i < 128 ; i++ )
{
fft_r[i] = fft_r[i] / 4095 ;
fft_r[i] = fft_r[i] * 2.5 ;
fft_r[i] = ( fft_r[i] - Bm ) / Am ;
}
fft();
Harmonic();
fft_r[46] = harm[46] ;
f_t = fft_r[46] / 4096 ;
f_t = f_t * 4.175 ;
_NOP();
}
Write_Fre_Data() ;
break ;
case 1:
if ( fft_on )
{
for(i=0;i<128;i++)
{
while ((ADC12IFG & BIT0)==0);
fft_r[i] = ADC12MEM0;
ADC12CTL0 |= ADC12SC;
delay(10);
_NOP();
_NOP();
_NOP();
}
ave=0;
fjgz=0;
for ( i = 0 ; i < 128 ; i++ )
{
fft_r[i] = fft_r[i] / 4095 ;
fft_r[i] = fft_r[i] * 2.5 ;
//fft_r[i] = ( fft_r[i] - Bm ) / Am ;
wave_data[i]=fft_r[i];
wave_data[i]=wave_data[i]/(2.0/40.0);
}
for (i=0;i<128;i++)
{ ave+=wave_data[i];
fjgz+=wave_data[i]*wave_data[i];
if (wave_data[i] > vmax )
{
vmax = fft_r[i] ;
}
}
}
Write_wave_Data(ave,fjgz,vmax);//
break ;
case 3:
Show_T() ;
break ;
case 5:
Show_Fre_Map() ;
if ( step == 20 )
{
x1 = (p+px1)*20 ;
x2 = (p+px2)*20 ;
}
else
{
x1 = 20*(p+px1*5) ;
x2 = 20*(p+px2*5) ;
}
if ( x1 > x2 )
{
dx = x1 - x2 ;
}
else
{
dx = x2 - x1 ;
}
y1 = py1 ;
y2 = py2 ;
if ( y1 > y2 )
{
dy = y1 - y2 ;
}
else
{
dy = y2 - y1 ;
}
Write_Zuobiao() ;
Del_Rul(qx1,qy1) ;
Del_Rul(qx2,qy2) ;
Draw_Rul(px1,py1) ;
Draw_Rul(px2,py2) ;
break ;
case 6:
lcd_display_wave(wave_data);
if ( step == 20 )
{
x1 = (p+px1)*20 ;
x2 = (p+px2)*20 ;
}
else
{
x1 = 20*(p+px1*5) ;
x2 = 20*(p+px2*5) ;
}
if ( x1 > x2 )
{
dx = x1 - x2 ;
}
else
{
dx = x2 - x1 ;
}
y1 = py1 ;
y2 = py2 ;
if ( y1 > y2 )
{
dy = y1 - y2 ;
}
else
{
dy = y2 - y1 ;
}
Write_Zuobiao() ;
Del_Rul(qx1,qy1) ;
Del_Rul(qx2,qy2) ;
Draw_Rul(px1,py1) ;
Draw_Rul(px2,py2) ;
break ;
}
Key_Event() ;
switch ( state )
{
case 0:
if ( key_value == 2 )
{
state = 2 ;
fft_on = 1 ;
lcd_clear() ;
Show_Fre() ;
}
if ( key_value == 1 )
{
state = 1 ;
fft_on = 1 ;
lcd_clear() ;
Show_Pow() ;
}
if ( key_value == 3 )
{
state = 3 ;
fft_on = 1 ;
lcd_clear() ;
}
case 2:
if ( key_value == 11 ) // 按暂停键
{
if ( fft_on )
{
fft_on = 0 ;
}
else
{
fft_on = 1 ;
}
}
if ( key_value == 12 ) // 按返回键
{
state = 0 ;
vmax = 0 ;
fft_on = 0 ;
lcd_clear() ;
p = 0 ;
}
if ( key_value == 7 && !fft_on ) // 切换键
{
state = 5 ;
lcd_clear() ;
Show_Zuobiao() ;
px1 = qx1 = 1 ;
px2 = qx2 = 5 ;
py1 = py2 = 10 ;
qy1 = qy2 = 10 ;
}
break ;
case 1:
if ( key_value == 11 ) // 按暂停键
{
if ( fft_on )
{
fft_on = 0 ;
}
else
{
fft_on = 1 ;
}
}
if ( key_value == 12 ) // 按返回键
{
state = 0 ;
vmax = 0 ;
fft_on = 0 ;
lcd_clear() ;
p = 0 ;
}
if ( key_value == 7 && !fft_on ) // 切换键
{
state = 6 ;
lcd_clear() ;
Show_Zuobiao() ;
px1 = qx1 = 1 ;
px2 = qx2 = 5 ;
py1 = py2 = 10 ;
qy1 = qy2 = 10 ;
}
break ;
case 3:
if ( key_value == 12 ) // 按返回键
{
state = 0 ;
fft_on = 0 ;
lcd_clear() ;
}
break ;
case 5:
if ( key_value == 7 ) // 按切换键
{
state = 2 ;
lcd_clear() ;
Show_Fre() ;
}
if ( key_value == 12 ) // 按返回键
{
state = 0 ;
lcd_clear() ;
}
if ( key_value == 10 ) // 向上翻页
{
if ( p > 2 && step == 20 )
{
p -= 3 ;
}
if ( p > 14 && step == 100 )
{
p -= 15 ;
}
}
if ( key_value == 14 ) // 向下翻页
{
if ( p < N - 3 && step == 20 )
{
p = p + 3 ;
}
if ( p < N - 15 && step == 100 )
{
p = p + 15 ;
}
}
if ( key_value == 13 ) // 步进改为20
{
step = 20 ;
}
if ( key_value == 15 ) // 步进改为100
{
step = 100 ;
}
if ( key_value == 1 ) // 标尺1左移
{
if ( px1 > 0 )
{
qx1 = px1 ;
qy1 = py1 ;
px1 -- ;
}
}
if ( key_value == 3 ) // 标尺1右移
{
if ( px1 < 24 )
{
qx1 = px1 ;
qy1 = py1 ;
px1 ++ ;
}
}
if ( key_value == 2 ) // 标尺1上移
{
if ( py1 < 40 )
{
qx1 = px1 ;
qy1 = py1 ;
py1 ++ ;
}
}
if ( key_value == 6 ) // 标尺1下移
{
if ( py1 > 1 )
{
qx1 = px1 ;
qy1 = py1 ;
py1 -- ;
}
}
if ( key_value == 4 ) // 标尺2左移
{
if ( px2 > 0 )
{
qx2 = px2 ;
qy2 = py2 ;
px2 -- ;
}
}
if ( key_value == 5 ) // 标尺2右移
{
if ( px2 < 24 )
{
qx2 = px2 ;
qy2 = py2 ;
px2 ++ ;
}
}
if ( key_value == 0 ) // 标尺2上移
{
if ( py2 < 40 )
{
qx2 = px2 ;
qy2 = py2 ;
py2 ++ ;
}
}
if ( key_value == 8 ) // 标尺2下移
{
if ( py2 > 1 )
{
qx2 = px2 ;
qy2 = py2 ;
py2 -- ;
}
}
break ;
case 6:
if ( key_value == 7 ) // 按切换键
{
state = 1 ;
lcd_clear() ;
//lcd_display_wave(wave_data);
}
if ( key_value == 12 ) // 按返回键
{
state = 0 ;
lcd_clear() ;
}
if ( key_value == 10 ) // 向上翻页
{
if ( p > 2 && step == 20 )
{
p -= 3 ;
}
if ( p > 14 && step == 100 )
{
p -= 15 ;
}
}
if ( key_value == 14 ) // 向下翻页
{
if ( p < N - 3 && step == 20 )
{
p = p + 3 ;
}
if ( p < N - 15 && step == 100 )
{
p = p + 15 ;
}
}
if ( key_value == 13 ) // 步进改为20
{
step = 20 ;
}
if ( key_value == 15 ) // 步进改为100
{
step = 100 ;
}
if ( key_value == 1 ) // 标尺1左移
{
if ( px1 > 0 )
{
qx1 = px1 ;
qy1 = py1 ;
px1 -- ;
}
}
if ( key_value == 3 ) // 标尺1右移
{
if ( px1 < 24 )
{
qx1 = px1 ;
qy1 = py1 ;
px1 ++ ;
}
}
if ( key_value == 2 ) // 标尺1上移
{
if ( py1 < 40 )
{
qx1 = px1 ;
qy1 = py1 ;
py1 ++ ;
}
}
if ( key_value == 6 ) // 标尺1下移
{
if ( py1 > 1 )
{
qx1 = px1 ;
qy1 = py1 ;
py1 -- ;
}
}
if ( key_value == 4 ) // 标尺2左移
{
if ( px2 > 0 )
{
qx2 = px2 ;
qy2 = py2 ;
px2 -- ;
}
}
if ( key_value == 5 ) // 标尺2右移
{
if ( px2 < 24 )
{
qx2 = px2 ;
qy2 = py2 ;
px2 ++ ;
}
}
if ( key_value == 0 ) // 标尺2上移
{
if ( py2 < 40 )
{
qx2 = px2 ;
qy2 = py2 ;
py2 ++ ;
}
}
if ( key_value == 8 ) // 标尺2下移
{
if ( py2 > 1 )
{
qx2 = px2 ;
qy2 = py2 ;
py2 -- ;
}
}
break ;
}
key_value = 17 ;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -