51单片机--矩阵键盘

发布者:WiseSage123最新更新时间:2018-11-19 来源: 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单片机之蓝牙控制风扇

推荐阅读最新更新时间:2024-03-16 16:17

嵌入式学习笔记1——51单片机之预备知识
1. TTL电平:高+5V(有电) 低0V(没电)。 2. RS232电平: 计算机串口 高-12V 低+12V, 所以单片机与计算机通信时要加电平转换芯片max232。 3. 概念:C51就是开发51单片机的C语言。 4. C51的数据类型扩展定义(即除了C中int 、char等之外): (1) sfr:特殊功能寄存器声明(一般情况编程时用不到) (2) sfr16:sfr的16位数据声明(一般情况编程时用不到) (3) sbit: 特殊功能位声明 (4) bit: 位变量声明 例:sfr SCON = 0x98; sfr16 T2 = 0xCC; sbit OV =PSW^2; sbit l
[单片机]
51单片机软件抗干扰的技术误区
单片机 中存在这样一种广泛流传的误解:在MCS-51系列单片机中,只要用指令使程序从起始地址开始执行,就可以复位单片机,摆脱干扰。通过一个简单的实验,揭示了软件复位的可靠方法。   有的单片机(如8098)有专门的复位指令,某些增强型MCS-51系统单片机虽然没有复位指令,但片内集成了WATCHDOG电路,故抗干扰也不成问题。而普及型MCS-51系列单片机(如8031和8032)既然无复位指令,又不带硬件WATCHDOS,如果没有外接硬件WATCHDOG电路,就必须采用软件抗干扰技术。常用的软件抗干扰技术有:软件陷阱、指令冗余、软件WATCHDOG等,它们的作用是在系统受干扰时能及时发现,再用软件的方法使系统复位。所谓软件复位
[单片机]
51单片机-LED部分(2)
8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。 C++ Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #include #include #define uchar unsigned char uchar x, temp; sbit buzzer = P2 ^ 3; void delayms(uchar z); void main() { temp = 0xfe; while(1) {
[单片机]
一种基于51单片机控制的数字视频混合器
近几年,数字电视技术发展很快,数字视频混合器可以将两路或多数数字视频信号按照一定的算法混合成一路或多路数字视频信号。作为数字视频信号的基本处理单元,该混合器在数字电视节目的编辑制作和播控传输系统中具有举足轻重的作用。 本文介绍的基于单片机控制的数字视频键控混合器具有以下特点:内含两级串联的键控混合器,可以在主信号中键两入两路附加数字信号,如时钟台标或各种字幕标识;可以远程遥控,也可现场按键控制;可以随时更新和保存系统配置,改变系统功能和技术参数;该系统稳定可靠,对掉电、死机等异常现象有自复位能力。 整个系统包括硬件和软件两部分,硬件包括数字混合部分和单片机控制部分。 1 数字混合部分 输入的数字信号有背景信号、键控信号和填
[单片机]
51单片机多机通信电路图及C语言程序
多机通信电路图 此处,U1作为主机,U2为从机1,U3为从机2。 多机通信C语言程序 (1)主机程序 #include #include #define _SUCC_ 0x0f//数据传送成功 #define _ERR_ 0xf0//数据传送失败 unsigned charTable ={0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; unsigned char Buff ; //数据缓冲区 unsigned char temp=0xff; sbit KEY1=P1^6; sbit KEY2=P1^7; //unsigned char addr; //延时1ms函数 void de
[单片机]
<font color='red'>51单片机</font>多机通信电路图及C语言程序
51单片机之定时器/计数器应用实例(方式0、1、2、3)
硬件:STC89C52RC 开发工具:Keil uVision4 对于刚接触单片机的同学来说可能会对定时器/计数器的应用很蒙圈,特别是初值的计算和各种定时方式的选择。下面希望能给你带来一个清晰的思路。 定时器:一般用于软件计时,给定时器设置一个时间,时间到了系统停止当前的工作跳转到事先定义好的定时器中断函数里,函数里可以做一些周期性的事情。 计数器:一般用于检测外来脉冲信号,给计数器设置一个次数,次数到了系统停止当前的工作跳转到事先定义好的计数器中断函数里,函数里做相应的事情。 先说一下相关的寄存器,也可以直接跳过,看后面的实例分析。 配置定时器或者计数器就是对相应的寄存器进行赋值,下面是相关的寄存器描述:
[单片机]
<font color='red'>51单片机</font>之定时器/计数器应用实例(方式0、1、2、3)
8051单片机的寄存器是什么样的
CPU中使用寄存器来临时存储信息,这些信息可以是要处理的数据,也可以是指向要获取的数据的地址。在8051单片机中,有一种数据类型是8位,从MSB(最高有效位)D7到LSB(最低有效位)D0。对于8 位数据类型,任何大于 8 位的数据类型都必须在处理之前分成 8 位块。 8051中使用最广泛的寄存器是 A(累加器)、B、R0-R7、DPTR(数据指针)和 PC(程序计数器)。所有这些寄存器都是 8 位的,除了 DPTR和 PC。 一、8051中的存储寄存器 我们将在这里讨论以下类型的存储寄存器: 1.累加器; 2.寄存器; 3.B寄存器; 4.数据指针 (DPTR); 5.程序计数器 (PC); 6.堆栈指针 (SP)。 (
[单片机]
80<font color='red'>51单片机</font>的寄存器是什么样的
基于8051单片机和SC1128芯片实现病房呼叫系统的设计
传统的病房呼叫系统普遍采用有线式,不仅布线安装繁琐、维护不便、利用率低,而且实时性差。虽然无线式呼叫系统没有布线问题,但它的可靠性差,而且无线电波会干扰其它医疗仪器设备,目前大多数医院不采用无线呼叫系统。 随着电力载波技术的发展,应用低压电力线作为传输媒质,采用扩频、数字编码、单片机控制等技术实现病房呼叫已成为可能。本文运用电力载波技术设计了一种病房呼叫系统。 1 病房呼叫系统的基本要求 临床求助呼叫是传送临床信息的重要手段,病房呼叫系统是病人请求值班医生或护士进行诊断或护理的紧急呼叫工具,可将病人的请求快速传送给值班医生或护士, 并在值班室的监控中心电脑上留下准确完整的记录,是提高医院和病室护理水平的必备设备之一。呼叫系
[单片机]
基于80<font color='red'>51单片机</font>和SC1128芯片实现病房呼叫系统的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved