📄 dph.c
字号:
#include <stdlib.h>
#include <stdio.h>
#include <reg51.h>
#include <string.h>
#include <absacc.h>
#include <math.h>
#include <stdarg.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define long long int
#define LCDS XBYTE[0x2000]
#define LCDD XBYTE[0x2001]
#define LCDB XBYTE[0x2002]
#define LCDR XBYTE[0x2003]
#define IOS XBYTE[0x6803]
#define BITIO XBYTE[0x6802]
#define GAINR XBYTE[0x7000]
#define GAINL XBYTE[0x7800]
#define KEYC XBYTE[0x6800]
#define KEYR XBYTE[0x6801]
#define ADLB XBYTE[0x6001]
#define ADHB XBYTE[0x6002]
#define POW1 XBYTE[0x8100]
#define POW2 XBYTE[0x8101]
#define LIGK XBYTE[0x8150]
#define V_TH0 0x9e
#define V_TL0 0x65
#define MENU 0x00
#define ENTER 0x03
#define STOP 0x04
#define START 0x05
#define SPEED 0x06
uchar code wel[16]="Welcome Use It!&";
uchar code sim_inf[18]="Siming! MENU-Ret&";
uchar code f_b_inf[18]="ENT:OK MENU:Ret&";
uchar code ret_menu[18]=" Press MENU Ret!&";
float code k_gain[4] ={0.5,0.1,1.0,10.0};
uchar code code_buf[36][17]={
" 1:Set 2:F/B &"," 3:Mode 4:Sim &", /* 00 */
" Set-Para &"," File_No. &", /* 01 */
" No. 00 &"," Load Save &", /* 02 */
"Speed 2000 r/Min&","Error 2000 r/Min&", /* 03 */
"KL_g=1.0000 g/mv&","KR_g=1.0000 g/mv&", /* 04 */
" KL_R=+0.0000 &"," KR_L=+0.0000 &", /* 05 */
" L_r= 100 mm &"," R_r= 100 mm &", /* 06 */
" A = 100 mm &"," B = 100 mm &", /* 07 */
" C = 1000 mm &"," M = 00.0 Kg &", /* 08 */
" 1:L_Fl 2:R_Fl&"," 3:L_Bd 4:R_Bd&", /* 09 */
" L: 10.0 g &"," E:Start M:Ret&", /* 10 */
" R: 10.0 g &"," E:Start M:Ret&", /* 11 */
" Test_T: 01 &"," Add: + &", /* 12 */
" On Off &"," Run__Sim &", /* 13 */
" No. 00 &"," E:Ok M:Cancel&", /* 14 */
" No. 00 &"," E:Ok M:Cancel&",/* 15 */
"Password: 00000&"," E:Ok M:Cancel&"};/* 15 */
uchar code site_cp[20]={0x00,0x03,0xc1,0x06,0x05,0x07,0x06,
0x06,0x06,0x00,0x04,0x04,0x09,0x02,
0x09,0x09};
sbit bsy=ACC^7 ;
sbit P1_0=P1^0 ;
sbit P1_1=P1^1 ;
sbit P1_2=P1^2 ;
sbit P1_3=P1^3 ;
sbit P1_4=P1^4 ;
sbit P1_5=P1^5 ;
sbit P1_6=P1^6 ;
sbit P1_7=P1^7 ;
sbit P3_2=P3^2 ;
bit pw ;
bit run_k ;
bit light ;
bit fir ;
bit keybit ;
bit lock ;
bit sim ;
bit prod ;
bit menu_test ;
bit stop ;
bit re_scr ;
bit sec1s ;
bit data_redy ;
bit kl_r_sign ;
bit kr_l_sign ;
uchar time ;
uchar key ;
uchar cp ;
uchar menu_state ;
uchar test_state ;
uchar xdata lcd_buf[36][18];
uchar xdata first[3] ;
uchar xdata save_num;
uchar xdata ch ;
uchar xdata ch_n ;
uchar xdata gain_l ;
uchar xdata gain_r ;
uchar xdata gainl_new ;
uchar xdata gainr_new ;
uchar xdata add ;
uchar xdata power[3] ;
uchar xdata set_buf[12] ;
uchar xdata disp_buf[12] ;
uchar xdata ul_sim_buf[9] ;
uchar xdata ur_sim_buf[9] ;
uchar xdata fb_buf[16];
uchar xdata ad_count ;
uint xdata r_sp;
int xdata sp_error ;
int xdata save_no ;
int xdata load_no ;
int xdata u_ad[4] ;
int xdata ulx[30] ;
int xdata uly[30] ;
int xdata urx[30] ;
int xdata ury[30] ;
long xdata ulx_ave ;
long xdata uly_ave ;
long xdata urx_ave ;
long xdata ury_ave ;
float xdata ulx_new ;
float xdata uly_new ;
float xdata urx_new ;
float xdata ury_new ;
float xdata ulx_sim ;
float xdata uly_sim ;
float xdata urx_sim ;
float xdata ury_sim ;
float xdata kl_r_abs ;
float xdata kr_l_abs ;
float xdata gml ;
float xdata gmr ;
float xdata set ;
struct para {
float kfl ;
float kfr ;
float kbl ;
float kbr ;
float m ;
int speed ;
int range ;
int no ;
int a ;
int b ;
int c ;
int L_r ;
int R_r ;
int t ;
}xdata compen,xdata save_para[100];
struct test_data {
float ul_x ;
float ul_y ;
float ul ;
float al ;
uchar ul_buf[12];
uchar al_buf[8];
float ur_x ;
float ur_y ;
float ur ;
float ar ;
uchar ur_buf[12];
uchar ar_buf[8];
uint speed ;
uchar sp_buf[16];
}xdata test;
uchar getkey(void) ;
void lcdset(void) ;
void lcddsp(char *buf) ;
void busy(void) ;
void d2ms(void) ;
void delay(void) ;
void beep(void) ;
init_sys(bit init) ;
void ini_buf(void) ;
void state00(void) ;
void state01(void) ;
void state02(void) ;
void state03(void) ;
void state04(void) ;
void state05(void) ;
void state06(void) ;
void state07(void) ;
void state08(void) ;
void state09(void) ;
void state10(void) ;
void state11(void) ;
void state12(void) ;
void state13(void) ;
void state14(void) ;
void state15(void) ;
void lrf(void) ;
void caluxy(void) ;
void screen(void) ;
void menu(void) ;
void menu_key(void) ;
void prodata(void) ;
main()
{
bit p;
P3_2=1;
lcdset();
power[0]=POW1;
power[1]=POW2;
p=0;
if(power[0]=='O')
{
if(power[1]=='N') p=1;
}
if(p==0)
{
POW1='O';
POW2='N';
}
if(p==1)
{
init_sys(0);
re_scr=1;
if(P3_2==0)
{
delay();
if(P3_2==0)
{
test_state=0;
menu_test=0;
lock=1 ;
run_k=1;
key=START;
}
}
else
{
test_state=1;
menu_test=0;
lock=0 ;
run_k=0;
key=SPEED;
test.speed=0;
}
}
else
{
lcddsp(wel);
init_sys(1);
do{key=getkey();}while(key==0xff);
lock=0;
if(P3_2==0)
{
delay();
if(P3_2==0)
{
lock=1 ;
run_k=1;
}
}
if(key==SPEED)
{
test_state=1;
menu_test=0;
re_scr=1;
}
else
{
test_state=0;
menu_test=0;
re_scr=1;
key=START;
}
}
fir=1;
do
{
if(lock==1)
{
if(P3_2==1)
{
d2ms();d2ms();
if(P3_2==1)
{
lock=0 ;
}
}
}
else
{
if(P3_2==0)
{
d2ms(); d2ms();
if(P3_2==0)
{
lock=1;
if(menu_test==0)
{
fir=1;
if(test_state==0) key=START;
else
if(test_state==1) key=SPEED;
}
}
}
}
if(fir==0) key=getkey();
else fir=0;
if(key!=0xff)
{
beep();
keybit=1;
if(key==MENU)
{
menu_key();
prod=0;
stop=0;
}
else if((key>0x00)&&(key<0x04))
{
if(menu_test==1)
{
menu();
keybit=1;
}
}
else
{
if(key==STOP)
{
stop=~stop;
}
else if(key==START)
{
if(P3_2==0)
{
d2ms(); d2ms();
if(P3_2==0)
{
lock=1;
}
}
menu_test=0;
test_state=0;
EX1=1;
prod=1;
ad_count=1;
ulx_ave=0;
uly_ave=0;
urx_ave=0;
ury_ave=0;
re_scr=1;
cp=0;
}
else if(key==SPEED)
{
if(P3_2==0)
{
d2ms(); d2ms();
if(P3_2==0)
{
lock=1;
}
}
test_state=1;
menu_test=0;
re_scr=1;
prod=0;
cp=0;
}
else if(key==0x07)
{
if(lock==1) run_k=0;
else run_k=~run_k;
if(run_k==0)
{
BITIO=0x04;
delay(); delay();
delay(); delay();
BITIO=0x05;
}
else
{
BITIO=0x06;
delay(); delay();
delay(); delay();
BITIO=0x07;
}
}
else if(key==0x08)
{
if(add=='+')
{
add='-'; BITIO=0x02;
BITIO=0x01;
lcd_buf[25][9]=add;
}
else
{
add='+'; BITIO=0x00;
BITIO=0x03;
lcd_buf[25][9]=add;
}
lcd_buf[24][10]=add;
}
else if(key==0x09)
{
/* print();*/
}
else if(key==0x0a)
{
light=~light;
if(light==1)
{
P1_1=0; LIGK='k';
}
else
P1_1=1; LIGK=0;
}
}
}
if(re_scr==1)
{
screen();
re_scr=0;
}
if((lock==1)&&(sec1s==1)&&(menu_test==0))
{
prodata();
data_redy=0;
sec1s=0;
}
if(keybit==1)
{
do{
key=getkey();
if(key==0xff)
d2ms();
key=getkey();
}while(key!=0xff);
keybit=0;
}
}while(1);
}
init_sys(bit init)
{
uchar i,j;
for(i=0;i<36;i++)
{
for(j=0;j<17;j++)
lcd_buf[i][j]=code_buf[i][j];
}
IOS=0x90 ;
prod=0 ;
lock=0 ;
sim=0 ;
stop=0 ;
re_scr=1 ;
sec1s=0 ;
time=0 ;
keybit=0 ;
key=0xff ;
cp=0 ;
ch=0 ;
data_redy=0 ;
menu_test=1 ;
menu_state=0;
test_state=0;
run_k=0 ;
P3_2=1 ;
TMOD=0x51 ;
TCON=0x05 ;
IE=0x82 ;
IP=0x03 ;
TL0=V_TL0;
TH0=V_TH0;
TR0=1;
ET0=1;
EX0=0;
EX1=1;
if((gain_l>3)||(gain_l<0)) gain_l=2;
if((gain_r>3)||(gain_r<0)) gain_r=2;
GAINL=gain_l ;
GAINR=gain_r ;
gainl_new=gain_l;
gainr_new=gain_r;
if(init==1)
{
P1_3=0;
d2ms(); d2ms();
d2ms(); d2ms();
P1_3=1;
light=0;
ulx_sim=0 ;
uly_sim=0 ;
urx_sim=0 ;
ury_sim=0 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -