intmain(void)
{
uchar data i=0;
uchar idata strtemp[35];
SP=0xA0;
for(i=0; i<7; i++)
{
//从20Hz开始,到80Hz,步长为10Hz,共7个频率数据,最高只能做到80Hz,同时由于启动中断会占用一定时间,所以补偿25us。
freq=65535-(1000000/(20+i*10)/256)+25;
}
TMOD=0x11;
ET0=1;
ET1=0;
EA=1;
TL0=freq[index_freq]%256;
TH0=freq[index_freq]/256;
TR0=1;
IT0=0;
EX0=1;
LE1=0;
P2=amplitude[index_amp];
EA=0;
LE1=1;
LCDinit12864();
LCD_DispStrWide(0x00,"波形:1方波");
LCD_DispStrWide(0x10,"频率:20Hz");
LCD_DispStrWide(0x08,"幅值:2.0V");
LCD_DispStrWide(0x18,"波形 频率 +-");
LE1=0;
EA=1;
while(1)
{
if(K_WAVE==1)
{
K_WAVE=0;
C_WAVE++;
if(C_WAVE>=4) C_WAVE=0; //0:方波1:锯齿波 2:三角波3:正弦波
sprintf(strtemp,"%s%s","波形:",disp_wave[C_WAVE]);
LE1=1;
EA=0;
LCD_DispStrWide(0x00,strtemp);
EA=1;
LE1=0;
}
else if(K_FREQ_AMP==1)
{
K_FREQ_AMP=0;
C_FREQ_AMP++;
if(C_FREQ_AMP >= 2) C_FREQ_AMP=0;
LE1=1;
EA=0;
if(C_FREQ_AMP == 0)
LCD_DispStrWide(0x18,"波形 频率 +-"); //0:频率
else
LCD_DispStrWide(0x18,"波形 幅值 +-"); //1:幅值
EA=1;
LE1=0;
}
else if(K_ADD == 1)
{
K_ADD=0;
if(C_FREQ_AMP == 0)
{//在7种频率之间切换 20Hz,30Hz,40Hz,50Hz,60Hz,70Hz,80Hz
index_freq++;
if(index_freq>=7) index_freq=0;
sprintf(strtemp,"%s%d%s","频率:",(int)(20+index_freq*10),"Hz");
LE1=1;
EA=0;
LCD_DispStrWide(0x10,strtemp);
EA=1;
LE1=0;
}
else
{
//在9种幅值之间切换 1V,2V,3V,4V,5V,6V,7V,8V,9V,10V
index_amp++;
if(index_amp > 8) index_amp=0;
sprintf(strtemp,"%s%.1f%s","幅值:",(float)(1+index_amp*0.5)*2,"V ");
LE1=1;
EA=0;
LCD_DispStrWide(0x08,strtemp);
LCD_DispStrWide(0x10,"频");
EA=1;
LE1=0;
P2=amplitude[index_amp];
}
}
else if(K_REDUCE==1)
{
K_REDUCE=0;
if(C_FREQ_AMP == 0)
{
if(index_freq > 0)
index_freq--;
sprintf(strtemp,"%s%d%s","频率:",(int)(20+index_freq*10),"Hz");
LE1=1;
EA=0;
LCD_DispStrWide(0x10,strtemp);
EA=1;
LE1=0;
}
else
{
if(index_amp > 0)
index_amp--;
sprintf(strtemp,"%s%.1f%s","幅值:",(float)(1+index_amp*0.5)*2,"V ");
LE1=1;
EA=0;
LCD_DispStrWide(0x08,strtemp);
LCD_DispStrWide(0x10,"频");
EA=1;
LE1=0;
P2=amplitude[index_amp];
}
}
} return 0;
}