首页 > 其他分享 >【无标题】51系列单片机学习:矩阵按键

【无标题】51系列单片机学习:矩阵按键

时间:2024-12-24 22:55:29浏览次数:6  
标签:P1 MATRIX 51 无标题 Key 单片机 KEY 按键 Matrix

文章目录


前言

矩阵按键是一种通过行列交叉连接的按键阵列,可以节省单片机的IO口资源,用于实现多个按键的输入检测。以下是本文的简要介绍。


一、矩阵按键的硬件连接

1.将矩阵按键按照图1方式进行连接。
在这里插入图片描述
图1.矩阵按键硬件连接
2.将单片机IO口与排针JP18相连接。

二、工作原理

1.将矩阵按键通过逐行扫描和逐列检测的方法,判断某个按键是否被按下。
2.将4行4列的矩阵按键可以看成是4行且每行4个独立按键。如:令Y4=0,则当X1=0时,检测到按键“1”,当X2=0时,检测到按键“2”;当X3=0时,检测到按键“3”,当X4=0时,检测到按键“+”。同理,令Y3=0,Y2=0,Y1=0即可。
3.将将4行4列的矩阵按键可以看成是4列且每列4个独立按键。如:令X1=0,则当Y1=0时,检测到按键“1”,当Y2=0时,检测到按键“4”;当Y3=0时,检测到按键“7”,当Y4=0时,检测到按键“F1”。同理,令X2=0,X3=0, X4=0即可。
4.步骤2和3任选一种。

三、代码编写

采用枚举的模式实现矩阵按键的按键值定义。
参考代码如下:

/**
硬件连接:
1.矩阵按键接口与P1口相连
2.LED灯与P2口相连
实现功能:
1.设置矩阵按键值
2.当按下按键1/2/3/4时,分别实现点灯功能
*/
#include <REGX52.H>//头文件调用

void delay(unsigned int Xms);
unsigned char key_scan();

typedef enum //矩阵按键键值枚举
{
    MATRIX_KEY_NONE = 0, //无按键按下  
    MATRIX_KEY_ENTER,  //按键“确认”
    MATRIX_KEY_ESC,  //按键“返回”
    MATRIX_KEY_DEC,  //按键“-”
    MATRIX_KEY_ADD,  //按键“+”
    MATRIX_KEY_1,
    MATRIX_KEY_2,
    MATRIX_KEY_3,
    MATRIX_KEY_4,
    MATRIX_KEY_5,
    MATRIX_KEY_6,
    MATRIX_KEY_7,
    MATRIX_KEY_8,
    MATRIX_KEY_9,
    MATRIX_KEY_F1,
    MATRIX_KEY_F2,
    MATRIX_KEY_F3,
}MATRIX_KEY_Enum;

MATRIX_KEY_Enum Matrix_Key_Value;

void main()
{
	MATRIX_KEY_Enum state;
	while(1)
	{
		state=key_scan();
		switch(state)
		{
			case MATRIX_KEY_1:P2=0x00;break;
			case MATRIX_KEY_2:P2=0xff;break;
			case MATRIX_KEY_3:P2=0xf0;break;
			case MATRIX_KEY_4:P2=0x0f;break;
			default:break;		
		}
	}
}

void delay(unsigned int Xms)
{
	unsigned int i,j;
	for(i=Xms;i>0;i--)
		for(j=124;j>0;j--);
}

unsigned char key_scan()
{
	P1=0xfe;
	if(P1_7==0) delay(20);Matrix_Key_Value=MATRIX_KEY_1;
	if(P1_6==0) delay(20);Matrix_Key_Value=MATRIX_KEY_4;
	if(P1_5==0)	delay(20);Matrix_Key_Value=MATRIX_KEY_7;
	if(P1_4==0)	delay(20);Matrix_Key_Value=MATRIX_KEY_F1;
	P1=0xfd;
	if(P1_7==0) delay(20);Matrix_Key_Value=MATRIX_KEY_2;
	if(P1_6==0) delay(20);Matrix_Key_Value=MATRIX_KEY_5;
	if(P1_5==0)	delay(20);Matrix_Key_Value=MATRIX_KEY_8;
	if(P1_4==0)	delay(20);Matrix_Key_Value=MATRIX_KEY_F2;
	P1=0xfb;
	if(P1_7==0) delay(20);Matrix_Key_Value=MATRIX_KEY_3;
	if(P1_6==0) delay(20);Matrix_Key_Value=MATRIX_KEY_6;
	if(P1_5==0)	delay(20);Matrix_Key_Value=MATRIX_KEY_9;
	if(P1_4==0)	delay(20);Matrix_Key_Value=MATRIX_KEY_F3;
	P1=0xf7;
	if(P1_7==0) delay(20);Matrix_Key_Value=MATRIX_KEY_ADD;
	if(P1_6==0) delay(20);Matrix_Key_Value=MATRIX_KEY_DEC;
	if(P1_5==0)	delay(20);Matrix_Key_Value=MATRIX_KEY_ESC;
	if(P1_4==0)	delay(20);Matrix_Key_Value=MATRIX_KEY_ENTER;	
	return Matrix_Key_Value;
}

总结

实现了矩阵按键按键值的定义,通过枚举的方式,对矩阵按键值有更清晰的显示,便于后期维护。

标签:P1,MATRIX,51,无标题,Key,单片机,KEY,按键,Matrix
From: https://blog.csdn.net/weixin_52748093/article/details/144703327

相关文章

  • 单片机实物成品-007 汽车防盗系统(代码+硬件+论文)
    汽车尾气监测系统(温度+震动传感器+红外热释电+GPS+三个指示灯+蜂鸣器+正常模式+防盗模式+wifi传输控制+送APP源码 )把该系统划分为两个不同设计主体,一方面为硬件控制主体,通过C语言来编码实现,以STM32开发板为核心控制器,利用多传感融合技术,通过感应车辆是否发生震动行为、是否......
  • 410、基于51单片机的温控电机仿真设计(正反转,加减速,LCD1602,独立按键)
    毕设帮助、开题指导、技术解答(有偿)见文末。目录一、设计功能二、proteus仿真三、原理图四、程序源码五、资料包括一、设计功能单片机读取温度传感器数据,获得温度,根据温度值对电机进行控制:1、设置4个温度值:T1、T2、T3、T4;通过按键修改设定温度2、温度低于T1,电机全......
  • 405、基于51单片机的洗衣机仿真设计(数码管,强洗,弱洗,漂洗;丝质,棉质,化纤)
    毕设帮助、开题指导、技术解答(有偿)见文末。目录一、设计功能二、proteus仿真三、原理图四、程序源码五、资料包括一、设计功能洗衣机控制面板设计。1、用直流电机的转速表征三种不同洗衣方式,弱洗、强洗、漂洗; 2、实现最长10分钟定时; 3、用三个独立按键设置......
  • 404、基于51单片机的大棚控制仿真设计(温湿度CO2,DHT11,LCD1602)
    毕设帮助、开题指导、技术解答(有偿)见文末。目录一、设计功能二、proteus仿真三、原理图四、程序源码五、资料包括一、设计功能大棚温湿度、二氧化碳含量控制系统:1、检测温湿度(DHT11)2、检测二氧化碳浓度(电位器代替)3、设置上下限,如果参数过限,启动控制自动调控大......
  • 402、基于51单片机的洗衣机仿真设计(数码管,2模式,中断)
    毕设帮助、开题指导、技术解答(有偿)见文末。目录一、设计功能二、proteus仿真三、原理图四、程序源码五、资料包括一、设计功能二、proteus仿真三、原理图四、程序源码五、资料包括需要完整的资料可以点击下面的名片,找我要资源压缩包的百度网......
  • 409、基于51单片机的温度控制,简易空调仿真设计(单阀值,LCD,独立按键)
    毕设帮助、开题指导、技术解答(有偿)见文末。目录一、设计功能二、proteus仿真三、原理图四、程序源码五、资料包括一、设计功能简易空调,温度控制系统1、系统启停由按键设置2、系统处于启动状态时,检测到室内有人,那么温度低于阀值启动制热,高于阀值启动制冷3、LCD1602......
  • 计算机毕业设计—35514 springboot小区物业服务平台(源码免费领)
    摘 要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用springboot框......
  • 聊一下新电脑-macbook air 15寸 m2 16+512g
    购买于转转二手商城售价:6250配置:16+512gm2芯片15寸已经过保了,激活日期是去年的12月,差不多刚好一年电池健康:100%算是保养得很好的了!磁盘读写也不多:整体橙色95新以上!我使用时间机器去换机的,整个过程十分的流畅!除了换完之后开机有点卡顿,不知道是网络还是什......
  • ssm基于项目驱动的课程管理系统1u51b程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容项目名称:基于项目驱动的课程管理系统一、项目背景随着教育信息化的不断发展,传统的教学管理模式已难以满足现代教育的需求。课程管理作为教育管理......
  • STM32单片机芯片与内部39 DAC 数据手册 寄存器
    目录一、DAC寄存器1、DAC控制寄存器(DAC_CR)2、DAC软件触发寄存器(DAC_SWTRIGR)3、DAC通道1的12位右对齐数据保持寄存器(DAC_DHR12R1)4、DAC通道1的12位左对齐数据保持寄存器(DAC_DHR12L1)5、DAC通道1的8位右对齐数据保持寄存器(DAC_DHR8R1)6、DAC通道2的......