行列式(矩阵式)键盘接口用于按键数目较多的场合,由行线和列线组成,按键位于行、列的交叉点上
如图10-10所示
按键数目较多的场合,行列式键盘与独立式键盘相比,要节省很多的I/O口线
(1)行列式键盘工作原理无键按下,该行线为高电平,当有键按下时,行线电平有列线的电平来决定
由于行、列线为多键共用,各按键彼此将相互发生影响,必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置
(2)按键的识别方法a
扫描法图10-10(b)中3号键被按下为例,来说明此键时如何被识别出来的
识别键盘有无键被按下的方法,分两步进行:第1步:识别键盘有无键按下;第2步:如有键被按下,识别出具体的按键
把所有列线置0,检查各行线电平是否有变化,如有变化,说明有键按下,如无变化,则无键按下
上述方法称为扫描法,即先把某一列置低电平,其余各列为高电平,检查各行线电平的变化,如果某行线电平为低,可确定此行列交叉点处的按键被按下
线反转法只需两步便能获得此按键所在的行列值,线反转法的原理如图10-11
第1步:列线输出为全低电平,则行线中电平由高变低的所在行为按键所在行
第2步:行线输出为全低电平,则列线中电平由高变低所在列为按键所在列
结合上述两步,可确定按键所在行和列
(3)键盘的编码根据实际需要灵活编码
3键盘的工作方式单片机在忙于各项工作任务时,如何兼顾键盘的输入,取决于键盘的工作方式
原则:即要保证能及时响应按键操作,又不要过多占用CPU的工作时间
通常,键盘工作方式有3种,即编程扫描、定时扫描和中断扫描
编程扫描方式只有当单片机空闲时,才调用键盘扫描子程序,扫描键盘
工作过程:(1)在键盘扫描子程序中,先判断有无键按下
方法:PA口8位输出全0,读PC口低4位状态,若PC0~PC3为全1,则说明键盘无键按下;若不全为1,则说明键盘可能有键按下
(2)用软件来消除按键