试述51系列单片机矩阵键盘编程
2011-09-23谭成豪许建明
谭成豪,许建明
邵阳学院信息工程系,湖南邵阳 422000
试述51系列单片机矩阵键盘编程
谭成豪,许建明
邵阳学院信息工程系,湖南邵阳 422000
在单片机系统中,常常使用键盘向单片机输入信息。键盘由一组常开的按键组成,当按键闭合时就会向单片机系统输入一个电平信息。每个按键都被赋予了一个键码,单片机根据此代码执行任务。在单片机系统按键数量较多时,为了减少I/O口的使用通常使用矩阵键盘。
单片机;键盘;矩阵键盘;I/O口
1 矩阵键盘的结构
矩阵键盘的按键排成矩阵,一般是4×4矩阵,即4行4列,行和列的交叉点接一个常开的独立按键,按键被闭合时就接通行线和列线。8个I/O口产生16个交叉点16个按键,按键数量比独立按键多了一倍,9个I/O口产生20个按键, I/O口越多产生的按键数量越多,效果越明显。可以在键盘扫描程序中对每个按键进行编号,如第一行按键从左到右对应0、1、2、3,第二行按键从左到右对应4、5、6、7,第三行按键从左到右对应8、9、A、B,第四行按键左到右对应C、D、E、F,每按一次键让数码管显示该按键所代表的编号。
2 矩阵键盘的工作原理
矩阵键盘结构比独立键盘复杂,识别难度也比独立按键大很多。矩阵键盘的工作方式有程序扫描方式、定时扫描方式、中断扫描方式3种。本文只讨论程序扫描方式。程序扫描方式是CPU主动调用扫描子函数,响应键盘的输入要求。在子函数里有以下步骤:
1)判断键盘中有无按键闭合;
2)延时去抖消除干扰;
3)检测是否确实有按键闭合,确定闭合键的编号;
4)等待闭合键的释放。
整个步骤中确定闭合键的编号是关键所在,常用的判断方法有逐行扫描法和反转扫描法。
3 硬件仿真
4×4矩阵键盘无需外接电源,电位变化完全由编程来决定。通过软件延时来消抖动,去干扰。4×4矩阵键盘4行4列交叉,每个按键位于交叉点上对应的行列号唯一,共16个按键。4×4矩阵键盘8个I/O口接P1口,7SEG-MPX2-AN-GREEN7段共阳极数码管通过上拉电阻接P0口。键盘中每闭合一个按键让数码管显示对应的编号。如上图所示。
4 编程思路
矩阵键盘编程要实现按键的正确判断、键值的确定和消除抖动去干扰三个目标,闭合键释放后才显示对应按键编号,目标程序要简洁易行。
4.1 逐行扫描法
此方法中,单片机每次扫描其中的一行,循环扫描四行。首先扫描第一行,给P1口赋值0xef,即第一行为低电平,其他行和所有列为高电平,当有第一行有按键闭合时,对应的列线电平会被拉低,软件延时消去抖动干扰后再读取P1口的值,如第一行第一列闭合了就会得到0xee,第一行第一列闭合了就会得到0xed,第一行第三列闭合了就会得到0xeb,第一行第四列闭合了就会得到0xe7;同理,检测第二行时,赋值0xdf给P1口,若各列有按键闭合则会分别得到0xde、0xdd、0xdb、0xd7,类推,检测第三行时赋值0xbf,若各列有按键闭合则会分别得到0xbe、0xbd、0xbb、0xb7,检测第四行时赋值0x7f,若各列有按键闭合则会分别得到0x7e、0x7d、0x7b、0x77然后单片机对应此值处理相应的任务。
4.2 反转扫描法
在这种方法中对单片机P1口赋值两次,第一次给P1口赋值0xf0,即高四位高低平,第四位低电平,若有按键闭合则高四位中对应的某一位会被线拉低,读取P1口的值,赋给一个中间变量这就确定了按键的行;第二次给P1口赋值0x0f,即高四位低低平,第四位高电平,若有键闭合则低四位中对应的某一位会被线拉低,读取P1口的值,赋给另一个中间变量,这样按键的行和列都确定了,然后再对两个变量进行“按位与”运算得到一个最终值,根据次值判断具体按键。从0~F依次是0xee、0xed、0xeb、0xe7、0xde、0xdd、0xdb、0xd7、0xbe、0xbd、0xbb、0xb7、0x7e、0x7d、0x7b、077。然后单片机对应此值处理相应的任务。
5 结论
使用键盘可以实现计算机的人机对话,可以更好的实现工业控制,在单片机I/O口资源紧张的情况下矩阵键盘大大缓解了I/O口资源的紧张,使单片机可以控制更多模块,实现更为强大的功能。
[1]张俊谟.单片机中级教程[M].北京航空航天大学出版社,2006,10.
[2]张洪润,兰清华.单片机应用技术教程[M].北京:清华大学出版社,1997,11.
TP368
A
1674-6708(2011)39-0197-01
谭成豪,学生,所在院校:邵阳学院电子科学与技术专业
指导老师:许建明,硕士研究生,工作单位:邵阳学院信息工程系,职务:教师