TA的每日心情 | 怒 2019-11-19 15:55 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1.按键分类与输入原理/ g5 q) C2 J; h$ r, T
: J! Z6 s' A: x; o! Q% c6 g按键按照结构原理科分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关灯;另一类是无触点式开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。+ P+ I; V) }4 P
; M* T" M8 }8 t+ f在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其他按键都是以开关状态来设置控制功能或输入数据的。当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能,键信息输入时与软件结构密切相关的过程。; m" e6 @$ L& |4 U+ x
9 a2 N( p) C/ W" T6 C7 Q7 l
对于一组键或一个键盘,总有一个接口电路与CPU相连。CPU可以采用查询或中断方式了解有无将按键输入,并检查是哪一个按键按下,将该键号送人累加器,然后通过跳转指令转入执行该键的功能程序,执行完成后再返回主程序。5 l+ W9 E) E* ?8 v; h% k5 U
' [8 w4 z, X3 b) z1 V5 d5 M7 ~2.按键结构与特点2 K% q6 b9 L* w3 D) x5 |
o- l0 y- U& M& Y2 ^微机键盘通常使用机械触点式按键开关,其主要功能式把机械上的通断转换为电气上的逻辑关系。也就是说,它能提供标准的TTL逻辑电平,以便于通用数字系统的逻辑电平相容。机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定的时间触点机械抖动,然后其触点才稳定下来。其抖动过程如下图1所示,抖动时间的长短与开关的机械特性有关,一般为5-10ms。在触点抖动期间检测按键的通与断,可能导致判断出错,即按键一次按下或释放错误的被认为是多次操作,这种情况是不允许出现的。为了克服你、按键触点机械抖动所致的检测误判,必须采取消抖措施。按键较少时,可采用硬件消抖;按键较多式,采用软件消抖。. d- u: u* F" t9 E0 p* h
, L5 p( H; T8 m2 S' P- n* t% v- ~5 }
! m4 a- A% U% ^0 u5 C0 i2 O- ^+ Y9 N3 a+ D6 v5 \2 c
! I) H; F* n& C
图1 按键触点机械抖动
7 }4 @% j* ~ r' h8 h: O4 [9 {- [& C7 i" S
(1)按键编码
. o- f4 ^* d4 k$ J
; F6 w& D1 i. ^1 D7 L一组按键或键盘都要通过I/O口线查询按键的开关状态。根据键盘结构的不同,采用不同的编码。无论有无编码,以及采用什么编码,最后都要转换成为与累加器中数值相对应的键值,以实现按键功能程序的跳转。
4 t# }! w+ @# i! O: m6 s3 ?' z+ S- Z
(2)键盘程序0 v3 o& N1 D) F# b. _, g1 U
8 ?; T' k# L) w7 O5 n9 d& z
一个完整的键盘控制程序应具备以下功能:2 F6 [9 a3 x" J6 N7 B
# e( E' Z! O2 S5 [5 r' `4 N
a.检测有无按键按下,并采取硬件或软件措施消抖。6 w! X' B" m4 G5 Q9 k
7 ^. F5 Q R$ g
b.有可靠的逻辑处理办法。每次只处理一个按键,期间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序。
8 x3 M6 s6 @% a; | l4 j& M# s. \' G
c.准确输出按键值(或键号),以满足跳转指令要求。
$ E$ e# g u+ a! S( m# o M" n6 G/ R: m/ ~
3.独立按键与矩阵键盘6 C1 \' l/ _: K' t
* M; a. G+ }0 _7 u( k- d(1)独立按键$ p5 k- e0 B/ u7 ~% c
4 ]. d' O% A5 j9 l! v. b
单片机控制系统中,如果只需要几个功能键,此时,可采用独立式按键结构。' {2 X2 z, Z1 N
- K% C) h. T! ^: U
独立按键式直接用I/O口线构成的单个按键电路,其特点式每个按键单独占用一根I/O口线,每个按键的工作不会影响其他I/O口线的状态。独立按键的典型应用如图所示。独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一个I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。独立按键如图2所示。! H3 q- J: t; I( y0 u% d0 e
7 M# q( e! h R) k' s8 C1 J7 Z: Y
# S# B$ L( ^9 \& `' X% B; ~图2 独立键盘. G+ {0 T; c! N& t/ ]; [0 t' v
: D3 s2 b# Z& s4 v) E# a; V4 s- x
独立按键的软件常采用查询式结构。先逐位查询没跟I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。
9 r% r6 l3 O/ J% B% n' ~
7 `4 S" d) d# Y" j" f(2)矩阵键盘
- j4 E& e# d; w, x/ o& ]1 c S' e
/ X' f) Z1 G; M/ ?" L/ Q+ }单片机系统中,若使用按键较多时如电子密码锁、电话机键盘等一般都至少有12到16个按键,通常采用矩阵键盘。
5 A5 f! U/ S% H$ F2 a" `7 a/ C% @% z0 l& w5 B, }
矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。( k; l) d1 m7 [) f1 ~
* u! X1 c+ ]' \5 Z" e+ Z- g矩阵键盘的工作原理
5 x$ j, o# v5 E5 z5 B4 }5 P) f% v3 M4 X/ O# y
最常见的键盘布局如图3所示。一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式,4*4矩阵键盘的内部电路如图4所示。
* Y2 K6 G( @) i3 s) T- N2 a( K6 r, N) z2 z! ?
图3 矩阵键盘布局图
1 n% r, V2 h2 }' @ M
图4 矩阵键盘内部电路图
& R/ Q2 K5 F- k7 z. A0 d- f9 A% k* [' t o0 y- z
当无按键闭合时,P3.0~P3.3与P3.4~P3.7之间开路。当有键闭合时,与闭合键相连的两条I/O口线之间短路。判断有无按键按下的方法是:第一步,置列线P3.4~P3.7为输入状态,从行线P3.0~P3.3输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,行线轮流输出低电平,从列线P3.4~P3.7读入数据,若有某一列为低电平,则对应行线上有键按下。综合一二两步的结果,可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。. D6 _. U r3 U w& @, N# B
9 {% R2 ]( o6 q |! s5 f0 \
识别按键的方法很多其中,最常见的方法是扫描法
; N( [/ ]: a4 {( C0 C
7 N$ l) e) S" y' x0 D按键按下时,与此键相连的行线与列线导通,行线在无按键按下时处在高电平。如果所有的列线都处在高电平,则按键按下与否不会引起行线电平的变化,因此必须使所有列线处在电平。这样,当有按键按下时,改键所在的行电平才回由高变低。才能判断相应的行有键按下。2 [/ [/ j' B: M# t1 }- |4 j
- Q6 o0 l8 t1 c; m+ e3 U @. ?
独立按键数量少,可根据实际需要灵活编码。矩阵键盘,按键的位置由行号和列号唯一确定,因此可以分别对行号和列号进行二进制编码,然后两值合成一个字节,高4位是行号,低4位是列号。( c: ^2 F. V, d+ [
) c# |5 v' |1 E. b8 V0 e6 I4.键盘的工作方式
/ w( \# |1 \8 o( f
% O: \+ F/ v+ l9 |# @5 ]- k对键盘的响应取决于键盘的工作方式,键盘的工作方式应根据实际应用系统中的CPU的工作状况而定,其选取的原则是既要保证CPU能及时响应按键操作,又不要过多占用CPU的工作时间。通常键盘的工作方式有三种,编程扫描、定时扫描和中断扫描。
; Y- Z1 w. X4 L' P4 R
5 t6 y6 Q: u( [' X( u(1)编程扫描方式
# m( c5 {. |$ v; e7 W" t
# B: k2 a7 }; s0 r8 S编程扫描方式是利用CPU完成其它工作的空余时间,调用键盘扫描子程序来响应键盘输入的要求。在执行键功能程序时,CPU不再响应键输入要求,直到CPU重新扫描键盘为止。
% H- R8 ^$ D1 }7 {9 z% h2 ?- x, z3 G2 j, q& B" Z
(2)定时扫描方式1 A7 c+ ?" W t3 z! e$ z1 ^3 h
* F$ o( v! m7 R' Q定时扫描方式就是每隔一段时间对键盘扫描一次,它利用单片机内部的定时器产生一定时间(例如10ms)的定时,当定时时间到就产生定时器溢出中断。CPU响应中断后对键盘进行扫描,并在有按键按下时识别出该键,再执行该键的功能程序。
; a9 F, P- Y1 t& \0 l; @9 w! P7 U, y8 B1 p4 o6 `$ H
(3)中断扫描方式
0 @2 a5 b- T$ l; q) W6 F @; O: d" f5 T5 ]
上述两种键盘扫描方式,无论是否按键,CPU都要定时扫描键盘,而单片机应用系统工作时,并非经常需要键盘输入,因此,CPU经常处于空扫描状态。, _0 o8 f" c5 e9 s) s0 |) O
! [3 v+ a# r' @6 S {8 _
为提高CPU工作效率,可采用中断扫描工作方式。其工作过程如下:当无按键按下时,CPU处理自己的工作,当有按键按下时,产生中断请求,CPU转去执行键盘扫描子程序,并识别键号。- `" P( G; h( g3 Y* @4 v7 {
2 b+ ?8 r! ]' W; F3 N
8 R, _) j0 l; w0 }3 C, p7 [9 t( L
' d1 F6 x6 d; f: d: w; U+ [) K
4 _! j6 ~0 b4 J
+ J2 a0 `$ X' y: |7 y
|
|