【蓝桥杯-单片机】基础模块:矩阵按键

文章目录

【蓝桥杯-单片机】基础模块:矩阵按键

c 复制代码
/** 
* @函数名 矩阵键盘扫描函数
* @函数功能 返回按下的按键键码值
* @入口参数 无
* @返回值 按键键码值
*/
unsigned char Key_Read_Pro()
{
	unsigned char temp = 0;
	P3_0 = 0; P3_1 = 1; P3_2 = 1; P3_3 = 1;
	if(P3_4 == 0) temp = 1;
	if(P3_5 == 0) temp = 2;
	if(P3_6 == 0) temp = 3;
	if(P3_7 == 0) temp = 4;
	P3_0 = 1; P3_1 = 0; P3_2 = 1; P3_3 = 1;
	if(P3_4 == 0) temp = 5;
	if(P3_5 == 0) temp = 6;
	if(P3_6 == 0) temp = 7;
	if(P3_7 == 0) temp = 8;
	P3_0 = 1; P3_1 = 1; P3_2 = 0; P3_3 = 1;
	if(P3_4 == 0) temp = 9;
	if(P3_5 == 0) temp = 10;
	if(P3_6 == 0) temp = 11;
	if(P3_7 == 0) temp = 12;
	P3_0 = 1; P3_1 = 1; P3_2 = 1; P3_3 = 0;
	if(P3_4 == 0) temp = 13;
	if(P3_5 == 0) temp = 14;
	if(P3_6 == 0) temp = 15;
	if(P3_7 == 0) temp = 16;
	return temp;
}

这是一个简单的矩阵键盘扫描函数,用于检测矩阵键盘上的按键按下情况。以下是对该函数的分析:

引脚控制:

函数中通过设置和清除 P3 端口的不同引脚来扫描矩阵键盘。P3_0、P3_1、P3_2、P3_3 分别对应键盘的第一行到第四行,而 P3_4、P3_5、P3_6、P3_7 分别对应键盘的第一列到第四列。

扫描过程:

函数通过设置某一行为低电平,同时检测列的电平状态,从而确定具体哪个按键被按下。

扫描过程是逐行进行的,通过改变 P3_0 到 P3_3 的状态,检测对应列的电平状态,得到按键的行列位置。

按键键码值:

函数使用变量 temp 作为返回值,通过组合行列的状态,确定按下的具体按键,并将其对应的键码值存储在 temp 中。

返回值:

返回 temp,即按键键码值。如果没有按键按下,temp 将保持为初始值 0。

注意事项:

该函数采用的是轮询(polling)方式,一次只能检测一个按键。如果需要同时检测多个按键或者需要更高效的按键检测,可以考虑使用中断方式。

相关推荐
装不满的克莱因瓶34 分钟前
矩阵的主成分是什么?主成分分析(PCA)又能做什么?
人工智能·线性代数·算法·机器学习·ai·矩阵·pca
m0_747124531 小时前
单片机 VSCode 开发环境搭建
vscode·单片机·嵌入式硬件
嵌入式小站1 小时前
STM32 零基础可移植教程 21:1602A 并口 4 位模式,先显示 Hello
stm32·单片机·嵌入式硬件
夜月yeyue2 小时前
KCP 与 UDP 可靠传输
linux·网络·单片机·网络协议·udp·php
WIZnet2 小时前
W55RP20-EVB-MKR MicroPython 实战(14):MQTT 协议与 OneNET 平台对接
单片机·网络协议·wiznet
三佛科技-187366133972 小时前
AIP8P005B(SOP14)中微爱芯8位MCU用辉芒微FT60E112A SOP14替代
单片机·嵌入式硬件
西城微科方案开发2 小时前
LED汽车打气泵PCBA方案
单片机·嵌入式硬件
Purple Coder3 小时前
51单片机(1)
单片机·嵌入式硬件·51单片机
微效电子3 小时前
晶豪代理商-ESMT代理商-ESMT台湾晶豪科技一级代理商
单片机
我先去打把游戏先3 小时前
Ubuntu虚拟机(服务器版本)Git卸载完全教程——彻底移除与清理配置
服务器·git·单片机·嵌入式硬件·物联网·ubuntu·51单片机