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

📄 main.c

📁 监控仪 监控仪 监控仪
💻 C
📖 第 1 页 / 共 5 页
字号:
 // 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 + -