11.c

来自「1602液晶显示」· C语言 代码 · 共 107 行

C
107
字号
#include "AT89X51.H"
 
void delay10ms();
void main()
{unsigned char key;
 unsigned char table[]={0xf9,0x24,0x30,0x19,0x12,0x19,0x30,0x12,
0x00,0x18,0x08,0x00,
0x46,0x40,0x06,0x0e, 0xff}; 
 while(1)
 {P0=0xff;
  
  P3=0xff;
  P3_4=0;
  key=P3&0x0f;
  if(key!=0x0f)
   {delay10ms();
    key=P3&0x0f;
    if(key!=0x0f)
     {switch(key)
       {case 0x0e: key=0;break;
        case 0x0d: key=1;break;
        case 0x0b: key=2;break;
        case 0x07: key=3;break;
       }
     }
   P0=table[key]; 
   key=key&0x0f;              
   while(key!=0x0f) 
     {key=P3; 
      key=key&0x0f;              
     } 
   }

  P3=0xff;
  P3_5=0;
  key=P3&0x0f;
  if(key!=0x0f)
   {delay10ms();
    key=P3&0x0f;
    if(key!=0x0f)
     {switch(key)
       {case 0x0e: key=4;break;
        case 0x0d: key=5;break;
        case 0x0b: key=6;break;
        case 0x07: key=7;break;
       }
     }
  P0=table[key]; 
  key=key&0x0f;              
  while(key!=0x0f) 
   {key=P3; 
    key=key&0x0f;              
   } 
  }
     

  P3=0xff;
  P3_6=0;
  key=P3&0x0f;
  if(key!=0x0f)
   {delay10ms();
    key=P3&0x0f;
    if(key!=0x0f)
     {switch(key)
       {case 0x0e: key=8;break;
        case 0x0d: key=9;break;
        case 0x0b: key=10;break;
        case 0x07: key=11;break;
       }
     }
  P0=table[key]; 
  key=key&0x0f;              
   while(key!=0x0f) 
     {key=P3; 
      key=key&0x0f;              
     } 
  }

  P3=0xff;
  P3_7=0;
  key=P3&0x0f;
  if(key!=0x0f)
   {delay10ms();
    key=P3&0x0f;
    if(key!=0x0f)
     {switch(key)
       {case 0x0e: key=12;break;
        case 0x0d: key=13;break;
        case 0x0b: key=14;break;
        case 0x07: key=15;break;
       }
    }
  P0=table[key]; 
  key=key&0x0f;              
  while(key!=0x0f) 
   {key=P3; 
    key=key&0x0f;              
   } 
  }
}
}
void delay10ms()
 {unsigned int i,k;
  for(i=20;i>0;i--)
  for(k=20;k>0;k--);
 }

⌨️ 快捷键说明

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