lcd_display.c
来自「电表解决方案概要power_meter_r8c2g_source_code」· C语言 代码 · 共 2,185 行 · 第 1/4 页
C
2,185 行
Pflash = 0;
Tflash = 0;
Pflash_switch_flag = 0x00;
run_page3_flag = 0;
// stream_buff = STREAM_STOP;
// mot_cycle_buff &= MOT_STOP;
// output_buff &= (~CW);
// output_buff &= (~CCW);
}
else
return;
}
/***************************************************************************************************************
功能键处理程序:
***************************************************************************************************************/
void disp_key_function(void)
{
function_set_flag = 1; /* 功能键按下时,置功能键标志,菜单等级设为2级 */
program_set_flag = 0;
water_set_flag = 0;
menu_level_buff = Menu_Level_2;
menu_buff_2 = Menu_Function;
set_num = function_set_buff;
return;
}
/***************************************************************************************************************
程序键处理程序:
***************************************************************************************************************/
void disp_key_program(void)
{
program_set_flag = 1;
function_set_flag = 0;
water_set_flag = 0;
menu_level_3_back_flag = 0; /* 方便水位等初始值不为零的显示处理 */
menu_level_buff = Menu_Level_0;
menu_buff_0 = 0x00;
set_num = program_buff;
return;
}
/***************************************************************************************************************
水位键处理程序:
***************************************************************************************************************/
void disp_key_water(void)
{
water_set_flag = 1; /* 水位键按下时,置水位键标志,菜单等级设为2级 */
function_set_flag = 0;
program_set_flag = 0;
menu_level_3_back_flag = 0;
menu_level_buff = Menu_Level_2;
menu_buff_2 = Menu_Water_P;
if (once_set_water_flag == 1)
set_num = 0;
// else
// set_num = water_level_buff;
return;
}
/***************************************************************************************************************
设置(+, -)键逻辑处理程序:
set_num:设置按键增减次数的变量, 当菜单处于不同级别时,代表的意义不同
***************************************************************************************************************/
void disp_key_setup(void)
{
if (key_buff_2 == Key_SetUp)
set_num ++;
else if (key_buff_2 == Key_SetDown)
set_num --;
if (menu_level_buff == Menu_Level_0)
{
if (set_num == 12)
set_num = 0;
else if(set_num == -1)
set_num = 11;
program_buff_0 = set_num; /* 0 级菜单时,set_num 代表所要选择的程序,作预存处理 */
}
if (menu_level_buff == Menu_Level_1)
{
if (menu_buff_1 == Menu_Wash_Set)
{
if (set_num == 2) /* 当选择单洗程序时,只有2项2级菜单可选 */
set_num = 0;
else if(set_num == -1)
set_num = 1;
}
else if (menu_buff_1 == Menu_Rinse_Set)
{
if (set_num == 3) /* 当选择单漂或特殊程序时,只有3项2级菜单可选 */
set_num = 0;
else if(set_num == -1)
set_num = 2;
}
else if ((menu_buff_1 == Menu_Spin_Set)||(menu_buff_1 == Menu_Special))
{
if (set_num == 1) /* 当选择单脱程序时,只有1项2级菜单可选 */
set_num = 0;
else if(set_num == -1)
set_num = 0;
}
else /* 1 级菜单时,set_num 代表需要设定的参数种类,如选择洗涤时间还是漂洗次数等 */
{
if (set_num == 7)
set_num = 0;
else if(set_num == -1)
set_num = 6;
}
}
if (menu_level_buff == Menu_Level_2) /* 2 级菜单时,set_num 代表需要设定的具体参数值,如洗涤时间,漂洗次数等 */
{
switch(menu_buff_2)
{
case Menu_Water_P:
if (once_set_water_flag == 1)
{
once_set_water_flag = 0;
set_num += water_level_buff; /* 当 2 级菜单为水位选择时,水位初始值为6 */
if (set_num >= 11)
{
set_num -= 10;
}
}
if (set_num == 11)
{
num_overflow_flag = 1;
set_num = 1;
}
else if(set_num == 0)
set_num = 10;
water_level_buff_0 = set_num; /* 水位值预存 */
break;
case Menu_Soak_Time:
if (once_set_soak_flag == 1)
{
once_set_soak_flag = 0;
set_num += soak_time_buff; /* 当 2 级菜单为水位选择时,水位初始值为6 */
if (set_num *10 >= 50)
{
set_num -= 5;
}
}
if (set_num *10 == 50)
{
num_overflow_flag = 1;
set_num = 0;
}
else if(set_num == -1)
set_num = 4;
soak_time_buff_0 = set_num; /* 浸泡时间预存 */
break;
case Menu_Wash_Time:
if (once_set_wash_flag == 1)
{
once_set_wash_flag = 0;
set_num += wash_time_buff; /* 当 2 级菜单为水位选择时,水位初始值为6 */
if (set_num >= 26)
{
set_num -= 26;
}
}
if (set_num == 26)
{
num_overflow_flag = 1;
set_num = 0;
}
else if(set_num == -1)
set_num = 25;
wash_time_buff_0 = set_num; /* 洗涤时间预存 */
break;
case Menu_Rinse_Num:
if (once_set_rinse_flag == 1)
{
once_set_rinse_flag = 0;
set_num += rinse_time_buff; /* 当 2 级菜单为水位选择时,水位初始值为6 */
if (set_num >= 5)
{
set_num -= 5;
}
}
if (set_num == 5)
{
num_overflow_flag = 1;
set_num = 0;
}
else if(set_num == -1)
set_num = 4;
rinse_time_buff_0 = set_num; /* 漂洗时间预存 */
break;
case Menu_Spin_Time:
if (once_set_spin_flag == 1)
{
once_set_spin_flag = 0;
set_num += spin_time_buff; /* 当 2 级菜单为水位选择时,水位初始值为6 */
if (set_num >= 10)
{
set_num -= 10;
}
}
if (set_num == 10)
{
num_overflow_flag = 1;
set_num = 0;
}
else if(set_num == -1)
set_num = 9;
spin_time_buff_0 = set_num; /* 脱水时间预存 */
break;
case Menu_Save_Water:
if (once_set_save_water_flag == 1)
{
once_set_save_water_flag = 0;
set_num += save_water_num_buff; /* 当 2 级菜单为水位选择时,水位初始值为6 */
if (rinse_three_time_flag == 1) /* 判定所选程序是否有3次蓄水漂洗 */
{
if (set_num >= 6)
{
set_num -= 6;
}
}
else if (rinse_one_time_flag == 1) /* 判定所选程序是否只有一次蓄水漂洗 */
{
if (set_num >= 1)
{
set_num -= 1;
}
}
else if ((rinse_three_time_flag != 1)&&(rinse_one_time_flag != 1))
{
if (set_num >= 3)
{
set_num -= 3;
}
}
}
if (rinse_three_time_flag == 1)
{
if (set_num == 6)
{
num_overflow_flag = 1;
set_num = 0;
}
else if(set_num == -1)
set_num = 5;
}
if (rinse_one_time_flag == 1)
{
if (set_num == 1)
{
num_overflow_flag = 1;
set_num = 0;
}
else if(set_num == -1)
set_num = 0;
}
else if ((rinse_three_time_flag != 1)&&(rinse_one_time_flag != 1))
{
if (set_num == 3)
{
num_overflow_flag = 1;
set_num = 0;
}
else if(set_num == -1)
set_num = 0;
}
save_water_num_buff_0 = set_num; /* 留水值预存 */
break;
/* case Menu_Wind_Dry:
if (once_set_wind_dry_flag == 1)
{
once_set_wind_dry_flag = 0;
set_num += winddry_time_buff;
if (set_num >= 6)
{
set_num -= 6;
}
}
if (set_num == 6)
{
num_overflow_flag = 1;
set_num = 0;
}
else if(set_num == -1)
set_num = 5;
winddry_time_buff_0 = set_num;
break;
*/
case Menu_Preset:
// if ((first_preset_flag == 1)&&(menu_level_3_back_flag == 0))
// {
// set_num += 2; /* 当 2 级菜单为预约选择时,愉悦时间初始值为2 */
// first_preset_flag = 0;
// }
if (once_set_preset_flag == 1)
{
once_set_preset_flag = 0;
set_num += preset_time_buff; /* 当 2 级菜单为水位选择时,水位初始值为6 */
if (set_num >= 26)
{
set_num -= 26;
}
}
if (set_num == 26)
{
num_overflow_flag = 1;
set_num = 0;
set_num += 2;
}
else if(set_num == 1)
set_num = 25;
preset_time_buff_0 = set_num; /* 预约时间预存 */
break;
};
if (function_set_flag == 1)
{
if (set_num == 4) /* 当 2 级菜单为功能选择时,有 4 种功能设定可选 */
set_num = 0;
else if(set_num == -1)
set_num = 3;
function_set_buff_0 = set_num; /* 功能设置预存 */
}
}
if (menu_level_buff == Menu_Level_3) /* 3 级菜单时,只有确认或返回可选,暂未用此设定 */
{
if (set_num == 2)
set_num = 0;
else if(set_num == -1)
set_num = 1;
}
return;
}
/***************************************************************************************************************
“确认”,“返回”键处理程序:
void disp_key_confirm(void)
确认键:每按一次,菜单级别加1,同时保存当前菜单必要内容;
返回键:每按一次,菜单级别减1,同时恢复前一级菜单内容;
确认键和返回键在同一个子程序里面处理
***************************************************************************************************************/
void disp_key_confirm(void) // just need to change menu buff
{
if (key_buff_2 == Key_OK)
{
switch (menu_level_buff)
{
case Menu_Level_0:
if (program_buff_0 != save_program_buff) /* 菜单 0 级时,确定键用于确定所选程序 */
{
program_buff = program_buff_0; /* 程序存储变量 0 */
save_program_buff = program_buff;
if ((program_buff == Child_PGM)||(program_buff == Soft_PGM))
rinse_three_time_flag = 1;
else
rinse_three_time_flag = 0;
if ((program_buff == Standard_PGM)||(program_buff == Quick_PGM))
rinse_one_time_flag = 1;
else
rinse_one_time_flag = 0;
program_set_change_flag = 1;
preset_set_flag = 0;
operation_counter = 0;
first_count_flag = 1;
program_left_time = 0;
confirm_save_water_flag = 0;
once_set_water_flag = 1; /* 曾设定标志置位,用于参数设定及显示判断 */
once_set_soak_flag = 1;
once_set_wash_flag = 1;
once_set_rinse_flag = 1;
once_set_spin_flag = 1;
once_set_save_water_flag = 1;
once_set_wind_dry_flag = 1;
once_set_preset_flag = 1;
water_level_buff = water_level_buff_0 = 6; /* 程序选择更改后,初始化洗衣程序运行参数 */
soak_time_buff = soak_time_buff_0 = 0;
wash_time_buff = wash_time_buff_0 = 12;
rinse_time_buff = rinse_time_buff_0 = 1;
spin_time_buff = spin_time_buff_0 = 6;
save_water_num_buff = save_water_num_buff_0 = 0;
winddry_time_buff = winddry_time_buff_0 = 0;
preset_time_buff = preset_time_buff_0 = 2;
// function_set_buff = function_set_buff_0 = 0;
//------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------
}
// function_set_flag = 0;
program_set_flag = 0;
water_set_flag = 0;
menu_level_buff = Menu_Level_1;
menu_buff_1 &= 0x10;
menu_buff_1 += set_num; /* 根据按确认按键之前 set_num 之值确定下一级菜单内容 */
set_num_lev_0 = set_num; /* 保存当前set_num值以备返回之用 */
set_num = 0;
Tflash = 0;
break;
case Menu_Level_1: /* 菜单 1 级时,确定键用于选择需要设定的洗衣参数 */
if (program_buff == Quick_PGM)
{
if (set_num == 6)
{
menu_level_buff = Menu_Level_2;
menu_buff_2 &= 0x20;
menu_buff_2 += set_num;
set_num_lev_1 = set_num;
set_num = 0;
once_set_water_flag = 1; /* 曾设定标志置位,用于参数设定及显示判断 */
once_set_soak_flag = 1;
once_set_wash_flag = 1;
once_set_rinse_flag = 1;
once_set_spin_flag = 1;
once_set_save_water_flag = 1;
once_set_wind_dry_flag = 1;
once_set_preset_flag = 1;
}
return;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?