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

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;
}

http://www.xdnf.cn/news/3395.html

相关文章:

  • SPOJ 11576 TRIP2 - A Famous King’s Trip 【Tarjan+欧拉回路】
  • Python清空Word段落样式的方法
  • PINNs案例——多介质分区温度场
  • c++环境和vscode常用的一些有用插件
  • 菲索旋转齿轮法:首次地面光速测量的科学魔术
  • Spring Boot 集成 Elasticsearch 的详细步骤
  • Arduino按键开关编程详解
  • Ubuntu 安装 MySQL8
  • Mybatis学习笔记
  • pytest——参数化
  • btrace1.0使用方法
  • AE模板 300个故障干扰损坏字幕条标题动画视频转场预设
  • mysql--索引
  • VulnHub-DC-2靶机
  • 【数据结构】励志大厂版·初阶(复习+刷题):栈与队列
  • 【Unity 游戏开发】角色控制模块技术要点拆解
  • 详细介绍Python-pandas-DataFrame全部 *功能* 函数
  • 【人工智能】图神经网络(GNN)的推理方法
  • 模型之FIM(Fill-In-the-Middle)补全
  • ADG网络故障恢复演练
  • tiktok web X-Bogus X-Gnarly 分析
  • FreeRTOS任务管理与通信机制详解
  • IPD研学:76页页基于IPD思想-华为需求管理培训方案【附全文阅读】
  • 初学python的我开始Leetcode题8-3
  • 第T10周:数据增强
  • python类私有变量
  • 【LeetCode 热题 100】3.无重复字符的最长子串:详解滑动窗口解法
  • 第3篇:请求参数处理与数据校验
  • [vscode]全局配置nim缩进
  • synchronized与Lock深度对比