📄 lcd_display.c
字号:
/***********************************************************************/
/* */
/* FILE :lcd_display.c */
/* DATE :Sun, May 06, 2007 */
/* DESCRIPTION :main program file. */
/* CPU GROUP :2B */
/* */
/* This file is generated by Renesas Project Generator (Ver.4.8). */
/* */
/***********************************************************************/
//#pragma SECTION program pro_2
/*****************************************************************************/
#include "sfr_r82b.h"
#include "s6b0108.h"
#include "disp_definel.h"
#include "main_define.h"
//#include "ramdefine.h"
/***************************************************************************************************************
按键扫描处理程序:
void key_scan()
扫描:scan_buff 初始值为 0x10, 扫描过程为,当scan_buff每右移一位,键值暂存变量 key_buff_0 右移两位用以保存扫描
得到的键值,去抖时间通过增减扫描判断的次数决定
***************************************************************************************************************/
void key_scan(void)
{
unsigned char i;
unsigned char j;
unsigned char k;
if (key_4ms_buff == 0) /* 每 4ms 进行一次键扫描 */
{
key_4ms_buff = 1;
i = scan_buff;
scan_buff = scan_buff >> 1;
if (scan_buff == 0 )
{
scan_buff = 0x10;
scan_count ++;
}
p2 &= 0xe0;
asm("nop");
p2 |= i; /* 键扫描列输出 */
asm("nop");
j = p2; /* 键扫描行读入 */
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; /* 保存前4位键值 */
}
else if (i == 0x01)
{
if (j != 0)
key_buff_1 = Key_9;
else
key_buff_1 = 0;
key_buff_0 = 0x00; /* 保存第5位键值 */
}
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) /* 去抖动处理,延长去抖时间,只需增加scan_count的值 */
{
key_buff_2 = key_buff_4;
key_buff_3 = key_buff_1;
scan_count = 0;
}
}
return;
}
/***************************************************************************************************************
按键逻辑处理程序:
void key_judge(void)
有按键按下时,进入相应的功能处理程序
***************************************************************************************************************/
void key_judge(void)
{
unsigned char k;
// key_buff_2 = btkeyFlag;
//if (status_buff == INITIAL)
// {
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)
{
// key_press_flag = 1;
// key_buzz_flag = 1;
// buzz_24ms_buff = 6;
// key_release = 0;
}
if (key_buff_2 == 0) /* 程序运行过程中水位键补水处理,水位键松开,补水停止 */
{
// key_release = 1;
if (status_buff == RUN) // this should be changed to current process buff
{
k = output_buff;
if ((k & INLET)&&(run_water_key_flag == 1))
{
run_water_key_flag = 0;
output_buff &= (~INLET); /* 补水停止 */
}
}
}
Tflash = 0; /* 有新键按下时闪烁计时变量重置 */
flash_switch_flag = 0;
Pflash = 0;
Pflash_switch_flag = 0x00;
if (key_buff_2 == Key_Power) /* 任何状态下电源键按下进入电源键处理程序 */
{
key_power();
return;
}
else if (key_buff_2 == Key_Water)
{
if (status_buff == RUN) /* 程序运行中按水位键补水 */
{
// if (water_full_flag != 1)
// {
output_buff |= INLET; /* 补水运行 */
run_water_key_flag = 1;
// }
}
}
else if (key_buff_2 == Key_SetUp)
{
check_2s_buff = 1; /* 程序运行中程序设定浏览按键处理 */
if ((status_buff == RUN)||(status_buff == PRESET))
confirm_num ++;
if (confirm_num == 6) /* 可以浏览 6 种参数设定 */
confirm_num = 0;
}
if ((status_buff == INITIAL)||(status_buff == STOP))
{
status_5m_buff = 5; /* 状态判定计时变量重置 */
switch (key_buff_2) /* 在初始状态或停止状态下,有按键按下则进入相应按键处理 */
{
case Key_Cancel:
disp_key_confirm(); /* 确定键处理程序 */
break;
case Key_Water:
disp_key_water(); /* 水位键处理程序 */
break;
// case Key_Start:
// disp_key_start();
// break;
case Key_Program:
disp_key_program(); /* 程序键处理程序 */
break;
case Key_Function:
disp_key_function(); /* 功能键处理程序 */
break;
case Key_SetUp:
disp_key_setup(); /* “+ ”、“ - ”键处理程序 */
break;
case Key_SetDown:
disp_key_setup(); /* “+ ”、“ - ”键处理程序 */
break;
case Key_Power:
// key_press_flag = 0;
key_power(); /* 电源键处理程序 */
break;
case Key_OK:
disp_key_confirm(); /* 确定键处理程序 */
break;
};
}
}
// }
if (save_key_2 != key_buff_3)
{
save_key_2 = key_buff_3;
if (key_buff_3)
{
key_start(); /* 开始键处理程序 */
}
}
return; // if same key, return;
}
/***************************************************************************************************************
电源键处理程序:
***************************************************************************************************************/
void key_power(void)
{
key_buzz_flag = 1;
buzz_24ms_buff = 6;
if (status_buff == STAND_BY)
{
BlackLight = 0; /* 开背光 */
//buzz_power();
status_buff = INITIAL; /* 从待机状态切换到初始状态 */
status_5m_buff = 5; /* 状态判定机时变量重置 */
default_flag = 1; /* 默认程序运行标志置位 */
power_key_flag = 1; /* 电源按键标志置位 */
kaiji_3s_buff = 3; /* 开机画面 3s 计时变量计时 */
first_init_flag = 1; /* 系统上电初始状态下程序设置标志置1 */
run_1s_buff = 0; /* 系统运行时钟基准 1s 变量清零 */
Set_Screen(CS1, nBitmapDot0_KaiJi_1); /* 显示开机画面 */
Set_Screen(CS2, nBitmapDot0_KaiJi_2);
Set_Screen(CS3, nBitmapDot0_KaiJi_3);
return;
}
else if (status_buff != STAND_BY)
{
BlackLight = 1; /* 关背光 */
status_buff = STAND_BY; /* 从初始状态切换到待机状态 */
run_1s_buff = 0; /* 系统运行时钟基准 1s 变量清零 */
power_key_flag = 0; /* 电源按键标志清零 */
first_init_flag = 0; /* 系统上电初始状态下程序设置标志置0 */
Clr_Screen_0(); /* 清屏程序 */
Clr_Screen_1();
Clr_Screen_2();
flash_switch_flag =0x00;
//----------------------------------------------------------------
process_buff = Inlet; /* 此为调试显示程序是使用 */
left_time_buff = 45; /* 此为调试显示程序是使用 */
program_buff_0 = 0;
water_level_buff_0 = 6;
//----------------------------------------------------------------
wash_init(); /* 初始化全局变量 */
}
return;
}
/***************************************************************************************************************
开始键处理程序:
***************************************************************************************************************/
void key_start(void)
{
key_buzz_flag = 1;
if ((status_buff == INITIAL)||(status_buff == STOP))
{
// if (preset_set_flag == 0)
// {
program_start_flag = 1;
program_pause_flag = 0;
if (status_buff == INITIAL)
program_set_change_flag = 0;
if ((status_buff == STOP)&&(program_set_change_flag == 0))
output_buff = save_output_buff;
else if ((status_buff == STOP)&&(program_set_change_flag == 1))
program_set_change_flag = 0;
run_1s_buff = 0;
if (preset_set_flag == 1)
status_buff = PRESET;
else
status_buff = RUN; /* 从初始状态或停止状态切换到运行状态 */
if (run_save_water_flag == 1) /* 留水运行时,开始按键释放留水状态 */
{
run_save_water_flag = 0;
release_save_water_flag = 0;
start_save_water_flag = 0;
save_water_number --;
buzz_15m_buff = 0;
buzz_flag = 0;
}
// process_key_falg = 1;
set_num = 0;
check_2s_buff = 0;
confirm_num = 0;
menu_level_buff = Menu_Level_4;
function_set_flag = 0;
program_set_flag = 0;
water_set_flag = 0;
// water_level_buff = water_level_buff_0;
// program_buff = program_buff_0;
Pflash = 0;
Tflash = 0;
Pflash_switch_flag = 0x00;
run_page3_flag = 0;
switch (program_buff) /* 当程序选定时,用户按下开始键程序先计算程序运行需要时间 */
{
case Memo_PGM:
if (program_auto_flag == 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 (program_auto_flag != 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 Strong_PGM:
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 Soft_PGM:
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 Quick_PGM:
main_wash_time = Speedy_Wash_Time;
program_left_time = program_time(Speedy_Time_Table, Left_time_Colum_Table[program_buff]);
break;
case Standard_PGM:
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 Child_PGM:
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 Wool_PGM:
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 Silk_PGM:
main_wash_time = Silk_Wash_Time;
program_left_time = program_time(Silk_Time_Table, Left_time_Colum_Table[program_buff]);
break;
case Wash_PGM:
program_left_time = program_time(Single_Wash_Time_Table, Left_time_Colum_Table[program_buff]);
break;
case Rinse_PGM:
program_left_time = program_time(Rinse_Time_Table, Left_time_Colum_Table[program_buff]);
break;
case Spin_PGM:
program_left_time = program_time(Single_Spin_Time_Table, Left_time_Colum_Table[program_buff]);
break;
case Special_PGM:
program_left_time = program_time(TubeDry_Time_Table, Left_time_Colum_Table[program_buff]);
break;
};
if (key_preset_flag == 1)
{
key_preset_flag = 0;
preset_time_buff += program_left_time / 60;
if (program_left_time % 60 >= 30)
preset_time_buff +=1;
}
return;
// }
/* else if (preset_set_flag == 1)
{
status_buff = PRESET;
program_start_flag = 1;
program_pause_flag = 0;
run_1s_buff = 0;
Pflash = 0;
Tflash = 0;
Pflash_switch_flag = 0x00;
run_page3_flag = 0;
return;
}*/
}
else if ((status_buff == RUN)||(status_buff == TEST)||(status_buff == PRESET))
{
/* 当洗衣机处于运行,测试,预约运行状态时,按开始键切换位停止状态 */
program_start_flag = 0;
program_pause_flag = 1;
save_output_buff = output_buff;
status_buff = STOP;
run_1s_buff = 0;
check_2s_buff = 0;
confirm_num = 0;
menu_level_buff = Menu_Level_4;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -