TA的每日心情 | 怒 2019-11-19 15:55 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1.按键分类与输入原理
x6 }* L. \# p' m2 M- X
% ]) q( m) T8 |% p& C; c" Y8 D按键按照结构原理科分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关灯;另一类是无触点式开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。
, n: J* e( `4 ?
7 V x4 \' }$ C, r% J5 A' C' m; K+ v在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其他按键都是以开关状态来设置控制功能或输入数据的。当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能,键信息输入时与软件结构密切相关的过程。# J( \7 V, l$ |% `4 q% x
! Y" H& x% D/ s+ G
对于一组键或一个键盘,总有一个接口电路与CPU相连。CPU可以采用查询或中断方式了解有无将按键输入,并检查是哪一个按键按下,将该键号送人累加器,然后通过跳转指令转入执行该键的功能程序,执行完成后再返回主程序。6 K* v% W/ _* a I' Q3 m
' B, d) w2 B7 o4 b- R- i) h
2.按键结构与特点) b+ F8 [8 x0 @+ E+ h
2 C Y9 H: Z5 |6 v5 }5 E
微机键盘通常使用机械触点式按键开关,其主要功能式把机械上的通断转换为电气上的逻辑关系。也就是说,它能提供标准的TTL逻辑电平,以便于通用数字系统的逻辑电平相容。机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定的时间触点机械抖动,然后其触点才稳定下来。其抖动过程如下图1所示,抖动时间的长短与开关的机械特性有关,一般为5-10ms。在触点抖动期间检测按键的通与断,可能导致判断出错,即按键一次按下或释放错误的被认为是多次操作,这种情况是不允许出现的。为了克服你、按键触点机械抖动所致的检测误判,必须采取消抖措施。按键较少时,可采用硬件消抖;按键较多式,采用软件消抖。
% M: o! c, D) D6 \
& X( h1 O8 K1 }/ t3 w# ~/ H7 J
, n0 R5 K5 }+ M! R
# g6 \! F" i+ i2 \; H" k
S) _( y* F8 ~& S4 M- f图1 按键触点机械抖动
M) Y0 e8 d1 K0 s& {5 r% M/ ?/ G8 m; O! A
(1)按键编码, y+ I% B. M! K6 G% i1 l2 b
7 ^. m9 @( U( r" |+ p4 r. T& T
一组按键或键盘都要通过I/O口线查询按键的开关状态。根据键盘结构的不同,采用不同的编码。无论有无编码,以及采用什么编码,最后都要转换成为与累加器中数值相对应的键值,以实现按键功能程序的跳转。
! x" a: d1 }( f1 f" ]* t" {$ L; y0 p
(2)键盘程序
$ J5 e5 X$ S* b- X7 {# @% h8 T
5 T" d- K* i- _" m/ f一个完整的键盘控制程序应具备以下功能:
" l; {! r5 \* z% a7 d) }; J4 p& T4 ~$ R2 M4 M, @: v$ E3 }
a.检测有无按键按下,并采取硬件或软件措施消抖。
: v- q. e$ F' j
" m. t4 g5 h. m ]8 lb.有可靠的逻辑处理办法。每次只处理一个按键,期间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序。
% P/ ]) D! |; C
0 f2 j+ \" N) h4 T5 Nc.准确输出按键值(或键号),以满足跳转指令要求。
3 `# p& k4 O0 S( g
# C- I& R! h3 r2 | v3.独立按键与矩阵键盘
9 m: v5 t" y8 \" t
$ I* U. ], Z6 }1 M9 o(1)独立按键* a2 d$ M; @( B5 F6 `. ^
8 E9 x: \3 c3 m9 n
单片机控制系统中,如果只需要几个功能键,此时,可采用独立式按键结构。1 n/ u7 _2 X0 i
/ d6 n: ^/ `( R3 O独立按键式直接用I/O口线构成的单个按键电路,其特点式每个按键单独占用一根I/O口线,每个按键的工作不会影响其他I/O口线的状态。独立按键的典型应用如图所示。独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一个I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。独立按键如图2所示。 d# k8 N, `7 x) u) U
8 q) \8 R! l# t( r6 S5 U
8 `4 }5 g0 x! r+ m5 l图2 独立键盘 R0 o, B0 I2 ?6 c8 h' f
- M3 U" r+ U+ H/ }独立按键的软件常采用查询式结构。先逐位查询没跟I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。: l! ^% `; O& \+ ?, }3 \
" U- p0 ^6 `4 J7 c1 \# @* z; D
(2)矩阵键盘0 ~* d9 S" h; T' D8 Q2 c* }, M
3 t6 |6 ]0 j" Q% z' _; I; T单片机系统中,若使用按键较多时如电子密码锁、电话机键盘等一般都至少有12到16个按键,通常采用矩阵键盘。, i) {$ U7 A6 t0 u7 D, D0 \
8 a; e( j. [6 J6 ^$ k' {3 y矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。
0 j# |& M7 t' F, r; [9 F2 d! q3 f' n- z' R+ `" w1 P
矩阵键盘的工作原理. O/ g# ?! |$ p$ N% n
; v# ~% w k0 l最常见的键盘布局如图3所示。一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式,4*4矩阵键盘的内部电路如图4所示。( ]% i# S! N6 o7 H
; \+ {" S& P8 D' r* l9 l
图3 矩阵键盘布局图
7 ^' x0 b7 B: Q
图4 矩阵键盘内部电路图% Z0 p( S; s1 ^- B/ S
& E% ]7 M5 F' q" E, ]" k1 }; C当无按键闭合时,P3.0~P3.3与P3.4~P3.7之间开路。当有键闭合时,与闭合键相连的两条I/O口线之间短路。判断有无按键按下的方法是:第一步,置列线P3.4~P3.7为输入状态,从行线P3.0~P3.3输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,行线轮流输出低电平,从列线P3.4~P3.7读入数据,若有某一列为低电平,则对应行线上有键按下。综合一二两步的结果,可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。
0 a; u' d4 r) K4 N4 n$ y! f
4 O2 q; _4 m9 |4 ] J- m识别按键的方法很多其中,最常见的方法是扫描法
5 j! @- `2 N. D+ F! ]+ l5 |8 t' f) b9 A, T
按键按下时,与此键相连的行线与列线导通,行线在无按键按下时处在高电平。如果所有的列线都处在高电平,则按键按下与否不会引起行线电平的变化,因此必须使所有列线处在电平。这样,当有按键按下时,改键所在的行电平才回由高变低。才能判断相应的行有键按下。0 I2 U9 G5 g& k- `
1 t; K6 D$ T# b( S @2 f& z
独立按键数量少,可根据实际需要灵活编码。矩阵键盘,按键的位置由行号和列号唯一确定,因此可以分别对行号和列号进行二进制编码,然后两值合成一个字节,高4位是行号,低4位是列号。
" ]8 g2 o% Q) B* Q9 T
8 N) m- ^! W2 ^9 S4.键盘的工作方式, i5 e3 B2 j# m! ]6 u: `7 Q
6 M/ z& F% Y+ S/ g% T+ Z5 q
对键盘的响应取决于键盘的工作方式,键盘的工作方式应根据实际应用系统中的CPU的工作状况而定,其选取的原则是既要保证CPU能及时响应按键操作,又不要过多占用CPU的工作时间。通常键盘的工作方式有三种,编程扫描、定时扫描和中断扫描。% L* ?' a+ w5 S6 i7 ]
% A& X1 o9 S3 Y4 D
(1)编程扫描方式' k% q# E$ ^8 ~- X
# Z6 N0 o1 O. P5 b编程扫描方式是利用CPU完成其它工作的空余时间,调用键盘扫描子程序来响应键盘输入的要求。在执行键功能程序时,CPU不再响应键输入要求,直到CPU重新扫描键盘为止。
' W$ q% U, r7 q7 u1 w9 q* }
2 Y) Q) K* @, p4 }(2)定时扫描方式/ z! q- K4 C! v' f3 [
+ [( ]* ~$ W0 P* u3 K
定时扫描方式就是每隔一段时间对键盘扫描一次,它利用单片机内部的定时器产生一定时间(例如10ms)的定时,当定时时间到就产生定时器溢出中断。CPU响应中断后对键盘进行扫描,并在有按键按下时识别出该键,再执行该键的功能程序。
: y+ R9 L' o& X# C E& o8 c# I1 [: K8 h* @, { z* {" k
(3)中断扫描方式
. p5 l- z/ h! H1 N& {
' u+ m& Z2 n5 j* e上述两种键盘扫描方式,无论是否按键,CPU都要定时扫描键盘,而单片机应用系统工作时,并非经常需要键盘输入,因此,CPU经常处于空扫描状态。- o2 z2 X; ]3 Z |0 F
8 W' W) L3 Q! E% o' ^' @6 ?
为提高CPU工作效率,可采用中断扫描工作方式。其工作过程如下:当无按键按下时,CPU处理自己的工作,当有按键按下时,产生中断请求,CPU转去执行键盘扫描子程序,并识别键号。* B: `' ~3 _9 C( p. g, P$ a
% Y; k% [) O5 R, [ E% [/ F
! X8 c$ b7 Q6 z
7 S9 p, o% d7 U+ ]
- X* h- z' G; z9 i: T( A- }! A, k
! s: r3 [: ^4 E: C* w/ l |
|