历史上的今天

今天是:2024年11月19日(星期二)

2018年11月19日 | 51单片机--矩阵键盘

发布者:WiseSage123 来源: eefocus关键字:51单片机  矩阵键盘 手机看文章 扫描二维码
随时随地手机看文章

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


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


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


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

1.jpg

矩阵键盘原理图


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


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


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


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


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


2.jpg


单片机矩阵键盘消除抖动


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


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


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


1、逐行扫描


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


2、行列扫描


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


具体代码实现如下:


1、行扫描:


3.jpg


单片机矩阵键盘行扫描


2、列扫描:


4.jpg


单片机矩阵键盘列扫描


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


5.jpg


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


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


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


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


代码如下:

6.jpg


单片机矩阵键盘组合键


大家对照代码仔细看一下就明白了。


关键字:51单片机  矩阵键盘 引用地址:51单片机--矩阵键盘

上一篇:51单片机--LED类编程技巧
下一篇:单片机项目:51单片机之蓝牙控制风扇

推荐阅读

德国高科技设备制造商 Manz 集团宣布成为法国工业集团 Compagnie de Saint-Gobain 的技术合作伙伴,开发了用于隔热玻璃表面处理的全新激光制程;此外激光专业大厂 TRUMPF GmbH + Co. KG 也参与了这项为期多年的项目。Manz 薄膜太阳能事业部长年以来累积的专业知识也将充分运用于 ACTILAZ™ 的实施。 ACTILAZ™ 使用“激光退火”,有效提高...
51单片机60s动态显示程序#include<reg52.h>#define uint unsigned int#define uchar unsigned charuchar code table[]={0xc0,0xf9,0xa4, 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};sbit gew=P2^1;sbit shiw=P2^0;sbit k2=P1^0;uchar num,num1=60,num2,shi,ge;void Init() ...
11月19日消息,今天,中兴手机官宣了屏下摄像头“超大杯”机型,中兴天机 AXON 20 至尊版,不过并没有明确具体发布日期。从官方放出的海报来看,中兴 AXON 20至尊版采用橙色后壳,背部有经典的 “AXON”标识,从字母压花来看,应该是采用了素皮材质。今年 9 月 1 日,中兴手机正式发布了全球首款屏下摄像手机——中兴天机 Axon 20 5G,这也是...
近日,据外媒报道,加拿大初创公司Cobionix宣布,他们研制出了全球首款能注射疫苗的机器人Cobi,其能以自主、无痛且无针头方式注射疫苗。据了解,Cobi是一款能够进行肌肉注射的机器人,由一个带有药瓶储存区的机械臂和一个与患者互动的屏幕组成。人们可以通过触摸屏在系统中登记,摄像头会录入登记者的身份证或是证明其已经预约接种疫苗或接收药物的证件。...

史海拾趣

问答坊 | AI 解惑

IM3、IIP3、OIP3等的计算

Pin:Input powerPout:Output powerIM3:3rd order intermodulation productIIP3:Input 3rd order intercept pointOIP3:Output 3rd order intercept pointG:GainP1dB:1dB&n ...…

查看全部问答∨

AT89c2051 中文资料

AT89c2051 中文资料…

查看全部问答∨

高频PCB学习资料

高频PCB学习资料…

查看全部问答∨

想找本已s3c44b0为例子的书入门,请推荐。

弄了块三星原厂的s3c44b0开发板,想找本书看下入门。…

查看全部问答∨

编译器的工作问题

问个基本问题:以S3C44B0X为例,在ADS编译环境下,编译器编译程序后自动将程序的代码和数据分开。代码和数据都放在FLASH里,。在启动程序44BINIT.S里,将数据段从FLASH拷贝SDRAM里,代码仍然留在FLASH里。 请问是这样的不? …

查看全部问答∨

触摸屏技术

本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 “伸出手臂,触摸世界”。即使是对工程师来讲,如此简单的模拟通话也因此马上变得去繁变简。但是,有时电话交流还是不够,在这种情况下,一图胜千言,所以有了界面友好的触摸屏。   想象一 ...…

查看全部问答∨

试用报告4-关于人脸检测的具体操作步骤

前些帖子介绍了人脸检测的一些相关的资料,下面这个帖子就具体步骤进行介绍: 要实现人脸检测必须从硬件和软件入手: 硬件方面: 1、在开始菜单中启动xilinx platform studio 11.1(因为本实验板附带的edk就是11版本的,大家可以到xilinx官网中 ...…

查看全部问答∨

我的定时器启动后先进一次中断

大家好 我用的stm32单片机,我已经做了其他可能的排除,最好确定 定时器使能后先进入一次中断。 我感觉应该是有些标志位没有清除,希望各位大侠帮我看看。 void TIM_Configuration(void) { TIM_TimeBaseInitTypeDef  TIM_TimeB ...…

查看全部问答∨

为什么要删我的帖子的!!!!!!!!

                                 我看见网上有公司能破解STM8了,我也正在用STM8,所以想在这问一下,今天发现帖子被删除了…

查看全部问答∨

matlab与ModelSim联合仿真

这篇文章自己感觉对仿真很有用,再次感谢原作者的分享!   1. Matlab产生数据用作Modelsim仿真     在FPGA进行算法验证的时候,经常需要输入仿真数据,这些数据可以用FPGA产生,但是如果数据产生过程很复杂的 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved