4x4.c

来自「本文详细介绍了4×4矩阵式键盘识别技术」· C语言 代码 · 共 362 行

C
362
字号
#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 + =
减小字号Ctrl + -
显示快捷键?