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;
}
相关推荐
不大姐姐AI智能体13 分钟前
搭了个小红书笔记自动生产线,一句话生成图文,一键发布,支持手机端、电脑端发布
人工智能·经验分享·笔记·矩阵·aigc
恶魔泡泡糖11 小时前
51单片机点阵屏应用
单片机·嵌入式硬件·51单片机
TTGGGFF13 小时前
控制系统建模仿真(三):矩阵分析、微分方程与最优化求解
线性代数·矩阵
恶魔泡泡糖14 小时前
51单片机I-O扩展1
c语言·嵌入式硬件·51单片机
sonadorje14 小时前
SVD:如何把一个矩阵拆解成三个部分?
线性代数·矩阵
企业老板ai培训14 小时前
从九尾狐AI案例拆解智能矩阵架构:如何用AI获客引擎重构传统企业流量体系
人工智能·矩阵·重构
浅川.2514 小时前
回型矩阵(板子题)
c++·矩阵
aigcapi14 小时前
2026年跨境运营矩阵系统TOP5测评,客观展现“矩阵系统哪家好?”
大数据·人工智能·矩阵
Σίσυφος190014 小时前
视觉矩阵 之 单应矩阵
人工智能·算法·矩阵
weisian15114 小时前
进阶篇-3-数学篇-2--从线性代数到AI:向量、矩阵、张量的底层逻辑
人工智能·线性代数·矩阵·向量·张量