矩阵键盘编程.doc

矩阵键盘编程.doc

ID:57187364

大小:127.50 KB

页数:8页

时间:2020-08-05

矩阵键盘编程.doc_第1页
矩阵键盘编程.doc_第2页
矩阵键盘编程.doc_第3页
矩阵键盘编程.doc_第4页
矩阵键盘编程.doc_第5页
资源描述:

《矩阵键盘编程.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、矩阵键盘编程键盘结构与类型独立式按键键盘由若干独立式按键组成。独立式按键指每个按键作为一位占用一根I/O口线,直接用I/O口线构成单个按键电路。独立式按键键盘可分为中断方式和查询方式两种。独立式按键键盘优点是配置灵活,软件结构简单,操作速度快;缺点是按键多时I/O口浪费较大,故只在按键数目不多时采用。行列式键盘(矩阵式键盘)用I/O口线组成行、列结构,按键设置在行列的交点上。在按键较多时可节省I/O口线,如4×8行列结构可构成32个键的键盘。行列式键盘键输入过程及接口软件应解决的任务键开关状态的可靠输入主要应解决抖动问题。对

2、按键编码以便识别对按键编码,使不同的按键有不同的键值或键号。按键状态的输入方式有中断方式与查询方式两种。编制键盘程序检测有无按键按下、去抖动、按键信息的逻辑处理、输出确定的键号等。行列式键盘(矩阵式键盘)及接口程序设计行列式键盘的结构及键值赋值方法键盘行线的一端经上拉电阻接+5v电源,另一端接单片机的输入口(因而各输入口均被钳位于高电平)。各列线的一端接单片机的输出口,另一端悬空。按键设置在行列线的交点上,行、列线分别连接到按键的两端,按键按下则相应交点的行列线接通。由图可见,矩阵式键盘接口的设计思想是把键盘既作为输入设备又

3、作为输出设备对待的。为了让CPU能识别是哪个按键被按下,必须给每个按键都分配一个键号(一般以十进制数表示)。例如,4×4列矩阵式键盘共16个按键,键号依次按顺序排列为0~15。对行列式键盘的每个按键,还有一个更重要的概念:键值或者说键码。键值是一个可表征按键状态的8位数据,不同的按键有不同的键值。按键后根据键值便能转到相应的键处理子程序,实现键盘的数据输入功能或命令处理功能。同一个按键的键值和键号可以相同,也可以不相同,这主要取决于键盘的结构与采用的编码方法。对行列式键盘来说,识别被按键的位置也就是找出被按键所在行和列的坐标

4、值。对于4行×4列行列式键盘,被按键所在行和列的坐标值为两个4位数据;而对于8行×8列行列式键盘,则为两个8位数据。采用某种方法将被按键所在行和列的两个坐标值加工成一个8位数据(称为键码赋值或键值赋值),便得到该按键的键值。键值赋值的方法可任意选择,只需满足以下两个要求即可:每个按键具有唯一的键值;在有两个按键被同时按下时,求出的键值应不在键值表之内,以便CPU能识别串键。键值赋值的方法主要有两种:按二进制编码和按顺序排列键号。(1)按二进制编码这是键值赋值的最直接方法。这种方法是将所有行线、列线的状态(高、低电平)分别用二

5、进制编码,求得被按键所在行和列的坐标值,再将两个坐标值拼装成一个8位数据,便得到键值。下面以4行×4列矩阵式键盘电路为例来说明这种方法。按键输入通常都采用低电平有效,因此,假定单片机I/O口向接在D1上的列线输出0信号,而向其它列线均输出1信号,此时,若将D6行与D1列交点处的按键按下,则D6行将向单片机输入0信号,而其它行将输入1信号。可见,代表D6行与D1列交点处的按键按下的特征信号(即单片机I/O口的输入信号和输出信号)为:行信号(行坐标值):1011(D6行为0)列信号(列坐标值):1101(D1列为0)在这里,行、

6、列信号正好都是4位,为了便于单片机处理,可将行、列信号拼装在一个字节中,这样便得到用负逻辑表示的键值BDH。这种负逻辑表示往往不够直观,通过在行列线上加反相器或由软件求反,可得到用正逻辑表示的键值42H。拼装过程示意图如下:10111101®01000010行信号列信号求反行信号列信号同理,可得其余按键的键值(按各键从左至右、从上至下排列):77H7BH7DH7EH88H84H82H81HB7HBBHBDHBEH48H44H42H41HD7HDBHDDHDEH28H24H22H21HE7HEBHEDHEEH18H14H12H

7、11H用负逻辑表示的键值用正逻辑表示的键值由此种方法所得的键值与已按键的对应关系是唯一的,换言之,可以根据键值来识别键盘上的所有按键。键值按二进制编码时,软件较为简单直观,但键值太分散且不等距,入口地址安排不方便。按顺序排列键号可克服按二进制编码方法的缺点。(2)按顺序排列键号下面以4行×8列矩阵式键盘为例说明这种方法。当要求键值与键号相一致时,可将各键的键值分配如下:行号列号01234567000H01H02H03H04H05H06H07H108H09H0AH0BH0CH0DH0EH0FH210H11H12H13H14H1

8、5H16H17H318H19H1AH1BH1CH1DH1EH1FH观察上述分配表可知,十六进制的各列号与列首键值(即第0行的各键值)相等,从左至右依次为00H、01H、¼、07H;而十六进制的行号与行首键值(即第0列的各键值)不相等,但行号乘8即得到行首键值:0´8=0(00H),1´8=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。