单片机实用技术 项目二 单片机手动计数器设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
S1
+5v
【任务分析】
当按键被按下时,电平被拉成低电平,此 电平作为作为单片机的输入,单片机接收到 低电平时,认为产生了按键动作,执行相应的 程序。
【相关知识】
一、按键识别
S1
S6
S11
S16
P10
S2
S7
S12
S17
P11
S3
S8
S13
S18
P12
S4
S9
S14
S19
P13
S5
S10
S15
S20
P17
P16
P15
P14
键按下
前沿 抖动
键稳定
后沿 抖动
当单片机检测到与按键 相连的IO口被拉低就证 明此按键被按下,那门 我们将此功能上一个层 次来说呢,按键就是一 个人机接口。那么按键 的操作并没有我们想象 的“按下松开”那么简 单,在实际应用中,手 动操作需要消抖。
按下并抬起按键的过程可以分为5个阶段:
R1 10k
CY3
10µF
S2
+5v
R2
LED1
220
XTAL1 19
18 XTAL2
9 RST
29 PSEN
30 ALE
31 EA
1 P1.0 2 P1.1 3 P1.2 4 P1.3 5 P1.4 6 P1.5 7 P1.6 8 P1.7
AT89S51
Vcc 39
P0.0/AD0 38 P0.1/AD1 37 P0.2/AD2 36 P0.3/AD3 35 P0.4/AD4 34 P0.5/AD5 33 P0.6/AD6 32 P0.7/AD7
AT89S51
Vcc 39
P0.0/AD0 38 P0.1/AD1 37 P0.2/AD2 36 P0.3/AD3 35 P0.4/AD4 34 P0.5/AD5 33 P0.6/AD6 32 P0.7/AD7
P2.0/A08 21 P2.1/A09 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 P2.7/A15 28
【任务实施】 在proteus中绘制如图电路:
R1 10k
CY1
30pF Y1
12MHz CY2 30pF
CY3
10µF
S2
+5v
R2 220
LED1
XTAL1 19
18 XTAL2
9 RST
29 PSEN
30 ALE
31 EA
1 P1.0 2 P1.1 3 P1.2 4 P1.3 5 P1.4 6 P1.5 7 P1.6 8 P1.7
P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13
P3.4/T0 14 P35/T1 15 P3.6/WR 16 P3.7/RD 17
S1
+5v
任务2 一位数码显示
【任务描述】
P2口驱动一位共阴数码 管,如图所示,显示 出一个数字‘5’。
CY1
30pF
330
CY3 10µF
29 PSEN
S2 30 ALE
P2.1/A09 22 R3 P2.2/A10 23 R4 P23/A11 24 R5 P2.4/A12 25 R6
330 b 330 c 330 d 330 e
f
b
g
+5v
31 EA
P2.5/A13 26 R7 P2.6/A14 27 R8 P2.7/A15 28
330 f 330 g
e
cdຫໍສະໝຸດ dp1 P1.0P3.0/RXD 10
2 P1.1
P3.1/TXD 11
单片机系统运行时,通常需要应用输入设备 实现人工参与控制。键盘是由若干个按键组 成的,是单片机最简单也是最常用的输入设备。 操作人员通过键盘输入数据或命令,实现简单 的人机对话。本任务要求设计1个独立按键,单 按下改键时,对应的LED亮,再一次按下,LED熄 灭,如此重复。
CY1
30pF Y1
12MHz CY2 30pF
❖延时读键法:在单片机获得端口为低电平的信息后, 不是立即认定按键已被按下,而是延时10 毫秒或更长 的时间后再次检测该端口,如果仍为低,说明此键的 确被按下了,这实际上是避开了按键按下时的抖动时 间。 ❖如左上图所示,当电源很稳定,没有干扰的情况下, 这种方法是可靠的。 ❖如右上图所示,当电源不稳定,存在很大干扰时, 则有可能存在误判。
P2.0/A08 21 P2.1/A09 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 P2.7/A15 28
P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13
P3.4/T0 14 P35/T1 15 P3.6/WR 16 P3.7/RD 17
Y1 12MHz
CY2 30pF
XTAL1 19
18 XTAL2
Vcc 39
P0.0/AD0 38 P0.1/AD1 37 P0.2/AD2 36 P0.3/AD3 35 P0.4/AD4 34
R1 10k
9 RST
P0.5/AD5 33 P0.6/AD6 32 P0.7/AD7
a
a
P20/A08 21 R2
一、学习目标
1.掌握LED数码管结构。 2.掌握数码管字形编码。 3. 掌握数码管静态显示。 4.掌握数码管动态显示。
二、学习任务
本项目任务分解为具体3个学习任务: 任务1 独立按键识别检测 任务2 一位数码显示 任务3 两位数码显示 任务4 手动计数器实现
三、任务分解
任务一 独立按键识别检测
【任务描述】
等待 闭合 阶段 抖动
有效 闭合
释放 有效 抖动 释放
(5)有效释放阶段
(4)释放抖动阶段
(3)有效闭合阶段
(2)闭合抖动阶段
(1)等待阶段
常用的去抖动的方法--硬件方法和软件方法:
(1)硬件去抖动的方法很多,也可以通过硬 件防抖动来解决,这样成本会高一些。
(2)软件去抖动法,通常用延时程序去抖动。
❖多次读键法:在单片机获得端口为低电平的信息后, 在一段时间内如20毫秒,多次检测按键的状态,只有 当每次读到的状态都是低电平时才认为有按键按下, 如上图所示。 ❖用这种方法,不会存在误判的情况。有一点必须注 意,多次检测持续的时间应该比闭合抖动的时间长。
本项目任务中,主要用软件方法去抖,即 检测出键闭合后执行一个延时程序,产生 10ms的延时,让前沿抖动消失后再一次检测 键的状态,如果仍保持闭合状态电平,则确认 为真正有键按下。当检测到按键释放后,也 要给10ms的延时,待后沿抖动消失后才能转 入该键的处理程序。
相关文档
最新文档