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

📄 main.c~

📁 潜入市嵌入式开发 嵌入式开发
💻 C~
📖 第 1 页 / 共 5 页
字号:
	    Temp_Byte=Display_Lookup_Table(0);
     // Set_Display(2,Temp_Byte,address);
       T0=0;
		Value_For_Display[9]=Temp_Byte;
		T0=1;
	  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);
       T0=0;
		Value_For_Display[10]=Temp_Byte;
		T0=1;
	 // 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);
	  T0=0;
		Value_For_Display[11]=Temp_Byte;
		T0=1;

	}

  
}


///////////////////////////////////////////
 void Display_ParaValue(unsigned char Mode_Code_SettingPara)//根据设定参数模式下,不同选择显示不同参数
 {
   switch(Mode_Code_SettingPara)
  {
    case 0:
	//  Display_Acord_Value( 0x8004,Para_Setting_Gear,1);
	  Display_Led_OilPre_NoPiont(0x8004,Para_Setting_Gear);

	  break;
	case 1:
	  //Display_Acord_Value( 0x8004,Para_Setting_StartTime,1);
	   Display_Led_OilPre_NoPiont(0x8004,Para_Setting_StartTime);
	  break;
	case 2:
	  //Display_Acord_Value( 0x8004,Para_Setting_StopTime,1);
	   Display_Led_OilPre_NoPiont(0x8004,Para_Setting_StopTime);
	  break;
	case 3:
	//  Display_Acord_Value( 0x8004,Para_Setting_KeepTime,1);
	   Display_Led_OilPre_NoPiont(0x8004,Para_Setting_KeepTime);
	  break;
	case 4:
	 // Display_Acord_Value( 0x8004,Para_Setting_AddTimeZero,1);
	   Display_Led_OilPre_NoPiont(0x8004,Para_Setting_AddTimeZero);
	  break;
	case 5:
	 // Display_Acord_Value( 0x8004,Para_Setting_TemWater,1);
	   Display_Led_OilPre_NoPiont(0x8004,Para_Setting_TemWater);
	  break;
	case 6:
	 // Display_Acord_Value( 0x8004,Para_Setting_TemOil,1);
	   Display_Led_OilPre_NoPiont(0x8004,Para_Setting_TemOil);
	  break;
	case 7:
	 // Display_Acord_Value( 0x8004,Para_Setting_PreOil,1);
	   Display_Led_OilPre_NoPiont(0x8004,Para_Setting_PreOil);
	  break;
	case 8:
	 // Display_Acord_Value( 0x8004,Para_Setting_Speed,1);
	   Display_Led_OilPre_NoPiont(0x8004,Para_Setting_Speed);
	  break;
	case 9:
	// Display_Acord_Value( 0x8004,Para_Setting_ReferenceSpeed_StopStart,1);
	  Display_Led_OilPre_NoPiont(0x8004,Para_Setting_ReferenceSpeed_StopStart);
	  break;
	case 10:
	// Display_Acord_Value( 0x8004,Para_Setting_Stop_SureTime,1);
	  Display_Led_OilPre_NoPiont(0x8004,Para_Setting_Stop_SureTime);
	  break;
	  	case 11:
	// Display_Acord_Value( 0x8004,Para_Setting_Stop_SureTime,1);
	  Display_Led_OilPre_NoPiont(0x8004,Para_Setting_WaterTem_K);
	  break;
	  	case 12:
	// Display_Acord_Value( 0x8004,Para_Setting_Stop_SureTime,1);
	  Display_Led_OilPre_NoPiont(0x8004,Para_Setting_WaterTem_b);
	  break;
	  	case 13:
	// Display_Acord_Value( 0x8004,Para_Setting_Stop_SureTime,1);
	  Display_Led_OilPre_NoPiont(0x8004,Para_Setting_OilTem_K);
	  break;
	  	case 14:
	// Display_Acord_Value( 0x8004,Para_Setting_Stop_SureTime,1);
	  Display_Led_OilPre_NoPiont(0x8004,Para_Setting_OilTem_b);
	  break;


	default:
	  Display_Led_OilPre_NoPiont(0x8004,00);
	break;
  }

 }


//////////////////////实现具体参数的设定

 void  Para_Setting_Detail(unsigned char Mode_Code_SettingPara)
{
  
   switch(Mode_Code_SettingPara)
  {
    case 0:
	  Temp_Adjust=Para_Setting_Gear;
	  break;
	case 1:
	  Temp_Adjust=Para_Setting_StartTime;
	 
	  break;
	case 2:
	  Temp_Adjust=Para_Setting_StopTime;

	  break;
	case 3:
      Temp_Adjust=Para_Setting_KeepTime;
	
	  break;
	case 4:
	  Temp_Adjust=Para_Setting_AddTimeZero;

	  break;
	case 5:
	  Temp_Adjust=Para_Setting_TemWater;

	  break;
	case 6:
      Temp_Adjust=Para_Setting_TemOil;

	  break;
	case 7:
	  Temp_Adjust=Para_Setting_PreOil;

	  break;
	case 8:
	  Temp_Adjust=Para_Setting_Speed;

	  break;
	case 9:
	  Temp_Adjust=Para_Setting_ReferenceSpeed_StopStart;//;
	case 10:
	  Temp_Adjust=Para_Setting_Stop_SureTime;//;//;

	  break;
	  	case 11:
	  Temp_Adjust=Para_Setting_WaterTem_K;//;//;

	  break;
	  	case 12:
	  Temp_Adjust=Para_Setting_WaterTem_b;//;//;

	  break;
	  	case 13:
	  Temp_Adjust=Para_Setting_OilTem_K;//;//;

	  break;
	  	case 14:
	  Temp_Adjust=Para_Setting_OilTem_b;//;//;

	  break;

	default:
	 Temp_Adjust=0;

	 break;
  }

}


void Judge_Para_Scope( unsigned char  Mode_Code_SettingPara)
{
      switch(Mode_Code_SettingPara)
	  {
	    case 0:
		  if(Temp_Adjust<1)
		     Temp_Adjust=1;
		  if(Temp_Adjust>255)
		     Temp_Adjust=255;
		 // Display_Acord_Value( 0x8004,Para_Setting_Gear,1);
		  break;
		case 1:
		  if(Temp_Adjust<1)
		     Temp_Adjust=0;
		  if(Temp_Adjust>255)
		     Temp_Adjust=255;
		  break;
		case 2:
		  if(Temp_Adjust<1)
		     Temp_Adjust=1;
		  if(Temp_Adjust>255)
		     Temp_Adjust=255;
		  break;
		case 3:
		  if(Temp_Adjust<1)
		     Temp_Adjust=1;
		  if(Temp_Adjust>255)
		     Temp_Adjust=255;
		  break;
		case 4:
		  if(Temp_Adjust<5000)
		     Temp_Adjust=5000;
		  if(Temp_Adjust>9999)
		     Temp_Adjust=9999;
		  break;
		case 5:
		   if(Temp_Adjust<0)
		     Temp_Adjust=0;
		  if(Temp_Adjust>120)
		     Temp_Adjust=120;
		  break;
		case 6:
		   if(Temp_Adjust<0)
		     Temp_Adjust=0;
		  if(Temp_Adjust>120)
		     Temp_Adjust=120;
		  break;
		case 7:
		  if(Temp_Adjust<0)
		     Temp_Adjust=0;
		  if(Temp_Adjust>600)
		     Temp_Adjust=600;
		  break;
		case 8:
		   if(Temp_Adjust<300)
		     Temp_Adjust=300;
		  if(Temp_Adjust>6000)
		     Temp_Adjust=6000;
		  break;

		case 9:
		  if(Temp_Adjust<1)
		     Temp_Adjust=1;
		  if(Temp_Adjust>1000)
		     Temp_Adjust=1000;
        break;
		case 10:
		  if(Temp_Adjust<1)
		     Temp_Adjust=1;
		  if(Temp_Adjust>255)
		     Temp_Adjust=255;
		  break;

		  //////////////
	    case 11:
		  if(Temp_Adjust<50)
		     Temp_Adjust=50;
		  if(Temp_Adjust>150)
		     Temp_Adjust=150;
		  break;
		  	case 12:
		  if(Temp_Adjust<0)
		     Temp_Adjust=0;
		  if(Temp_Adjust>255)
		     Temp_Adjust=255;
		  break;
		  	case 13:
		  if(Temp_Adjust<50)
		     Temp_Adjust=50;
		  if(Temp_Adjust>150)
		     Temp_Adjust=150;
		  break;
		  	case 14:
		  if(Temp_Adjust<0)
		     Temp_Adjust=0;
		  if(Temp_Adjust>255)
		     Temp_Adjust=255;
		  break;
		default:
		 //Display_Acord_Value( 0x8004,00,1);
		  break;
	   }
}


Para_Setting_Detail_WriteBack(Mode_Code_SettingPara)
{
  switch(Mode_Code_SettingPara)
	  {
	    case 0:
		  Para_Setting_Gear=Temp_Adjust;
		 // Display_Acord_Value( 0x8004,Para_Setting_Gear,1);
		  break;
		case 1:
		   Para_Setting_StartTime=Temp_Adjust;
		  break;
		case 2:
		   Para_Setting_StopTime=Temp_Adjust;
		  break;
		case 3:
		   Para_Setting_KeepTime=Temp_Adjust;
		  break;
		case 4:
		   Para_Setting_AddTimeZero=Temp_Adjust;
		  break;
		case 5:
		   Para_Setting_TemWater=Temp_Adjust;
		  break;
		case 6:
		   Para_Setting_TemOil=Temp_Adjust;
		  break;
		case 7:
		  Para_Setting_PreOil=Temp_Adjust;
		  break;
		case 8:
		   Para_Setting_Speed=Temp_Adjust;
		  break;
		case 9:
		  Para_Setting_ReferenceSpeed_StopStart=Temp_Adjust;
		case 10:
		  Para_Setting_Stop_SureTime=Temp_Adjust;
		  break;
		  /////////////////////////////////
		  case 11:
		  Para_Setting_WaterTem_K=Temp_Adjust;
		  break;
		  case 12:
		  Para_Setting_WaterTem_b=Temp_Adjust;
		  break;
		  case 13:
		  Para_Setting_OilTem_K=Temp_Adjust;
		  break;
		  case 14:
		  Para_Setting_OilTem_b=Temp_Adjust;
		  break;
	
		default:
		 //Display_Acord_Value( 0x8004,00,1);
		  break;
	   }




}

////////////////***************






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;
	  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_Pre(unsigned int input)
{
 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;  
}




void initial_timer0_1(void )         //定时器0的初始化,作为定时器,定时器1作为波特率发生器
 {
    TR0=0;
	TR1  = 0;	
    TMOD=0x51;/////////////
    IE=0x92;
    TH0=0xfc;
    TL0=0x17;
   // TCON =TCON | 0x50;// start timer 1 and timer 0

	TR0 = 1;		//First before start the Timer we should shut it down. (TCON)
//	TCON = 0X40;      //open Timer1
    
    TH1=0x00;
    TL1=0x00;
	TR1  = 1;		//Start the Timer 1

 }
/*
void UART_Start()//serious  interrupt  initial
{  
    
  	TR1 = 0;		//First before start the Timer we should shut it down. (TCON)
   //	TCON = 0X40;      //open Timer1
	//TMOD =TMOD | 0x20;	//Mode 2: 8-bit auto-reload Timer.(TImer  1)
    IP = 0x30;//let serious interrupt high priority
   //  IP =IP 0x20;
//	TMOD = 0x25;
	TH1  = 0xf3;	//Equals to 169D
	TL1  = 0xf3;   //baru  rate 2400
	SCON = 0x50;	//[Serial Control Register], Mode 1, 8-bit UART, Variable, Receiver enabled.
	PCON =  0x80;	//[Power Configuration Register], select double baud rate in mode 2
	
	TR1  = 1;		//Start the Timer 1

    RI=0;//Must be cleared by software.
    TI=0;
	EA = 1;//enable all interrupts
	ES = 1;//1=Enable Serial port interrupt
}
	*/


 /*void initial_timer2(void )   //initial the timer2 interrupt
                              //定时器2的初始化  作为定时器
 {
    TR2=0;
    IE = 0xBA;//enable all interrupt , and enable timer2
  //  IP = 0x20; //let timer 2 high priority
	T2MOD =0x00;
	T2CON =0x00;/////////////


  //  TH2=0xEC;
  //  TL2=0x78; //initial  value
//	RCAP2H=0xEC;
//	RCAP2L=0x78;
    TH2=0xF6;
    TL2=0x3C; //initial  value
	RCAP2H=0xFE;
	RCAP2L=0x3C;

	
   // T2CON =T2CON |0x04;// timer 2  as  timer
    
    TR2=1;       //开启定时器
 }//*/

 unsigned char Number_Display=0;

 void INT_TIMER0_overflow() interrupt 1///////////1ms
                                //定时器0的溢出中断处理函数,作为时间计时用  1ms
 {
  
  Speed_Count++;//for test speed
  Capture_Count++;
  Display_Count++;
  Alarm_Count++;

  Count_DisplayTime_5s++;
  if(Bit_Sign_Running)
     Count_RunningTime++;
  Count__Stop_Sure++;
  Count_SettingPara++;
  Count_NoKey++;


  
 // if(Bit_Sign_Alarm_Stop)
  {Count_Alarm_Stop_Send++;}



 // if(Get_Key_bit)
 {
    GetKey_Count++;
    GetKey_Count_ForUse++;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -