📄 main.c~
字号:
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 + -