位置:51电子网 » 技术资料 » 显示光电

矩阵式键盘的程序设计

发布时间:2014/7/27 15:20:47 访问次数:880

   在计算机控制系统中,SL490B键盘扫描只是CPU工作的一部分。因此在设计键盘扫描程序时,必须要保证键盘操作的实时性,又不能占有CPU太多的时间,还要充分考虑到抖动干扰的消除。一般可根据情况选用编程扫描、定时扫描或中断扫描中的一种方式。

   下面来考虑扫描程序的编写与准备。逐行输出行扫描信号“0”,即是CPU依次使行线Xo—X,为低电平,其输出数据代码分别为OIH(X。线)、02H(X.线)、04H(X:线)、08H(X,线)、10H(X。线)、20H(X,线)、40H(X。线)、80H(X,线)。

   为消除按键的抖动干扰.程序中需调用延时lOOms的子程序,以便认定确有键按下,再识别其键值。

   求十进制键值的方法是分别设一个行值寄存器CL和列值寄存器DL。接口电路中跨接在行列线上的64个键,由于同一列相邻行之间相隔数8,所以每进行一次“0”行扫描后,如果此行无键按下,则行寄存器CL应加08再进行下一行的“0”行扫描;若有键按下,则不加08而转求列值,由于列值比键值小1,如第一行第一列的键按下时列值Y。(即数据位D。)=0比01键值小1,所以列值寄存器DL应先加1,然后将读入的列值循环右移,判断进位位CF是否等

于零(即有否键按下),若无键按下,再继续加l、右移、判断,重复上述过程,直到有键按下。最后把行值和列值相加并进行DAA修正,即可得到所求的十进制键值。

   例如,跨接在X:行与Y.列的18键按下,其键值计算方法如下:第一次“0”行扫描X。行,无键按下,CL= 00 +08= 08,接下来扫X,行,仍无键按下,加08并进行DAA修正,CL =08+

08 =16,再扫X:行,此时读人的列值不等于FFH即表明有键下,则CL =16不变。然后转求列值,列值寄存器先加1,再把读入的列值循环移位,由于按下的键在Y,列,所以需移位丙次才能移出0值,因此DL =02,然后将行值寄存器与列值寄存器之值相加,并进行DAA修正,得到AL=CL+DL=16+02=18,即键值为18。

   在计算机控制系统中,SL490B键盘扫描只是CPU工作的一部分。因此在设计键盘扫描程序时,必须要保证键盘操作的实时性,又不能占有CPU太多的时间,还要充分考虑到抖动干扰的消除。一般可根据情况选用编程扫描、定时扫描或中断扫描中的一种方式。

   下面来考虑扫描程序的编写与准备。逐行输出行扫描信号“0”,即是CPU依次使行线Xo—X,为低电平,其输出数据代码分别为OIH(X。线)、02H(X.线)、04H(X:线)、08H(X,线)、10H(X。线)、20H(X,线)、40H(X。线)、80H(X,线)。

   为消除按键的抖动干扰.程序中需调用延时lOOms的子程序,以便认定确有键按下,再识别其键值。

   求十进制键值的方法是分别设一个行值寄存器CL和列值寄存器DL。接口电路中跨接在行列线上的64个键,由于同一列相邻行之间相隔数8,所以每进行一次“0”行扫描后,如果此行无键按下,则行寄存器CL应加08再进行下一行的“0”行扫描;若有键按下,则不加08而转求列值,由于列值比键值小1,如第一行第一列的键按下时列值Y。(即数据位D。)=0比01键值小1,所以列值寄存器DL应先加1,然后将读入的列值循环右移,判断进位位CF是否等

于零(即有否键按下),若无键按下,再继续加l、右移、判断,重复上述过程,直到有键按下。最后把行值和列值相加并进行DAA修正,即可得到所求的十进制键值。

   例如,跨接在X:行与Y.列的18键按下,其键值计算方法如下:第一次“0”行扫描X。行,无键按下,CL= 00 +08= 08,接下来扫X,行,仍无键按下,加08并进行DAA修正,CL =08+

08 =16,再扫X:行,此时读人的列值不等于FFH即表明有键下,则CL =16不变。然后转求列值,列值寄存器先加1,再把读入的列值循环移位,由于按下的键在Y,列,所以需移位丙次才能移出0值,因此DL =02,然后将行值寄存器与列值寄存器之值相加,并进行DAA修正,得到AL=CL+DL=16+02=18,即键值为18。

相关技术资料
7-27矩阵式键盘的程序设计
相关IC型号
SL490B
SL490
SL494

热门点击

 

推荐技术资料

按钮与灯的互动实例
    现在赶快去看看这个目录卞有什么。FGA15N120AN... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!