0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机键盘检测与应用

倩倩 来源:电子开发网 2020-09-18 16:34 次阅读

键盘是单片机应用系统中重要的输入设备,是实现人机对话的纽带。键盘主要分编码键盘和非编码键盘两大类,其中键的开闭的识别由硬件编码器来实现的称为编码键盘,如计算机键盘。而靠软件编程来识别键的开闭的称为非编码键盘,单片机系统中常用的键盘为非编码键盘。

键盘都是由一个一个小按键构成的,按键实际上就是一个开关元件,单片机系统中常用的按键主要有自锁按键和非自锁按键,分别如图1、图2所示。

图1 自锁按键 图2 非自锁按键

非编码键盘通常又分为独立键盘和矩阵键盘两大类。所谓独立键盘是指按键在与单片机相连时,每一个按键都与一个单片机单片机的I/O口相连,如图3所示;而对于一些应用系统中若需要较多按键时,采用独立键盘的连接方法,则比较耗费单片机的I/O口,此时我们一般会用到矩阵键盘,如图4所示,16个按键排成4行4列,称为4X4矩阵键盘,如按独立按键法,需要16个I/O口,而按图4的接法只需要8个I/O.

图3 独立键盘

图4 4X4矩阵键盘

由于在单片机在应用系统中,更多的会用到独立键盘,加之两者的检测原理基本相似,所以这一节里我主要讲解独立键盘的检测原理及程序实现的方法。

1、 按键的检测原理

按键与单片机的连接如图5所示,按键的一端与地相连,另一端直接与单片机的I/O口相连。此时我们在程序中先给I/O口赋值高电平,然后不断的检测I/O口电平的变化。当按键没有被按下时,此I/O口的电平一直为高;当按键被按下时,由于按键的另一端直接与地相连,相当于低电平,此时我们从I/O口读出的即为高电平,程序一旦检测到I/O口由高电平变为低电平时,说明按键被按下,此时马上执行相应的动作,这就是按键检测的原理。

图5 按键与单片机连接图

2、 按键的抖动与消除

由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,与单片机I/O口相接的一端的电压会出现相应的变化,如图6所示。

图6 按键按下时电压的变化情况

从图6中我们可以看出,实际的电压波形在按下松手的时候都会出现一定的抖动,经过实验知道,这个一时间大概在5-10ms。所在在做单片机与按键相关的系统时必须考虑消抖的环节。按键消抖的方法有两种,一个是硬件方法 一个是软件的方法,而从节约成本和尽量简化硬件电路的角度出发,一般是采用在程序中加上消抖的方法实现,通常是采用延时的方法。具体的作法是:

检测出键闭合后执行一个延时程序,产生5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。后面会结合到程序进行讲解。

下面我写一个简单的程序,功能为:当一个键按下时,让一个发光二极管发光,我们先看下按键模块在实验板上的原理图,如图7和图8所示。

图7 发光二极管模块原理图

图8 按键模块原理图

例1 按键检测程序

//功能:当按下S8键时,L1灯发光,松手后,L1灯熄灭。相应程序如例1.

#include 《reg52.h》

#define uint unsigned int

#define uchar unsigned char

sbit D1=P1^0;

sbit S1=P3^4;

void main()

{

P3=0xff;

while(1)

{

if(S1==0)

delay(20);//消除按下时的抖动

if(S1==0)

{

D1=0;

while(!S1);//松手检测

delay(20);//消除松手时的抖动

}

else

D1=1;

}

}

例2 按键检测程序

//功能:当每按下S8键时,数码管自动加1,当加到F时又从零开始。

#include《reg52.h》

#define uint unsigned int

#define uchar unsigned char

sbit duan=P2^6;

sbit wei=P2^7;

sbit S1=P3^4;

uchar temp;

uchar code table[]=

{0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void delay(uint z )

{

uint x ,y;

for(x=z;x》0;x--)

for(y=110;y》0;y--);

}

void main()

{

P3=0xff;

wei=1;

P0=0xfe;

wei=0;

temp=0;

while(1)

{

if(S1==0)

{

delay(20);//消除按下时的抖动

if(S1==0)//

{

temp++;

if(temp==16)temp=0;

}

while(!S1);//松手检测,防止temp一次多加

delay(20);//消除松手时的抖动

while(!S1);

}

duan=1;

P0=table[temp];

duan=0;

}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6035

    文章

    44554

    浏览量

    634697
  • 电平
    +关注

    关注

    5

    文章

    360

    浏览量

    39883
  • 键盘
    +关注

    关注

    4

    文章

    859

    浏览量

    39647
收藏 人收藏

    评论

    相关推荐

    基于单片机的矩阵键盘检测案例

    /O端口资源,导致单片机与其它外部设备无法连接。在这种情况下,可以使用矩阵键盘,实现多个按键与单片机的连接,而且不浪费单片机的I/O端口资源。
    的头像 发表于 10-31 14:35 1249次阅读
    基于<b class='flag-5'>单片机</b>的矩阵<b class='flag-5'>键盘</b><b class='flag-5'>检测</b>案例

    如何实现基于单片机键盘检测

    键盘单片机与用户交互设备之一,用户通过键盘输入数据或命令到单片机。最简单的键盘仅有一个按键,复杂一些的
    的头像 发表于 10-31 14:39 1913次阅读
    如何实现基于<b class='flag-5'>单片机</b>的<b class='flag-5'>键盘</b><b class='flag-5'>检测</b>

    现在想学以下51单片机键盘检测,有木有相关资料啊?

    新人加入,好激动啊!现在想学以下51单片机键盘检测,有木有相关资料啊,,,拜求!
    发表于 10-27 16:58

    单片机键盘上的应用

    单片机键盘上的应用 键盘担负着向系统发出命令和查询系统工作状态的重任。由于各种单片机所提供的片内外资源不同,所以在进行键盘扩展时其硬件电
    发表于 03-29 14:34 39次下载

    单片机总线模式的键盘检测与液晶显示威廉希尔官方网站

    键盘和显示器是使用最频繁的外设,本文将通过Proteus仿真软件验证单片机总线模式的键盘检测与液晶显示威廉希尔官方网站 。
    发表于 03-28 15:26 12次下载

    单片机键盘扫描小实验

    单片机键盘扫描小实验
    发表于 01-04 11:30 0次下载

    单片机汇编键盘扫描程序

    单片机汇编键盘扫描程序
    发表于 10-16 09:34 0次下载

    单片机8x8矩阵键盘原理说明

    本文主要介绍了介绍基于51单片机接矩阵键盘原理以及单片机8x8矩阵键盘原理说明,另外还详细的附上了单片机8x8矩阵
    的头像 发表于 02-24 16:14 2.6w次阅读
    <b class='flag-5'>单片机</b>8x8矩阵<b class='flag-5'>键盘</b>原理说明

    单片机与显示器件及开关键盘的接口设计学习课件免费下载

    单片机系统显示及开关检测键盘输入是其基本功能。本章介绍单片机与显示器件、开关及键盘的接口设计与软件编程。
    发表于 10-10 16:34 16次下载
    <b class='flag-5'>单片机</b>与显示器件及开关<b class='flag-5'>键盘</b>的接口设计学习课件免费下载

    51单片机键盘检测原理

    一、独立键盘检测1、按键的检测原理单片机的I/O口既可以作为输出也可以作为输入使用,检测按键时用的是输入功能。把按键的一端接地,另一端与
    发表于 11-10 18:46 39次下载
    51<b class='flag-5'>单片机</b>的<b class='flag-5'>键盘</b><b class='flag-5'>检测</b>原理

    51单片机按键检测--独立按键与矩阵键盘

    按键,每个按键对应一个IO口,通过循环或者中断去检测,这种方法常用于按键个数较少得时候。如果按键的个数较多,每个按键都分配一个IO口,会占用大量的资源,所以就有了矩阵键盘。矩阵键盘是通过单片机
    发表于 11-12 11:06 15次下载
    51<b class='flag-5'>单片机</b>按键<b class='flag-5'>检测</b>--独立按键与矩阵<b class='flag-5'>键盘</b>

    PIC单片机矩阵键盘检测原理及实现

    PIC单片机矩阵键盘检测原理及实现
    发表于 11-16 11:51 2次下载
    PIC<b class='flag-5'>单片机</b>矩阵<b class='flag-5'>键盘</b><b class='flag-5'>检测</b>原理及实现

    PIC单片机矩阵键盘检测原理及实现

    PIC单片机矩阵键盘检测原理及实现
    发表于 11-16 12:51 7次下载
    PIC<b class='flag-5'>单片机</b>矩阵<b class='flag-5'>键盘</b><b class='flag-5'>检测</b>原理及实现

    单片机-键盘检测

    弹起断开按键与单片机的连接方式如下图所示 :从上图可以看出,理想波形与实际波形之间是有区别的,实际波形再按下和释放的瞬间都有抖动的现象,抖动时间的长短和按键的机械特性有关,一般...
    发表于 11-24 11:06 12次下载
    <b class='flag-5'>单片机</b>-<b class='flag-5'>键盘</b><b class='flag-5'>检测</b>

    矩阵键盘-单片机入门课件

    矩阵键盘-单片机入门课件
    发表于 03-18 11:12 0次下载