51单片机----矩阵键盘

矩阵键盘中判断某一个键是否按下,是靠单片机扫描P3的值来确定的,P3的后四位表示行值,前四位表示列值,如0xe7 , 1110 0111,表示第四行,第一列的键被按下。
编码方法:先确定列值,在确定行值。

uchar KeyScan() //带返回值的子函数
{
    uchar cord_l,cord_h;//声明列线和行线的值的储存变量
    P3 = 0xf0;//1111 0000
    //当某一键被按下时,高位(即置1的位)会被拉低(变成0位)

    if( (P3 & 0xf0) != 0xf0)//判断是否有按键按下
    {
        delay(5);//软件消抖
        if( (P3 & 0xf0) != 0xf0)//判断是否有按键按下
        {
              cord_l = P3 & 0xf0;// 储存列线值
              P3=  0x0f;//
              cord_h = P3 & 0x0f;// 储存行线值
              while( (P3 & 0x0f) != 0x0f );//松手检测
              return (cord_l + cord_h);//返回键值码
        }   
    }

}

猜你喜欢

转载自blog.csdn.net/FLwbf/article/details/79609522