⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rd_usekey.h

📁 LCD1602键盘显示模块实例
💻 H
字号:
#ifndef _USE_KEY_H_
#define _USE_KEY_H_
/***********************************************************
*   声明库说明:按键处理声明库                             *
*   版本:      v2.00                                      *
*   作者:      傻孩子                                     *
*   创建日期:  2005年11月27日                             *
* -------------------------------------------------------- *
*  [支 持 库]                                              *
*   支持库名称:LIB_Config.h                               *
*   需要版本:  ----                                       *
*   支持库说明:库函数配置声明库                           *
* -------------------------------------------------------- *
*  [版本更新]                                              *
*   修改:      傻孩子                                     *
*   修改日期:  2006年4月15日                              *
*   版本:      v1.3                                       *
*                                                          *
*   修改:      傻孩子                                     *
*   修改日期:  2006年4月23日                              *
*   版本:      v1.31                                      *
*                                                          *
*   修改:      傻孩子                                     *
*   修改日期:  2006年5月5日                               *
*   版本:      v1.32                                      *
*                                                          *
*   修改:      王卓然                                     *
*   修改日期:  2007年2月25日                              *
*   版本:      v2.00                                      *
* -------------------------------------------------------- *
*  [版本历史]                                              *
*     v1.3以下  1、提供了对键盘缓冲区的支持。              *
*               2、支持长按键处理。                        *
*               3、需要外部提供一个毫秒级的延时计数器。    *
*               4、需要外部提供一个有返回值得键盘扫描      *
*                  函数,该函数需要做基本的去抖。          *
*               5、可以外部定义缓冲区大小,空键值。        *
*               6、增加了一个入口键盘扫描码的噪声抑制参    *
*                 KEY_PRESS_DELAY,该值为毫秒级的单向      *
*                 递减数值,即如果值不为零,则减到0为。    *
*                 如果键盘响应过于迟钝,可以适当改小该     *
*                 参数值。                                 *
*     v1.3      修改了头文件的组织形式,对外的接口模式     *
*               对一些时间计数器进行了分类和统一宏定义     *
*               允许外部通过宏定义将这些接口连接到实际     *
*               的计数器上。同时兼容从前的版本。           *
*     v1.31     修正了按键去抖计数器会干扰外部单向计数     *
*               器的错误。                                 *
*     v1.32     允许选择自动刷新按键和手动刷新按键两种模式 *
*     v2.00     支持长按键以重复的间隔触发。               *
* -------------------------------------------------------- *
*  [说    明]                                              *
*            1、在外部合适的位置(毫秒中断程序)增加         *
*               USEKEY_INSERT_MS_TIMER_OVF_ISR_CODE来保证  *
*               头文件的正常使用。                         *
*            2、可以通过定义KEY_BUFF_SIZE来设置键盘缓冲区  *
*               的大小。                                   *
*            3、可以通过定义KEY_PRESS_DELAY来设置去抖得    *
*               时间常数。                                 *
*            4、可以通过_USE_KEY_PRESS_SCAN_FUNC_INTERFACE *
*               来连接用于键盘扫描的函数。该函数必须返回   *
*               扫描码。                                   *
*            5、通过GetKeyCode()函数来获得缓冲区状态,当   *
*               该函数返回True时,可以从ReturnKeyNum和     *
*               ReturnLongPressKeyNum中分别获取按键和长    *
*               按键的扫描码,两个值不能同时不为KeyNull    *
*            6、允许通过_USE_KEY_MANUL_REFRESH来选择自动刷 *
*               新按键缓冲区的模式。                       *
*            7、可以通过宏_USE_KEY_LONG_PRESS_DELAY_TIME来 *
*               定义长按键的最小判定时间。                 *
*            9、可以通过宏_USE_KEY_LONG_PRESS_REPEAT来打开 *
*               长按键重复触发功能。                       *
*            8、宏_USE_KEY_LONG_KEY_FASTEST_SPEED_LEVEL可  *
*               以用来设定长按键时重复触发的最小时间间隔等 *
*               级。取值范围是0至4,数值越大,时间间隔越小 *
*               默认情况下为2,即一秒钟重复4次。           *
***********************************************************/


/********************
* 头 文 件 配 置 区 *
********************/
# include "RD_MacroAndConst.h"

/********************
*   系 统 宏 定 义  *
********************/

/*------------------*
*   常 数 宏 定 义  *
*------------------*/

/*------------------*
*   动 作 宏 定 义  *
*------------------*/
#ifndef _USE_KEY_MANUL_REFRESH
    # define USEKEY_INSERT_MS_TIMER_OVF_ISR_CODE  do\
             {\
                Add_Key_Code();\
                g_wKeyPressTimeCounter++;\
                if (g_wKeyPressDelayCounter) g_wKeyPressDelayCounter--;\
             }while(0);
#else
    # define USEKEY_INSERT_MS_TIMER_OVF_ISR_CODE
#endif

/********************
*   函 数 引 用 区  *
********************/
extern void Add_Key_Code(void);
extern unsigned char Get_Key_Code(void);

/********************
*   全局变量引用区  *
********************/
extern unsigned char g_cReturnKeyNum;
extern unsigned char g_cReturnLongPressKeyNum;

extern unsigned int g_wKeyPressTimeCounter;
extern unsigned int g_wKeyPressDelayCounter;

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -