📄 main.c~
字号:
GetKey_Count_ForUse_Stop++;
}
if(Signed_Test)
Test_Count++;
if(Bit_Start_Stop)
Count_Start_Stop++;
E2prom++;
Count_Start_Machine_15s++;
//*/
//TH2=0xF0;
//TL2=0x0C;
//RCAP2H=0xF0;
//RCAP2L=0x0C;
// CEX1=!CEX1;
Number_Display++;
//for(Number_Display=1;Number_Display<15;Number_Display++)
{
Set_Display(Number_Display,Value_For_Display[Number_Display]);
//Set_Display(Number_Display,Display_Lookup_Table(9));
}
if(Number_Display>13)
{
Number_Display=0;
}
/////////////anytime output zhishi
// Output_Zhishi(Temp_Output);
//Get_KeyBoard();//read keyboard
// key_out=Key;
TH0=0xfc;
TL0=0x17;
TF0=0; //must be cleared by soft
if(Speed_Count>1000)//for speed test
{
// Speed=(TH0*256+TL0)*Speed_Count/(1000*M);
Speed=TH1;
// Speed= (unsigned int)( ( ((float)(Speed*256+TL0)) /(Speed_Count*5*Para_Speed_Divide) ) *1000*60 );//5 is 5ms timeUp;60 is 1 minute
//1000 is 1000ms
Speed= (unsigned int)( ( ((float)(Speed*256+TL1)) /(Para_Setting_Gear) )*60 );
Speed=Speed-Speed/400*10;//xiuzheng
// Speed=Speed*256+TL0;
TH1=0x00;
TL1=0x00;
Speed_Count=0;
}//*/
}
void DeLay_ms(unsigned int t) //延时约 t ms
{
unsigned int i=0;
while(t--)
{
for(i = 0; i < 68; i++) //对于6M 延时约1ms
{
}
}
}
//unsigned char volatile xdata * Address;
///Para_Pre_Oil_Zoom_k1
void Write_Para(void)//24 PARAS
{
EEPROM_ERASE(0x3000);
EEPROM_write(0x3000,CPU_NO);
EEPROM_write(0x3001,Para_Setting_Gear);
EEPROM_write(0x3002,Para_Setting_StartTime);
EEPROM_write(0x3003,Para_Setting_StopTime);
EEPROM_write(0x3004,Para_Setting_KeepTime);
EEPROM_write(0x3005,Para_Setting_TemWater);
EEPROM_write(0x3006,Para_Setting_TemOil);
EEPROM_write(0x3007,Para_Setting_PreOil/256);
EEPROM_write(0x3008,Para_Setting_PreOil%256);
EEPROM_write(0x3009,Para_Setting_Speed/256);
EEPROM_write(0x300A,Para_Setting_Speed%256);
EEPROM_write(0x300B,Time_Minutes_Add/256);///////
EEPROM_write(0x300C,Time_Minutes_Add%256);
EEPROM_write(0x300D,Time_Hours_Add/256);
EEPROM_write(0x300E,Time_Hours_Add%256);
EEPROM_write(0x300F,Para_Setting_ReferenceSpeed_StopStart/256);
EEPROM_write(0x3010,Para_Setting_ReferenceSpeed_StopStart%256);
EEPROM_write(0x3011,Para_Setting_Stop_SureTime);
EEPROM_write(0x3012,Para_Setting_AddTimeZero/256);
EEPROM_write(0x3013,Para_Setting_AddTimeZero%256);
EEPROM_write(0x3014,Para_Setting_WaterTem_K);
EEPROM_write(0x3015,Para_Setting_WaterTem_b);
EEPROM_write(0x3016,Para_Setting_OilTem_K);
EEPROM_write(0x3017,Para_Setting_OilTem_b);
EEPROM_write(0x3018,0);
// EEPROM_write(0x300D,CPU_NO);
/* write(0x0011, Para_Setting_Gear);
write(0x0012, Para_Setting_StartTime);
write(0x0013, Para_Setting_StopTime);
write(0x0014, Para_Setting_KeepTime);
//write(0x0015, Para_Setting_AddTimeZero);
write(0x0016, Para_Setting_TemWater);
write(0x0017, Para_Setting_TemOil);
write(0x0018, Para_Setting_PreOil/256);
write(0x0019, Para_Setting_PreOil%256);
write(0x001a, Para_Setting_Speed/256);
write(0x001b, Para_Setting_Speed%256);
////
// write(0x001c, Para_Setting_Frequency);
write(0x001d, Time_Minutes_Add/256);
write(0x001e, Time_Minutes_Add%256);
write(0x001f, Time_Hours_Add/256);
write(0x0020, Time_Hours_Add%256);
write(0x0023, Para_Setting_ReferenceSpeed_StopStart/256);
write(0x0024, Para_Setting_ReferenceSpeed_StopStart%256);
write(0x0025, Para_Setting_Stop_SureTime);
write(0x0026, Para_Setting_AddTimeZero/256);
write(0x0027, Para_Setting_AddTimeZero%256);
///////////////////////////////
write(0x0028, Para_Setting_WaterTem_K);
write(0x0029, Para_Setting_WaterTem_b);
write(0x002a, Para_Setting_OilTem_K);
write(0x002b, Para_Setting_OilTem_b);//*/
}
void Read_Para(void)
{
// read(0x0000);//read E2prom
CPU_NO=EEPROM_read(0x3000);
Para_Setting_Gear=EEPROM_read(0x3001);
Para_Setting_StartTime=EEPROM_read(0x3002);
Para_Setting_StopTime=EEPROM_read(0x3003);
Para_Setting_KeepTime=EEPROM_read(0x3004);
//Para_Setting_AddTimeZero=read(0x0015);
Para_Setting_TemWater=EEPROM_read(0x3005);
Para_Setting_TemOil=EEPROM_read(0x3006);
Para_Setting_PreOil=EEPROM_read(0x3007)*256+EEPROM_read(0x3008);
Para_Setting_Speed=EEPROM_read(0x3009)*256+EEPROM_read(0x300A);
/////
// Para_Setting_Frequency=read(0x001c);
Time_Minutes_Add=EEPROM_read(0x300B)*256+EEPROM_read(0x300C);
Time_Hours_Add=EEPROM_read(0x300D)*256+EEPROM_read(0x300E);
Para_Setting_ReferenceSpeed_StopStart=EEPROM_read(0x300F)*256+EEPROM_read(0x3010);
Para_Setting_Stop_SureTime=EEPROM_read(0x3011);//
Para_Setting_AddTimeZero=EEPROM_read(0x3012)*256+EEPROM_read(0x3013);
Para_Setting_WaterTem_K=EEPROM_read(0x3014);//水温k
Para_Setting_WaterTem_b=EEPROM_read(0x3015);//水温b
//unsigned char idata Para_Setting_WaterTem_b;//水温b
Para_Setting_OilTem_K=EEPROM_read(0x3016);//水温k
Para_Setting_OilTem_b=EEPROM_read(0x3017);//水温b
}
Get_KeyBoard()
{
unsigned char Temp_P2;
Temp_P2=P2;
//////////////////////
// T0=0;
P2=0xff;////read key process
P1_7=0;
Key=P2;
P1_7=1;
// T0=1;
if( (!(Key&0x01)) || (!(Key&0x02)) || (!(Key&0x04))|| ( !(Key&0x08)) || ( !(Key&0x10)) )
{
GetKey_Count=0;//for time
Get_Key_bit=1;//has key
// P2=0xff;////read key process
//P1_7=0;
// Key=P2;
// P1_7=1;
}
else
{
Get_Key_bit=0;
}
/////////////////////
P2= Temp_P2;
}
////////////////////////初始化各项参数
Init_Para_Setting()
{
CPU_NO=1;
Para_Setting_Gear=135;
Para_Setting_StartTime=2;
Para_Setting_StopTime=1;
Para_Setting_KeepTime=5;
Para_Setting_AddTimeZero=9999;
Para_Setting_TemWater=100;
Para_Setting_TemOil=105;
Para_Setting_PreOil=80;
Para_Setting_Speed=1950;
Para_Setting_ReferenceSpeed_StopStart=500;//
Para_Setting_Stop_SureTime=5;//
Para_Setting_WaterTem_K=100;//水温k
Para_Setting_WaterTem_b=50;//水温b
//unsigned char idata Para_Setting_WaterTem_b;//水温b
Para_Setting_OilTem_K=100;//水温k
Para_Setting_OilTem_b=50;//水温b
Time_Minutes_Running=0;//now running time--minutes当前油机的运行分钟数
Time_Hours_Running=0; //now running time--hours 当前油机的运行小时数
Time_Minutes_Add=0; /////add time minute油机运行累计分钟数
Time_Hours_Add=0;
}
bit Bit_OilValve_Start=0;//燃油阀输出位
bit Bit_Stop=0;//停车输出位
bit Bit_Sign_Charging=0;//充电标志
main()
{
unsigned char temp;
int i;
// unsigned char Display_Type=0;
unsigned char Byte_Try;
// int value;
int Alarm_Tem_Oil;
int Alarm_Tem_Water;
int Alarm_Pre_Oil;
int Alarm_Speed;
// unsigned int Tem_Oil_Ave;
//unsigned int Tem_Water_Ave;
//unsigned int Pre_Oil_Ave;
bit Bit_NO_Start_15s_Setting=0;//设定和启动15s区别标志
bit Bit_Protection_Start=1;//处于启动保护阶段
///////////
bit Sign_OK_Stop=1;
bit Bit_OK_Stop_1Time=1;
unsigned int Temp_Time_Display;//显示时间的临时量
//unsigned char Key_Sure;
bit Bit_Sign_Key_Get=0;//是否真正获得键值
bit Bit_Sign_Display_Setting=0;/////*********是显现检测值还是显示设置值
bit Bit_Sign_Display_Time=0;///***********时间按钮按下显示时间标志
bit Bit_Sign_Exit_5555=1;////*************初始进入设定参数,5555不到5S离开标志
// P2=0;
// initial_timer2() ;
T0=0;
//CLK_DIV=0x03;//1/8 clock
initial_timer0_1();
T0=1;
//////////////stc5412
// WDTRST=0x1E;//喂看门狗第一步
// WDTRST=0xE1;//喂看门狗第二步
//Init_Para_Setting();
// Output_Zhishi(0x07);
Code_Input=5555;
//Init_Para_Setting();//初始化各个参数
//Write_Para();//写入
Read_Para();//读出
Byte_Sign_First_Alarm_StartStop=0;
Count_Start_Machine_15s=0;
Get_Key_bit=0;
// Bit_Sign_Running=1;
for( i=0;i<4;i++)
{
AD_init(0);
Tem_Oil[i]=Calculate_Tem ( GET_AD_Result() ,1);
AD_init(1);
Pre_Oil[i]=Calculate_Pre (GET_AD_Result() );
AD_init(2);
Tem_Water[i]=Calculate_Tem ( GET_AD_Result(),0);
}
Tem_Water[4]= ( (int)((float)(Tem_Water[0]+Tem_Water[1]+Tem_Water[2]+Tem_Water[3])/4)) ;//;//;
Pre_Oil[4]=(int)((float)(Pre_Oil[0]+Pre_Oil[1]+Pre_Oil[2]+Pre_Oil[3])/4);
Tem_Oil[4]= ( (int)((float)(Tem_Oil[0]+Tem_Oil[1]+Tem_Oil[2]+Tem_Oil[3])/4) ) ;//;//;
Display_Acord_Value(1,Speed,0);
Display_Acord_Value(2, Pre_Oil[4],0);
Display_Acord_Value(3,Tem_Water[4],0);
Display_Acord_Value(4,Tem_Oil[4],0);
// Bit_Sign_SettingPara_Normal=1;////////******
//////////////////////////////////main while
while(1)
{
if((GetKey_Count>100))//for get key operation .......200ms
{
Get_KeyBoard();//read keyboard
if( (Get_Key_bit) )
{
Count_NoKey=0;//has keyboard operation
if(Bit_Sign_Key_Get)
{
key_out=Key;
if(Key==XIAOYIN)//for sound
{
Signed_Sound_Off=1;
///////////////////////
// Bit_Sign_SettingPara=1;
}
else
{
// Bit_Sign_SettingPara=0;
}
if(Key==SHEZHI)//for sound
{
// Signed_Sound_Off=1;
///////////////////////
Bit_Sign_SettingPara=1;
}
else
{
Bit_Sign_SettingPara=0;
}
if(Key==SHIJIAN)//for time display
{
Bit_Sign_DisplayTime=1;
}
else
{
Bit_Sign_DisplayTime=0;
}
if(Key==ZIJIAN)//for test system
{
Signed_Test=1;
Test_Count=0;
AD_init(3);
Value_Test_24v=GET_AD_Result()* Calculate_Line_k( 0,0,0X3ff,5)/0.14163 +1;
}
else
{
Signed_Test=0;
}
}
else
{
key_out=0xff;
Bit_Sign_SettingPara=0;////对于设定参数而言
}
if(!Bit_Sign_Key_Get)
{
Bit_Sign_Key_Get=1;
}
}// if( (Get_Key_bit) )
else
{
Bit_Sign_Key_Get=0;
key_out=0xff;
Bit_Sign_SettingPara=0;
}
// Bit_Sign_Key_Get=1;
GetKey_Count=0;//for time
/////////////anytime output zhishi
Output_Zhishi(Temp_Output);
}///if((GetKey_Count>150))
if(Capture_Count>1000)//capture one time
{
for( i=0;i<4;i++)
{
AD_init(0);
Tem_Oil[i]=Calculate_Tem ( GET_AD_Result() ,1);
AD_init(1);
Pre_Oil[i]=Calculate_Pre (GET_AD_Result() );
AD_init(2);
Tem_Water[i]=Calculate_Tem ( GET_AD_Result(),0);
}
Tem_Water[4]= ( (int)((float)(Tem_Water[0]+Tem_Water[1]+Tem_Water[2]+Tem_Water[3])/4)) ;//;//;
Pre_Oil[4]=(int)((float)(Pre_Oil[0]+Pre_Oil[1]+Pre_Oil[2]+Pre_Oil[3])/4);
Tem_Oil[4]= ( (int)((float)(Tem_Oil[0]+Tem_Oil[1]+Tem_Oil[2]+Tem_Oil[3])/4) ) ;//;//;
//T0=0;
if(!Signed_Test)
{
if( (!Bit_Sign_Display_Setting) && (!Bit_Sign_Display_Time) )
{
Display_Acord_Value(1,Speed,0);
Display_Acord_Value(2, Pre_Oil[4],0);
}
Display_Acord_Value(3,Tem_Water[4],0);
Display_Acord_Value(4,Tem_Oil[4],0);
}//T0=1;
Capture_Count=0;
}
/////////////////////////任何 时候都能停机
// if( GetKey_Count_ForUse_Stop>200)
{
// if( (Key==TINGJI)&&(Key==XBYTE[0x8009])&&(Bit_NO_Start_15s_Setting==0))//for stop
/// if( (Key==TINGJI)&&(Bit_NO_Start_15s_Setting==0))//for stop
if( (key_out==TINGJI)&&(Bit_Sign_Running) )//for stop
{
Bit_OilValve_Start=0;//启动机组
Bit_Stop=1;//停机
Bit_Stop_Sure=1;
Count__Stop_Sure=0;
Temp_Output=Temp_Output|0x10;//jidianqi
// Display_Acord_Value( 0x8000,456,0 );
// Output_Sign();
}
else
{
Bit_OilValve_Start=0;//启动机组
Bit_Stop=0;//停机
// Temp_Output=Temp_Output&0xef;
GetKey_Count_ForUse_Stop=0;
// Get_Key_bit=0;
// Output_Sign();
}
// XBYTE[0x8008]=Temp_Output;
}
if( (Bit_Stop_Sure)&&(Count__Stop_Sure> (Para_Setting_Stop_SureTime*1000) ) )
{
Temp_Output=Temp_Output&0xef;
// XBYTE[0x8008]=Temp_Output;
Bit_Stop_Sure=0;
}
////////////////////////*******
// }
// {
//////////////**************
////////////////启动 过程 中
if( (Bit_Protection_Start==1)&&(Bit_Sign_SettingPara==0)&&(Bit_NO_Start_15s_Setting==0) )
{
///////////////**************
Temp_Output=Temp_Output|0x01;//lamp运行灯///////////////**************
Temp_Output=Temp_Output&0xf7;//jidianqi
Temp_Output=Temp_Output|0x02;//lamp
///////////////**************
////////////////////////////////
if( (Speed>300) )
{
Signed_Sound_Off=0;
Count_Start_Machine_15s=0;
Get_Key_bit=0;
Bit_Sign_Running=1;
while(Count_Start_Machine_15s<15000)//15s start ,no protection
{
if(Speed<301)
{
Bit_Protection_Start=1;
Bit_Sign_Running=0;
break;//在此过程中必须一直保持大于300,才处于启动过程
}
//if(!Get_Key_bit)
// Get_KeyBoard();//read keyboard
if((GetKey_Count>100))//for get key operation .......200ms
{
Get_KeyBoard();//read keyboard
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -