📄 main.c
字号:
// XBYTE[0x8003]=0x00;
// Display_CPU_NO(CPU_NO);
//second led display,dispaly "CPU"
XBYTE[0x800a]=0xc6;//"C"
XBYTE[0x800b]=0x8c;//"P"
XBYTE[0x800c]=0xc1;//"U"
Display_Acord_Value(0x8004,(unsigned int)(Value_Test_24v*100),1);//24v
// dispaly_point(0x8005);
// Display_Acord_Value(0x800d,(unsigned int)(Value_Test_5v*100),1);//5v
Display_Acord_Value(0x800d,0,0);
// dispaly_point(0x800d);
//////////////////////////////sound
if( (!Signed_Test_CPU)||(!Signed_Test_24v)||(!Signed_Test_5v) )
/* if(!Signed_Sound_Off)
{
P1_1=1;
P1_4=1;
}
else
{
P1_1=0;
P1_4=0;
}
*/
if( (!Signed_Sound_Off) )
{
// P1_1=1;
// P1_4=1;
Temp_Output=Temp_Output|0x90;//D7\D4警报和蜂鸣器
Temp_Output=Temp_Output|0x10;//D7\D4
}
else
{
// P1_1=0;
// P1_4=0;
Temp_Output=Temp_Output&0x6f;//D7\D4
Temp_Output=Temp_Output&0xef;//D7\D4
}
// XBYTE[0x8008]=Temp_Output;//输出报警*************
}
Display_Acord_Value(unsigned int address,int value ,bit Test_bit)
{
unsigned char Temp_Byte;//for dispaly a byte
unsigned int Temp_Remain;//for calculate byte
unsigned int Temp_Divide;
if(address==0x800D||address==0x800A)//tem (water and oil)
{
if(value<0)
{
Temp_Byte=Display_Lookup_Table(10);
Set_Display(1,Temp_Byte,address);
value=abs(value);
Temp_Divide=value/10;
Temp_Remain=value%10;
if(Temp_Divide!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Divide));
else
Temp_Byte=Display_Lookup_Table(0);
Set_Display(2,Temp_Byte,address);
/* Temp_Divide=Temp_Remain/10;
Temp_Remain=Temp_Remain%10;
if(Temp_Divide!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Divide));
else
Temp_Byte=Display_Lookup_Table(0);
Set_Display(3,Temp_Byte,address);*/
// Temp_Divide=value/1000;
// Temp_Remain=value%1000;
if(Temp_Remain!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Remain));
else
Temp_Byte=Display_Lookup_Table(0);
Set_Display(3,Temp_Byte,address);
}
else
if(value==0)
{
Temp_Byte=Display_Lookup_Table(0);
if( (address==0x800D)&&Test_bit )
Temp_Byte=Temp_Byte&0x7f;
Set_Display(1,Temp_Byte,address);
Temp_Byte=Display_Lookup_Table(0);
Set_Display(2,Temp_Byte,address);
Set_Display(3,Temp_Byte,address);
// Temp_Byte=Display_Lookup_Table(0);
// Set_Display(4,Temp_Byte,address);
}
else
{
// unsigned int Temp_Remain;
// unsigned int Temp_Divide;
Temp_Divide=value/100;
Temp_Remain=value%100;
if(Temp_Divide!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Divide));
else
Temp_Byte=Display_Lookup_Table(0);
if( (address==0x800D)&&Test_bit )
Temp_Byte=Temp_Byte&0x7f;
///////////////////////柳州监控仪530
// if(address==0x800D)
// Temp_Byte=Temp_Byte&0x7f;
// Set_Display(1,Temp_Byte,address);
if( (address==0x800D) )
Temp_Byte=Temp_Byte&0x7f;
Set_Display(1,Temp_Byte,address);
Temp_Divide=Temp_Remain/10;
Temp_Remain=Temp_Remain%10;
if(Temp_Divide!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Divide));
else
Temp_Byte=Display_Lookup_Table(0);
// if(Test_bit)
// Temp_Byte=Temp_Byte&0x7f;
Set_Display(2,Temp_Byte,address);
/* Temp_Divide=Temp_Remain/10;
Temp_Remain=Temp_Remain%10;
if(Temp_Divide!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Divide));
else
Temp_Byte=Display_Lookup_Table(0);
Set_Display(3,Temp_Byte,address);*/
// Temp_Divide=value/1000;
// Temp_Remain=value%1000;
if(Temp_Remain!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Remain));
else
Temp_Byte=Display_Lookup_Table(0);
Set_Display(3,Temp_Byte,address);
}
}
/////////////////////////////////////
else
if(address==0x8000)
{
if(value<0)
{
Temp_Byte=Display_Lookup_Table(10);
Set_Display(1,Temp_Byte,address);
value=abs(value);
Temp_Divide=value/100;
Temp_Remain=value%100;
if(Temp_Divide!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Divide));
else
Temp_Byte=Display_Lookup_Table(0);
Set_Display(2,Temp_Byte,address);
Temp_Divide=Temp_Remain/10;
Temp_Remain=Temp_Remain%10;
if(Temp_Divide!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Divide));
else
Temp_Byte=Display_Lookup_Table(0);
Set_Display(3,Temp_Byte,address);
// Temp_Divide=value/1000;
// Temp_Remain=value%1000;
if(Temp_Remain!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Remain));
else
Temp_Byte=Display_Lookup_Table(0);
Set_Display(4,Temp_Byte,address);
}
else
if(value==0)
{
Temp_Byte=Display_Lookup_Table(0);
Set_Display(1,Temp_Byte,address);
Set_Display(2,Temp_Byte,address);
Set_Display(3,Temp_Byte,address);
Temp_Byte=Display_Lookup_Table(0);
Set_Display(4,Temp_Byte,address);
}
else
{
// unsigned int Temp_Remain;
// unsigned int Temp_Divide;
Temp_Divide=value/1000;
Temp_Remain=value%1000;
if(Temp_Divide!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Divide));
else
Temp_Byte=Display_Lookup_Table(0);
Set_Display(1,Temp_Byte,address);
Temp_Divide=Temp_Remain/100;
Temp_Remain=Temp_Remain%100;
if(Temp_Divide!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Divide));
else
Temp_Byte=Display_Lookup_Table(0);
//Set_Display(2,Temp_Byte,address);
///////////////-----------
if(Test_bit)
Temp_Byte=Temp_Byte&0x7f;
Set_Display(2,Temp_Byte,address);
Temp_Divide=Temp_Remain/10;
Temp_Remain=Temp_Remain%10;
if(Temp_Divide!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Divide));
else
Temp_Byte=Display_Lookup_Table(0);
Set_Display(3,Temp_Byte,address);
// Temp_Divide=value/1000;
// Temp_Remain=value%1000;
if(Temp_Remain!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Remain));
else
Temp_Byte=Display_Lookup_Table(0);
Set_Display(4,Temp_Byte,address);
}
}//speed is over
//////////////////////
else //oil pressure 0x8004
{
value=abs(value);
// dispaly_point(0x8004);
if(value<0)
{
Temp_Byte=Display_Lookup_Table(10);
Set_Display(1,Temp_Byte,address);
value=abs(value);
Temp_Divide=value/100;
Temp_Remain=value%100;
if(Temp_Divide!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Divide));
else
Temp_Byte=Display_Lookup_Table(0);
Temp_Byte=Temp_Byte&0x7f;
Set_Display(2,Temp_Byte,address);
Temp_Divide=Temp_Remain/10;
Temp_Remain=Temp_Remain%10;
if(Temp_Divide!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Divide));
else
Temp_Byte=Display_Lookup_Table(0);
Set_Display(3,Temp_Byte,address);
// Temp_Divide=value/1000;
// Temp_Remain=value%1000;
if(Temp_Remain!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Remain));
else
Temp_Byte=Display_Lookup_Table(0);
Set_Display(4,Temp_Byte,address);
}
else
if(value==0)
{
Temp_Byte=Display_Lookup_Table(0);
Set_Display(1,Temp_Byte,address);
if(Test_bit)
Temp_Byte=Temp_Byte&0x7f;
Set_Display(2,Temp_Byte,address);
Temp_Byte=Display_Lookup_Table(0);
Set_Display(3,Temp_Byte,address);
Set_Display(4,Temp_Byte,address);
}
else
{
// unsigned int Temp_Remain;
// unsigned int Temp_Divide;
Temp_Divide=value/1000;
Temp_Remain=value%1000;
if(Temp_Divide!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Divide));
else
Temp_Byte=Display_Lookup_Table(0);
//Temp_Byte=Temp_Byte&0x7f;
if(!Test_bit)
Temp_Byte=Temp_Byte&0x7f;
Set_Display(1,Temp_Byte,address);
Temp_Divide=Temp_Remain/100;
Temp_Remain=Temp_Remain%100;
if(Temp_Divide!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Divide));
else
Temp_Byte=Display_Lookup_Table(0);
if(Test_bit)
Temp_Byte=Temp_Byte&0x7f;
Set_Display(2,Temp_Byte,address);
Temp_Divide=Temp_Remain/10;
Temp_Remain=Temp_Remain%10;
if(Temp_Divide!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Divide));
else
Temp_Byte=Display_Lookup_Table(0);
Set_Display(3,Temp_Byte,address);
// Temp_Divide=value/1000;
// Temp_Remain=value%1000;
if(Temp_Remain!=0)
Temp_Byte=Display_Lookup_Table((unsigned char)(Temp_Remain));
else
Temp_Byte=Display_Lookup_Table(0);
Set_Display(4,Temp_Byte,address);
}
}///////oil pressure is over///
}
float Calculate_Line_k(int x1,int y1,int x2,int y2)
{
return ((float)(y2-y1))/(x2-x1);
// b=y1-k*x1;
}
float Calculate_Line_b(int x1,int y1,int x2,int y2)
{
return y1-((float)(y2-y1))/(x2-x1)*x1;
// b=y1-k*x1;
}
int Calculate_Tem(unsigned int input,bit Bit_Sign_OilWater)//calculate temperature for water and oil
{
int Tem;
/*
if( (input>0 && input<128) || input==0)
{
Tem=(int)((float)70/127*input-20);
}
else if(input>127 && input<256)
{
Tem=(int) ( (float)70/128*input+(50-127*((float)70/128)) );
}
*/
Tem=(int)( (float)Calculate_Line_k(573,30,684,97)*input+ Calculate_Line_b(573,30,684,97) );
if(Bit_Sign_OilWater)////Bit_Sign_OilWater为1时为油温
Tem=Tem*( (float)Para_Setting_OilTem_K/100 ) + Para_Setting_OilTem_b-60;
else////Bit_Sign_OilWater为0时为水温
Tem=Tem*( (float)Para_Setting_WaterTem_K/100 ) + Para_Setting_WaterTem_b-60;
if(input==0)
Tem=-20;
if(Tem<-20) Tem=-20;
if(Tem>120) Tem=120;
return Tem;
}
/*
unsigned int Calculate_Vol(unsigned char input)
{
int Vol;
Tem=(int)( (float)Calculate_Line_k(0,-20,255,150)*input+ Calculate_Line_b(0,-20,255,150) );
return Tem;
}
*/
/*
unsigned int Calculate_Pre(unsigned int input)
{
//unsigned int Pre1;
float Pre;
float k,b;
if( (input>0 && input<68) || input==0)
{
Pre=0;
}
if(input>67 && input<298)
{
// Calculate_Line(17,0,77,500,*k,*b);
k=Calculate_Line_k(67,0,298,200);
b=Calculate_Line_b(67,0,298,200);
Pre=(k*input+b);
// Pre=(int) ( (float)500/60*input+(-((float)500/60*17)) );
}
if(input>297&& input<492)
{
k=Calculate_Line_k(297,200,492,400);
b=Calculate_Line_b(297,200,492,400);
Pre=(k*input+b);
//Pre=(int) ((float)500/46*input+(500-77*((float)500/46)));
}
if(input>491 && input<647)
{
k=Calculate_Line_k(492,400,647,600);
b=Calculate_Line_b(492,400,647,600);
Pre=(k*input+b);
}
if(input>646 && input<772)
{
k=Calculate_Line_k(646,600,772,800);
b=Calculate_Line_b(646,600,772,800);
Pre=(k*input+b);
}
if(input>771 && input<886)
{
k=Calculate_Line_k(772,800,886,1000);
b=Calculate_Line_b(772,800,886,1000);
Pre=(k*input+b);
}
if(input>885)
{
Pre=1000;
}
// return( (unsigned int)( ((float)Para_Pre_Oil_Zoom_k/100)*Pre+((float)Para_Pre_Oil_Shift_b) ) );
return Pre;
}
*/
unsigned int Calculate_Pre(unsigned int input)
{
//unsigned int Pre1;
float Pre;
float k,b;
if( (input>0 && input<63) || input==0)
{
Pre=0;
}
if(input>62 && input<283)
{
// Calculate_Line(17,0,77,500,*k,*b);
k=Calculate_Line_k(63,0,283,200);
b=Calculate_Line_b(63,0,283,200);
Pre=(k*input+b);
// Pre=(int) ( (float)500/60*input+(-((float)500/60*17)) );
}
if(input>282&& input<478)
{
k=Calculate_Line_k(283,200,478,400);
b=Calculate_Line_b(283,200,478,400);
Pre=(k*input+b);
//Pre=(int) ((float)500/46*input+(500-77*((float)500/46)));
}
if(input>477 && input<563)
{
k=Calculate_Line_k(478,400,563,500);
b=Calculate_Line_b(478,400,563,500);
Pre=(k*input+b);
}
///////////////////////////
if(input>562 && input<634)
{
k=Calculate_Line_k(563,500,634,600);
b=Calculate_Line_b(563,500,634,600);
Pre=(k*input+b);
}
if(input>633 && input<710)
{
k=Calculate_Line_k(634,600,710,700);
b=Calculate_Line_b(634,600,710,700);
Pre=(k*input+b);
}
//////////////////////////////////////
if(input>709 && input<759)
{
k=Calculate_Line_k(710,700,759,800);
b=Calculate_Line_b(710,700,759,800);
Pre=(k*input+b);
}
if(input>758 && input<868)
{
k=Calculate_Line_k(759,800,868,1000);
b=Calculate_Line_b(759,800,868,1000);
Pre=(k*input+b);
}
if(input>867)
{
Pre=1000;
}
// return( (unsigned int)( ((float)Para_Pre_Oil_Zoom_k/100)*Pre+((float)Para_Pre_Oil_Shift_b) ) );
return Pre;
}
//Calculate_Volate()
char Sign_Byte=0x00;////check byte
char Sign_Temp=0x00;//temp store
unsigned char Get_Value=0;
bit Up_Get_Value=0;
unsigned char Sign_Temp1;//for receive para
bit Sign_Para=0;
/////////////////////////////////////////////up get Para from E2prom
unsigned char Byte_Up_Get_Para=0;
bit Bit_Up_Get_Para=0;
unsigned char Count_Up_Get_Para=0;
unsigned char Check_Up_Get_Para=0;
//////////////////////////
unsigned char Send_Count=0;
unsigned char Receive_Count=0;
//unsigned char Send_Sign=0;
/*
void INT_UART_Tx_Rx() interrupt 4 using 3// serious interrupt
{
unsigned char xx=0x00;
ES = 0;
if(RI)
{
// P1_6=0;
RI=0;
TI=0;
xx=SBUF;
// Receive_Count=SBUF;
if(!Recieve_Para_Start)
{
///////////////////////////////////////////////////////////////
if(xx==0xbb)/////up receiving measure order
{
Get_Value=xx;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -