⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form.c

📁 AVR的开发程序,能够学习到不同的C开发环境下 如何更好第开法
💻 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 + -