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

📄 按键.c

📁 功能按键
💻 C
字号:
#include"reg51.h"
#include"absacc.h"
#include"stdio.h"
#define uchar unsigned char
#define unit unsigned int
unsigned char code dis[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0-9代码 
unsigned char code shibie[8]={0x98,0x8c,0xb6,0x86,0xc6,0xc7,0x88,0x89};//符号q,p,三,E,【,L
uchar key_moshi=2;   //模式按键 
uchar key_up=2;    //上调按键 
uchar key_down=2;   //下调按键 
uchar key_queren=2;  //确认按键 
int queren_flag=0;	//确认标志  
int moshi_flag=0;  //  模式标志 
int key_first_flag=-1;  //开机显示标志位 
int moshi1[3],moshi2[3];
sbit ge=P2^4;
sbit shi=P2^5;
sbit bai=P2^6;
sbit fuhao=P2^7;
					 
/***************************
*******延时程序 ************
***************************/
void delay1(int time)
{  int j=0,i=0;
  for(j=0;j<time;j++)
  {for(i=0;i<10;i++);}
  }


/*********************************************
*****读按键 *******************************
***********************************************/
void read_key(void)
{ if((P2&0X01)!=0X01)
   {delay1(253);
    if((P2&0X01)!=0X01)
	{
	key_moshi=0;
	}
	}
	 if((P2&0X02)!=0X02)
	 { delay1(253);
	   if((P2&0X02)!=0X02)
	   {key_up=0;}
	 }
	 if((P2&0X04)!=0X04)
	{delay1(253);
	 if((P2&0X04)!=0X04)
	 { key_down=0;}
	 }
	 if((P2&0X08)!=0X08)
	{delay1(253);
	 if((P2&0X08)!=0X08)
	  {
	  
	  key_queren=0;}
	  }
	 
  }
/*******************************************
**************模式选择 ********************
******************************************/
   void moshi_set(void)
  {	 
    if(key_moshi==0)
	 { key_first_flag=1;
	   key_moshi=1;	   
	   delay1(1);
	   moshi_flag++;
       if(moshi_flag>=3)
	   {moshi_flag=0;}
	 }
   }
/********************************************
***********模式1设置, 增加,减少 ****************
**********************************************/
   void key_up_moshi1(void)
   {
     if(key_up==0&&moshi_flag==1&&queren_flag==0)  //上升 
	   { key_up=1;
	     delay1(2);
		 moshi1[1]++;
		 if(moshi1[1]>=10)
		 { moshi1[1]=0;}
		}
	 }

   void key_down_moshi1(void)
    {
	  if(key_down==0&&moshi_flag==1&&queren_flag==0)  //下调 
	   { key_down=1;
	   delay1(2);
	   moshi1[1]--;
	   if(moshi1[1]<0)
	   { moshi1[1]=9;}
	   }
     }

/************************************U*
************模式2设置,增加,减少 ******
***********************************/
  void key_up_moshi2(void)
      {
     if(key_up==0&&moshi_flag==2&&queren_flag==0)  //上升 
	   { key_up=1;
	     delay1(2);
		 moshi2[1]++;
		 if(moshi2[1]>=10)
		 { moshi2[1]=0;}
		}
	 }

   void key_down_moshi2(void)
    {
	  if(key_down==0&&moshi_flag==2&&queren_flag==0)  //下调 
	   { key_down=1;
	   delay1(2);
	   moshi2[1]--;
	   if(moshi2[1]<0)
	   { moshi2[1]=9;}
	   }
     }

/*************************************************
***************确认按键 *****************************
*************************************************/
   void key_queren_flag(void)
   {
     if(key_queren==0)
	 { delay1(5);
	 key_first_flag=1;
	   key_queren=1;
	   queren_flag=1;
	/*   if(queren_flag>1)
	   {queren_flag=0;}	  */
	   moshi_flag=0;
	   queren_flag=0;
	 }
	}

/*******************************************************
*********************显示 *******************************
************************************************************/
  void display()
  {
    /**********************
	开机显示 
	***************************/
  	if(key_first_flag==-1)
	 { P0=dis[8];
	   P2=0X7F;
	   delay1(5);
	   P2=0XFF;
	   P0=dis[8];
	  P2=0XBF;
	   delay1(5);
	   P2=0XFF;
	   P0=dis[8];
	  P2=0XDF;
	   delay1(5);
	   P2=0XFF;
	   P0=dis[8];
	  P2=0XEF;
	   delay1(5);
	   P2=0XFF;
	 }	 
  /**************************************
          模式1显示 	  符号显示 q
 ****************************************/
   if(moshi_flag==1)
  	{
	  P0=shibie[0];
	  P2=0X7F;
	  delay1(5);
	  P2=0XFF;
	  P0=dis[moshi1[1]];
	 P2=0XEF;
	  delay1(5);
	  P2=0XFF;
	}  

  /*********************************
        模式2显示 符号显示 E
************************************/
 if(moshi_flag==2)
   {
     P0=shibie[3];
	 P2=0X7F;
	 delay1(5);
	 P2=0XFF;
	 P0=dis[moshi2[1]];
	 P2=0XEF;
	 delay1(5);
	 P2=0XFF;
	}	 
 /**************************
   正常状态显示 0123
********************************/
 if(moshi_flag==0&&(key_first_flag)!=-1)
   {
     P0=dis[0];
	 P2=0X7F;
	 delay1(5);
	 P2=0XFF;
	 P0=dis[1];
	 P2=0XEF;
	 delay1(5);
	 P2=0XFF;
	 P0=dis[2];
	 P2=0XDF;																			   
	 delay1(5);
	 P2=0XFF;
	 P0=dis[3];
	 P2=0XBF;
	 delay1(5);
	 P2=0XFF;
	 
	 }		
 }

 /*********************************
   主程序  
****************************************/
  void main()
 {
  P2 = 0XFF;
  while(1)
   {
     read_key();	
	 moshi_set();
	 key_queren_flag();
	 key_up_moshi1();
	 key_down_moshi1();
	 key_up_moshi2();
	 key_down_moshi2();
	 display();
	}
 }


	   

⌨️ 快捷键说明

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