首页 理论教育 单片机实验指导书-矩阵键盘LED显示

单片机实验指导书-矩阵键盘LED显示

时间:2023-11-06 理论教育 版权反馈
【摘要】:实验图4-3单个接触式按键接线图答案是:GND,即表示测出的电压为0V。下面以4×4矩阵键盘为例讲解其工作原理和检测方法。实验图4-4所示为一个4×4的矩阵键盘电路连接图,一共是16个按键。实验图4-44×4矩阵键盘电路连接图5.按键抖动理论上讲,按键按下去后的电平应该如实验图4-5所示,实际上如实验图4-5所示。实验源程序实验仿真电路实验图4-6矩阵键盘实验仿真图思考题1.为什么要进行按键消抖?

单片机实验指导书-矩阵键盘LED显示

实验目的

(1)理解独立按键、矩阵按键的结构和工作原理。

(2)了解单片机C语言程序的设计和调试方法。

(3)掌握矩阵按键的检测方法。

实验仪器

单片机开发板、稳压电源、计算机。

实验原理

1.按键

实验图4-1所示为一个典型的接触式按键(又称轻触开关)。

实验图4-2所示为单个接触式按键内部结构图

实验图4-1 单个接触式按键

实验图4-2 单个接触式按键内部结构图

在实验图4-2中,初始不导通的线表示按键未被按下时的状态,称为初始状态;而初始导通的线却是永久导通的。所以取(1,2)、(1,4)、(3,2)、(3,4)四种组合,这四种组合都可以起到预期的开关作用。

2.按键电平的判定

如实验图4-3所示,当按键按下以后,请问这时用万用表测量导线上任何一处的电压,得到的结果是VCC还是GND的电压?

实验图4-3 单个接触式按键接线图

答案是:GND,即表示测出的电压为0V。因为导线上,两端电平的关系是一种类似于程序语言逻辑运算里面的“与”,即对于导线两端:有0即0,全为1才是1。

3.按键分类与检测

键盘分为编码键盘和非编码键盘。闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的键盘称为编码键盘,如计算机键盘;而靠软件编程来识别闭合键的键盘称为非编码键盘。在单片机组成的各种系统中,用得较多的是非编码键盘。非编码键盘又分为独立键盘和行列式键盘(即常说的矩阵键盘)。

单片机的I/O口既可输出也可输入,检测按键时用的是它的输入功能,我们把按键的一端接地,另一端与单片机的某个I/O口相连,开始时先给该I/O口赋一高电平,然后让单片机不断地检测该I/O口是否变为低电平。当按键闭合时,即相当于该I/O口通过按键与地相连,变成低电平。一旦程序检测到I/O口变为低电平,则说明按键被按下,然后执行相应的指令。

4.矩阵按键

独立键盘与单片机连接时,每一个按键都需要单片机的一个I/O口,若某单片机系统需要较多按键,用独立按键便会占用过多的I/O口资源。单片机系统中的I/O口资源往往比较宝贵,当用到多个按键时为了节省I/O口口线,我们可引入矩阵键盘。

下面以4×4矩阵键盘为例讲解其工作原理和检测方法。将16个按键排成4行4列,第一行将每个按键的一端连接在一起构成行线,第一列将每个按键的另一端连接在一起构成列线,这样便一共有4行4列共8根线,我们将这8根线连接到单片机的8个I/O口上,通过程序扫描键盘就可检测16个键。

实验图4-4所示为一个4×4的矩阵键盘电路连接图,一共是16个按键。我们照习惯称横为“行”,“竖”为列,那么5、6、7、8称为“行线”,1、2、3、4称为“列线”。要正确记住各个行列线各自对应的I/O。(www.xing528.com)

实验图4-4 4×4矩阵键盘电路连接图

5.按键抖动

理论上讲,按键按下去后的电平应该如实验图4-5(a)所示,实际上如实验图4-5(b)所示。在高低电平之间有一段锯齿一样的波形,这就是所谓的按键抖动。

实验图4-5 按键按下后的理想与实际电平情况

一般手动按下键然后释放,按键两片金属膜接触的时间大约为50 ms,从按下瞬间到稳定的时间为5~10 ms,从松开的瞬间到稳定的时间也为5~10 ms,如果我们在首次检测到键被按下后延时10 ms左右再去检测,这时干扰信号将不会被检测到,如果确实是有键被按下,则可确认。

当按键出现第一个电位变化,假设是高电位转变成低电位,那么我们就延长10 ms,10 ms以后,我们再次判断此时的电位状态是否为低电位。如果是低电位,那么就认为按键被按下了;如果是高电位,就认为是按键抖动。从低电位变成高电位时同理。这就是识别按键抖动的原理。

按键消抖方法分为硬件消抖和软件延时消抖两种方法。

(1)软件延时消抖。

消抖程序分为两大块:一个是主函数,处理开关状态;一个是延时函数。主函数中,先把开关采集端口置1,这是读取数据的前提条件,然后把需要采集的I/O状态转移给中间变量,接着判断此时的中间变量是否为零,也就是按键是否被按下,如果没有被按下,那就跳出,继续赋值,接着判断,直到判断为零。进入语句中,先延时一段时间,让抖动空过去,延时结束,再判断一次,由于此时程序还没运行结束,因此中间变量的值也没有实时切换,我们此时要判断按键实时状态是否为零,这就需要判断端口的实际值。若端口为零,就说明按键确实处于按下状态。

(2)硬件消抖。

①RS触发器消抖:为了消除按键的接触抖动,可在机械按键与被驱动电路间接入一个基本RS触发器。S'=0,R'=l,可得出A=l,A'=0。当按压按键时,S'=l,R'=0,可得出A=0,A'=1,改变了输出信号A的状态。

若由于机械按键的接触抖动,则R的状态会在0和1之间变化多次。若R=l,由于A=0,因此G2门仍然是“有低出高”,不会影响输出的状态。同理,当松开按键时,S端出现的接触抖动亦不会影响输出的状态。

②电容消抖:利用电容两端的电压不能突变的特性,将其并联在机械触点两端,消除接触抖动产生的毛刺电压,也可以实现硬件消抖。由于电容两端的电压不能突变,因此按键两端电压的变化平缓。

6.矩阵键盘扫描的原理和步骤

扫描矩阵键盘,即把某一条(只有一条)行线置为低电平,而列线全部置为输入方向,然后检测列线。如果检测到某一条列线是低电平,那么就表示位于这条列线与输出低电平的行线的交点处的按键被按下了。以这样的方法依次扫描16次,就可以确定16个按键中哪一个按键被按下了。当然这里也少不了用软件延时消除按键抖动的环节。

实验源程序

实验仿真电路(实验图4-6)

实验图4-6 矩阵键盘实验仿真图

思考题

1.为什么要进行按键消抖?消抖方法有哪些?

2.硬件消抖好还是软件消抖好?键值计算有哪些方法?

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈