4X4矩阵式键盘输入程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4*4键盘程序readkeyboard:

begin: acall key_on

jnz delay

ajmp readkeyboard

delay:acall delay10ms

acall key_on

jnz key_num

ajmp begin

key_num:acall key_p

anl a,#0FFh

jz begin

acall key_ccode

push a

key_off:acall key_on

jnz key_off

pop a

ret

key_on: mov a,#00h

orl a,#0fh

mov p1,a

mov a,p1

orl a,#0f0h

cpl a

ret

key_p: mov r7,#0efh

l_loop:mov a,r7

mov p1,a

mov a,p1

orl a,#0f0h

mov r6,a

cpl a

jz next

ajmp key_c

next: mov a,r7

jnb acc.7,error

rl a

mov r7,a

ajmp l_loop

error:mov a,#00h

ret

key_c:mov r2,#00h

mov r3,#00h

mov a,r6

mov r5,#04h

again1:jnb acc.0,out1

rr a

inc r2

djnz r5, again1

out1: inc r2

mov a,r7

mov r5,#04h

again2:jnb acc.4,out2

rr a

inc r3

djnz r5,again2

out2: inc r3

mov a, r2

swap a

add a,r3

ret

key_ccode:push a

swap a

anl a,#0fh

dec a

rl a ;行号乘4

rl a

mov r7,a

pop a

anl a,#0fh

dec a

add a,r7

ret

delay10ms:

anl tmod,#0f0h

orl tmod,#01h

mov th0,#0d8h

mov tl0,#0f0h

setb tr0

wait:jbc tf0,over

ajmp wait

clr tr0

over:ret

单片机键盘设计

(二)从电路或软件的角度应解决的问题

软件消抖:如果按键较多,硬件消抖将无法胜任,常采用软件消抖。通常采用软件延时的方法:在第一次检测到有键按下时,执行一段延时10ms的子程序后,再确认电平是否仍保持闭合状态电平,如果保持闭合状态电平,则确认真正有键按下,进行相应处理工作,消除了抖动的影响。(这种消除抖动影响的软件措施是切实可行的。)

2.采取串键保护措施。串键:是指同时有一个以上的键按下,串键会引起CPU错误响应。

通常采取的策略:单键按下有效,多键同时按下无效。

3.处理连击。连击:是一次按键产生多次击键的效果。要有对按键释放的处理,为了消除连击,使得一次按键只产生一次键功能的执行(不管一次按键持续的时间多长,仅采样一个数据)。否则的话,键功能程序的执行次数将是不可预知,由按键时间决定。连击是可以利用的。连击对于用计数法设计的多功能键特别有效。

三、键盘工作方式

单片及应用系统中,键盘扫描只是CPU的工作内容之一。CPU忙于各项任务时,如何兼顾键盘的输入,取决于键盘的工作方式。考虑仪表系统中CPU任务的份量,来确定键盘的工作方式。

键盘的工作方式选取的原则是:既要保证能及时响应按键的操作,又不过多的占用CPU的工作时间。

键盘的工作方式有:查询方式(编程扫描,定时扫描方式)、中断扫描方式。

四、键盘电路结构

(一)独立式按键接口设计

优点:电路配置灵活,软件结构简单。此键盘是用于按键较少或操作速度较高的场合。

也可以用扩展I/O口搭接独立式按键接口电路,可采用8255扩展I/O口,用三态缓冲器扩展。这两种配接方式,都是把按键当作外部RAM某一工作单元的位来对待,通过读片外RAM 的方法,识别按键的工作状态。

上电路中独立式按键电路,各按键开关均采用了上拉电阻,是为了保证在按键断开时,各I/O有确定的高电平。如输入口线内部已有上拉电阻,则外电路的上拉电阻可省去。

(二)矩阵式键盘接口设计

矩阵式键盘适用于按键数量较多的场合,由行线和列线组成,按键位于行列的交叉点上。节省I/O口。

矩阵键盘工作原理:行线通过上拉电阻接到+5V上。无按键,行线处于高电平状态,有键按下,行线电平状态将由与此行线相连的列线电平决定。列线电平为低,则行线电平为低;列线电平为高,则行线电平为高。

五、双功能及多功能键设计

在单片机应用系统中,为简化硬件线路,缩小整个系统的规模,总希望设置最少的按键,获得最多的控制功能。

矩阵键盘与独立式按键键盘相比,硬件电路大大节省。可通过软件的方法让一键具有多功能。方法:选择一个RAM工作单元,对某一个按键进行按键计数,根据不同计数值,转到子程序。这种计数多功能键最好与显示器结合用,以便知道当前计数值,同时配合一个启动键。

复合键是使用软件实现一键多功能的另一个途径。所谓复合键,就是两个或两个以上的键的联合,当这些键同时按下时,才能执行相应的功能程序。实际情况做不到“同时按下”,他们的时间差别可以长到50ms,解决策略是:定义一个或两个引导键,这些引导键按下时没什么意义,执行空操作。引导键的例子:微机键盘上的CTRL、SHIFT、ALT。

缺点:一是操作变得复杂,二是操作时间变长。

多功能键的利用,应具体情况具体分析。要求速度的场合最好做一键一功能。如果系统功能很多,一键一功能不现实,可采取一键多功能。

六、功能开关及拨码盘接口设计

设计原因:键盘输入灵活性大,操纵方便。但某些重要功能或数据由键盘输入,误操作将产生一些不良后果。因此常设定静态开关的方法来执行这些功能或输入数据。静态开关一经设定,将不再改变,一直维持设定的开关状态。通常这些开关状态是在单片机系统加电时由CPU读入内存RAM的,以后CPU将不再关注这些开关的状态,因此,即使加电后,这些开关的状态发生变化,也不会影响CPU的正常工作,只有在下一次加电时,这些新状态才能生效。

第一,功能开关:主要是根据开关的状态执行一些重要的功能。

第二,拨码盘:单片机应用系统中,有时要输入一些控制参数,这些参数一经设定,将维持不变,除非给系统断电后重新设定。这时使用数字拨码盘既简单直观,又方便可靠。

七、按键介绍

常用的按键有三种:机械触点式按键、导电橡胶式和柔性按键(又称触摸式键盘)。

相关文档
最新文档