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

📄 pushkey.c.bak

📁 QH_MCU_V1.1单片机C源码. 内含实验程序 这是修改版.
💻 BAK
字号:
#include <REG51.H>

#define uchar unsigned char
//带点显示
//unsigned char	LedCode[]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0xF7,0xFC,0xB9,0XDE,0xF9,0xF1};
//不带点显示
unsigned char	LedCode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0X5E,0x79,0x71};
unsigned char	Sel[]={0x80,0x81,0x82,0x83};
uchar key = 0x00;
void delay10ms(unsigned char time)
{
unsigned char a,b,c;
for(a=0;a<time;a++)
for(b=0;b<10;b++)
  for(c=0;c<120;c++)
  ;
}

 void delay()
{
    uchar i = 0;
	uchar j = 0;
    for (j=0;j<255;j++)
   {
      for (i=0; i<250; i++)
	  ;
   }
} 

void display(uchar key)
 {
    if(key <= 9)
	{
     P2 = 0x10;
	   P0 = 0x1f;
	   P2 = 0x00;
	   P2 = 0x80;
	   P0 = LedCode[0];
	 }
	 else
	 {
     P2 = 0x10;
	   P0 = 0x1f;
	   P2 = 0x00;
	   P2 = 0x80;
	   P0 = LedCode[1];
	 }
    delay10ms(2);
	 P2 = 0x00;
	 P2 = 0x10;
	 P0 = 0x0f;
     P2 = 0x00;
	 P2 = 0x80;
	 switch(key)
	 {
	 case 2:
	      P0 = LedCode[2];
		  break;
	 case 3:
	      P0 = LedCode[3];
		  break;
     case 4:
	      P0 = LedCode[4];
		  break;
	 case 5:
	      P0 = LedCode[5];
		  break;
     case 6:
	      P0 = LedCode[6];
		  break;
     case 7:
	      P0 = LedCode[7];
		  break;
	 case 8:
	      P0 = LedCode[8];
		  break;
	 case 9:
	      P0 = LedCode[9];
		  break;
     case 10:
	      P0 = LedCode[0];
		  break;
	 case 11:
	      P0 = LedCode[1];
		  break;
     case 12:
	      P0 = LedCode[2];
		  break;
     case 13:
	      P0 = LedCode[3];
		  break;
	 case 14:
	      P0 = LedCode[4];
		  break;
	 case 15:
	      P0 = LedCode[5];
		  break;
     case 16:
	      P0 = LedCode[6];
		  break;
     case 17:
	      P0 = LedCode[7];
		  break;
	 default:
	      P0 = 0x3f;
		  break;
	 }
	 delay10ms(1);
 }

void KeyScan(void) //按键扫描子程序
{

uchar temp;

P2 = 0x10;
P0 = 0xf5;
P1 = 0xFF;
temp = P1;
temp &= 0xFF;
if(temp !=0xFF)
{
  delay();
  temp = P1;
  temp &= 0xFF;
if(temp !=0xFF) 
{
   temp = P1;
   temp &= 0xFF;

   switch(temp)
  {
  case 0xfe:
       key = 2;
       break;
  case 0xfd:
       key = 3;
       break;
  case 0xfb:
       key = 4; 
       break;
  case 0xf7:
       key = 5;
       break;
  case 0xef:
       key = 6;
       break;
  case 0xdf:
       key = 7;
       break;
  case 0xbf:
       key = 8; 
       break;
  case 0x7f:
       key = 9;
       break;
  default:
       key = 00;
       break;
  }

 }

}

P2 = 0x00; 
P2 = 0x10;
P0 = 0xf6;
P1 = 0xFF;
temp = P1;
temp &= 0xFF;
if(temp !=0xFF)
{
  delay();
  temp = P1;
  temp &= 0xFF;
if(temp !=0xFF) 
{
   temp = P1;
   temp &= 0xFF;

   switch(temp)
  {
  case 0xfe:
       key = 10; 
	   break;
  case 0xfd:
       key = 11;
	   break;
  case 0xfb:
       key = 12;
	   break;
  case 0xf7:
       key = 13; 
	   break;
  case 0xef:
       key = 14;
	   break;
  case 0xdf:
       key = 15;
	   break;
  case 0xbf:
       key = 16;
	   break;
  case 0x7f:
       key = 17;
	   break;
  default:
       key = 00;
	   break;
  }

 }
P2 = 0x00;
}



}

void main()
{
	while(1)
	{


    keyscan();
	  delay10ms(2);
    display(key);
	}
}




⌨️ 快捷键说明

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