矩阵键盘驱动程序_第1页
矩阵键盘驱动程序_第2页
矩阵键盘驱动程序_第3页
矩阵键盘驱动程序_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

45矩阵键盘驱动程序一、工作原理及接口电路45矩阵键盘有4条列线,5条行线共20个按键。每个按键对应不同键值,键盘扫描采用外部中断扫描方式,本系统中键盘为无源结构,键盘工作时不依靠任何外部电源。45矩阵键盘结构图如图2-10 所示。图2-10 45矩阵键盘结构图1)45矩阵键盘结构及按键抖动消除当键盘中按键数量较多时为减少I/O口的占用,通常将按键排列成矩阵形式,如图2-12所示。在矩阵式键盘中,每条行线和列线在交叉处不直接连通,而是通过一个机械弹性开关加以连接。这样5条列线(R0R4)和4条行线(L0L3)就可以构成20个按键的矩阵键盘。键盘采用了无源结构,工作是不依靠任何外部电源。由于机械弹性开关的机械触点的弹性作用,一个按键开关在闭合时并不会马上稳定的闭合,在断开时也不会马上断开,因而机械开关在闭合及断开瞬间均伴有一连串的抖动,如图2-11所示。图2-11 按键时的抖动抖动的时间长短由按键开关机械特性及按键的人为因素决定,一般为5ms20ms。按键抖动如果处理不当会引起一次按键被误处理多次,所以消除抖动是必要的。消除抖动的有硬件处理和软件处理两种方法。当按键较多一般采用软件消抖方式。软件消抖原理为当检测出按键闭合后执行一个延时程序(产生5ms20ms的延时),待前沿抖动消失后再次检测按键的状态,如果按键仍保持闭合状态则可确认为有键按下。当检测到按键释放并执行延时程序,待后沿抖动消失后才转入按键的处理程序。1) 矩阵键盘的工作原理从45矩阵键盘的4条列线和5条行线分别引出9条端线接于单片机的9个I/O口,由于键盘采用了无源结构所以行列线的电平由单片机I/O口的电平决定。进入按键处理程序后先使4条列线全为低电平,5条行线全为高电平,为读行线状态做准备,没有按键时这种状态不会被改变。当键盘上的某个按键闭合时,则该键所对应的行线和列线被短路。例如:6号键被按下时列线L2与行线R1被短路,此时行线R1电平被列线L2拉低,由原来的高电平变为低电平而其它行线电平依然不变,为低电平。此时单片机可读得行线状态进而判断按键所在行并记录下行号。之后使得4条列线全为高电平,5条行线全为低电平,为读列线状态做准备。同理6号键被按下时列线L2与行线R1被短路,此时列线L2电平被行线R1拉低,由原来的高电平变为低电平而其它行线电平依然不变,为低电平。此时单片机可读得列线状态进而判断按键所在列并记录下列号。然后按一定的按键编码规则可计算出6号键的键值。2) 键盘扫描方式键盘扫描方式一般有三种:循环扫描方式,定时扫描方式,外部中断扫描方式。循环扫描方式需要不停地扫描键盘,影响其它功能执行工作效率低。定时扫描方式是利用单片机内部的定时器,产生一个适当时间的定时中断,单片机响应中断时对键盘进行扫描取键值过程,但是这种扫描方式不管键盘上是不是有键闭合单片机总是定时地扫描工作效率还是不高。外部中断扫描方式是只在键盘上有键闭合时才产生一个外部中断进入按键处理程序,这种方式工作效率明显提高。本系统中矩阵键盘扫描采用外部中断扫描方式。列线的五个电平信号经过或后接于外部中断信号输入口P3.3,当有任意一个按键按下时或门输出为低发生外部中断,进入按键处理程序。采用外部中断扫描方式的45矩阵键盘与单片机接口电路如图2-12所示。 P3.3(INT1) P1.0 P1.1 P1.2 P1.3MCS-51 P1.4 P1.5 P1.6 P1.7 P3.0图2-12 外部中断扫描方式的45矩阵键盘与单片机接口电路二、驱动程序分析45矩阵键盘采用外部中断扫描方式,有键按下作为一个中断源。当键盘上有任何一个按键按下时将触发外部中断1(/INT1),主机转入中断处理程序(矩阵键盘驱动函数)扫描键盘识别被按下的键。45矩阵键盘驱动函数代码如下:uchar key;void int1() interrupt 2uchar r,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(temp!=0)switch(temp)/识别按下的按键的行号case 1: l=0;break;case 2: l=1;break;case 4: l=2;break;case 8: l=3;break;case 16: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)/识别识别按下的按键的列号case 1: r=0;break;case 2: r=1;break;case 4: r=2;break;case 8: r=3;break;key=4*l+r;/取键值P1=0xf0;P3_2=1;/拉高所有行线,准备键盘下次扫描EA=1;/开放中断值得

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论