⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_display.c

📁 电表解决方案概要power_meter_r8c2g_source_code
💻 C
📖 第 1 页 / 共 4 页
字号:
			 
		 }
		if (save_water_enable_flag == 0)
		 {
			 if (set_num == 5)
			  {
				  return;				  
			  }
			  
		 }		 
		 
		if (menu_buff_1 == Menu_Special)
		 {
			 if (tube_dry_enable_flag == 1)
			  {				  
				  menu_level_buff = Menu_Level_0;
				  set_num = set_num_lev_0;							/* 恢复前一级菜单 set_num 值 */	
				
				  menu_buff_0 &= 0x00;
//				  menu_buff_0 += set_num;
		
				  Tflash = 0;		

				  water_level_buff = water_level_buff_0 = 0;		/* 水位存储变量 0 */
				  wash_time_buff = wash_time_buff_0 = 0;
				  rinse_time_buff = rinse_time_buff_0 = 0;
				  spin_time_buff = spin_time_buff_0 = 0;
				  preset_time_buff = preset_time_buff_0 = 0;				  		  
				  
				  return;
			  }
			 if (tube_dry_enable_flag == 0)
			  {				  			  				  
				  return;
			  }			  			  
		 }		 
				
		menu_level_buff = Menu_Level_2;
		menu_buff_2 &= 0x20;
		
		if (menu_buff_1 == Menu_Wash_Set)
		 {
			if (set_num == 0)					/* 当选择单洗,单漂,特殊等程序时,要加上适当偏移值已确定下一级菜单 */
			menu_buff_2 += 0;
			if (set_num == 1)
			menu_buff_2 += 2;
		 }
		else if (menu_buff_1 == Menu_Rinse_Set)
		 {
			if (set_num == 0)
			menu_buff_2 += 0;
			if (set_num == 1)
			menu_buff_2 += 3;
			if (set_num == 2)
			menu_buff_2 += 4;
		 }
		else if (menu_buff_1 == Menu_Spin_Set)
		 {
			menu_buff_2 += 4;
		 }
		 		
		else 
		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;		

		break;
		
		
		case Menu_Level_2:					/* 菜单 2 级时,确定键用于确定所选参数的设定 */
		
		if ((function_set_flag == 1)||(water_set_flag == 1))		/* 由功能或水位键进入 2 级菜单时,按确认直接返回 0 级菜单 */
		 {
			menu_level_buff = Menu_Level_0;
			set_num = program_buff;
				
			menu_buff_0 &= 0x00;
			menu_buff_0 += set_num;	
			
			if (function_set_flag == 1)								/* 功能键标志为 “1”时,确定所选功能 */
			 {
				 function_set_flag = 0;
				 function_set_buff = function_set_buff_0;
				 
				 if ((function_set_buff == 1)||(function_set_buff == 3))
				 save_water_enable_flag = 1;
				 if ((function_set_buff == 2)||(function_set_buff == 3))
				 tube_dry_enable_flag = 1;				 
				 
			 	 confirm_function_flag = 1;
				 once_set_function_flag = 1;				 			 
			 }
			if (water_set_flag == 1)								/* 水位键标志为 “1”时,确定所选水位 */
			 {
				 water_set_flag = 0;				 
				 water_level_buff = water_level_buff_0;
				 
			 	 confirm_water_flag = 1;
				 once_set_water_flag = 1;
				 
				 first_water_flag = 0;
			 }	
			
			Tflash = 0;
			
			return;
			 
		 }
		else if (menu_buff_2 == Menu_Preset)					/* 菜单为预约时间设定时,确定预约运行时间 */
		 {
			 first_preset_flag = 0;			 
			 preset_set_flag = 1;	
			 key_preset_flag = 1;
			 
			 menu_level_buff = Menu_Level_1;					/* 由程序键进入 2 级菜单时,按确认返回 1 级菜单 */
			 set_num = set_num_lev_1;
			 
			 menu_buff_1 &= 0x10;
			 menu_buff_1 += set_num_lev_0;
			 Tflash = 0;
			 
			 num_overflow_flag = 0;
			 
			 once_set_preset_flag = 1;		 
			 preset_time_buff = preset_time_buff_0;	
			  		 
			 return;
			 
		 }		 
		else
		 {
			 menu_level_buff = Menu_Level_1;					/* 由程序键进入 2 级菜单时,按确认返回 1 级菜单 */
			 set_num = set_num_lev_1;
			 
			 menu_buff_1 &= 0x10;
			 menu_buff_1 += set_num_lev_0;
			 Tflash = 0;
			 			 
			 if (menu_buff_2 == Menu_Water_P)					/* 确定所选水位 */
			  {
				num_overflow_flag = 0;
				
				once_set_water_flag = 1;
			 	water_level_buff = water_level_buff_0;			/* 水位存储变量 0 */
			  }

			 else if (menu_buff_2 == Menu_Soak_Time)			/* 确定浸泡时间 */
			  {			 
				num_overflow_flag = 0;
				once_set_soak_flag = 1;
			 	soak_time_buff = soak_time_buff_0;
			  }
			 else if (menu_buff_2 == Menu_Wash_Time)			/* 确定洗涤时间 */
			  {			 
				num_overflow_flag = 0;
				once_set_wash_flag = 1;
			 	wash_time_buff = wash_time_buff_0;
			  }
			 else if (menu_buff_2 == Menu_Rinse_Num)			/* 确定漂洗次数 */
			  {			 
				num_overflow_flag = 0;
				once_set_rinse_flag = 1;
			 	rinse_time_buff = rinse_time_buff_0;
			  }
			 else if (menu_buff_2 == Menu_Spin_Time)			/* 确定脱水时间 */
			  {			 
				num_overflow_flag = 0;
				once_set_spin_flag = 1;
			 	spin_time_buff = spin_time_buff_0;
			  }
			 else if (menu_buff_2 == Menu_Save_Water)			/* 确定留水次数 */
			  {		
				num_overflow_flag = 0;
				confirm_save_water_flag = 1;
				once_set_save_water_flag = 1;
			 	save_water_num_buff = save_water_num_buff_0;
				
				if (rinse_three_time_flag == 1)					/* 当程序有3次蓄水漂洗时,确定总的留水次数 */
				 {
					 if (save_water_num_buff <= 2)
					 save_water_number = 1;
					 else if ((save_water_num_buff == 3)||(save_water_num_buff == 4))
					 save_water_number = 2;
					 else if (save_water_num_buff == 5)
					 save_water_number = 3;					 					 					 
				 }
				else if (rinse_one_time_flag == 1)				/* 当程序只有1次蓄水漂洗时,确定留水次数 */
				 {
					 save_water_number = 1;				 
				 }						 
				else if ((rinse_three_time_flag != 1)&&(rinse_one_time_flag != 1)) 				/* 当程序有2次蓄水漂洗时,确定留水次数 */
				 {
					 if (save_water_num_buff <= 1)
					 save_water_number = 1;
					 else if (save_water_num_buff == 2)
					 save_water_number = 3;						 
				 }							
			  }
/*			 else if (menu_buff_2 == Menu_Wind_Dry)
			  {		
				num_overflow_flag = 0;
				once_set_wind_dry_flag = 1;
			 	winddry_time_buff = winddry_time_buff_0;
			  }			
*/			  	 
			 return;
			 
		 }	
		 
		break;		
	
	
/* 以下注释内容在需要使用第3级菜单时可用 */		
		
/***************************************************************************************

		case Menu_Level_2:
		
		menu_level_buff = Menu_Level_3;
		
		menu_level_3_back_flag == 0;
		
		set_num_lev_2 = set_num;
				
		menu_buff_3 &= 0x30;
//		menu_buff_3 += set_num;	
		
//		program_set_flag = 0;
//		function_set_flag = 0;
//		water_set_flag = 0;		
		
		Tflash = 0;
		
		break;
		
		
		case Menu_Level_3:
		
		if(set_num == 0)
		 {
			 menu_level_buff = Menu_Level_4;
			 water_level_buff = water_level_buff_0;
			 program_buff = program_buff_0;
			 
			 program_start_flag = 1;			 
			 
			 Tflash = 0;
		 }
				
		if(set_num == 1)
		 {
			 menu_level_buff = Menu_Level_2;
			 set_num = set_num_lev_2;
			 
			 menu_level_3_back_flag = 1;
			 
			 menu_buff_2 &= 0x20;
			 
			if (menu_buff_1 == Menu_Wash_Set)
		 	 {
				if (set_num_lev_1 == 0)
				menu_buff_2 += 0;
				if (set_num_lev_1 == 1)
				menu_buff_2 += 2;
		 	 }
			else if (menu_buff_1 == Menu_Rinse_Set)
		 	 {
				if (set_num_lev_1 == 0)
				menu_buff_2 += 0;
				if (set_num_lev_1 == 1)
				menu_buff_2 += 3;
				if (set_num_lev_1 == 2)
				menu_buff_2 += 4;
		 	 }
			else if (menu_buff_1 == Menu_Spin_Set)
		 	 {
				menu_buff_2 += 4;
		 	 }
			 
			else 
			menu_buff_2 += set_num_lev_1;
			 				 
//			program_set_flag = 0;
//			function_set_flag = 0;
//			water_set_flag = 0;								 
			 	
			Tflash = 0;
			
			return;
			
		 }
			
		break;
		
***************************************************************************************/		
		
	 };
	 
	 set_num = 0;							/* set_num 清零供下级菜单使用 */	
	 
 }
else if (key_buff_2 == Key_Cancel)			/* 返回键处理 */
 {
	switch (menu_level_buff)
	 {
		case Menu_Level_0:					/* 0 级菜单时,返回键无效 */	
		program_set_flag = 0;	
		break;
		
		case Menu_Level_1:
				
		menu_level_buff = Menu_Level_0;
		set_num = set_num_lev_0;			/* 恢复前一级菜单 set_num 值 */	
				
		menu_buff_0 &= 0x00;
//		menu_buff_0 += set_num;
		
		Tflash = 0;
		
		break;
		
		 
		case Menu_Level_2:					/* 菜单2级时,返回1级菜单,如果正处理水位键或功能键,则返回0及菜单 */
		
		if ((function_set_flag == 1)||(water_set_flag == 1))
		 {
			menu_level_buff = Menu_Level_0;
//			set_num = 0;
			set_num = program_buff;
				
			menu_buff_0 &= 0x00;
			menu_buff_0 += set_num;	
			
			function_set_flag = 0;
			water_set_flag = 0;
			
			water_level_buff_0 = water_level_buff;			
			function_set_buff_0 = function_set_buff;				
			
			Tflash = 0;
		 }
		else 
		 {
			 num_overflow_flag = 0;
			 menu_level_buff = Menu_Level_1;
			 set_num = set_num_lev_1;					/* 恢复前一级菜单 set_num 值 */	
			 
			 menu_buff_1 &= 0x10;
			 
			 menu_buff_1 += set_num_lev_0;				/* 恢复前一级菜单内容 */				 

			 water_level_buff_0 = water_level_buff;
			 soak_time_buff_0 = soak_time_buff;
			 wash_time_buff_0 = wash_time_buff;
			 rinse_time_buff_0 = rinse_time_buff;
			 spin_time_buff_0 = spin_time_buff;
			 save_water_num_buff_0 = save_water_num_buff;
			 winddry_time_buff_0 = winddry_time_buff;	
			 preset_time_buff_0 = preset_time_buff;	
			 function_set_buff_0 = function_set_buff;			 
	 
			 Tflash = 0;
		 }	
		break;
		
		
/* 以下注释内容在需要使用第3级菜单时可用 */				
		
/***************************************************************************************		
		case Menu_Level_3:
		
		if ((function_set_flag == 1)||(water_set_flag == 1))
		 {
			menu_level_buff = Menu_Level_2;
			set_num = set_num_lev_2;
			
			if (function_set_flag == 1)
			menu_buff_2 = Menu_Function;
			
			if (water_set_flag == 1)
			menu_buff_2 = Menu_Water_P;
			
			menu_level_3_back_flag = 0;
				
			Tflash = 0;
		 }
		else 
		{	 		
		menu_level_buff = Menu_Level_2;
		set_num = set_num_lev_2;
		
		menu_level_3_back_flag = 1;
			 
		menu_buff_2 &= 0x20;
		
		if (menu_buff_1 == Menu_Wash_Set)
		 {
			if (set_num_lev_1 == 0)
			menu_buff_2 += 0;
			if (set_num_lev_1 == 1)
			menu_buff_2 += 2;
		 }
		else if (menu_buff_1 == Menu_Rinse_Set)
		 {
			if (set_num_lev_1 == 0)
			menu_buff_2 += 0;
			if (set_num_lev_1 == 1)
			menu_buff_2 += 3;
			if (set_num_lev_1 == 2)
			menu_buff_2 += 4;
		 }
		else if (menu_buff_1 == Menu_Spin_Set)
		 {
			menu_buff_2 += 4;
		 }
		 
		else 
		menu_buff_2 += set_num_lev_1;
					 
		program_set_flag = 0;
		function_set_flag = 0;
		water_set_flag = 0;				
			 
		Tflash = 0;
		
		}
				
		break;		
***************************************************************************************/
		
	 };
	 
//	 set_num = 0;
	 
 } 
  else 
  return;
}

/*******************************************************************************************************

菜单显示处理程序:

void menu_display(void)

显示:先进行菜单切换,如果有闪烁处理,则再调用对应闪烁程序,在调用闪烁处理程序之前,

      先进行数据表地址切换及确认,以及闪烁区域的确认

********************************************************************************************************/

void menu_display(void)
{
	unsigned char x;					/* 闪烁起始页 */	
	unsigned char y;					/* 闪烁结束页 */
	unsigned char z;					/* 需要进行闪烁处理的屏,同CS1,CS2, CS3 */
	unsigned const char * m;
	unsigned const char * n;
	unsigned i;
	unsigned j;
	
//  display_status_judge ();

	if (status_buff == STAND_BY)
	 {
	  	Clr_Screen_0();					/* 清屏程序 */
	  	Clr_Screen_1();
	  	Clr_Screen_2();		
		
		BlackLight = 1;
	
		return;
	 }
	 
	else 
	BlackLight = 0;						/* 非待机状态下,背光常开 */
	
	if (status_buff == INITIAL)
	 {
		 
		 if ((kaiji_3s_buff != 0)&&(power_key_flag == 1))
		 return;						/* 开机画面3s显示时间未到返回 */
		 		 
		 else if ((kaiji_3s_buff == 0)&&(power_key_flag == 1))
		  {
//			  power_key_flag = 0;	

			  if (run_demo_flag == 1)
			  start_demo_flag = 1;	 									/* 如果选择demo运行时,程序开始自动运行 */

			  if ((run_demo_flag != 1)&&(first_init_flag == 1))			/* 如果未选择demo运行时,程序显示0级菜单 */
			   {
				    first_init_flag = 0;
			  		menu_level_buff = Menu_Level_0;
			  		set_num = 0;
			  		menu_buff_0 += set_num;
			   }
			   
		  }
		  
	 }	
	if (status_buff == RUN)					/* 运行状态时,显示第4级菜单 */
	 {
		 menu_level_buff = Menu_Level_4;
	 }	
	if (status_buff == STOP)				/* 停止状态时,显示第4级,0级或2级菜单 */
	 {
		 if (function_set_flag == 1)
		  {
			  menu_level_buff = Menu_Level_2;
		  }
		 if (program_set_flag == 1)
		  {
			  menu_level_buff = Menu_Level_0;
		  }
		 if (water_set_flag == 1)
		  {
			  menu_level_buff = Menu_Level_2;
		  }
		 if (run_save_water_flag == 1)
		  {
			  menu_level_buff = Menu_Level_4;
		  }		  
		 
	 }	
	if (status_buff == TEST)
	 {
		 ;
	 }	
	if (status_buff == PRESET)
	 {
		 menu_level_buff = Menu_Level_4;		/* 预约运行时,显示第4级菜单 */
	 }	
	 
//--------------------------------------------------------------------------

   j = set_num;								// this is important

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -