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

📄 button.c

📁 SDU的字库
💻 C
📖 第 1 页 / 共 2 页
字号:



  bit	disappear_sw;
  bit   sheding_sw;
  
  sbit wp24c16 = P2^6;
// *************** my board ****************


  sbit     P34      = P3^4;
  sbit     P35      = P3^5;
  sbit     P36      = P3^6;
  sbit     P37      = P3^7; 
  


  uchar button_code;
  uchar menu_code;
  uchar time_set_flag; 
  uchar tp,top;
  bit vidio_flag,pm_f;
  uchar floor_flag;
  char  ini_t_h[5];				 //梯号
  uchar i;
              	

 void ini_th()
    {
		ini_t_h[0]=0xff;
		ini_t_h[1]=0x25;
		ini_t_h[2]=0x00;
		ini_t_h[3]=0x01;
		ini_t_h[4]=0xff;
	}
 
void Delay15_ms()
{
	uint i,j,k;
	for(k=0; k<10; k++)
      for(i=48; i>0; i--)
        for(j=10; j>0; j--);										 
}
void  xjyy()
{
  ISendByte(0x414,yy);
  Delay_ms(2);
  ISendByte(0x415,xj);
  Delay_ms(2);
}
void  xxcy()
{
  ISendByte(0x412,cy);
  Delay_ms(2);
  ISendByte(0x413,xx);
  Delay_ms(2);
}
void  sjrq()
{
  ISendByte(0x416,dis_calendar_flag);
  Delay_ms(2);
  ISendByte(0x417,dis_clock_flag);
  Delay_ms(2);
}
bit read_button()
{     
   P34 = 1;
   P35 = 1;
   P36 = 1;
   P37 = 1;

   if( P34==0 | P35==0 |P36==0 | P37==0 ) 
   {
	 Delay15_ms();
     if( P34==0 | P35==0 |P36==0 | P37==0 )   
	 {
       if(P37==0){ while(~P37); button_code = 1;}    
       if(P36==0){ while(~P36); button_code = 2;} 
       if(P35==0){ while(~P35); button_code = 3;} 
       if(P34==0){ while(~P34); button_code = 4;}   							
     }
	 else{button_code=0;}
	}
   else{button_code=0;}
   if(button_code == 0) return( 0 );
   else return( 1 );
}

void button_func()
{
//------------------------------------	//显示模式设定
//  uchar i;
  if( menu_code == 0 )
  { 
  
   if( button_code == 1 )
   { 
     button_code = 0;
	 disappear_row23(); 
     menu_code++;if(menu_code>5) menu_code = 0;	
	 disappear_time = 0;
	 disappear_sw = 1;		     // 启动消隐程序(在定时器中)
 	 dis_pv_set();
   }
   if( button_code == 2 )
   {
     button_code = 0;
	 dis_types++; if(dis_types>4) dis_types = 1;
	 switch(dis_types)
	 {
		case 1:
			  dis_ioc();		  
			  break;
		 case 2:
			  dis_udc();			  
			  break;
		 case 3:
			  dis_lrc();
			  break;
		 case 4: 
			  dis_dtc();
			  break;
		  default :
			  dis_types=1;
			  break;
	 }

	 sheding_time = 0;
	 sheding_sw = 1;		     // 进入设定状态 
   }
   if( button_code == 3 )
   { 
     button_code = 0;
	 switch(dis_types)
	 {
		case 1:
			 vidio_flag = ~vidio_flag;
			 if(vidio_flag) synchronization = SYN_INTERNAL;  //command 4,外同步选择
			 else synchronization = SYN_EXTERNAL;       	 //command 4,内同步选择
			 MB90092_WriteByte(0xA2|synchronization);  
			 MB90092_WriteByte(0x2B);			  
			  break;
		 case 2:
		 	 tp=cy;
			 cy=xx;
			 xx=tp;
			 MB90092_ClearScreen();
			 xxcy();	  
			  break;
		 case 3:
			  top=yy;
			  yy=xj;
			  xj=top;
//			  dis_number(ini_t_h);		 //显示梯号
			  xjyy();
			  break;
		 case 4:
			  dis_calendar_flag = ~dis_calendar_flag; //日历显示开关
			  dis_clock_flag  = ~dis_clock_flag;	//时钟显示开关
			  sjrq();	
			  break;
		  default :
			  dis_types=1;
			  break;

	 }
	 
	 disappear_time = 0;
	 disappear_sw = 1;			 // 启动消隐程序(在定时器中)
	 
	 sheding_time = 0;
	 sheding_sw = 1;		     // 进入设定状态
   }
   if( button_code == 4 )
   { 
     button_code = 0;
	 sheding_time = 0;
	 sheding_sw = 1;		     // 进入设定状态	 
   }
  }
//----------------------------------------------------//屏幕水平/垂直位置设定
  if( menu_code == 1 )
  { 
   
   if( button_code == 1 )
   { 
     button_code = 0;
	 disappear_row23(); 
     menu_code++;if(menu_code>5) menu_code = 0;
 	 disappear_time = 0;
	 disappear_sw = 1;			 // 启动消隐程序(在定时器中)	 
	 dis_time_set();
   }
   if( button_code == 2 )
   {
     button_code = 0;
	 disappear_row23();
	 disappear_time = 0;
	 disappear_sw = 1;			 // 启动消隐程序(在定时器中)
	 sheding_time = 0;
	 sheding_sw = 1;		     // 进入设定状态 
	 pm_f =	~pm_f;
	 if	(pm_f)
	 dis_p_set();
	 else
	 dis_v_set();	 
   }
   if( button_code == 3 )
   { 											  //屏幕水平向左移
     button_code = 0; 
	 disappear_time = 0;
	 disappear_sw = 1;			 // 启动消隐程序(在定时器中)
	 sheding_time = 0;
	 sheding_sw = 1;		     // 进入设定状态	    
	 if(pm_f)
	 {if(X_position > 0)  X_position-- ;
	 MB90092_WriteByte(0xC0);               //command 8
	 MB90092_WriteByte(X_position);         //屏幕水平开始位置设定
	 dis_mov_h_l();
	 ISendByte(0x410,X_position);
	 Delay_ms(2);
	 }
	 else
	 {
	  if(Y_position > 0) Y_position-- ;	  
	 MB90092_WriteByte(0xBC);               //command 7
	 MB90092_WriteByte(Y_position);         //屏幕垂直开始位置设定
	 dis_mov_v_up();
	 ISendByte(0x411,Y_position);
	 Delay_ms(2);
	  }
	 
   }
   if( button_code == 4 )
   { 											  //屏幕水平向右移
     button_code = 0;
	 disappear_time = 0;
	 disappear_sw = 1;			 // 启动消隐程序(在定时器中)
	 sheding_time = 0;
	 sheding_sw = 1;		     // 进入设定状态
	 if(pm_f)
	 {if(X_position < 62) X_position++;	 
	 MB90092_WriteByte(0xC0);               //command 8
	 MB90092_WriteByte(X_position);         //屏幕水平开始位置设定
	 dis_mov_h_r();
	 ISendByte(0x410,X_position);
	 Delay_ms(2);
	 }
	 else
	 {
	  if(Y_position < 62) Y_position++;	  
	 MB90092_WriteByte(0xBC);               //command 7
	 MB90092_WriteByte(Y_position);         //屏幕垂直开始位置设定
	 dis_mov_v_down();
	 ISendByte(0x411,Y_position);
	 Delay_ms(2);
	  }	 
   }   
  }

//----------------------------------------------------	时间设定
  if( menu_code == 2 )
  { 
   if( button_code == 1 )
   { 
     button_code = 0; 
	 disappear_row23();
     menu_code++;if(menu_code>5) menu_code = 0;

	 disappear_time = 0;
	 disappear_sw = 1;			 // 启动消隐程序(在定时器中)	 
	 dis_floor_set();
 
   }
   if( button_code == 2 )
   { 											  
     button_code = 0;
	 time_set_flag++;if(time_set_flag>12) time_set_flag = 0;
 	 switch(time_set_flag)
	 {		
		case 0:
			 
			 disappear_time = 0;
			 disappear_sw = 1;			 // 启动消隐程序(在定时器中)	 
			 year_set(0x31);
			 break;
		case 1:
			 
			 disappear_time = 0;
			 disappear_sw = 1;			 // 启动消隐程序(在定时器中)	 
			 year_set(0x32);
			 break;
		case 2:
			 
			 disappear_time = 0;
			 disappear_sw = 1;			 // 启动消隐程序(在定时器中)	 
			 mon_set(0x31);
			 break;
		case 3:
			 
			 disappear_time = 0;
			 disappear_sw = 1;			 // 启动消隐程序(在定时器中)	 
			 mon_set(0x32);
			 break;
		case 4:
			 
			 disappear_time = 0;
			 disappear_sw = 1;			 // 启动消隐程序(在定时器中)	 
			 date_set(0x31);
			 break;
		case 5:
			 
			 disappear_time = 0;
			 disappear_sw = 1;			 // 启动消隐程序(在定时器中)	 
			 date_set(0x32);
			 break;
		 case 6:
			 
			 disappear_time = 0;
			 disappear_sw = 1;			 // 启动消隐程序(在定时器中)	 
			 day_set();
			 break;
		 case 7:
			 
			 disappear_time = 0;
			 disappear_sw = 1;			 // 启动消隐程序(在定时器中)	 
			 hr_set(0x31);
			 break;
		 case 8:
			 
			 disappear_time = 0;
			 disappear_sw = 1;			 // 启动消隐程序(在定时器中)	 
			 hr_set(0x32);
			 break;
		 case 9:
			 
			 disappear_time = 0;
			 disappear_sw = 1;			 // 启动消隐程序(在定时器中)	 
			 min_set(0x31);
			 break;
		 case 10:
			 
			 disappear_time = 0;
			 disappear_sw = 1;			 // 启动消隐程序(在定时器中)	 
			 min_set(0x32);
			 break;
		 case 11:
			 
			 disappear_time = 0;
			 disappear_sw = 1;			 // 启动消隐程序(在定时器中)	 
			 sec_set(0x31);
			 break;
		 case 12:
			 
			 disappear_time = 0;
			 disappear_sw = 1;			 // 启动消隐程序(在定时器中)	 
			 sec_set(0x32);
			 break;

		default:
			 time_set_flag=0;
			 break;

	 }
	 sheding_time = 0;
	 sheding_sw = 1;		     // 进入设定状态
	 
   }
   if( button_code == 3 )		 //-----------key3------时间+
   { 											  
     button_code = 0;
	 
	 switch(time_set_flag)
	 {
//		char temp;
		case 0:
			 cur_time_cach[6]+=0x10;
//			 temp=(cur_time_cach[6]>>4)&0x0f;
			 if(((cur_time_cach[6]>>4)&0x0f)>9) cur_time_cach[6]&=0x0f;                                     //年
			 v_Set1302( cur_time_cach );
			 
			 break;
		case 1:
			 cur_time_cach[6]++;
//			 temp=cur_time_cach[6]&0x0f;
			 if((cur_time_cach[6]&0x0f)>9) cur_time_cach[6]&=0xf0;                                     
			 v_Set1302( cur_time_cach );
			 
			 break;
		case 2:
			 cur_time_cach[4]+=0x10;
//			 temp=(cur_time_cach[4]>>4)&0x0f;
			 if(((cur_time_cach[4]>>4)&0x0f)>1) cur_time_cach[4]&=0x0f;                                     //月
			 v_Set1302( cur_time_cach );
			 
			 break;
		case 3:
			 cur_time_cach[4]++;
//			 temp=cur_time_cach[4]&0x0f;
			 if((cur_time_cach[4]&0x0f)>9) cur_time_cach[4]&=0xf0;                                     
			 v_Set1302( cur_time_cach );
			 
			 break;
		case 4:
			 cur_time_cach[3]+=0x10;
//			 temp=(cur_time_cach[3]>>4)&0x0f;
			 if(((cur_time_cach[3]>>4)&0x0f)>3) cur_time_cach[3]&=0x0f;                                     //日
			 v_Set1302( cur_time_cach );
			 
			 break;
		case 5:
			 cur_time_cach[3]++;
//			 temp=cur_time_cach[3]&0x0f;
			 if((cur_time_cach[3]&0x0f)>9) cur_time_cach[3]&=0xf0;                                     
			 v_Set1302( cur_time_cach );
			 break;
		 case 6:
			 cur_time_cach[5]++;
			 if(cur_time_cach[5]>7) cur_time_cach[5]&=0xf1;                         //星期
			 v_Set1302( cur_time_cach );

⌨️ 快捷键说明

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