图2.3 键盘的组成示意图
如上图所示,16个按键,组成 4×4 的按键阵列,以各行各列相连。整个键盘实际上就像布满开关的电路,当某个开关打开时,如果给此开关交叉的两根线中的一条线送高电平1,那么另一根线由一个上拉电阻提供逻辑1;当某开关闭合时,如果给此开关交叉的两根线中的一条线送高电平1,那么另一根线将被拉低得到逻辑0。在键盘上时,当按下其中一个按键的时候,它所在的行和列将被导通。
在SEP3203开发系统中,4×4 按键阵列的行线和列线的八个端口是UCB1400芯片的十个GPIO口中的。按下其中任意一个键时,将对相交叉的两个GPIO口带来连接关系。这8个GPIO口中,I/O 0-3设定为数据输出口,而I/O 5-8设定为中断输入口,它们的中断方式都是下降沿触发的。而上图所示键盘的每一行的按键都被连接到电源的正极。
现在以按下I/O 3列线和I/O 5行线的交叉处的按键为例,说明该按键的工作原理。下图为键盘的工作顺序示意图:
等待下次按键
A E A
B D F G
C
图2.4 按键工作顺序示意图
(1)初始状态A
在初始化时列线都设为低电平,又行线都与电源正极相连,所以在按键没有按下的状态下,I/O 0-3为低电平,而I/O 5-8为高电平。