键盘扫描程序

时间:2008-12-25

  键盘扫描程序的实现是首先给两个(矩阵中的2)口线上送高电平,然后在一个循环体内依次在端口PO(矩阵中的8)经锁存器送一个只有一位为0其余为1的电平(即十六进制数0xFE循环左移一位实现),判断移位的次数和两个口线中的哪个为低电平亦即逻辑0来实现。下面通过具体程序来说明。

  当然这只是基本的键盘扫描子程序,当扫描到键号以后还要根据其他一些具体条件来进行相应的译码,才能决定按下的键代表什么具体值。键值有功能键、数字键和字母键,每种键值都有不同的译码处理。键盘扫描子程序是与硬件结构相对应的,因此考虑到端口资源的充分利用,改用4×4的矩阵键盘结构可以节省两个I/O端口,但是键盘扫描程序要稍微复杂一些;但由于ARM其运行速度远远超过传统的微处理器,这一点带来的影响可以忽略不计。下面是改进后的键盘扫描子程序。

  这是改进后键盘的扫描子程序,而键盘的译码处理与用传统方式实现的系统基本相同。译码处理用了比较多的状态变量,这是因为在键盘上除功能键和数字键0以外,其他的数字键还有第二功能。因此在译码过程中设置了一个结构体变量,用来存放每个键对应的所有状态,对应的程序代码如下所示。

  在每个键的译码处理中,只要根据相应的状态变量就可以得到每个键在什么状态中应该得到的是什么键值,因而在程序中不同的环境下就可以只设置不同的状态变量,而不用去考虑按键及其处理情况。
  


  
上一篇:ARM键盘接口
下一篇:光源位于有限距离的单组透镜系统

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料