项目四 键盘设计与实现PPT教案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
显示按下的按键。
第6页/共60页
键盘设计应注意的问题
机械式按键在按下或释放 时,由于机械弹性作用的 影响,通常伴随有一定时 间的触点机械抖动,然后 其触点才稳定下来。
其抖动过程如右图所示, 抖动时间的长短与开关的 机械特性有关,一般为 510ms。
若有抖动,按键按下会被 错误地认为是多次操作。
上电的时候,接在P1.0管脚上的发光二极管D1在闪 烁;
当第一次按下按键的时候,接在P1.1 管脚上的发光 二极管D2在闪烁;
再按下按键的时候,接在P1.2 管脚上的发光二极管 D3在闪烁,再按下按键的时候,接在P1.3 管脚上的 发光二极管D4在闪烁,再按下按键的时候,又轮到 D1 在闪烁了,如此轮流下去。
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
10 11 12 13 14 15 16 17
第2页/共60页
R10
10k
R11
10k
R12
10k
R13
10k
R14
10k
R15
10k
R16
10k
R17
10k
认识键盘
键盘是单片机应用系统中人机交流不可缺少的输 入设备。
键盘由一组规则排列的按键组成,一个按键实际 上是一个开关元件。键盘通常使用机械触点式按 键开关,其主要功能是把机械上的通断转换为电 气上的逻辑关系(1和0)。
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
21 22 23 24 25 26 27 28
R6
10k
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
D1在闪烁时,ID=0; D2在闪烁时,ID=1; D3在闪烁时,ID=2; D4在闪烁时,ID=3;
很显然,只要每次按下按键时,分别给出不同的ID号我 们就能够完成上面的任务了。
一键多功能按键识别程序
第12页/共60页
矩阵式键盘设计与实现
4X4小键盘,16个键分别对应0~9、A~F; 有键按下,数码管显示; 无键按下,数码管无显示; 通过输出的列码和读取的行码来判断按下什么键; 有键按下,要有一定的延时,防止由于键盘抖动
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
AT89S52
第11页/共60页
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
39 38 37 36 35 34 33 32
键按下
前沿抖动
后沿抖动
闭合 稳定
按键触点的机械抖动
第7页/共60页
防抖动措施
为了克服按键触点机械抖动所致的检测误判, 必须采取去抖动措施,可从硬件、软件两方面 予以考虑。
➢ 键数较少时,采用硬件去抖; ➢ 键数较多时,采用软件去抖。
软件上采取的措施是在检测到有按键按下时,执 行一个10ms左右(具体时间应视所使用的按键进 行调整)的延时程序,再确认该键电平是否仍保 持闭合状态电平,若仍保持闭合状态电平,则 确认该键处于闭合状态,从而消除抖动的影响。
2. {
3.
P0=0x0f;
//所有列输出低电平
4.
tmp=P0;
//读行信号
5. }
第19页/共60页
去除按键的抖动
当判断到键盘上有键按下后;
延时一段时间再判断键盘的状态;
若仍为有键按下状态,则认为有一个键按下,否则当作按键抖动 来处理。
1. delay10ms(); //延时10ms去抖
21 22 23 24 25 26 27 28
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
10 11 12 13 14 15 16 17
第14页/共60页
键盘的结构与原理
矩阵式键盘 单片机系统中,若使用按键较多时,通常采用矩阵式键盘, 其结构如下图所示。由图可知,一个4×4的行、列结构, 可以构成一个含有16个按键的键盘,节省了很多I/O口。
控制方式:先判断是否有键按下。 如有,再判断哪一键按下,并得到 键码值,然后根据键码值转向不同 的功能程序。
最常用的识别方法是键盘扫描法。
第15页/共60页
判断按键按下的方法
判断是否有键按下的方法是:
向所有的列输出口线输出低电平(不能为高电平, 因为若为高电平,按键按下与否都不会引起行线电 平的变化),然后将行线的电平状态读入。
B0 B1 B2 B3 B4 B5 B6 B7
A0 A1 A2 A3 A4 A5 A6 A7
2 3 4 5 6 7 8 9
CE AB/BA
19 1
74LS245
C2
30pF
U1
19 XTAL1
18 XTAL2
9 RST
29 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
10 11 12 13 14 15 16 17
一键多功能按键识别程序设计
对于要通过一个按键来识别每种不同的功能,我们给每 个不同的功能模块用不同的ID号标识,这样,每按下一 次按键,ID 的值是不相同的,所以单片机就很容易识别 不同功能的身份了。
从上面的要求我们可以看出,D1到D4发光二极管在每个 时刻的闪烁的时间是受按键来控制,我们给D1到D4闪烁 的时段,定义出不同的ID号:
第8页/共60页
软件去抖
在检测到有按键按下时
执行一个10ms左右(具 体时间应视所使用的按 键进行调整)的延时程 序后;
再确认该键电平是否仍 保持闭合状态电平,若 仍保持闭合状态电平, 则确认该键是处于闭合 状态。
第9页/共60页
技能训练4-1
一键多功能按键识别设计与实现
按键接在P3.0管脚上,在AT89S52单片机的P1 端口 接有四个发光二极管。
第10页/共60页
一键多功能按键识别电路设计
C3
R1
10k 10uF
C1 30pXF 1
CRYSTAL
C2 30pF U1
19 XTAL1
18 XTAL2
R5
R4
R3
R2
220
220
220
220
D4
LED-RED
D3
LED-RED
D2
LED-RED
D1
LED-RED
9 RST
29 30 31
PSEN ALE EA
R1
220
D1
LED-RED
9 RST
29 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
AT89S52
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
情况,若读入的行值全为高电平,则表示无键按下; 再送第1列为低电平,其他列为高电平,读入的行的电平状态则显示了该行上的4个按键
的情况; 依次轮流给各列送出低电平,直至4列全部送完,再从第0列开始,依此循环。
采用键盘扫描,我们再来观察第2行与第2列交叉点的键按下时的判断过程, 当第2列送出低电平时,读第2行为低电平,而其他列送出低电平时,读第2 行却为高电平,由此即可断定按下的键应是第2行与第2列交叉点的键。
有键按下,将使对应的I/O口通过该键接地,信 息为“0” ,对应发光二极管点亮。
CPU可以通过检测P0的8个I/O口线哪个是“0” 就可以识别是否有键按下,并能识别出是哪一个 键按下。
第5页/共60页
Байду номын сангаас
独立式键盘程序
程序要判断是否有2个或2个以上的键盘同时按 下,以免键盘分析错误。
独立式键盘程序 假设8个按键分别为1~8,试一试能否用数码管
若无键按下,所有的行线仍保持高电平状态; 若有键按下,行线中至少应有一条线为低电平。 例如:第2行与第2列交叉点的键被按下,则第2行与
第2列导通,第2行电平被拉低,读入的行信号就为 低电平,表示有键按下。
第16页/共60页
识别按键的方法
按键识别的扫描方法:
往列线上按顺序一列一列的送出低电平。 先送第0列为低电平,其他列为高电平,读入的行的电平状态就表明了第0列的4个键的
常见的种类有:
➢ 查询(独立)式键盘 ➢ 矩阵式键盘
第3页/共60页
键盘分类
按键按照结构原理可分为两类
触点式开关按键,如机械式开关、导电橡胶式开关 等;
无触点开关按键,如电气式按键,磁感应按键等。 前者造价低,后者寿命长。按键按照接口原理可分 为两类
按键按照接口原理可分为两类
编码键盘,主要是用硬件来实现对按键的识别,硬 件结构复杂;
第17页/共60页
键盘扫描程序具体实现方法
判断有无键按下 去除按键的抖动 求按键的键值 判断闭合键是否释放
第18页/共60页
判断有无键按下
P0.4~P0.7输出0,然后读P0口;
若低4位P0.0~P0.3全为1,则键盘上没有键按下;
若P0.0~P0.3不全为1,则有键按下。
1. while(tmp==0x0f) //循环判断是否有键按下
否则,该列上就有键按下,并且就是行线为0,列线为0的交叉点, 行号和列号按公式:rol*4+col 计算得到按下键的键值。
例如,P0.4~P0.7输出1101时,P0口的低四位读入的值为1011, 不全为1,就可以断定有键按下,并且是第2行和第1列交叉点的键。 于是,该键的键值=2×4+1=9。按照相同的方法可以得到所有键的 键值。如:return(rol*4+col);
而引起误操作。
第13页/共60页
矩阵式键盘电路
R1
R2
R3
R4
10k
10k
10k
10k
VCC
C3
10uF
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6
GND
R9
10k
C1 30pF X1
CRYSTAL
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6
U2
18 17 16 15 14 13 12 11
39 38 37 36 35 34 33 32
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
21 22 23 24 25 26 27 28
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
AT89C51
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
39 38 37 36 35 34 33 32
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
2. P0=0x0f;
//所有列输出低电平
3. tmp=P0;
//再次读键盘状态
4. if(tmp==0x0f) continue; 键抖动,重新扫描键盘
//如果无键按下则认为是按
第20页/共60页
求按键的键值
对键盘的列线进行扫描,P0.4~P0.7循环输出1110、1101、1011 和0111,依次读P0口,若低4位全为1,则断定该列上没有键按下;
C3
R9
10k 10uF
C1 30pF X1
CRYSTAL
C2
30pF
U1
19 XTAL1
18 XTAL2
R8
220
D8
LED-RED
R7
220
D7
LED-RED
R6
220
D6
LED-RED
R5
220
D5
LED-RED
R4
220
D4
LED-RED
R3
220
D3
LED-RED
R2
220
D2
LED-RED
项目四 键盘设计与实现
教学目的
掌握键盘的接口方法和编程方法 。 了解中断的基本概念和功能。 掌握51单片机中断系统的结构和控制方式。 掌握中断系统的中断处理过程。
第1页/共60页
模块九 独立式键盘设计与实现
使用AT89S52单片机,设计一个具有8个按键的独立式键盘,每个按键对应 一个发光二极管。功能要求:无键按下时,键盘输出全为“1”,发光二极管 全部熄灭;有键按下时,其所对应发光二极管点亮。
非编码键盘,主要是由软件来实现按键的定义与识 别,硬件结构简单,软件编程量大。
这里我们主要介绍单片机中常用的触点式开关按 键、非编码键盘。
第4页/共60页
独立式键盘电路
独立式键盘电路设计时,每个按键的一端与P0 口的一个引脚相连,另一端接地。
无键按下时,P0的8个I/O口均通过电阻接高电 平,信息为“1” ,键盘输出全为“1”发光二极 管全部熄灭。
相关文档
最新文档