📄 t10a2_display.c
字号:
for(tmp=0;tmp<7;tmp++)
{
total+=FreqData.frqField[tmp];
}
if(total>900)
{
fustep++;
fdstep=0;
if(fustep>20)
{
fustep=0;
tmp=OCR1A;
if(total>180*7 && tmp<135)
{
tmp+=10;
if(tmp>limit)tmp=limit;
}
else
{
if(tmp<limit)tmp++;
}
OCR1A=tmp;
}
}
else
{
if(total<8*80)
{
fdstep++;
fustep=0;
tmp=OCR1A;
if(fdstep>20)
{
fdstep=0;
if(total<40*7)
{
tmp-=10;
if(tmp>255-10)tmp=0;
}
else
{
if(tmp>0)tmp--;
}
OCR1A=tmp;
}
}
else
{
fdstep=0;
fustep=0;
}
}
}
else
{
OCR1A=0;
}
}
if(step==0x17)
{
tmp=OCR1A;
tmp>>=2;
if(FreqData.frqField[6]>tmp)
{
FreqData.frqField[6]-=tmp;
FreqData.frqField[6]>>=1;
}
else
{
FreqData.frqField[6]=0;
}
}
(*Current_Spect)();
step++;
return;
}
void FrqBasicDisp()
{
//DispTemp();
//FrqHillDisp(0);
FreqHillDisp(4);
}
void SkyAndEarth()
{
FreqHillDisp(1);
}
void Rain()
{
FreqHillDisp(2);
}
void Frq21Lines()
{
FreqHillDisp(0);
}
void FrqDispWithCLine()
{
FreqHillDisp(5);
}
void FrqDispPlant()
{
FreqHillDisp(3);
}
void TimeDisp()
{
DLineDisp(0);
}
void AutoSet()
{
static unsigned int ctimer=0;
static unsigned char stc=0;
if(ctimer++>1500)
{
if(++stc>6)stc=0;
ctimer=0;
}
switch(stc)
{
case 0:
FreqHillDisp(4);
break;
case 1:
FreqHillDisp(1);
break;
case 2:
FreqHillDisp(2);
break;
case 3:
FreqHillDisp(0);
break;
case 4:
FreqHillDisp(5);
break;
case 5:
FreqHillDisp(3);
break;
case 6:
DLineDisp(0);
break;
}
}
/*void DTimeDisp()
{
DLineDisp(3);
}*/
void DLineDisp(unsigned char mode)
{
static unsigned char step=0,srp;
unsigned char tmp,tmp2,*p,last,rp;
if((step&15)==0)
{
ADMUX=64+32+AD_TIME;
ADCSRA=0xbe;
if(step&16)
{
Using_Temporary=Spectrum_Temporary1;
}
else
{
Using_Temporary=Spectrum_Temporary2;
}
Using_Temporary[0]=0;
Using_Temporary[1]=0;
Using_Temporary[2]=0;
Using_Temporary[3]=128;
ADC_ON;
//Lighten_VFD();
if(mode & 2)
{
/*rp=FreqData.frqField[4]>>2;
if(rp!=0)
{
for(tmp=0;tmp<8;tmp++)
{
Display_Buffer[63][tmp]=0xaa;
}
}
p=&Display_Buffer[62][7];
for(tmp2=1;tmp2<rp;tmp2+=2)
{
for(tmp=0;tmp<8;tmp++)
{
*p=0xff;
p--;
}
}
if(!(rp&1))
{
for(tmp=0;tmp<8;tmp++)
{
*p=0x55;
p--;
}
}
rp=127-rp;
srp=rp;*/
}
while( ! ( Using_Temporary[1] & 1) );
//Lighten_VFD();
if(mode & 2)
{
/*while(p>=Display_Buffer[0])
{
*p=0;
p--;
}*/
}
else
{
CLEAR_VFD();
rp=srp=127;
}
if(step&16)
{
p=Spectrum_Temporary2+2;
p=Spectrum_Temporary2+4+(*p);
}
else
{
p=Spectrum_Temporary1+2;
p=Spectrum_Temporary1+4+(*p);
}
last=((*p));
last-=128;
last>>=2;
if(last&32)last|=(128+64);
last+=16;
if(last&128)
{
last=0;
}
else
{
if(last>31)last=31;
}
while( rp!=255 )
{
/*while(Using_Temporary[0]<(p-(Using_Temporary+4)));
if(Using_Temporary[0]>(192+48))
{
Using_Temporary[0]=192;
//Lighten_VFD();
}*/
tmp=(*p);
tmp-=128;
tmp>>=2;
if(tmp&32)tmp|=(128+64);
tmp+=16;
if(tmp&128)
{
tmp=0;
}
else
{
if(tmp>31)tmp=31;
}
if(tmp>last)
{
do
{
VFD_Point(rp,last,1);
}while((++last)<tmp);
}
else
{
if(last>tmp)
{
do
{
VFD_Point(rp,last,1);
}while((--last)>tmp);
}
else
{
VFD_Point(rp,last,1);
}
}
rp--;
p++;
}
}
//CLR_BIT(PORTE,4);
if((step&15)==1)
{
rp=srp;
if( ! (mode & 1) )
{
if(step & 16)
{
p=Spectrum_Temporary1+2;
p=Spectrum_Temporary1+4+(*p);
}
else
{
p=Spectrum_Temporary2+2;
p=Spectrum_Temporary2+4+(*p);
}
tmp2=1;
}
else
{
/*if(step & 16)
{
p=Spectrum_Temporary2+2;
p=Spectrum_Temporary2+4+(*p);
}
else
{
p=Spectrum_Temporary1+2;
p=Spectrum_Temporary1+4+(*p);
}
tmp2=0xff;*/
}
last=((*p));
last-=128;
last>>=2;
if(last&32)last|=(128+64);
last+=16;
if(last&128)
{
last=0;
}
else
{
if(last>31)last=31;
}
while( rp!=255 )
{
tmp=((*p));
tmp-=128;
tmp>>=2;
if(tmp&32)tmp|=(128+64);
tmp+=16;
if(tmp&128)
{
tmp=0;
}
else
{
if(tmp>31)tmp=31;
}
if(tmp>last)
{
do
{
VFD_Point(rp,tmp2*last,1);
}while((++last)<tmp);
}
else
{
if(last>tmp)
{
do
{
VFD_Point(rp,tmp2*last,1);
}while((--last)>tmp);
}
else
{
VFD_Point(rp,tmp2*last,1);
}
}
rp--;
p++;
}
}
step++;
if((step & 15)==5)
{
step &= 16;
step ^= 16;
}
//Lighten_VFD();
//SET_BIT(PORTE,4);
}
void FreqHillDisp(unsigned char sub)
{
unsigned char p,*q,stp,*rain,tmp[12],rp,tmp2,tmp3,tmp4,rainarray;
union Word2Byte extdata;
rain=Spectrum_Temporary1+15;
p=*(Spectrum_Temporary1+6);
q=Spectrum_Temporary1+7;
//savl=Spectrum_Temporary1+15+21;
if(p==6)
{
p=7;
}
else
{
p=FreqData.latest;
if(p>7)return;
}
for(stp=0;stp<7;stp++)
{
tmp2=FreqData.frqField[stp];
//tmp2=LogTable[tmp2];
if(tmp2>q[stp])
{
if(tmp2>(q[stp]+18))
{
if(q[stp]>247-18)
{
q[stp]=247;
}
else
{
q[stp]+=18;
}
}
}
else
{
if(tmp2<q[stp])
{
if(q[stp]<9)
{
q[stp]=0;
}
else
{
q[stp]-=9;
}
}
}
}
if(p&1)
{
if(sub==0 || sub==2)
{
for(stp=0;stp<64;stp+=3)
{
for(tmp2=0;tmp2<6;tmp2++)
{
Display_Buffer[stp][tmp2]=0;
}
}
}
if(sub!=3)
{
for(stp=0;stp<8;stp++)
{
Display_Buffer[63][stp]=0;
}
}
extdata.word=Frequence_Extend(q[2],q[3],q[4]);
tmp[0]=extdata.byte[0];
tmp[1]=q[3];
tmp[2]=extdata.byte[1];
extdata.word=Frequence_Extend(q[3],q[4],q[5]);
tmp[3]=extdata.byte[0];
tmp[4]=q[4];
tmp[5]=extdata.byte[1];
extdata.word=Frequence_Extend(q[4],q[5],q[6]);
tmp[6]=extdata.byte[0];
tmp[7]=q[5];
tmp[8]=extdata.byte[1];
extdata.word=Frequence_Extend(q[5],q[6],q[6]);
tmp[9]=extdata.byte[0];
tmp[10]=q[6];
tmp[11]=extdata.byte[1];
rainarray=9;
rp=28;
tmp2=63;
}
else
{
if(sub!=3 /*&& sub!=6*/)
{
WriteMod(1,32-8,ButtomOfSpectrum);
}
extdata.word=Frequence_Extend(q[0],q[0],q[1]);
tmp[0]=extdata.byte[0];
tmp[1]=q[0];
tmp[2]=extdata.byte[1];
extdata.word=Frequence_Extend(q[0],q[1],q[2]);
tmp[3]=extdata.byte[0];
tmp[4]=q[1];
tmp[5]=extdata.byte[1];
extdata.word=Frequence_Extend(q[1],q[2],q[3]);
tmp[6]=extdata.byte[0];
tmp[7]=q[2];
tmp[8]=extdata.byte[1];
extdata.word=Frequence_Extend(q[2],q[3],q[4]);
tmp[9]=extdata.byte[0];
tmp[10]=q[3];
tmp[11]=extdata.byte[1];
rainarray=0;
rp=1;
tmp2=27;
}
switch(sub)
{
case 0:
stp=0;
while(rp<tmp2)
{
tmp3=Calc256to24(tmp[stp]);
DrawFrequenceLine(tmp3,rp,2);
rp++;
DrawFrequenceLine(tmp3,rp,2);
rp+=2;
stp++;
}
break;
case 1:
stp=0;
while(rp<tmp2)
{
tmp3=Calc256to24(tmp[stp]);
DrawFrequenceLine(tmp3,rp,2);
rp++;
DrawFrequenceLine(tmp3,rp,0);
rp++;
DrawLineAndPoint(tmp3,rp,1);
rp++;
stp++;
}
break;
case 2:
stp=0;
while(rp<tmp2)
{
tmp3=Calc256to24(tmp[stp]);
tmp4=rain[rainarray];
tmp4++;
if( tmp4<=(tmp3<<1) || tmp4>48 )tmp4=(tmp3<<1);
rain[rainarray]=tmp4;
DrawFrequenceLine(tmp3,rp,3);
rp++;
DrawFrequenceLine(tmp3,rp,3);
VFD_PlaneLine(127-(rp<<1),128-((rp-1)<<1),tmp4>>1,1);
rp+=2;
stp++;
rainarray++;
}
break;
case 3:
if(p&1)
{
rp=9;
tmp2=17;
stp=0;
}
else
{
rp=1;
tmp2=9;
stp=1;
}
while(rp<tmp2)
{
DrawFreqPlaneLine(tmp[stp],rp,0);
tmp3=Calc256to24(tmp[stp]);
rp++;
stp++;
}
break;
case 4:
stp=1;
if(p&1)
{
extdata.word=Frequence_Extend(tmp[10],tmp[11],tmp[11]);
DrawLineAndPoint(Calc256to24(extdata.byte[0]),61,0);
DrawLineAndPoint(Calc256to24(tmp[11]),62,0);
DrawLineAndPoint(Calc256to24(extdata.byte[1]),63,0);
rp=31;
tmp2=61;
}
else
{
extdata.word=Frequence_Extend(tmp[0],tmp[0],tmp[1]);
tmp3=Calc256to24(extdata.byte[0]);
DrawLineAndPoint(tmp3,1,0);
tmp3=Calc256to24(tmp[0]);
DrawLineAndPoint(tmp3,2,0);
tmp3=Calc256to24(extdata.byte[1]);
DrawLineAndPoint(tmp3,3,0);
rp=4;
tmp2=31;
}
while(rp<tmp2)
{
extdata.word=Frequence_Extend(tmp[stp-1],tmp[stp],tmp[stp+1]);
tmp3=Calc256to24(extdata.byte[0]);
DrawLineAndPoint(tmp3,rp,0);
rp++;
tmp3=Calc256to24(tmp[stp]);
DrawLineAndPoint(tmp3,rp,0);
rp++;
tmp3=Calc256to24(extdata.byte[1]);
DrawLineAndPoint(tmp3,rp,0);
rp++;
stp++;
}
break;
case 5:
stp=1;
if(p&1)
{
extdata.word=Frequence_Extend(tmp[10],tmp[11],tmp[11]);
tmp3=Calc256to24(extdata.byte[0]);
DrawFrequenceLine(tmp3,61,0);
VFD_Point(127-61*2,tmp3,1);
tmp3=Calc256to24(tmp[11]);
DrawFrequenceLine(tmp3,62,0);
VFD_Point(127-62*2,tmp3,1);
tmp3=Calc256to24(extdata.byte[1]);
DrawFrequenceLine(tmp3,63,0);
if(sub==5)VFD_Point(127-63*2,tmp3,1);
rp=31;
tmp2=61;
}
else
{
extdata.word=Frequence_Extend(tmp[0],tmp[0],tmp[1]);
tmp3=Calc256to24(extdata.byte[0]);
DrawFrequenceLine(tmp3,1,0);
VFD_Point(127-1*2,tmp3,1);
tmp3=Calc256to24(tmp[0]);
DrawFrequenceLine(tmp3,2,0);
VFD_Point(127-2*2,tmp3,1);
tmp3=Cal
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -