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 + -
显示快捷键?