~ 1 ~ 764 嵌入式创新工作室
长短摁键
2011 年 11 月 16 日
~ 2 ~ 764 嵌入式创新工作室
修改历史
1. 创建 修改时间:2011 年 11 月 16 日
2. 漆彦清添加流程图 修改时间:2011 年 12 月 7 日
~ 3 ~ 764 嵌入式创新工作室
长短摁键
1. 前言
经过独立摁键(一)的学习和操作,相信你已经学会了简单的摁键操作。想
不想更进一步学习和利用摁键呢?现在我们一起来看看,怎么样让摁键有长短。
2. 长短摁键原理
所谓长短摁键,就是单片机能通过你摁键时间的长短知道你摁的是长键还是
短键。举个例子吧~比如手机上的关机键,你可以用它来挂电话、回桌面甚至关
机,那么这个普通的摁键,是如何做到这一点的呢?其实,就是通过对长短摁键
的控制,来满足你不同的需求的。
长短摁键的关键,其实就在长短的界定与扫描。
长短有相对。首先你得设定一个时间。假设你设定个时间为 1s,那么,你
可以让单片机去扫描摁键。如果发现摁键摁下时间长于或等于 1s 的,即判断其
为长摁键;时间短于 1s 的则判断其为短摁键。这样一来,就可以只用一个摁键,
而去实现不同的功能了。
3. 摁键抖动与消抖
我们实现长短摁键的时候,仍然要对其进行消抖,这里就不再赘述了。
详情可以参见独立摁键(一)。
4. 关键代码
#include <reg52.h> //输入输出头文件
#define uchar unsigned char //把已有的类型换名,定义成方便自
#define uint unsigned int //己使用的类型名,便与记忆与使用
sbit Key_S5=P3^4; //为端口 P3_4 改名为 Key_S5
sbit Led_R=P1^0; //为端口 P1_0 改名为 Led_R,表示红灯
sbit Led_G=P1^1; //为端口 P1_1 改名为 Led_G,表示绿灯
//sbit 为位定义关键字,用来定义端口中的某一位