51单片机驱动 矩阵键盘

连接方式为8-1顺序连接P1端口P10-P17,代码返回键值 0-15.

cpp 复制代码
// 矩阵键盘扫描
uchar key_scan(void)
{
    u8 key_value = 255;
    u8 row, col;
    
    // 设置P1.0-P1.3为输出,P1.4-P1.7为输入
    P1 = 0xF0;  // 1111 0000
    
    if((P1 & 0xF0) != 0xF0) {  // 有按键按下
        delay_ms(10);  // 消抖
        if((P1 & 0xF0) != 0xF0) {  // 确认按键按下
            // 逐行扫描
            for(row = 0; row < 4; row++) {
                P1 = ~(1 << row) | 0xF0;  // 将当前行置低,其他行置高
                
                // 检查列
                if((P1 & 0x10) == 0) col = 0;  // 第1列
                else if((P1 & 0x20) == 0) col = 1;  // 第2列
                else if((P1 & 0x40) == 0) col = 2;  // 第3列
                else if((P1 & 0x80) == 0) col = 3;  // 第4列
                else continue;
                
                // 计算键值
                key_value = row * 4 + col ;  // 键值从0开始
                
                // 等待按键释放
                while((P1 & 0xF0) != 0xF0);
                delay_ms(10);  // 消抖
                
 
                break;
            }
        }
    }
		return key_value;
}
相关推荐
chao18984414 小时前
六个舵机组成的双足机器人程序(51单片机)
机器人·51单片机
爱丽_20 小时前
SQL 事务主线:ACID、隔离级别、MVCC 与一致性读
jvm·矩阵
沃普天科技21 小时前
IF8032芯片TYPE C全功能输出支持C口显示器,支持AR眼镜 显示,支持接扩展坞,支持PD100W 4K144
游戏·智能手机·计算机外设·电脑·ar·音视频·显示器
拒朽21 小时前
51单片机学习(六)模块化编程和LCD调试工具
嵌入式硬件·学习·51单片机
桌面运维家1 天前
Windows 10 USB鼠标失灵:驱动、电源问题排查指南
windows·单片机·计算机外设
拒朽1 天前
Keil5软件使用
51单片机
穿条秋裤到处跑1 天前
每日一道leetcode(2026.03.28):找出对应 LCP 矩阵的字符串(这题真恶心)
leetcode·矩阵
约翰先森不喝酒1 天前
Android 开发 自定义身份证键盘
android·计算机外设
kronos.荒2 天前
搜索二维矩阵中的target——二分查找或者二叉搜索树(python)
python·矩阵·二分查找
v先v关v住v获v取2 天前
多功能割草装置的结构设计8张cad+三维图+设计说明书
科技·单片机·51单片机