单片机独立按键和矩阵键盘概念及原理

发布者:TechVoyager最新更新时间:2018-11-19 来源: eefocus关键字:单片机  独立按键  矩阵键盘 手机看文章 扫描二维码
随时随地手机看文章

 一、基本知识


1.按键分类与输入原理


按键按照结构原理科分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关灯;另一类是无触点式开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。


在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其他按键都是以开关状态来设置控制功能或输入数据的。当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能,键信息输入时与软件结构密切相关的过程。


对于一组键或一个键盘,总有一个接口电路与CPU相连。CPU可以采用查询或中断方式了解有无将按键输入,并检查是哪一个按键按下,将该键号送人累加器,然后通过跳转指令转入执行该键的功能程序,执行完成后再返回主程序。


2.按键结构与特点


微机键盘通常使用机械触点式按键开关,其主要功能式把机械上的通断转换为电气上的逻辑关系。也就是说,它能提供标准的TTL逻辑电平,以便于通用数字系统的逻辑电平相容。机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定的时间触点机械抖动,然后其触点才稳定下来。其抖动过程如下图1所示,抖动时间的长短与开关的机械特性有关,一般为5-10ms。在触点抖动期间检测按键的通与断,可能导致判断出错,即按键一次按下或释放错误的被认为是多次操作,这种情况是不允许出现的。为了克服你、按键触点机械抖动所致的检测误判,必须采取消抖措施。按键较少时,可采用硬件消抖;按键较多式,采用软件消抖。


1.png 

图1 按键触点机械抖动


(1)按键编码


一组按键或键盘都要通过I/O口线查询按键的开关状态。根据键盘结构的不同,采用不同的编码。无论有无编码,以及采用什么编码,最后都要转换成为与累加器中数值相对应的键值,以实现按键功能程序的跳转。


(2)键盘程序


一个完整的键盘控制程序应具备以下功能:


a.检测有无按键按下,并采取硬件或软件措施消抖。


b.有可靠的逻辑处理办法。每次只处理一个按键,期间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序。


c.准确输出按键值(或键号),以满足跳转指令要求。


3.独立按键与矩阵键盘


(1)独立按键


单片机控制系统中,如果只需要几个功能键,此时,可采用独立式按键结构。


独立按键式直接用I/O口线构成的单个按键电路,其特点式每个按键单独占用一根I/O口线,每个按键的工作不会影响其他I/O口线的状态。独立按键的典型应用如图所示。独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一个I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。独立按键如图2所示。


2.png 

图2 独立键盘


独立按键的软件常采用查询式结构。先逐位查询没跟I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。


(2)矩阵键盘


单片机系统中,若使用按键较多时如电子密码锁、电话机键盘等一般都至少有12到16个按键,通常采用矩阵键盘。


矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。


矩阵键盘的工作原理


最常见的键盘布局如图3所示。一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式,4*4矩阵键盘的内部电路如图4所示。


3.png 

图3 矩阵键盘布局图

4.png 

图4 矩阵键盘内部电路图


当无按键闭合时,P3.0~P3.3与P3.4~P3.7之间开路。当有键闭合时,与闭合键相连的两条I/O口线之间短路。判断有无按键按下的方法是:第一步,置列线P3.4~P3.7为输入状态,从行线P3.0~P3.3输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,行线轮流输出低电平,从列线P3.4~P3.7读入数据,若有某一列为低电平,则对应行线上有键按下。综合一二两步的结果,可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。


识别按键的方法很多其中,最常见的方法是扫描法


按键按下时,与此键相连的行线与列线导通,行线在无按键按下时处在高电平。如果所有的列线都处在高电平,则按键按下与否不会引起行线电平的变化,因此必须使所有列线处在电平。这样,当有按键按下时,改键所在的行电平才回由高变低。才能判断相应的行有键按下。


独立按键数量少,可根据实际需要灵活编码。矩阵键盘,按键的位置由行号和列号唯一确定,因此可以分别对行号和列号进行二进制编码,然后两值合成一个字节,高4位是行号,低4位是列号。


4.键盘的工作方式


对键盘的响应取决于键盘的工作方式,键盘的工作方式应根据实际应用系统中的CPU的工作状况而定,其选取的原则是既要保证CPU能及时响应按键操作,又不要过多占用CPU的工作时间。通常键盘的工作方式有三种,编程扫描、定时扫描和中断扫描。


(1)编程扫描方式


编程扫描方式是利用CPU完成其它工作的空余时间,调用键盘扫描子程序来响应键盘输入的要求。在执行键功能程序时,CPU不再响应键输入要求,直到CPU重新扫描键盘为止。


(2)定时扫描方式


定时扫描方式就是每隔一段时间对键盘扫描一次,它利用单片机内部的定时器产生一定时间(例如10ms)的定时,当定时时间到就产生定时器溢出中断。CPU响应中断后对键盘进行扫描,并在有按键按下时识别出该键,再执行该键的功能程序。


(3)中断扫描方式


上述两种键盘扫描方式,无论是否按键,CPU都要定时扫描键盘,而单片机应用系统工作时,并非经常需要键盘输入,因此,CPU经常处于空扫描状态。


为提高CPU工作效率,可采用中断扫描工作方式。其工作过程如下:当无按键按下时,CPU处理自己的工作,当有按键按下时,产生中断请求,CPU转去执行键盘扫描子程序,并识别键号。


关键字:单片机  独立按键  矩阵键盘 引用地址:单片机独立按键和矩阵键盘概念及原理

上一篇:真干货!从51到stm32开发入门
下一篇:51单片机程序下载、ISP及串口基础知识

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

一种基于SE8510的MCU供电问题解决方案
1.基于SE8510的反激式隔离电源设计 图1是SE8510反激式隔离电源系统原理图,SE8510是离线式隔离原边控制反激LED驱动控制IC.SE8510 使用了一个坚固的高压隔离工艺能够承受一个输入电压达450 v的冲击,具有8-450V的宽输入电压范围。因此SE8510可以通过主线输入电压直接驱动,简化变压器的设计过程。具有准确的LED调节功能,PWM 调节控制,开短路保护,过温保护等多功能。使整体应用设计比以往的方案设计变的更加简单。 图1:SE8510反激式隔离电路图 2.支持PWM调节输出电流,改变LED亮度 PWM调光通过PIN DIM加一个低频方波信号就可以实现。当PWM信号为零,门驱动器是关闭的,
[单片机]
一种基于SE8510的<font color='red'>MCU</font>供电问题解决方案
PC机与多MCS-51单片机间的串行通信硬件设计
1 引 言   在测控系统和工程应用中,常遇到多项任务需同时执行的情况,因而主从式多机分布式系统成为现代工业广泛应用的模式。它们大多由IBM-PC微机和MCS-51单片机组成。单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表、家用电器方面都有广泛的应用。同时,IBM-PC机正好补充单片机人机对话和外围设备薄弱的缺陷。各单片机独立完成数据采集处理和控制任务,同时通过通信接口将数据传给PC机,PC机将这些数据进行处理、显示或打印,把各种控制命令传给单片机,以实现集中管理和最优控制。   故IBM-PC机(上位机)与各MCS-51单片机(下位机)之间的通信显得尤其重要。本文主要
[单片机]
PC机与多MCS-51<font color='red'>单片机</font>间的串行通信硬件设计
STC89C52单片机——串口发送程序1
/*----------------------------------------------- 名称:串口通信 编写:LZM 日期:2015.05 修改:无 内容:连接好串口波特率设置为9600,无奇偶校验 晶振11.0592MHz 接上串口,可以接收到自己发送的字符 ------------------------------------------------*/ #include reg52.h //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 /****************************************************
[单片机]
STC89C52<font color='red'>单片机</font>——串口发送程序1
如何利用STM32单片机发送字符串
一、STM32有自己的字符发送函数。 void PC_SendChar(uint8_t DataToSend) { USART_SendData (USART1 ,DataToSend); while(USART_GetFlagStatus (USART1 ,USART_FLAG_TC )!=SET ); } 二、发送字符串函数是在字符发送函数的基础上编写的 void PC_SendString(uint8_t *str) { while(*str) { PC_SendChar (*str); str++; } } 三、发送字符串示例 PC_SendString((u8*) Welcome to the NDIR wo
[单片机]
基于AT89C2051单片机的无线门铃报警器
本章向网友介绍一款集无线门铃和无线防盗报警器于一身的无线门铃报警器的制作,由于采用了AT89C2051单片机作为中央处理芯片,使得该系统的功能扩展比较方便,对于整个系统如需改变某种设置,只要更改相应的软件即可。在本设计中,我们将发射器发送的数据进行编码,只有收到与接收机配套的遥控器发射的信号时,接收机才会做出反应。当有人按门铃时,系统播放动听的音乐声,当需要作为防盗报警器用时,只要按动手中的遥控器将报警器设置成布防状态,此时报警器“嘟、嘟”响两声后便进入布防状态,这时只要有人在红外线探头监控范围内走过时,系统就发出响亮的110警车报警声。   一、硬件设计   电路原理图如下图所示,主要由无线接收、数据解码、数据处理、报警电路
[单片机]
基于AT89C2051<font color='red'>单片机</font>的无线门铃报警器
STM8单片机工程师之路三-.C和.H头文件的区别
我是学习个单片机的笨蛋一枚,今天我终于了解了一点点变编程的思想 明白了一些之前不懂得东西,以此记录我的单片机工程师之路。仅仅适用于初学者。 首先我就是世界上最笨蛋得菜鸟, 以下只是我自己的理解!!!!望高手给予批评! 适用于分块模块中 1. XX.c 文件是干什么的? 答:声明变量。写能够实现功能的函数。 2. XX.h 文件是干什么的? 答:链接.c文件中的函数名或者变量名。 编程流程大致如下: main.c文件执行 找.h文件函数名或者变量名 找对应的.C文件中的函数。 XXX.h 文件 #ifndef _XXX_H_ #define _XXX_H_ extern 函数名; extern 变量名; ... ...
[单片机]
单片机驱动的发光二极管做的数码管时钟
我是 电子制作爱 好者,最近从网上看到这款单片机驱动的发光二极管做的数码管时钟,作者:whw8099,以下是作者的介绍“以前做的数码管时钟,总觉得太小了,远处看不清,就用发光二极管自己制作了一个数码管,这样就亮多了。技术的含量不是很高,但是费功夫,单片机程序是在书上看到的,作了一些小修改。硬件中没有用DS1302,单片机晶振用12M(程序以12M晶振进行计算的),走时比用DS1302还要准。”特此收集转载。 接口: 数码管:P0^0~P0^7 位选: P2^0~P2^3 设置键 P1^5~P1^7(短按:设置显示时间,长按:设置闹钟时间) 加1键 P1^6 减1键 P1^7 Beep P3^7 //作
[单片机]
<font color='red'>单片机</font>驱动的发光二极管做的数码管时钟
ST低成本闪存MCU定价低于50美分
  意法半导体推出一系列低价格的闪存微控制器(MCU),新产品的目标应用是电动自动行车(ebike)、空调、小家电、传感器等注重成本的产品。ST7FOX系列产品包含多款不同型号的产品,每款产品主要差别在于片上闪存密度不同(2KB到8KB)和引脚数量不同(8支到32支)。所有产品的定价都低于50美分(0.50美元)的重要价格门槛。   新产品属于ST7微控制器系列,基于一个工业标准的8位体系架构,通过简化功能实现了极低的产品单价目标。ST7FOX的电源电压大约+5V (上下浮动10%),芯片内含有一个灵活的RC振荡器,能够在实际产品应用中调整。   CISC (复杂指令集计算机)架构十分有利于生成与该系列产品的小存储密度匹配的精
[焦点新闻]
ST低成本闪存<font color='red'>MCU</font>定价低于50美分
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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