抖音资讯

douyinzx

矩阵键盘原理图及代码(关于矩阵按键的工作原理)

iseeyu2年前 (2024-05-04)抖音资讯123

最近回老家一趟,再加上要组织一个游戏、还要上课写作业,耗费了好大精力,更新的有点晚,大家见谅哈。

这次我接着上次的说,讲一下 复合按键矩阵键盘。

说单片机键盘之前先说一下上一篇文章遇到的囧事:

(七)的文章标签

我感觉好奇怪啊,我明明写的是单片机教程啊,为什么会有上面的标签...郁闷...( ˇ.ˇ )...关键是这个标签不是由作者贴上去,好气啊!!所以这次我就故意强调一下侧重点哈。

先说矩阵键盘,因为我写的组合键代码是在矩阵键盘的基础上写的,当然在独立按键上写组合键更简单一些。所以当你矩阵键盘的组合键会写的时候,你在独立按键上的组合键也就会写了。

矩阵键盘的检测和独立按键有很大的区别,但是究其本质还是一样的。

先看一下矩阵键盘的原理图:

矩阵键盘原理图

由于矩阵键盘中每一个按键的两个接线口都是接在IO口上的,所以我们就必须在软件里面控制单片机在每个独立按键的两端加上不同的电平。

【注】:独立按键很简单,直接在一端接地就行了。

从上面的原理图中可以看出 P1 口的高四位控制 行,第四位控制 列;所以我们就可以写 P1 = 0X0F 或者写 P1 = 0XF0,这样就实现了在每一个独立按键两端加上不同的电平。

代码编写流程和独立按键一样,第一步要先检测到按键按下,根据上面的原理图,矩阵键盘检测按键是否按下只要给 P1 口赋值 0X0F,然后检测 P1 口的值是否还是 0X0F即可。

之后就要消除抖动,消除抖动的方法还是一样,延时一段时间即可,如图:

单片机矩阵键盘消除抖动

之后就判断具体是哪个按键按下就行了。

【注】矩阵键盘复杂就是复杂在这里。

判断到底是哪个按键按下的思路有两种:

1、逐行扫描

逐行扫描就是说先扫描第一行中的哪个按键按下了,如果没有再扫描第二行,看一下是不是第二行里的某个按键按下了,如果还没有找到按下的那个按键,那么就继续扫描第三行、第四行,知道找出哪个按键被按下了。这个代码实现比较简单,而且这种扫描方法不怎么常用,效率不高,所以这里我就不写了。

2、行列扫描

行列扫描就是说先扫描所有的行,确定是哪一行的按键被按下了,之后再扫描所有的列,找出哪一列有按键被按下了,这样只要扫描两次就可以确定出到底是哪个按键被按下了。

具体代码实现如下:

1、行扫描:

单片机矩阵键盘行扫描

2、列扫描:

单片机矩阵键盘列扫描

最后别忘了按键的松开检测:

单片机矩阵键盘按键松开检测

这样矩阵键盘的编写就说完了,下面说组合,写第七篇的时候我给它起名字叫复合按键,现在觉得不太好,要不就叫组合键吧。

组合键就是说当按住一个按键的同时再按另一个按键的时候,会有不同的效果。比如:Ctrl+C是复制、Shift+数字键可以敲出特殊字符等等。

代码编写思路就是:当按住第一个按键的时候,只要这个按键不松开就一直检测能够和它组合的按键,根据按键的不同组合实现不同的效果。

代码如下:

单片机矩阵键盘组合键

大家对照代码仔细看一下就明白了,下面我把我下的代码放出来,大家可以复制到自己的软件里面运行一下看看效果:

unsigned int MatrixKey()//矩阵键盘扫描函数,采用行(ROW)列(Column)扫描

{

//由原理图知:四列分别是:P1^4, P1^5, P1^6, P1^7

//四行分别是:P1^0, P1^1, P1^2, P1^3,即0X列行

//一般的矩阵键盘按键检测

//先初始化IO口:

MatrixKeyValue = 0xf0;

if (MatrixKeyValue != 0xf0)//检测是否有按键按下

{

delay(10);

if (MatrixKeyValue != 0xf0)

{

MatrixKeyValue = 0xf0;//扫描列,把行置为低电平

switch (MatrixKeyValue)

{

case (0xE0): Key = 0;

break;

case (0xD0): Key = 1;

break;

case (0xB0): Key = 2;

break;

case (0x70): Key = 3;

break;

}

MatrixKeyValue = 0x0f;//扫描行,把列置为低电平

switch (MatrixKeyValue)

{

case (0x0E): Key += 0;

break;

case (0x0D): Key += 4;

break;

case (0x0B): Key += 8;

break;

case (0x07): Key += 12;

break;

}

//检测按键是否松开

while ( MatrixKeyValue != 0x0f );

}

}

/*

//下面的是组合键的编程

if (MatrixKeyValue != 0xf0)//检测是否有按键按下

{

delay(10);

if (MatrixKeyValue != 0xf0)

{

MatrixKeyValue = 0xf0;//扫描列,把行置为低电平

switch (MatrixKeyValue)

{

case (0xE0): Key = 0;

break;

case (0xD0): Key = 1;

break;

case (0xB0): Key = 2;

break;

case (0x70): Key = 3;

break;

}

MatrixKeyValue = 0x0f;//扫描行,把列置为低电平

switch (MatrixKeyValue)

{

case (0x0E): Key += 0;

break;

case (0x0D): Key += 4;

break;

case (0x0B): Key += 8;

break;

case (0x07): Key += 12;

break;

}

//检测按键是否松开

while ( MatrixKeyValue != 0x0f )

{

if(Key == 0)//确定按下的是第一个键

{

//当确定按下的是第一个键的时候,检测有没有组合键按下

if (MatrixKeyValue != 0x0f)//检测是否有按键按下

{

delay(10);

if (MatrixKeyValue != 0x0f)

{

MatrixKeyValue = 0xf0;//扫描列,把行置为低电平

if (MatrixKeyValue == 0xC0)//第一、二列

{

MatrixKeyValue = 0x0f;//扫描行,把列置为低电平

if (MatrixKeyValue == 0x0E)//第一行

{

//组合键效果:

Key = 9;

}

}

}

}

}

if (Key == 0)

{

MatrixKeyValue = 0x0f;

}

}

}

}

*/

return Key;

}

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/45814.html

相关文章

安徽快手广告如何做?安徽快手广告上线时间?

安徽快手广告如何做?安徽快手广告上线时间?

在移动互联网时代,快手这个短视频平台成为了许多品牌和企业的首选广告投放平台,而安徽快手广告则致力于为安徽地区的商家提供全面覆盖、专业化的营销解决方案。下文将详细介绍安徽快手广告如何做和上线时间。 一、安徽快手广告如何做? 1. 确定广告目标:在开展广告投放前,安徽快手广告会与客户沟通,确定广...

5月抖音电商带货榜

5月抖音电商带货榜

5月横跨劳动节、母亲节和520几个重要节点,抖音生态蓬勃发展。消费者购买意愿增强,直播销量突破10亿,销售额超500亿,多位主播带货转化翻倍,其中防蚊贴和洗衣凝珠成当月热销商品,除此之外,《浪姐3》的播出也将甜心教主王心凌频频推上热搜,带出了一大批“王心凌男孩”。上个月有哪...

抖音直播公会登录网站是什么(抖音工会开放平台官网登录)

公会,存在于平台与主播之间的桥梁,也就是说明星和经纪公司一个意思。这样大家就大概明白什么意思了吧,工会不属于直播平台任何一个部门,主要通过签约主播、整合圈内资源,进行礼物抽成等获利,那想加入抖音直播工会,应该怎么加入呢?接下来小编就给大家讲一下,讲重点之前呢,我先给大家简单介绍一下工会和MCN...

王通·抖音SEO落地实战班,手手带你做好音抖SEO

王通·抖音SEO落地实战班,手手带你做好音抖SEO

需要课程关注公众号【优学社课堂】获取王通·抖音落地实战班,手手带你做好音抖SEO,课程位置:2022/525王通·落地实战班,手手带你做好音抖SEO - 优学社课堂王通·抖音SEO落地实战班,手手带你做好音抖SEO,课程位置:2022/525抖音的搜索引擎的搜索量越来越大,...

抖音音乐怎么保存到本地音乐(把视频里的音乐提取成音频)

抖音音乐怎么保存到本地音乐(把视频里的音乐提取成音频)

抖音添加音频,多数人折腾8小时不成功,因为他们没找到窍门!抖音,现在很火,有不少人玩抖音。玩抖音,少不了配乐,那么如何添加原创音乐?有网友说:折腾8个小时,还是添加不了,这是因为没找到窍门!抖音剪辑一般是用剪映完成,其添加原创音乐和添加音频的步骤是一样的。  ...

如何剪切视频中的一部分(手机视频正确裁剪多余部分的方式)

如何剪切视频中的一部分(手机视频正确裁剪多余部分的方式)

随着新媒体时代的到来,刷短视频逐渐取代了大家日常的娱乐方式,并且它的种类也非常丰富,有记录生活的vlog、游戏中的精彩瞬间合集、好物测评、亦或是情景短剧等等。但众所周知,呈现在我们眼前的视频是经历过许多道加工程序的,而剪辑就是重中之重。 不过这对于刚踏入这方面领域的小伙伴有些难度,而且现在市...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片