矩阵键盘驱动程序.doc

矩阵键盘驱动程序.doc

ID:55279172

大小:91.00 KB

页数:4页

时间:2020-05-08

矩阵键盘驱动程序.doc_第1页
矩阵键盘驱动程序.doc_第2页
矩阵键盘驱动程序.doc_第3页
矩阵键盘驱动程序.doc_第4页
资源描述:

《矩阵键盘驱动程序.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、4×5矩阵键盘驱动程序一、工作原理及接口电路4×5矩阵键盘有4条列线,5条行线共20个按键。每个按键对应不同键值,键盘扫描采用外部中断扫描方式,本系统中键盘为无源结构,键盘工作时不依靠任何外部电源。4×5矩阵键盘结构图如图2-10所示。图2-104×5矩阵键盘结构图1)4×5矩阵键盘结构及按键抖动消除当键盘中按键数量较多时为减少I/O口的占用,通常将按键排列成矩阵形式,如图2-12所示。在矩阵式键盘中,每条行线和列线在交叉处不直接连通,而是通过一个机械弹性开关加以连接。这样5条列线(R0~R4)和4条行

2、线(L0~L3)就可以构成20个按键的矩阵键盘。键盘采用了无源结构,工作是不依靠任何外部电源。由于机械弹性开关的机械触点的弹性作用,一个按键开关在闭合时并不会马上稳定的闭合,在断开时也不会马上断开,因而机械开关在闭合及断开瞬间均伴有一连串的抖动,如图2-11所示。图2-11按键时的抖动抖动的时间长短由按键开关机械特性及按键的人为因素决定,一般为5ms~20ms。按键抖动如果处理不当会引起一次按键被误处理多次,所以消除抖动是必要的。消除抖动的有硬件处理和软件处理两种方法。当按键较多一般采用软件消抖方式。软

3、件消抖原理为当检测出按键闭合后执行一个延时程序(产生5ms~20ms的延时),待前沿抖动消失后再次检测按键的状态,如果按键仍保持闭合状态则可确认为有键按下。当检测到按键释放并执行延时程序,待后沿抖动消失后才转入按键的处理程序。1)矩阵键盘的工作原理从4×5矩阵键盘的4条列线和5条行线分别引出9条端线接于单片机的9个I/O口,由于键盘采用了无源结构所以行列线的电平由单片机I/O口的电平决定。进入按键处理程序后先使4条列线全为低电平,5条行线全为高电平,为读行线状态做准备,没有按键时这种状态不会被改变。当键

4、盘上的某个按键闭合时,则该键所对应的行线和列线被短路。例如:6号键被按下时列线L2与行线R1被短路,此时行线R1电平被列线L2拉低,由原来的高电平变为低电平而其它行线电平依然不变,为低电平。此时单片机可读得行线状态进而判断按键所在行并记录下行号。之后使得4条列线全为高电平,5条行线全为低电平,为读列线状态做准备。同理6号键被按下时列线L2与行线R1被短路,此时列线L2电平被行线R1拉低,由原来的高电平变为低电平而其它行线电平依然不变,为低电平。此时单片机可读得列线状态进而判断按键所在列并记录下列号。然后

5、按一定的按键编码规则可计算出6号键的键值。2)键盘扫描方式键盘扫描方式一般有三种:循环扫描方式,定时扫描方式,外部中断扫描方式。循环扫描方式需要不停地扫描键盘,影响其它功能执行工作效率低。定时扫描方式是利用单片机内部的定时器,产生一个适当时间的定时中断,单片机响应中断时对键盘进行扫描取键值过程,但是这种扫描方式不管键盘上是不是有键闭合单片机总是定时地扫描工作效率还是不高。外部中断扫描方式是只在键盘上有键闭合时才产生一个外部中断进入按键处理程序,这种方式工作效率明显提高。本系统中矩阵键盘扫描采用外部中断扫

6、描方式。列线的五个电平信号经过或后接于外部中断信号输入口P3.3,当有任意一个按键按下时或门输出为低发生外部中断,进入按键处理程序。采用外部中断扫描方式的4×5矩阵键盘与单片机接口电路如图2-12所示。≥P3.3(INT1)P1.0P1.1P1.2P1.3MCS-51P1.4P1.5P1.6P1.7P3.0图2-12外部中断扫描方式的4×5矩阵键盘与单片机接口电路二、驱动程序分析4×5矩阵键盘采用外部中断扫描方式,有键按下作为一个中断源。当键盘上有任何一个按键按下时将触发外部中断1(/INT1),主机转

7、入中断处理程序(矩阵键盘驱动函数)扫描键盘识别被按下的键。4×5矩阵键盘驱动函数代码如下:ucharkey;voidint1()interrupt2{ucharr,l,temp;EA=0;//禁止所有中断P1=0xf0;//拉高行线P3_2=1;temp=P1&0xf0;temp>>=4;//取高四位temp=~temp;temp&=0x0f;if(P3_2==0){keydelay(1);//软件防抖动if(P3_2==0)temp=16;}if(temp!=0){keydelay(1);if(tem

8、p!=0)switch(temp)//识别按下的按键的行号{case1:l=0;break;case2:l=1;break;case4:l=2;break;case8:l=3;break;case16:l=4;break;}P1=0x0f;P3_2=0;//行线全拉低temp=P1&0x0f;temp=~temp;temp&=0x0f;//取低四位if(temp!=0){keydelay(1);if(temp!=0)switch(temp)

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

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

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