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

📄 4x4键盘程序.c

📁 4x4键盘驱动
💻 C
字号:
#include <reg51.h>
unsigned char code table[]={0xfe,0x48,0xbd,0xed,0xcb,0xe7,0xf7,0x4c,0xff,0xef};
unsigned char temp;
unsigned char key1,key2;
unsigned char i,j;
sbit P0_4 = P0^4;
sbit P0_5 = P0^5;
sbit P0_6 = P0^6;
sbit P0_7 = P0^7;

    void delay1(void)
{

 unsigned char i,j;
 for(i=0;i<50;i++) 
  { for(j=0;j<255;j++); 
 }

}
void main(void)
{
  while(1)
    {
      P0=0xff;

      P0_4=0;            //……………………
      temp=P0;
      temp=temp & 0x0f;
      if (temp!=0x0f)        //!=时p01~p03有按键
        {
          for(i=50;i>0;i--)
          for(j=200;j>0;j--);
          temp=P0;         //再次检查p01~p03是否有按键
          temp=temp & 0x0f;
          if (temp!=0x0f)
            {
              temp=P0;
              temp=temp & 0x0f;              
              switch(temp)
                {
                  case 0x0e:      //p40有按键
                    key1=0;
		            key2=0;
                    break;
                  case 0x0d:    // p41有按键
		            key1=0;
                    key2=1;
                    break;
                  case 0x0b:    //p42有按键
		           key1=0;
                    key2=2;
                    break;
                  case 0x07:    // p43有按键
                    key1=0;
		            key2=3;
                    break;
                }
              }
       	   }          //…………………………………
		
      P0=0xff;          //…………………………….
      P0_5=0;             
      temp=P0;
      temp=temp & 0x0f;
      if (temp!=0x0f)    
        {
          for(i=50;i>0;i--)
          for(j=200;j>0;j--);
          temp=P0;
          temp=temp & 0x0f;
          if (temp!=0x0f)
            {
              temp=P0;
              temp=temp & 0x0f;              
              switch(temp)
                {
                  case 0x0e:
                    key1=0;
		            key2=4;
                    break;
                  case 0x0d:
		           key1=0;
		           key2=5;
                    break;
                  case 0x0b:
                    
		           key1=0;
		           key2=6;
                    break;
                  case 0x07:
                    key1=0;
		            key2=7;
                    break;
                }
            }
        }                      //………………..

      P0=0xff;                    //……………….
      P0_6=0;
      temp=P0;
      temp=temp & 0x0f;
      if (temp!=0x0f)
        {
          for(i=50;i>0;i--)
          for(j=200;j>0;j--);
          temp=P0;
          temp=temp & 0x0f;
          if (temp!=0x0f)
            {
              temp=P0;
              temp=temp & 0x0f;              
              switch(temp)
                {
                  case 0x0e:
                    key1=0;
		           key2=8;
                    break;
                  case 0x0d:
                    key1=0;
		            key2=9;
                    break;
                  case 0x0b:
                    key1=1;
		             key2=0;
                    break;
                  case 0x07:
		            key1=1;
                    key2=1;
                    break;
                }
            }
        }                    //…………………..

      P0=0xff;                 //………………………….
      P0_7=0;
      temp=P0;
      temp=temp & 0x0f;
      if (temp!=0x0f)
        {
          for(i=50;i>0;i--)
          for(j=200;j>0;j--);
          temp=P0;
          temp=temp & 0x0f;
          if (temp!=0x0f)
            {
              temp=P0;
              temp=temp & 0x0f;              
              switch(temp)
                {
                  case 0x0e:
		            key1=1;
                    key2=2;
                    break;
                  case 0x0d:
                    key1=1;
		    key2=3;
                    break;
                  case 0x0b:
                    key1=1;
	            key2=4;
                    break;
                  case 0x07:
		            key1=1;
                    key2=5;
                    break;
                }
            }
        }                            //动态显示部分
                 P2=0xfd;
                 P1=table[key1];
	             delay1();
	             P2=0xfe;
     		     P1=table[key2];
	             delay1();
    }
}

⌨️ 快捷键说明

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