找回密码
 注册
关于网站域名变更的通知
查看: 193|回复: 2
打印 上一主题 下一主题

单片机讲义11:输入检测,机械式按键

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-6-6 09:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
第 11讲 输入检测->机械式按键
9 k* P/ }2 m. E: K' ]
知识点:
7 t. Q4 j/ \: w6 [
1、 机械式按键结构特点
2、 51 单片机 IO 端口配置成输入
3、 按键常见电路接法
4、 单片机识别按键的一般思路
5、 识别行列式按键的一种方法
6、 单片机程序设计思想:宏观上并行,微观上串行

3 p3 n9 ?7 {' t! }
一、 机械式按键结构特点:
这里所讲的机械式按键又称轻触开关或微动开关。它的一个主要特点就是按下接通,松开断
8 U7 P0 J1 i& I4 i6 J
开。电路图形符号,文字符号常用 K 或 SW 表示。以下简称按键。
0 j0 c. ]. S+ k% l
二、51 单片机 IO 端口配置成输入:
51 单片机 IO 端口作为通用输入口时,应先向对应的端口寄存器写 1,比如,把 P2.1 配置成 输入,应先 P2.1 = 1;但作为通用输出口时却是无条件的。所以,也把 51 单片机 I/O 口称 为准双向 IO 口。这个操作在行列式按键扫描时,得以体现。由于 51 单片机在上电复位时, 端口寄存器 P0-P3 默认值就是 0XFF,所以,我们在做独立按键时,没有把检测按键的 P1^0
口事先写 1。这一点同学们要注意。

* R) }6 b: y# @) Q" c1 D
三、 按键常见电路接法:
常见接法有两种:分压式接法和高低电平式接法。
              分压式接法电路如下所示

: G3 _) G$ h, s1 l$ Q

这种是分压式接法,其中 ADIN 接的是单片机某一个 AD 口,通过检测不 同的分压值来识别是哪个按键被按下。这种接法的特点是占用单片机 IO 端口极少,只需一个 AD 口即可。但对分压电阻的精度要求高一些。 高低电平式接法是最常见的,也是单片机通用 IO 端口就可以识别的。一

般分为两种:独立式接法和行列式接法。

0 X2 L/ K% Y  _" L4 E" N: ?* A& K! z% y
              独立式接法就是每一个按键对应一个单片机 IO 端口,这种接法单片 机识别起来特别简单,只需检测相应 IO 的高低电平即可。如下图所示:

" M% n% T' ^2 \4 q: w7 ^1 \7 W& s

所有的按键一端接单片机 IO 端口,另外一端全部连在一起接地 GND。我 们只需要检测哪个端口为低电平,即可判断哪个按键被按下了。 行列式高低电平接法,是利用单片机的 IO 口组成行与列,在行与列的每 一个交点处连接按键。故也称为矩阵式按键。电路结构如下所示:


. {) ]7 D% ^8 e7 d  n0 \
$ o& O+ N2 @1 `- P/ B* V( \" \
这种按键的识别方法,我们会在第 5 个知识点上详细讲解。

; E0 v. O' h1 i3 ^+ _8 B" r; Y
四、 单片机识别按键的一般思路:
一般情况下,单片机识别按键的目的是识别当前按键的状态,意 思就是说,一要识别是哪个键动作了(键码),还要识别当前按键是何状态,也称为有效方式,当然了这里的状态大多是与时间有关 的,并执行相应的动作。比如,开发板上独立式按键实验,当按键 按下并抬起时,LED 被点亮。这是最简单的识别。因为是一支按键, 所以不用识别是哪个键被按下,只需识别按键的状态。一般的按键 状态有以下几种:按下,抬起,长按,组合,长按多长时间等等。

; b9 V, r' l6 y1 x. r& l5 y2 y
一个完整的按键动作必须包含下面四个阶段:
按键按下->按下消抖->按键抬起->抬起消抖
% N% L1 s4 P( Y

8 m7 `' l( f8 f, J9 N
在单片机与按键接口程序中,往往先进行按下消抖,而对按键状态的 判断就是指按键处理了。这里的按键处理不是执行相应的动作,而是 区分按键此刻处于何种状态,并改变相应状态变量的值,以便程序其 它地方通过检测相应的按键状态变量去执行相应的动作。比如,我们 可以把按下并抬起的短按点亮 LED,改成长按一段时间点亮 LED。总 的来讲,单片机识别按键就分为三个阶段:按键消抖---按键处理--- 按键执行。这个思路适用于所有形式的按键。至于为什么要消抖?是 因为我们在操作按键时,不可能立即按下或抬起,机械式按键接触面 不是立刻就接触或断开的,而单片机的检测速度特别快,这样往往会 发生误判,因此,我们要等待电平稳定了,再去处理按键。消抖的方 式很简单,就是利用延时,等待一个稳定电平的到来。
' d, Z* H- ^5 x6 W
五、 识别行列式按键的一种方法
H:表示行;L:表示列;

3 q) l/ V9 }4 I# n

5 e7 Y6 X, C0 W- |& x, F
L0 P13
L1 P12
L2 P11
L3 P10

5 M2 i" D% D+ u7 W/ g
H0  P17
0
1
2
3
- z7 s5 w- ?  j
H1  P16
4
5
6
7

  c! u+ S9 q7 s/ j# V
H2  P15
8
9
10
11
: n* Q6 ~/ n! N/ ?5 f
H3  P14
12
13
14
15

3 M. n. R, h& }! P9 K

  j9 J% e' P9 T9 }
3 q8 C; R1 ?8 B' n) s. Z

& \* H# `9 |0 g6 N0 ^% X
4 W( D+ ]4 _& F$ ^9 K  ?& o
9 G# c9 O. U* E5 T) ~, H2 F
$ \9 L: [) t& _8 ]
: p: W0 h3 ^5 T! R
我们先测试列,测试列时,把行控 IO 设置为 0,列空 IO 设置为 1
即:P1 = 0X0F;此时若有按键被按下,我们可以得到 4 组编码:
0X07,0X0B,0X0D,0X0E;每一组又对应列的四个按键。 然后我们再测试行:P1 = 0XF0;又可以得出四个按键编码,这样就可以判断是哪个键被按下了。这里依然是抬起有效。

$ N& q5 j6 p$ ]/ w) |# e
六、 单片机程序设计思想之一
动态扫描

9 g9 q+ P+ g. ~

该用户从未签到

2#
发表于 2022-6-6 11:07 | 只看该作者
\(^o^)/,学习学习

该用户从未签到

3#
发表于 2022-6-6 15:20 | 只看该作者
\(^o^)/,学习学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-8 23:03 , Processed in 0.156250 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表