矩阵式键盘的设计与实现
4X4小键盘,16个键分别对应0~9、A~F;有键按下,数码管显示;无键按下,数码管无显示;通过输出的列码和读取的行码来判断按下什么键;有键按下,要有一定的延时,防止由于键盘抖动而引起误操作。
键盘的结构与原理:矩阵式键盘是单片机系统中,若使用按键较多时,通常采用矩阵式键盘,其结构如下图所示。由图可知,一个4×4的行、列结构,可以构成一个含有16个按键的键盘,节省了很多I/O口。 控制方式是先判断是否有键按下。如有,再判断哪一键按下,并得到键码值,然后根据键码值转向不同的功能程序。最常用的识别方法是键盘扫描法。
判断按键按下的方法
判断是否有键按下的方法是:
向所有的列输出口线输出低电平(不能为高电平,因为若为高电平,按键按下与否都不会引起行线电平的变化),然后将行线的电平状态读入。若无键按下,所有的行线仍保持高电平状态;若有键按下,行线中至少应有一条线为低电平。例如:第2行与第2列交叉点的键被按下,则第2行与第2列导通,第2行电平被拉低,读入的行信号就为低电平,表示有键按下。
识别按键的方法:
按键识别的扫描方法:往列线上按顺序一列一列的送出低电平。先送第0列为低电平,其他列为高电平,读入的行的电平状态就表明了第0列的4个键的情况,若读入的行值全为高电平,则表示无键按下;再送第1列为低电平,其他列为高电平,读入的行的电平状态则显示了该行上的4个按键的情况;依次轮流给各列送出低电平,直至4列全部送完,再从第0列开始,依此循环。
按键编码
键值:对按键进行编码,并把得到的编码称为键值。
键值的计算方法:键值=列号+行号×4。
矩阵式键盘电路设计:
键盘扫描程序具体实现方法
判断有无键按下、去除按键的抖动、求按键的键值、判断闭合键是否释放。
判断有无键按下:P0.4~P0.7输出0,然后读P0口;若低4位P0.0~P0.3全为1,则键盘上没有键按下;若P0.0~P0.3不全为1,则有键按下。
去除按键的抖动:当判断到键盘上有键按下后;延时一段时间再判断键盘的状态;若仍为有键按下状态,则认为有一个键按下,否则当作按键抖动来处理。
求按键的键值:对键盘的列线进行扫描,P0.4~P0.7循环输出1110、1101、1011和0111,依次读P0口,若低4位全为1,则断定该列上没有键按下;否则,该列上就有键按下,并且就是行线为0,列线为0的交叉点,行号和列号按公式:rol*4+col 计算得到按下键的键值。例如,P0.4~P0.7输出1101时,P0口的低四位读入的值为1011,不全为1,就可以断定有键按下,并且是第2行和第1列交叉点的键。于是,该键的键值=2×4+1=9。按照相同的方法可以得到所有键的键值。如:return(rol*4+col);
判断闭合键是否释放:按键闭合一次只能进行一次功能操作,因此,等按键释放后才能根据键号执行相应的功能键操作。