关于键盘扫描的疑问
按键的工作原理有很多种,有一种是要不断的周期性的扫描按键,有一种中断式的不需要不断的扫描,它仅仅要在接收到中断信号后再扫描按键。
时钟在扫描每根线的时候它的时序不一样,但是没根线对应的次序是一样的,当按下键盘释放以后CPU可以判断,是那个时序已经触发,从而可以显示我们需要的东西.(只是个人理解)
[QUOTE]以下是引用wostang在2007-10-22 21:44:04的发言:
这里面有个问题:MCU是怎么知道被按下的这个按键就是我需要的这个按键的呢?比如说我按下的是键5,MCU怎么知道就是5呢?
小编想问的是键盘扫描原理吧?
键盘中断式扫描原理:
kcol列线为输入并有上拉,如果没有按键按下,列输入为高电平,row为低电平。有键按下,col与row接通则变低,并产生中断信号,BB检测到中断后,判断为有按键按下,调用软件开始扫描,先逐行送低电平,其他行送高,检测列输入状态,若有列输入是低电平,则判断为该行有按键按下;然后再逐列送低电平,其他送高,当轮到按下键所在列时,行输入是低,这样就确定了列,因此也就知道了是那个按键被按下.
然后再逐列送低电平,其他送高,当轮到按下键所在列时,行输入是低,这样就确定了列,因此也就知道了是那个按键被按下.[/QUOTE]
至于哪一列,产生中断时BB就知道了,为什么还需要这种方法再去扫描?
至于哪一列,产生中断时BB就知道了,为什么还需要这种方法再去扫描?[/QUOTE]
BB检测到的中断只是说明有按键被按下这个动作发生,要确定是那个按键就需要执行扫描程序了
明白了,MTK的KCOL0~KCOL6输入到一个与门再去触发中断。而不是各列各自单独去触发中断的。
既然MTK是与门后触发中断,所以还需要扫描列。
如果列各自单独触发的话,就不用扫描列了,因为从中断就可以知道所在列了。
不明白为什么还要逐列送低电平扫描啊?在逐行扫描的时候,根据那一列的电平被拉低,就可以判断出按键所在的行和列了吧。
...........