📄 dph.c
字号:
for(i=0;i<3;i++)
{
if((save_para[i].kfl>=1)||(save_para[i].kfl<=-1)) ;
save_para[i].kfl = 0;
if((save_para[i].kfr>=1)||(save_para[i].kfr<=-1)) ;
save_para[i].kfr = 0;
if((save_para[i].kbl>1)||(save_para[i].kbl<0)) ;
save_para[i].kbl = 1.0;
if((save_para[i].kbr>1)||(save_para[i].kbr<0)) ;
save_para[i].kbr = 1.0;
if((save_para[i].m>99)||(save_para[i].m<0)) ;
save_para[i].m = 10.0;
if((save_para[i].speed>9999)||(save_para[i].speed<0)) ;
save_para[i].speed = 1999;
if((save_para[i].range>9999)||(save_para[i].range<0)) ;
save_para[i].range = 100;
/* if((save_para[i].no>99)||(save_para[i].no<0)) ;
save_para[i].no = 0; */
if((save_para[i].a>999)||(save_para[i].a<0)) ;
save_para[i].a =100 ;
if((save_para[i].b>999)||(save_para[i].b<0)) ;
save_para[i].b =100 ;
if((save_para[i].c>9999)||(save_para[i].c<0)) ;
save_para[i].c =100 ;
if((save_para[i].L_r>999)||(save_para[i].L_r<0)) ;
save_para[i].L_r =100 ;
if((save_para[i].R_r>999)||(save_para[i].R_r<0)) ;
save_para[i].R_r =100 ;
if((save_para[i].t>99)||(save_para[i].t<0)) ;
save_para[i].t =10 ;
}
}
else {
i=LIGK;
if(i='k')
{
P1_1=0; light=1;
}
else light=0;
}
ini_buf();
if((gml<0)||(gml>99.9))
gml=1.0;
sprintf(disp_buf,"%2.1f",gml);
i=0;
while(disp_buf[i]!='.')
{
i++;
}
lcd_buf[20][6]='.';
lcd_buf[20][7]=disp_buf[i+1];
if(i==1)
{
lcd_buf[20][5]=disp_buf[0];
lcd_buf[20][4]='0';
}
else
{
lcd_buf[20][4]=disp_buf[0];
lcd_buf[20][5]=disp_buf[1];
}
if((gmr<0)||(gmr>99.9))
gmr=1.0;
sprintf(disp_buf,"%2.1f",gmr);
i=0;
while(disp_buf[i]!='.')
{
i++;
}
lcd_buf[22][6]='.';
lcd_buf[22][7]=disp_buf[i+1];
if(i==1)
{
lcd_buf[22][5]=disp_buf[0];
lcd_buf[22][4]='0';
}
else
{
lcd_buf[22][4]=disp_buf[0];
lcd_buf[22][5]=disp_buf[1];
}
if((test.ul>4095.0)||(test.ul<-4095.0))
{ test.ul=0; test.al=0;}
if((test.ur>4095.0)||(test.ur<-4095.0))
{ test.ur=0; test.ar=0;}
if((test.al>360.0)||(test.al<0))
{ test.ul=0; test.al=0;}
if((test.ar>360.0)||(test.ar<0))
{ test.ur=0; test.ar=0;}
if((test.speed>9999)||test.speed<0)
test.speed=0;
sprintf(test.ul_buf,"L: %2.3f g&",test.ul);
sprintf(test.al_buf," %3.0f&",test.al);
sprintf(test.ur_buf,"R: %2.3f g&",test.ur);
sprintf(test.ar_buf," %3.0f&",test.ar);
sprintf(test.sp_buf,"Speed %4d r/min&",test.speed);
}
void ini_buf(void)
{
uchar i;
if((compen.m<0)||(compen.m>99.9))
compen.m=10.0;
sprintf(disp_buf,"%2.1f",compen.m);
i=0;
while(disp_buf[i]!='.')
{
i++;
}
lcd_buf[17][8]='.';
lcd_buf[17][9]=disp_buf[i+1];
if(i==1)
{
lcd_buf[17][7]=disp_buf[0];
lcd_buf[17][6]='0';
}
else
{
lcd_buf[17][6]=disp_buf[0];
lcd_buf[17][7]=disp_buf[1];
}
if((compen.kfl<-9.99)||(compen.kfl>9.99))
compen.kfl=0;
if(compen.kfl<0)
{
kl_r_abs=-compen.kfl;
kl_r_sign=1;
}
else
{
kl_r_abs=compen.kfl;
kl_r_sign=0;
}
if((compen.kfr<-9.99)||(compen.kfr>9.99))
compen.kfr=0;
if(compen.kfr<0)
{
kr_l_abs=-compen.kfr;
kr_l_sign=1;
}
else
{
kr_l_abs=compen.kfr;
kr_l_sign=0;
}
sprintf(lcd_buf[10]," KL_R= %1.4f&",kl_r_abs);
sprintf(lcd_buf[11]," KR_L= %1.4f&",kr_l_abs);
if(kl_r_sign==1) lcd_buf[10][7]='-';
else lcd_buf[10][7]='+';
if(kr_l_sign==1) lcd_buf[11][7]='-';
else lcd_buf[11][7]='+';
if((compen.kbl<0)||(compen.kbl>1.0)) compen.kbl=1;
if((compen.kbr<0)||(compen.kbr>1.0)) compen.kbr=1;
sprintf(lcd_buf[8],"KL_g=%1.4f g/mv&", compen.kbl);
sprintf(lcd_buf[9],"KR_g=%1.4f g/mv&", compen.kbr);
if((compen.L_r<0)||(compen.L_r>999)) compen.L_r=0;
sprintf(lcd_buf[12]," L_r= %03d mm &", compen.L_r);
if((compen.R_r<0)||(compen.R_r>999)) compen.R_r=0;
sprintf(lcd_buf[13]," R_r= %03d mm &",compen.R_r);
/* if((compen.no<0)||(compen.no>99)) compen.no=0;
sprintf(lcd_buf[4]," No. %02d&",compen.no); */
if((save_no>99)||(save_no<0)); save_no=0;
sprintf(lcd_buf[30]," No. %02d&",save_no);
if((load_no>99)||(load_no<0)); load_no=0;
sprintf(lcd_buf[28]," No. %02d&",load_no);
sprintf(lcd_buf[4]," No. %02d&",load_no);
if((compen.a<0)||(compen.a>999)) compen.a=0;
sprintf(lcd_buf[14]," A = %03d mm &",compen.a);
if((compen.b<0)||(compen.b>999)) compen.b=0;
sprintf(lcd_buf[15]," B = %03d mm &",compen.b);
if((compen.c<0)||(compen.c>9999)) compen.c=0;
sprintf(lcd_buf[16]," C = %04d mm&",compen.c);
if((compen.t>99)||(compen.t<0)) compen.t=10;
sprintf(lcd_buf[24]," Test_T: %2d &",compen.t);
if((add!='+')&&(add!='-')) add='+';
lcd_buf[25][9]=add;
if((compen.speed<0)||(compen.speed>9999)) compen.speed=9999;
sprintf(lcd_buf[6],"Speed %04d r/min&",compen.speed);
if((compen.range<0)||(compen.range>9999)) compen.range=1000;
sprintf(lcd_buf[7],"Range %04d r/min&",compen.range);
}
void screen(void)
{
if(menu_test==1)
{
busy();
LCDS=0x01;
busy();
LCDS=0x80;
lcddsp(lcd_buf[menu_state*2]);
busy();
LCDS=0xc0;
lcddsp(lcd_buf[menu_state*2+1]);
busy();
LCDS=site_cp[menu_state]+0x80;
}
else
{
if(stop==0)
{
busy();
LCDS=0x01;
if(test_state==0)
{
busy();
LCDS=0x80;
lcddsp(test.ul_buf);
busy();
LCDS=0x8b;
lcddsp(test.al_buf);
busy();
LCDS=0xc0;
lcddsp(test.ur_buf);
busy();
LCDS=0xcb;
lcddsp(test.ar_buf);
}
else if(test_state=1)
{
busy();
LCDS=0x80;
lcddsp(test.sp_buf);
busy();
LCDS=0xc0;
lcddsp(ret_menu);
}
}
}
}
void timer0(void) interrupt 1
{
TL0=V_TL0;
TH0=V_TH0;
time++;
if(time>=20)
{
time=0;
if(lock==1)
{
TR1=0;
r_sp=TL1+TH1*256;
TH1=0;
TL1=0;
TR1=1;
sec1s=1;
}
}
}
void ad(void) interrupt 2
{
uchar i;
EX1=0;
if((ADHB&0x20)==0)
{
u_ad[ch]=-(ADLB+(ADHB&0x0f)*256);
}
else
{
u_ad[ch]=ADLB+(ADHB&0x0f)*256;
}
ch++;
if(ch>3)
{
ch=0;
data_redy=1;
}
switch (ch)
{
case 0:
P1_6=0;
P1_7=0;
break;
case 1:
P1_6=1;
P1_7=0;
break;
case 2:
P1_6=0;
P1_7=1;
break;
case 3:
P1_6=1;
P1_7=1;
break;
}
EX1=1;
}
void prodata(void)
{
test.speed=r_sp;
sp_error=compen.speed-r_sp;
sp_error=abs(sp_error);
if(test_state==1)
{
sprintf(test.sp_buf,"Speed %4d r/min&",test.speed);
re_scr=1;
}
else if((sp_error<=compen.range)&&(test_state==0))
{
caluxy();
test.al=atan2(-test.ul_x,test.ul_y );
test.al*=57.29577951;
if(test.al<0) test.al+=360;
test.al+=22;
if(test.al>=360.0) test.al-=360.0;
test.ar=atan2(-test.ur_x,test.ur_y);
test.ar*=57.29577951;
if(test.ar<0) test.ar+=360;
test.ar+=19;
if(test.ar>=360.0) test.ar-=360.0;
if(test.ul>=100.0)
sprintf(test.ul_buf,"L: %4.1f g&",test.ul);
else
sprintf(test.ul_buf,"L: %2.3f g&",test.ul);
sprintf(test.al_buf," %3.0f&",test.al);
if(test.ur>=100.0)
sprintf(test.ur_buf,"R: %4.1f g&",test.ur);
else
sprintf(test.ur_buf,"R: %2.3f g&",test.ur);
sprintf(test.ar_buf," %3.0f &",test.ar);
re_scr=1;
}
}
void menu_key(void)
{
uchar xdata c,i;
menu_test=1;
cp=0;
re_scr=1;
switch(menu_state)
{
case 1:
menu_state=0;
break;
case 2:
menu_state=1;
break;
case 3:
menu_state=1;
break;
case 4:
menu_state=3;
break;
case 5:
menu_state=4;
break;
case 6:
menu_state=5;
break;
case 7:
menu_state=6;
break;
case 8:
menu_state=7;
break;
case 9:
menu_state=0;
break;
case 10:
menu_state=9;
break;
case 11:
menu_state=9;
break;
case 12:
menu_state=0;
break;
case 13:
menu_state=0;
break;
case 14:
menu_state=1;
break;
case 15:
menu_state=1;
break;
}
}
void menu(void) /*主菜单*/
{
switch(menu_state)
{
case 0:
state00();
break;
case 1:
state01();
break;
case 2:
state02();
break;
case 3:
state03();
break;
case 4:
state04();
break;
case 5:
state05();
break;
case 6:
state06();
break;
case 7:
state07();
break;
case 8:
state08();
break;
case 9:
state09();
break;
case 10:
state10();
break;
case 11:
state11();
break;
case 12:
state12();
break;
case 13:
state13();
break;
case 14:
state14();
break;
case 15:
state15();
break;
}
}
void caluxy(void)
{
uchar i,j;
j=0;
start:
j++ ;
EX1=0;
ulx_new=(float)u_ad[0];
uly_new=(float)u_ad[1];
urx_new=(float)u_ad[2];
ury_new=(float)u_ad[3];
EX1=1;
test.ul=ulx_new*ulx_new+uly_new*uly_new;
test.ur=urx_new*urx_new+ury_new*ury_new;
if(test.ul>4000000)
{
if(gain_l==3) gainl_new=2;
else if(gain_l==2) gainl_new=0;
else if(gain_l==0) gainl_new=1;
}
else if(test.ul<22500)
{
if(gain_l==1) gainl_new=0;
else if(gain_l==0) gainl_new=2;
else if(gain_l==2) gainl_new=3;
}
if(test.ur>4000000)
{
if(gain_r==3) gainr_new=2;
else if(gain_r==2) gainr_new=0;
else if(gain_r==0) gainr_new=1;
}
else if(test.ur<22500)
{
if(gain_r==1) gainr_new=0;
else if(gain_r==0) gainr_new=2;
else if(gain_r==2) gainr_new=3;
}
if((gain_l!=gainl_new)||(gain_r!=gainr_new))
{
GAINL=gainl_new;
GAINR=gainr_new;
gain_l=gainl_new;
gain_r=gainr_new;
i=0;
sec1s=0;
while(i<4)
{
if(sec1s==1)
{
i++; sec1s=0; beep();
}
}
data_redy=0;
while(data_redy==0){};
if(j<4) goto start;
}
/* EX1=0;
ulx_new=u_ad[0];
uly_new=u_ad[1];
urx_new=u_ad[2];
ury_new=u_ad[3];
EX1=1;
ulx_ave+=ulx_new;
uly_ave+=uly_new;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -