×
单片机 > 单片机程序设计 > 详情

51单片机 矩阵键盘

发布时间:2020-06-01 发布时间:
|

 

 

uchar code KEY_TABLE[] =

{

    0x77,0xB7,0xD7,0xE7

0x7B,0xBB,0xDB,0xEB

0x7D,0xBD,0xDD,0xED

0x7E,0xBE,0xDE,0xEE

};//高四位是列,低四位是行

 

uchar code TABLE[] =

{

    '1', '2', '3',

'4', '5', '6',

'7', '8', '9',

    'C', '0', 'A',

};

 

 

char key_scan()

{

uchar temp, key, i;

P1 = 0xf0; //1111 0000 

    //先是扫描列,确定列

    //把列的引脚高四位,设为高电平,行引脚,低四位,设为低电平。当按键按下,会被拉低。

    if (P1 != 0xf0)  

        {

            delay_ms(10);

 

            if (P1!= 0xf0)

            {

                temp = P1;//按下后存在temp

 

                P1 = 0x0f;

                //后扫描行,确定哪一行

                //把行引脚,低四位设为高电平,列的引脚,高四位,设为低电平。当按键按下,会被拉低。

 

                key = temp | P1;

                //行列相或,高四位0所在的位为列,低四位所在的0为行

 

                for (i = 0; i < 12; ++i)//查找对应的按键,并赋值对应的字符

                    if (key == KEY_TABLE[i])

                        break;

 

                return TABLE[i];

            }

        }

 

else

return 0x00;

}



关键字:51单片机  矩阵键盘  扫描 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会