新闻  |   论坛  |   博客  |   在线研讨会
单片机4*4键盘的程序
wuzhiwei0411 | 2009-09-02 12:36:07    阅读:906   发布文章

#include <AT89X51.H>
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
unsigned char temp;
unsigned char key;
unsigned char i,j;
void delay()
{
for(i=10;i>0;i--)
      for(j=500;j>0;j--);
}
void display()
{
   P2=table[key];
}
void main(void)
{
    while(1)
    {
     P1=0xfe;   
     temp=P1;
     temp=temp&0xf0;
     if (temp!=0xf0)
     {
      delay();
      temp=P1;
      temp=temp&0xf0;
      if (temp!=0xf0)
     {
     temp=P1;
      switch(temp)
       {
        case 0xee:
        key=0;
        break;
        case 0xde:
        key=1;
        break;
        case 0xbe:
        key=2;
        break;
        case 0x7e:
        key=3;
        break;
       }
     while(temp!=0xf0)
      {
       temp=P1;
       temp=temp&0xf0;
      }
     display();
  }
     }
     P1=0xfd;
     temp=P1;
     temp=temp&0xf0;
     if (temp!=0xf0)
     {
      delay();
      temp=P1;
      temp=temp&0xf0;
      if (temp!=0xf0)
     {
      temp=P1;
      switch(temp)
       {
        case 0xed:
        key=4;
        break;
        case 0xdd:
        key=5;
        break;
        case 0xbd:
        key=6;
        break;
        case 0x7d:
        key=7;
        break;
       }     
      while(temp!=0xf0)
       {
        temp=P1;
        temp=temp&0xf0;
       }
     while(temp!=0xf0)
      {
       temp=P1;
       temp=temp&0xf0;
      }
      display();
     }
     }
    P1=0xfb;
    temp=P1;
    temp=temp&0xf0;
    if (temp!=0xf0)
    {
     delay();
     temp=P1;
     temp=temp&0xf0;
     if (temp!=0xf0)
     {
      temp=P1;    
      switch(temp)
      {
       case 0xeb:
       key=8;
       break;
       case 0xdb:
       key=9;
       break;
       case 0xbb:
       key=10;
       break;
       case 0x7b:
       key=11;
       break;
      }
      while(temp!=0xf0)
      {
       temp=P1;
       temp=temp&0xf0;
      }
     display();
   }
   }
    P1=0xf7; 
    temp=P1;
    temp=temp&0xf0;
    if (temp!=0xf0)
     {
      delay();
      temp=P1;
      temp=temp&0xf0;
      if (temp!=0xf0)
       {
        temp=P1;      
        switch(temp)
        {
         case 0xe7:
         key=12;
         break;
         case 0xd7:
         key=13;
         break;
         case 0xb7:
         key=14;
         break;
         case 0x77:
         key=15;
         break;
        }
     while(temp!=0xf0)
      {
       temp=P1;
       temp=temp&0xf0;
      }
      display();
      }
      }
}
}

 

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客