当前位置: 首页 > news >正文

51单片机驱动 矩阵键盘

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

// 矩阵键盘扫描
uchar key_scan(void)
{u8 key_value = 255;u8 row, col;// 设置P1.0-P1.3为输出,P1.4-P1.7为输入P1 = 0xF0;  // 1111 0000if((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;
}

相关文章:

  • GESP2024年6月认证C++八级( 第三部分编程题(1)最远点对)
  • GZIPInputStream 类详解
  • 【AI科技】AMD ROCm 6.4 新功能:突破性推理、即插即用容器和模块化部署,可在 AMD Instinct GPU 上实现可扩展 AI
  • 03 - spring security自定义登出页面
  • 10 种微服务设计模式
  • Baklib智链企业知识资产体系
  • 处方流转平台权限控制模块设计(基于RBAC模型)
  • kubernetes中离线业务编排详解JobCronJob之Job控制器CronJob
  • 新手学编程前端好还是后端
  • Android学习总结之jetpack组件间的联系
  • DarkGS:论文解读与全流程环境配置及数据集测试【基于Ubuntu20.04 】【2025最新实战无坑版!!】
  • 数字智慧方案5874丨智慧交通收费稽核管理体系的构建与思考(44页PPT)(文末有下载方式)
  • Python基于深度学习的网络舆情分析系统(附源码,部署)
  • 深入解析C++11基于范围的for循环:更优雅的容器遍历方式
  • C# 方法(局部变量和局部常量)
  • 快速集成 Flutter Shorebird 热更新
  • 【嵌入式Linux】基于ARM-Linux的zero2平台的智慧楼宇管理系统项目
  • 体系结构论文(八十二):A Comprehensive Analysis of Transient Errors on Systolic Arrays
  • 从此,K8S入门0门槛!
  • Android基础控件用法介绍
  • 当年的你,现在在哪里?——新民晚报杯40周年寻人启事
  • 德国联邦议院6日下午将举行总理选举第二轮投票
  • 沪幼升小网上报名明起开始,是否参与民办摇号怎么定?
  • 让党的理论“飞入寻常百姓家”,他如何做到有新意?
  • 今天全国铁路、公路进入返程高峰,这些路段时段通行压力大
  • 澳大利亚联邦选举投票正式开始