📄 lcd_display.i
字号:
extern const unsigned char Speedy_Wash_Time;
extern const unsigned char seg_led_table[];
extern const unsigned char OPT_Table[];
extern const unsigned char Left_time_Colum_Table[];
#line 20 "D:/Projects/Haier/General Washer/workspace/General_Washer/General_Washer/src/lcd_display.c"
void key_scan(void)
{
unsigned char i;
unsigned char j;
unsigned char k;
if (key_4ms_buff == 0)
{
key_4ms_buff = 1;
i = scan_buff;
scan_buff = scan_buff >> 1;
if (scan_buff == 0 )
{
scan_buff = 0x10;
scan_count ++;
}
p2_addr.byte &= 0xe0;
asm("nop");
p2_addr.byte |= i;
asm("nop");
j = p2_addr.byte ;
asm("nop");
j &= 0x60;
j = j << 1;
if (i > 0x02)
{
key_buff_0 += j;
key_buff_0 = key_buff_0 >> 2;
}
else if (i == 0x02)
{
key_buff_0 += j;
key_buff_4 = key_buff_0;
}
else if (i == 0x01)
{
if (j != 0)
key_buff_1 = 0xc0 ;
else
key_buff_1 = 0;
key_buff_0 = 0x00;
}
if ((key_debunce_0 != key_buff_4)||(key_debunce_1 != key_buff_1))
{
key_debunce_0 = key_buff_4;
key_debunce_1 = key_buff_1;
scan_count = 0;
}
else if (scan_count == 2)
{
key_buff_2 = key_buff_4;
key_buff_3 = key_buff_1;
scan_count = 0;
}
}
return;
}
void key_judge(void)
{
unsigned char k;
if (save_key_1 == key_buff_2)
{
;
}
else if (save_key_1 != key_buff_2)
{
save_key_1 = key_buff_2;
if (key_buff_2 != 0)
{
}
if (key_buff_2 == 0)
{
if (status_buff == 0x02 )
{
k = output_buff;
if ((k & 0x04 )&&(operation_flag_2.f_bit.fb2 == 1))
{
operation_flag_2.f_bit.fb2 = 0;
output_buff &= (~0x04 );
}
}
}
Tflash = 0;
flash_switch_flag = 0;
Pflash = 0;
Pflash_switch_flag = 0x00;
if (key_buff_2 == 0x01 )
{
key_power();
return;
}
else if (key_buff_2 == 0x40 )
{
if (status_buff == 0x02 )
{
output_buff |= 0x04 ;
operation_flag_2.f_bit.fb2 = 1;
}
}
else if (key_buff_2 == 0x02 )
{
check_2s_buff = 1;
if ((status_buff == 0x02 )||(status_buff == 0x05 ))
confirm_num ++;
if (confirm_num == 6)
confirm_num = 0;
}
if ((status_buff == 0x01 )||(status_buff == 0x03 ))
{
status_5m_buff = 5;
switch (key_buff_2)
{
case 0x20 :
disp_key_confirm();
break;
case 0x40 :
disp_key_water();
break;
case 0x04 :
disp_key_program();
break;
case 0x10 :
disp_key_function();
break;
case 0x02 :
disp_key_setup();
break;
case 0x08 :
disp_key_setup();
break;
case 0x01 :
key_power();
break;
case 0x80 :
disp_key_confirm();
break;
};
}
}
if (save_key_2 != key_buff_3)
{
save_key_2 = key_buff_3;
if (key_buff_3)
{
key_start();
}
}
return;
}
void key_power(void)
{
buzz_flag_1.f_bit.fb0 = 1;
buzz_24ms_buff = 6;
if (status_buff == 0x00 )
{
p3_addr.bit.b7 = 0;
status_buff = 0x01 ;
status_5m_buff = 5;
operation_flag_1.f_bit.fb0 = 1;
operation_flag_2.f_bit.fb1 = 1;
kaiji_3s_buff = 3;
operation_flag_3.f_bit.fb5 = 1;
run_1s_buff = 0;
Set_Screen(0x00 , nBitmapDot0_KaiJi_1);
Set_Screen(0x01 , nBitmapDot0_KaiJi_2);
Set_Screen(0x02 , nBitmapDot0_KaiJi_3);
return;
}
else if (status_buff != 0x00 )
{
p3_addr.bit.b7 = 1;
status_buff = 0x00 ;
run_1s_buff = 0;
operation_flag_2.f_bit.fb1 = 0;
operation_flag_3.f_bit.fb5 = 0;
Clr_Screen_0();
Clr_Screen_1();
Clr_Screen_2();
flash_switch_flag =0x00;
process_buff = 0x00 ;
left_time_buff = 45;
program_buff_0 = 0;
water_level_buff_0 = 6;
wash_init();
}
return;
}
void key_start(void)
{
buzz_flag_1.f_bit.fb0 = 1;
if ((status_buff == 0x01 )||(status_buff == 0x03 ))
{
display_flag_1.f_bit.fb6 = 1;
display_flag_1.f_bit.fb7 = 0;
if (status_buff == 0x01 )
operation_flag_3.f_bit.fb1 = 0;
if ((status_buff == 0x03 )&&(operation_flag_3.f_bit.fb1 == 0))
output_buff = save_output_buff;
else if ((status_buff == 0x03 )&&(operation_flag_3.f_bit.fb1 == 1))
operation_flag_3.f_bit.fb1 = 0;
run_1s_buff = 0;
if (display_flag_1.f_bit.fb8 == 1)
status_buff = 0x05 ;
else
status_buff = 0x02 ;
if (save_water_flag_1.f_bit.fb1 == 1)
{
save_water_flag_1.f_bit.fb1 = 0;
save_water_flag_1.f_bit.fb3 = 0;
save_water_flag_1.f_bit.fb0 = 0;
save_water_number --;
buzz_15m_buff = 0;
buzz_flag_1.f_bit.fb1 = 0;
}
set_num = 0;
check_2s_buff = 0;
confirm_num = 0;
menu_level_buff = 0x04 ;
key_flag_1.f_bit.fb0 = 0;
key_flag_1.f_bit.fb1 = 0;
key_flag_1.f_bit.fb2 = 0;
Pflash = 0;
Tflash = 0;
Pflash_switch_flag = 0x00;
display_flag_1.f_bit.fb0 = 0;
switch (program_buff)
{
case 0x00 :
if (operation_flag_4.f_bit.fb1 == 1)
{
main_soak_time = Memo_Soak_Time_Table[water_level][texture_buff];
main_wash_time = Memo_Wash_Time_Table[water_level][texture_buff];
}
else if (operation_flag_4.f_bit.fb1 != 1)
{
main_soak_time = Memo_Soak_Time_Table[1][1];
main_wash_time = Memo_Wash_Time_Table[1][1];
}
program_left_time = program_time(Memo_Time_Table, Left_time_Colum_Table[program_buff]);
break;
case 0x01 :
main_soak_time = Strong_Soak_Time_Table[water_level];
main_wash_time = Strong_Wash_Time_Table[water_level];
program_left_time = program_time(Strong_Time_Table, Left_time_Colum_Table[program_buff]);
break;
case 0x02 :
main_soak_time = Soft_Soak_Time;
main_wash_time = Soft_Wash_Time;
program_left_time = program_time(Soft_Time_Table, Left_time_Colum_Table[program_buff]);
break;
case 0x03 :
main_wash_time = Speedy_Wash_Time;
program_left_time = program_time(Speedy_Time_Table, Left_time_Colum_Table[program_buff]);
break;
case 0x04 :
main_soak_time = Standard_Soak_Time_Table[water_level][texture_buff];
main_wash_time = Standard_Wash_Time_Table[water_level][texture_buff];
program_left_time = program_time(Standard_Time_Table, Left_time_Colum_Table[program_buff]);
break;
case 0x05 :
main_soak_time = Child_Soak_Time;
main_wash_time = Child_Wash_Time;
program_left_time = program_time(Child_Time_Table, Left_time_Colum_Table[program_buff]);
break;
case 0x06 :
main_soak_time = Wool_Soak_Time;
main_wash_time = Wool_Wash_Time;
program_left_time = program_time(Wool_Time_Table, Left_time_Colum_Table[program_buff]);
break;
case 0x07 :
main_wash_time = Silk_Wash_Time;
program_left_time = program_time(Silk_Time_Table, Left_time_Colum_Table[program_buff]);
break;
case 0x8 :
program_left_time = program_time(Single_Wash_Time_Table, Left_time_Colum_Table[program_buff]);
break;
case 0x9 :
program_left_time = program_time(Rinse_Time_Table, Left_time_Colum_Table[program_buff]);
break;
case 0xa :
program_left_time = program_time(Single_Spin_Time_Table, Left_time_Colum_Table[program_buff]);
break;
case 0xb :
program_left_time = program_time(TubeDry_Time_Table, Left_time_Colum_Table[program_buff]);
break;
};
if (operation_flag_2.f_bit.fb3 == 1)
{
operation_flag_2.f_bit.fb3 = 0;
preset_time_buff += program_left_time / 60;
if (program_left_time % 60 >= 30)
preset_time_buff +=1;
}
return;
}
else if ((status_buff == 0x02 )||(status_buff == 0x04 )||(status_buff == 0x05 ))
{
display_flag_1.f_bit.fb6 = 0;
display_flag_1.f_bit.fb7 = 1;
save_output_buff = output_buff;
status_buff = 0x03 ;
run_1s_buff = 0;
check_2s_buff = 0;
confirm_num = 0;
menu_level_buff = 0x04 ;
Pflash = 0;
Tflash = 0;
Pflash_switch_flag = 0x00;
display_flag_1.f_bit.fb0 = 0;
}
else
return;
}
void disp_key_function(void)
{
key_flag_1.f_bit.fb0 = 1;
key_flag_1.f_bit.fb1 = 0;
key_flag_1.f_bit.fb2 = 0;
menu_level_buff = 0x02 ;
menu_buff_2 = 0x28 ;
set_num = function_set_buff;
return;
}
void disp_key_program(void)
{
key_flag_1.f_bit.fb1 = 1;
key_flag_1.f_bit.fb0 = 0;
key_flag_1.f_bit.fb2 = 0;
display_flag_1.f_bit.fb1 = 0;
menu_level_buff = 0x00 ;
menu_buff_0 = 0x00;
set_num = program_buff;
return;
}
void disp_key_water(void)
{
key_flag_1.f_bit.fb2 = 1;
key_flag_1.f_bit.fb0 = 0;
key_flag_1.f_bit.fb1 = 0;
display_flag_1.f_bit.fb1 = 0;
menu_level_buff = 0x02 ;
menu_buff_2 = 0x20 ;
if (once_set_key_press.f_bit.fb0 == 1)
set_num = 0;
return;
}
void disp_key_setup(void)
{
if (key_buff_2 == 0x02 )
set_num ++;
else if (key_buff_2 == 0x08 )
set_num --;
if (menu_level_buff == 0x00 )
{
if (set_num == 12)
set_num = 0;
else if(set_num == -1)
set_num = 11;
program_buff_0 = set_num;
}
if (menu_level_buff == 0x01 )
{
if (menu_buff_1 == 0x18 )
{
if (set_num == 2)
set_num = 0;
else if(set_num == -1)
set_num = 1;
}
else if (menu_buff_1 == 0x19 )
{
if (set_num == 3)
set_num = 0;
else if(set_num == -1)
set_num = 2;
}
else if ((menu_buff_1 == 0x1a )||(menu_buff_1 == 0x1b ))
{
if (set_num == 1)
set_num = 0;
else if(set_num == -1)
set_num = 0;
}
else
{
if (set_num == 7)
set_num = 0;
else if(set_num == -1)
set_num = 6;
}
}
if (menu_level_buff == 0x02 )
{
switch(menu_buff_2)
{
case 0x20 :
if (once_set_key_press.f_bit.fb0 == 1)
{
once_set_key_press.f_bit.fb0 = 0;
set_num += water_level_buff;
if (set_num >= 11)
{
set_num -= 10;
}
}
if (set_num == 11)
{
display_flag_1.f_bit.fb3 = 1;
set_num = 1;
}
else if(set_num == 0)
set_num = 10;
water_level_buff_0 = set_num;
break;
case 0x21 :
if (once_set_key_press.f_bit.fb1 == 1)
{
once_set_key_press.f_bit.fb1 = 0;
set_num += soak_time_buff;
if (set_num *10 >= 50)
{
set_num -= 5;
}
}
if (set_num *10 == 50)
{
display_flag_1.f_bit.fb3 = 1;
set_num = 0;
}
else if(set_num == -1)
set_num = 4;
soak_time_buff_0 = set_num;
break;
case 0x22 :
if (once_set_key_press.f_bit.fb2 == 1)
{
once_set_key_press.f_bit.fb2 = 0;
set_num += wash_time_buff;
if (set_num >= 26)
{
set_num -= 26;
}
}
if (set_num == 26)
{
display_flag_1.f_bit.fb3 = 1;
set_num = 0;
}
else if(set_num == -1)
set_num = 25;
wash_time_buff_0 = set_num;
break;
case 0x23 :
if (once_set_key_press.f_bit.fb3 == 1)
{
once_set_key_press.f_bit.fb3 = 0;
set_num += rinse_time_buff;
if (set_num >= 5)
{
set_num -= 5;
}
}
if (set_num == 5)
{
display_flag_1.f_bit.fb3 = 1;
set_num = 0;
}
else if(set_num == -1)
set_num = 4;
rinse_time_buff_0 = set_num;
break;
case 0x24 :
if (once_set_key_press.f_bit.fb4 == 1)
{
once_set_key_press.f_bit.fb4 = 0;
set_num += spin_time_buff;
if (set_num >= 10)
{
set_num -= 10;
}
}
if (set_num == 10)
{
display_flag_1.f_bit.fb3 = 1;
set_num = 0;
}
else if(set_num == -1)
set_num = 9;
spin_time_buff_0 = set_num;
break;
case 0x25 :
if (once_set_key_press.f_bit.fb5 == 1)
{
once_set_key_press.f_bit.fb5 = 0;
set_num += save_water_num_buff;
if (display_flag_1.f_bit.fb4 == 1)
{
if (set_num >= 6)
{
set_num -= 6;
}
}
else if (display_flag_1.f_bit.fb5 == 1)
{
if (set_num >= 1)
{
set_num -= 1;
}
}
else if ((display_flag_1.f_bit.fb4 != 1)&&(display_flag_1.f_bit.fb5 != 1))
{
if (set_num >= 3)
{
set_num -= 3;
}
}
}
if (display_flag_1.f_bit.fb4 == 1)
{
if (set_num == 6)
{
display_flag_1.f_bit.fb3 = 1;
set_num = 0;
}
else if(set_num == -1)
set_num = 5;
}
if (display_flag_1.f_bit.fb5 == 1)
{
if (set_num == 1)
{
display_flag_1.f_bit.fb3 = 1;
set_num = 0;
}
else if(set_num == -1)
set_num = 0;
}
else if ((display_flag_1.f_bit.fb4 != 1)&&(display_flag_1.f_bit.fb5 != 1))
{
if (set_num == 3)
{
display_flag_1.f_bit.fb3 = 1;
set_num = 0;
}
else if(set_num == -1)
set_num = 0;
}
save_water_num_buff_0 = set_num;
break;
case 0x26 :
if (once_set_key_press.f_bit.fb7 == 1)
{
once_set_key_press.f_bit.fb7 = 0;
set_num += preset_time_buff;
if (set_num >= 26)
{
set_num -= 26;
}
}
if (set_num == 26)
{
display_flag_1.f_bit.fb3 = 1;
set_num = 0;
set_num += 2;
}
else if(set_num == 1)
set_num = 25;
preset_time_buff_0 = set_num;
break;
};
if (key_flag_1.f_bit.fb0 == 1)
{
if (set_num == 4)
set_num = 0;
else if(set_num == -1)
set_num = 3;
function_set_buff_0 = set_num;
}
}
if (menu_level_buff == 0x03 )
{
if (set_num == 2)
set_num = 0;
else if(set_num == -1)
set_num = 1;
}
return;
}
void disp_key_confirm(void)
{
if (key_buff_2 == 0x80 )
{
switch (menu_level_buff)
{
case 0x00 :
if (program_buff_0 != save_program_buff)
{
program_buff = program_buff_0;
save_program_buff = program_buff;
if ((program_buff == 0x05 )||(program_buff == 0x02 ))
display_flag_1.f_bit.fb4 = 1;
else
display_flag_1.f_bit.fb4 = 0;
if ((program_buff == 0x04 )||(program_buff == 0x03 ))
display_flag_1.f_bit.fb5 = 1;
else
display_flag_1.f_bit.fb5 = 0;
operation_flag_3.f_bit.fb1 = 1;
display_flag_1.f_bit.fb8 = 0;
operation_counter = 0;
operation_flag_3.f_bit.fb4 = 1;
program_left_time = 0;
confirm_key_press.f_bit.fb5 = 0;
once_set_key_press.f_bit.fb0 = 1;
once_set_key_press.f_bit.fb1 = 1;
once_set_key
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -