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

📄 lcd_display.i

📁 电表解决方案概要power_meter_r8c2g_source_code
💻 I
📖 第 1 页 / 共 5 页
字号:
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 + -