📄 form.c
字号:
#define uchar unsigned char
#define uint unsigned int
//直通状态、衰减状态校正表格
flash uchar FormDirect[64*12]=
{ //-23 -20 -17 -14 -11 -8 -5 -2 1 4 7 对应dB数
//0x00 0x03 0x06 0x09 0x0c 0x0f 0x12 0x15 0x18 0x1b 0x1e 对应的标记字
0x00,0x34,0x49,0x5e,0x72,0x86,0x9b,0xaf,0xc5,0xd5,0xe2,0xf2,//500MHz 0
0x00,0x44,0x56,0x6a,0x7e,0x92,0xa3,0xb6,0xc4,0xd3,0xe2,0xf2,//600MHz 1
0x00,0x3d,0x52,0x66,0x7a,0x8e,0xa2,0xb2,0xc2,0xd2,0xe2,0xf4,//700MHz 2
0x00,0x37,0x4d,0x62,0x73,0x8a,0x9e,0xb0,0xc2,0xd2,0xe5,0xf3,//800MHz 3
0x00,0x44,0x56,0x6a,0x7e,0x92,0xa7,0xbb,0xcc,0xde,0xee,0xfe,//900MHz 4
0x00,0x46,0x5c,0x6e,0x82,0x96,0xab,0xba,0xca,0xda,0xea,0xf7,//1000MHz 5
0x00,0x3a,0x51,0x63,0x76,0x8a,0x9e,0xb2,0xc0,0xd2,0xe2,0xf2,//1100MHz 6
0x03,0x46,0x5e,0x6e,0x83,0x96,0xaa,0xbc,0xce,0xde,0xef,0xfe,//1200MHz 7
0x03,0x43,0x56,0x6a,0x7e,0x92,0xa6,0xb7,0xc2,0xda,0xea,0xfa,//1300MHz 8
0x03,0x40,0x55,0x68,0x7b,0x90,0xa2,0xb6,0xc6,0xd7,0xe7,0xf5,//1400MHz 9
0x03,0x49,0x5e,0x72,0x86,0x9a,0xac,0xbd,0xcd,0xde,0xee,0xfa,//1500MHz 10
0x03,0x45,0x5a,0x6d,0x80,0x96,0xa6,0xba,0xca,0xdb,0xee,0xfe,//1600MHz 11
0x03,0x35,0x4b,0x60,0x72,0x87,0x9b,0xae,0xbf,0xd2,0xe2,0xf2,//1700MHz 12
0x03,0x46,0x5d,0x6e,0x82,0x96,0xaa,0xba,0xca,0xdb,0xea,0xfa,//1800MHz 13
0x00,0x2b,0x42,0x56,0x6a,0x7e,0x92,0xa6,0xb8,0xc9,0xda,0xea,//1900MHz 14
0x00,0x42,0x5a,0x6e,0x82,0x96,0xaa,0xbb,0xcb,0xde,0xf2,0xfe,//2000MHz 15
0x00,0x2b,0x47,0x5e,0x72,0x85,0x9a,0xab,0xbe,0xcd,0xde,0xed,//3000MHz 16
0x00,0x31,0x4d,0x62,0x74,0x8a,0x9e,0xb2,0xc2,0xd2,0xe6,0xf7,//4000MHz 17
0x00,0x40,0x56,0x6a,0x7e,0x92,0xa7,0xb9,0xc7,0xda,0xea,0xfa,//5000MHz 18
0x00,0x34,0x4e,0x62,0x76,0x8a,0x9e,0xb2,0xc3,0xd2,0xe3,0xf6,//6000MHz 18
0x00,0x36,0x4e,0x64,0x76,0x8a,0x9e,0xb2,0xc2,0xd3,0xe6,0xf6,//7000MHz 20
0x00,0x31,0x4a,0x60,0x73,0x88,0x9c,0xb0,0xc0,0xd1,0xe3,0xf4,//8000MHz 21
0x00,0x32,0x4a,0x61,0x74,0x8a,0x9d,0xb2,0xc2,0xd2,0xe6,0xf6,//9000MHz 22
0x03,0x3b,0x53,0x66,0x7b,0x90,0xa4,0xb6,0xc6,0xd8,0xea,0xfa,//10000MHz 23
0x03,0x3b,0x52,0x66,0x7b,0x90,0xa3,0xb5,0xc5,0xd7,0xe7,0xf7,//11000MHz 24
0x03,0x35,0x4e,0x62,0x76,0x8e,0xa2,0xb2,0xc2,0xd5,0xe7,0xf7,//12000MHz 25
0x03,0x37,0x50,0x66,0x77,0x8e,0xa2,0xb2,0xc2,0xd2,0xe3,0xf6,//13000MHz 26
0x03,0x20,0x4a,0x60,0x72,0x8a,0x9c,0xae,0xbe,0xcf,0xe2,0xf2,//14000MHz 27
0x03,0x34,0x45,0x5e,0x70,0x89,0x9c,0xae,0xbe,0xcf,0xe5,0xf5,//15000MHz 28
0x06,0x43,0x53,0x66,0x7a,0x8e,0xa2,0xb2,0xc2,0xd6,0xe7,0xf7,//16000MHz 29
0x06,0x2c,0x45,0x5f,0x71,0x83,0x9a,0xae,0xb7,0xce,0xde,0xef,//17000MHz 30
0x09,0x38,0x50,0x66,0x7a,0x91,0xa2,0xb6,0xc5,0xd7,0xe6,0xf6,//18000MHz 31
//放大状态校正表格
//-53 -50 -47 -44 -41 -38 -35 -32 -29 -26 -23 对应dB数
//0x00 0x03 0x06 0x09 0x0c 0x0f 0x12 0x15 0x18 0x1b 0x1e 对应的标记字
0x00,0x17,0x31,0x45,0x5c,0x6e,0x83,0x9a,0xae,0xbe,0xd2,0xe2,//500MHz 0
0x03,0x4d,0x62,0x72,0x8a,0x9b,0xae,0xbe,0xce,0xdb,0xea,0xf4,//600MHZ 1
0x03,0x51,0x64,0x76,0x8e,0x9f,0xb2,0xc2,0xd3,0xe2,0xee,0xf9,//700MHz 2
0x03,0x3c,0x52,0x66,0x7a,0x8e,0xa2,0xb6,0xc6,0xd6,0xea,0xf6,//800MHz 3
0x00,0x2e,0x47,0x5a,0x6e,0x82,0x96,0xab,0xbe,0xce,0xe2,0xf2,//900MHz 4
0x00,0x3c,0x52,0x65,0x78,0x8e,0xa2,0xb2,0xc2,0xd2,0xe2,0xf2,//1000MHz 5
0x03,0x43,0x55,0x68,0x7b,0x92,0xa2,0xb6,0xc6,0xd6,0xe6,0xf2,//1100MHz 6
0x03,0x32,0x48,0x5e,0x71,0x86,0x9b,0xae,0xbe,0xce,0xe2,0xf2,//1200MHz 7
0x00,0x31,0x46,0x5e,0x6e,0x86,0x9a,0xae,0xbe,0xce,0xe2,0xf2,//1300MHz 8
0x03,0x46,0x5d,0x6e,0x82,0x97,0xaa,0xba,0xcb,0xdc,0xea,0xfa,//1400MHz 9
0x03,0x39,0x4e,0x62,0x76,0x8a,0x9e,0xb2,0xc2,0xd2,0xe2,0xf2,//1500MHz 10
0x03,0x38,0x4e,0x62,0x74,0x8a,0x9e,0xb2,0xc2,0xd2,0xe2,0xf3,//1600MHz 11
0x03,0x3e,0x53,0x66,0x7a,0x8f,0xa2,0xb7,0xc6,0xd6,0xe6,0xf7,//1700MHz 12
0x03,0x3b,0x52,0x66,0x77,0x8e,0xa1,0xb2,0xc2,0xd2,0xe2,0xf2,//1800MHz 13
0x03,0x3f,0x53,0x66,0x7a,0x91,0xa2,0xb7,0xc6,0xd6,0xe6,0xf2,//1900MHz 14
0x03,0x24,0x43,0x59,0x6d,0x82,0x96,0xaa,0xba,0xcb,0xde,0xeb,//2000MHz 15
0x00,0x3b,0x54,0x68,0x7b,0x90,0xa4,0xb2,0xc5,0xd5,0xe5,0xf4,//3000MHz 16
0x00,0x21,0x43,0x56,0x6a,0x7e,0x93,0xa6,0xba,0xca,0xde,0xef,//4000MHz 17
0x00,0x29,0x46,0x5c,0x6e,0x84,0x99,0xac,0xbc,0xce,0xde,0xf1,//5000MHz 18
0x00,0x18,0x46,0x52,0x70,0x86,0x9a,0xae,0xbe,0xce,0xde,0xf0,//6000MHz 19
0x00,0x3b,0x53,0x68,0x7c,0x92,0xa5,0xb6,0xc6,0xd8,0xea,0xf9,//7000MHz 20
0x00,0x25,0x44,0x5b,0x6d,0x84,0x99,0xaa,0xbe,0xce,0xde,0xf2,//8000MHz 21
0x00,0x18,0x43,0x56,0x6a,0x7e,0x93,0xa6,0xb4,0xca,0xda,0xed,//9000MHz 22
0x03,0x36,0x4f,0x63,0x77,0x8e,0xa2,0xb4,0xc5,0xd6,0xe6,0xf6,//10000MHz 23
0x06,0x44,0x58,0x6c,0x82,0x96,0xaa,0xbb,0xca,0xda,0xeb,0xfb,//11000MHz 24
0x06,0x42,0x55,0x6a,0x7e,0x92,0xa6,0xb9,0xca,0xda,0xeb,0xfa,//12000MHz 25
0x06,0x44,0x59,0x6d,0x82,0x96,0xaa,0xba,0xca,0xda,0xea,0xfa,//13000MHz 26
0x06,0x30,0x4b,0x61,0x74,0x8a,0x9e,0xb1,0xc0,0xd2,0xe2,0xf2,//14000MHz 27
0x06,0x2b,0x4b,0x61,0x75,0x8a,0x9e,0xb2,0xc2,0xd2,0xe3,0xf4,//15000MHz 28
0x06,0x29,0x45,0x5d,0x70,0x86,0x9a,0xad,0xbe,0xce,0xde,0xee,//16000MHz 29
0x09,0x30,0x4b,0x62,0x76,0x8a,0x9e,0xba,0xca,0xca,0xda,0xed,//17000MHz 30
0x0c,0x02,0x11,0x35,0x4f,0x64,0x78,0x8e,0xa1,0xb2,0xc2,0xd2 //18000MHz 31
};
//校正表格查表子程序
void searchform(uchar gmhz,uchar select03)
{
uchar i,form1,form2,form00,form01;
uchar dBdata;
signed char form9,form10,form11;//查表所得到的dB值
uint FormDAMY,DAASeNumber;
uint form3,form4,form5;
float form6,form7,form8,formmid1,formmid2;
//确定查表的位置是直通衰减表还是放大表
switch(DAASelect)
{
case 0:DAASeNumber=0;form10=4;form11=37;break;
case 1:DAASeNumber=0;form10=-26;form11=7;break;
case 2:DAASeNumber=384;form10=-56;form11=-23;break;
}
//确定点在表中的Y坐标
if((midnumber>=500)&&(midnumber<550)){FormDAMY=0;}
if((midnumber>=550)&&(midnumber<650)){FormDAMY=1;}
if((midnumber>=650)&&(midnumber<750)){FormDAMY=2;}
if((midnumber>=750)&&(midnumber<850)){FormDAMY=3;}
if((midnumber>=850)&&(midnumber<950)){FormDAMY=4;}
if((midnumber>=950)&&(midnumber<1050)){FormDAMY=5;}
if((midnumber>=1050)&&(midnumber<1150)){FormDAMY=6;}
if((midnumber>=1150)&&(midnumber<1250)){FormDAMY=7;}
if((midnumber>=1250)&&(midnumber<1350)){FormDAMY=8;}
if((midnumber>=1350)&&(midnumber<1450)){FormDAMY=9;}
if((midnumber>=1450)&&(midnumber<1550)){FormDAMY=10;}
if((midnumber>=1550)&&(midnumber<1650)){FormDAMY=11;}
if((midnumber>=1650)&&(midnumber<1750)){FormDAMY=12;}
if((midnumber>=1750)&&(midnumber<1850)){FormDAMY=13;}
if((midnumber>=1850)&&(midnumber<1950)){FormDAMY=14;}
if((midnumber>=1950)&&(midnumber<2500)){FormDAMY=15;}
if((midnumber>=2500)&&(midnumber<3500)){FormDAMY=16;}
if((midnumber>=3500)&&(midnumber<4500)){FormDAMY=17;}
if((midnumber>=4500)&&(midnumber<5500)){FormDAMY=18;}
if((midnumber>=5500)&&(midnumber<6500)){FormDAMY=19;}
if((midnumber>=6500)&&(midnumber<7500)){FormDAMY=20;}
if((midnumber>=7500)&&(midnumber<8500)){FormDAMY=21;}
if((midnumber>=8500)&&(midnumber<9500)){FormDAMY=22;}
if((midnumber>=9500)&&(midnumber<10500)){FormDAMY=23;}
if((midnumber>=10500)&&(midnumber<11500)){FormDAMY=24;}
if((midnumber>=11500)&&(midnumber<12500)){FormDAMY=25;}
if((midnumber>=12500)&&(midnumber<13500)){FormDAMY=26;}
if((midnumber>=13500)&&(midnumber<14500)){FormDAMY=27;}
if((midnumber>=14500)&&(midnumber<15500)){FormDAMY=28;}
if((midnumber>=15500)&&(midnumber<16500)){FormDAMY=29;}
if((midnumber>=16500)&&(midnumber<17500)){FormDAMY=30;}
if((midnumber>=17500)&&(midnumber<=18000)){FormDAMY=31;}
//确定对应的标记字
switch(FormDirect[FormDAMY*12+DAASeNumber])
{
case 0x00:dBdata=0;break;
case 0x03:dBdata=3;break;
case 0x06:dBdata=6;break;
case 0x09:dBdata=9;break;
case 0x0c:dBdata=12;break;
}
//确定点的具体位置
form1=gmhz;
for(i=1;i<11;i++)
{
if((form1>=FormDirect[FormDAMY*12+i+DAASeNumber])&&(form1<FormDirect[FormDAMY*12+i+1+DAASeNumber]))
{form2=i;ASC_show(23,23,9);ASC_show(23,24,9);ASC_show(23,25,9);ASC_show(23,26,9);break;}
}
//记录确定点位置的基值dB
form9=form2*3+dBdata+form10;//form11=form2*3+dBdata-20;
if(FormDirect[FormDAMY*12+11+DAASeNumber]==form1)
{
formmid2=(float)dBdata+(float)form11;
LcdPowerDataShow=pow(10,formmid2/10);
ASC_show(23,21,select03);
if(dBdata==0){ASC_show(23,22,select03);ASC_show(7,23,select03);}
if(dBdata>0){ASC_show(1,22,select03);ASC_show(dBdata-3,23,select03);}
ASC_show(10,24,select03);
ASC_show(0,25,select03);
}
else
{
form00=form1-FormDirect[FormDAMY*12+form2+DAASeNumber];
form01=FormDirect[FormDAMY*12+form2+1+DAASeNumber]-FormDirect[FormDAMY*12+form2+DAASeNumber];
form7=(float)form00;form8=(float)form01;
form6=(form7*3)/form8;
//显示所测量的功率值dB数
form6=form6+form9;LcdPowerDataShow=pow(10,form6/10);
if(form6>=0)
{
ASC_show(23,21,select03);
formmid1=ceil(form6*10);
form3=floor(formmid1/100);if(form3==0){ASC_show(23,22,select03);}else{ASC_show(form3,22,select03);}
form4=floor(formmid1/10)-form3*10;ASC_show(form4,23,select03);ASC_show(10,24,select03);
form5=formmid1-form3*100-form4*10;ASC_show(form5,25,select03);
}
if(form6<0)
{
form6=fabs(form6);
formmid1=ceil(form6*10);
form3=floor(formmid1/100);
if(form3==0){ASC_show(23,21,select03);ASC_show(22,22,select03);}
else{ASC_show(22,21,select03);ASC_show(form3,22,select03);}
form4=floor(formmid1/10)-form3*10;ASC_show(form4,23,select03);ASC_show(10,24,select03);
form5=formmid1-form3*100-form4*10;ASC_show(form5,25,select03);
}
}
if((form1<FormDirect[FormDAMY*12+1+DAASeNumber])||(form1>FormDirect[FormDAMY*12+11+DAASeNumber]))
{ ASC_show(23,21,select03);ASC_show(23,22,select03);ASC_show(23,23,select03);
ASC_show(23,24,select03);ASC_show(23,25,select03);LcdPowerDataShow=0;
}
switch(DAASelect)
{
case 0:
if(ADCPINBmax<=FormDirect[FormDAMY*12+1])
{Word_show(60,23,9);Word_show(62,25,9);}
break;
case 1:
if(ADCPINBmax<=FormDirect[FormDAMY*12+1])
{Word_show(56,23,9);Word_show(58,25,9);}
if((ADCPINBmin>=FormDirect[FormDAMY*12+11])&&(HLSelect==0))
{Word_show(64,23,9);Word_show(66,25,9);}
if((ADCPINBmin>=0xf0)&&(HLSelect==1))
{Word_show(64,23,9);Word_show(66,25,9);}
break;
case 2:
if(ADCPINBmin>=FormDirect[FormDAMY*12+395])
{Word_show(60,23,9);Word_show(62,25,9);}
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -