推广 热搜: PLC  PLC编程  电子  自动  控制  LED  步进电机  机器人  AT89S51  控制器 

单片机矩阵式键盘的编程方法 - 单片机

   日期:2016-04-23     浏览:465    评论:0    
核心提示:单片机系统中,若使用按键较多时,通常采用矩阵式(也称行列式)键盘。   1.矩阵式键盘的结构及原理   矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上,其结
 单片机系统中,若使用按键较多时,通常采用矩阵式(也称行列式)键盘。   1.矩阵式键盘的结构及原理   矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上,其结构如图所示。 由图可知,一个 4 × 4 的行、列结构可以构成一个含有 16 个按键的键盘,显然,在按键数量较多时,矩阵式键盘较之独立式按键键盘要节省很多 I/O 口。

  矩阵式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻接到+ 5V 上。当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连的列线电平决定。这是识别按键是否按下的关键。然而,矩阵键盘中的行线、列线和多个键相连,各按键按下与否均影响该键所在行线和列线的电平,各按键间将相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。   2.矩阵式键盘按键的识别   识别按键的方法很多,其中,最常见的方法是扫描法。下面以图中 8 号键的识别为例来说明扫描法识别按键的过程。    按键按下时,与此键相连的行线与列线导通,行线在无键按下时处在高电平。显然,如果让所有的列线也处在高电平,那么,按键按下与否不会引起行线电平的变化,因此,必须使所有列线处在低电平。只有这样,当有键按下时,该键所在的行电平才会由高电平变为低电平。 CPU 根据行电平的变化,便能判定相应的行有键按下。 8 号键按下时,第 2 行一定为低电平。然而,第 2 行为低电平时,能否肯定是 8 号键按下呢?    回答是否定的,因为 9 、 10 、 11 号键按下,同样会使第 2 行为低电平。为进一步确定具体键,不能使所有列线在同一时刻都处在低电平,可在某一时刻只让一条列线处于低电平,其余列线均处于高电平,另一时刻,让下一列处在低电平,依此循环,这种依次轮流每次选通一列的工作方式称为键盘扫描。采用键盘扫描后,再来观察 8 号键按下时的工作过程,当第 0 列处于低电平时,第 2 行处于低电平,而第 1 、 2 、 3 列处于低电平时,第 2 行却处在高电平,由此可判定按下的键应是第 2 行与第 0 列的交叉点,即 8 号键。   3.键盘的编码   对于独立式按键键盘,因按键数量少,可根据实际需要灵活编码。对于矩阵式键盘,按键的位置由行号和列号惟一确定,因此可分别对行号和列号进行二进制编码,然后将两值合成一个字节,高 4 位是行号,低 4 位是列号。如图 7.5 中的 8 号键,它位于第 2 行,第 0 列,因此,其键盘编码应为 20H 。采用上述编码对于不同行的键离散性较大,不利于散转指令对按键进行处理。因此,可采用依次排列键号的方式对按排进行编码。以图 7.5 中的 4 × 4 键盘为例,可将键号编码为: 01H 、 02H 、 03H 、 … 、 0EH 、 0FH 、 10H 等 16 个键号。编码相互转换可通过计算或查表的方法实现。   4.键盘的工作方式   对键盘的响应取决于键盘的工作方式,键盘的工作方式应根据实际应用系统中 CPU 的工作状况而定,其选取的原则是既要保证 CPU 能及时响应按键操作,又不要过多占用 CPU 的工作时间。通常,键盘的工作方式有三种,即编程扫描、定时扫描和中断扫描。   编程扫描方式   编程扫描方式是利用 CPU 完成其它工作的空余时间,调用键盘扫描子程序来响应键盘输入的要求。在执行键功能程序时, CPU 不再响应键输入要求,直到 CPU 重新扫描键盘为止。 键盘扫描程序一般应包括以下内容:   (1) 判别有无键按下。   (2) 键盘扫描取得闭合键的行、列值。   (3) 用计算法或查表法得到键值。   (4) 判断闭合键是否释放,如没释放则继续等待。   (5) 将闭合键键号保存,同时转去执行该闭合键的功能。

 
打赏
 
更多>同类 嵌入式
0相关评论

推荐图文
推荐 嵌入式
点击排行

网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报