按键程序

更新时间:2023-10-13 04:01:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机按键程序设计及电路设计

在单片机应用系统中,按键主要有两种形式:1、直接按键; 2、矩阵编码键盘。直接按键的每个按键都单独接到单片机的一个I/O口上,直接按键则通过判断按键端口的电位即可识别按键操作;而矩阵键盘通过行列交叉按键编码进行识别。下面我们以S51增强型单片机实验板的直接按键来学习单片机轻触按键在单片机系统中的应用。

S51增强型单片机轻触按键原理图

图 1

一、

按键时序分析

通常所用的按键为轻触机械开关,正常情况下按键的接点是断开的,当我们按压按钮时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而机械触点在闭合及断开的瞬间均伴随有一连串的抖动,按键的时序如下图2所示,抖动时间的长短由按键的机械特性及操作人员按键动作决定,一般为5ms~20ms;按键稳定闭合时间的长短是由操作人员的按键按压时间长短决定的,一般为零点几秒至数秒不等。

二、

轻触按键操作时序示意图

图 2

从上面图2中我们可以看到,一次完整的击键过程,包含以下5个阶段: 1. 等待阶段: 此时按键尚未按下,处于空闲阶段。

2. 前沿(闭合)抖动阶段:此时按键刚刚按下,但按键信号还处于抖动状态,这个时间一般为5~20ms。为了确保按键操作不会误动作,此时必须有个前沿消抖动延时。

3. 键稳定阶段:此时抖动已经结束,一个有效的按键动作已经产生。系统应该在此时执行按键功能;或将按键所对应的键值记录下来,待按键释放时再执行。 4. 后沿(释放)抖动阶段:一般来说,考究一点的程序应该在这里再做一次消抖延时,以防误动作。但是,如果前面“前沿抖动阶段”的消抖延时时间取值合适的话,可以忽略此阶段。

5. 按键释放阶段:此时后沿抖动已经结束,按键已经处于完全释放状态,如果按键是采用释放后再执行功能,则可以在这个阶段进行按键操作的相关处理。

二、按键实验例程

下面我们通过几个实验例程来学习按键扫描编程及按键软件消抖动的编程,通过这些对比实验,给大家一个更加感性的认识。

1、按键K1(P3.2)控制LED指示灯实验:本程序通过实验板上的按键K1控制P1.0上的LED亮灭。程序功能如下:当K1按下开关时指示灯亮,再次按下时指示灯灭。

程序一:

;/////////////////////////////////////////// ;本程序源代码由湖南源点教育教学部提供. ;专业单片机培训,让你学习单片机更容易. ;第一网址----www.stoneedu.com ;热线电话----0731-5538487

;10101010呼源点教育(全国市话) ;王筝 QQ:408864998

;本程序利用proteus,通过按键,取反I/O口

;/////////开始自定义及初始化//////////////// ORG 00H

START: JB P3.2,$ CPL P1.0 LJMP START END

;说明: 最简单的按键程序

;存在的问题: 一次按下,响应多次,按着不动的时候,反复响应

程序二:

;/////////////////////////////////////////// ;本程序源代码由湖南源点教育教学部提供. ;专业单片机培训,让你学习单片机更容易. ;第一网址----www.stoneedu.com ;热线电话----0731-5538487

;10101010呼源点教育(全国市话) ;王筝 QQ:408864998

;本程序利用proteus,通过按键,取反I/O口

;/////////开始自定义及初始化//////////////// ORG 00H

START: JB P3.2,$ ;检测按键K1有没有按下 CPL P1.0 ;执行按键命令,改变P1.0指示灯状态 JNB P3.2,$ ;等待按键K1释放 LJMP START ;返回重新检测按键 END

实验结果分析:

由于本实验程序中没有进行软件消抖动延时处理,我们把程序烧写到单片机上运行时,多次按压K1控制LED的亮灭,发控制不太稳定,大约按十次,LED发光二极管的输出状态有2到3次是错误的。

这就是因为没有软件去抖动的原因,在按键的前沿抖动或后沿抖动期间,抖动脉冲均有可能被程序检测而错误执行,此时相当于按键被按压和松开了N次,LED的输出状态也已经改变了N次,故松开按键后LED的状态是一个随机结果。

本文来源:https://www.bwwdw.com/article/pwef.html

Top