3.4.3 按键与键盘矩阵的应用编程
1.应用电路
图3.21所示的为I/O口的基本输入/输出实验电路原理图,接口的安排是:P0口为输入口,输入开关的状态,也可将图3.19的按键电路替换图3.21的开关电路。P1和P2口是输出口,其中P1口控制6个数码管的哪一个点亮(位控),P2口控制数码管哪一段点亮。
如果将P0口改接矩阵键盘,则P0口高4位为输出口,控制键盘列线的扫描,P0口低4位为键盘行线状态的输入口,称为键输入口,P1和P2口不变。以下介绍键盘输入子程序的设计步骤,共分四步。
图3.21 I/O口的基本输入/输出实验电路原理图
如果将图3.19的按键电路替换图3.21的开关电路,则有以下步骤。
1)判定有无闭合键
扫描P0.4~P0.7,输出全为0,读P0.0~P0.3。若P0.0~P0.3全为1(键盘上行线为全高电平),则键盘上没有闭合键;若P0.0~P0.3不全为1,则有键处于闭合状态。
2)键盘去抖
判断出有键闭合后,延迟一段时间再判断键盘的状态,若仍有键闭合,则确认键盘有键按下,否则认为是键的抖动。
3)判断闭合键的键号
按照前面介绍的键扫描的方法,逐列输出低电平,再读入行值,由此判断所按的键号N=行首键号+列号。
4)键的一次闭合仅做一次处理
等待闭合键释放后再做处理。
2.应用内容
1)设计及要求
设计:用两步扫描判别法识别16个按键,并且将按键情况显示出来。
要求:将16个按键定义为0~9、+、-、×、÷、确认和取消。在此电路上实现可完成四则运算的计算器。
2)解析
键盘用于实现单片机应用系统中数据和控制命令的输入,键盘输入也是单片机应用系统中使用最广泛的一种输入方式。键盘输入的主要对象是各种按键或开关。这些按键或开关可以独立使用,也可以组合成键阵使用。
单片机中常用的按键式键盘可以分为两类:独立连接式和矩阵式。
独立连接式键盘是一种最简单的键盘,每个键独立接入一根数据输入线。
矩阵式键盘是指由若干个按键组成的开关矩阵。4行4列矩阵式键盘如图3.19所示。这种键盘适合采用动态扫描方式进行识别,即如果采用低电平扫描,则回送线必须被上拉为高电平;如果采用高电平扫描,则回送线必须被下拉为低电平。这种键盘的优点是使用较少的I/O端口线可以实现对较多键的控制。
键被按下时,与此键相连的行线电平将由与此键相连的列线电平决定,而列线电平在无键按下时处于高电平状态。如果让所有列线处于高电平,那么键按下与否不会引起行线电平的状态变化,始终是高电平。
3)参考程序
4×4矩阵键盘电路的键盘扫描程序流程图如图3.22所示。
图3.22 键盘扫描程序流程图
参考程序1如下。
参考程序2如下。