位置:51电子网 » 技术资料 » 其它综合

键盘扫描程序

发布时间:2008/12/25 0:00:00 访问次数:704

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

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

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

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

  欢迎转载,信息来自维库电子市场网(www.dzsc.com)



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

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

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

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

  欢迎转载,信息来自维库电子市场网(www.dzsc.com)



相关IC型号

热门点击

 

推荐技术资料

罗盘误差及补偿
    造成罗盘误差的主要因素有传感器误差、其他磁材料干扰等。... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!