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

📄 4x4.c

📁 本文详细介绍了4×4矩阵式键盘识别技术
💻 C
字号:
#include <reg51.H>
 sbit P1_0=P1^0 ;
 sbit P3_4=P3^4 ;
 sbit P3_5=P3^5 ;
 sbit P3_6=P3^6 ;
 sbit P3_7=P3^7 ;
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 main(void)

{

  while(1)

    {

      P3=0xff;

      P3_4=0;

      temp=P3;

      temp=temp & 0x0f;

      if (temp!=0x0f)

        {

          for(i=50;i>0;i--)

          for(j=200;j>0;j--);

          temp=P3;

          temp=temp & 0x0f;

          if (temp!=0x0f)

            {

              temp=P3;

              temp=temp & 0x0f;

              switch(temp)

                {

                  case 0x0e:

                    key=0;

                    break;

                  case 0x0d:

                    key=1;

                    break;

                  case 0x0b:

                    key=2;

                    break;

                  case 0x07:

                    key=3;

                    break;

                }

              temp=P3;

              P1_0=~P1_0;

              P0=table[key];

              temp=temp & 0x0f;

              while(temp!=0x0f)

                {

                  temp=P3;

                  temp=temp & 0x0f;

                }

            }

        }



      P3=0xff;

      P3_5=0;

      temp=P3;

      temp=temp & 0x0f;

      if (temp!=0x0f)

        {

          for(i=50;i>0;i--)

          for(j=200;j>0;j--);

          temp=P3;

          temp=temp & 0x0f;

          if (temp!=0x0f)

            {

              temp=P3;

              temp=temp & 0x0f;

              switch(temp)

                {

                  case 0x0e:

                    key=4;

                    break;

                  case 0x0d:

                    key=5;

                    break;

                  case 0x0b:

                    key=6;

                    break;

                  case 0x07:

                    key=7;

                    break;

                }

              temp=P3;

              P1_0=~P1_0;

              P0=table[key];

              temp=temp & 0x0f;

              while(temp!=0x0f)

                {

                  temp=P3;

                  temp=temp & 0x0f;

                }

            }

        }



      P3=0xff;

      P3_6=0;

      temp=P3;

      temp=temp & 0x0f;

      if (temp!=0x0f)

        {

          for(i=50;i>0;i--)

          for(j=200;j>0;j--);

          temp=P3;

          temp=temp & 0x0f;

          if (temp!=0x0f)

            {

              temp=P3;

              temp=temp & 0x0f;

              switch(temp)

                {

                  case 0x0e:

                    key=8;

                    break;

                  case 0x0d:

                    key=9;

                    break;

                  case 0x0b:

                    key=10;

                    break;

                  case 0x07:

                    key=11;

                    break;

                }

              temp=P3;

              P1_0=~P1_0;

              P0=table[key];

              temp=temp & 0x0f;

              while(temp!=0x0f)

                {

                  temp=P3;

                  temp=temp & 0x0f;

                }

            }

        }



      P3=0xff;

      P3_7=0;

      temp=P3;

      temp=temp & 0x0f;

      if (temp!=0x0f)

        {

          for(i=50;i>0;i--)

          for(j=200;j>0;j--);

          temp=P3;

          temp=temp & 0x0f;

          if (temp!=0x0f)

            {

              temp=P3;

              temp=temp & 0x0f;

              switch(temp)

                {

                  case 0x0e:

                    key=12;

                    break;

                  case 0x0d:

                    key=13;

                    break;

                  case 0x0b:

                    key=14;

                    break;

                  case 0x07:

                    key=15;

                    break;

                }

              temp=P3;

              P1_0=~P1_0;

              P0=table[key];

              temp=temp & 0x0f;

              while(temp!=0x0f)

                {

                  temp=P3;

                  temp=temp & 0x0f;

                }

            }

        }

    }

}

⌨️ 快捷键说明

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