|
LPC1752采集独立按键的原理与实现
@ 一板网
1. 简介 本文档主要介绍LPC1752采集4个独立按键的原理及实现。 本设计共有4个独立按键,分别是确认键(SW1)、上键(SW2)、下键(SW3)和复合键(SW4)。确认键(SW1)连接至LPC1752的P1.25引脚,上键(SW2)连接至LPC1752的P1.26引脚,下键(SW3)连接至LPC1752的P1.28引脚,复合键(SW4)连接至LPC1752的P1.29引脚。连接图如下:
图1 独立按键连接图 本设计按键采用高电平输入有效方式。按键按下时,LPC1752检测到高电平,认为有按键信号输入。本设计可以处理独立按键的按下、长按以及按键间的组合键。
2. 程序设计 2.1 定义 与独立按键连接的GPIO引脚定义:
按键有效时GPIO1 引脚的值:
按键的状态值定义:
2.2 初始化函数KeyInit 初始化与按键相连的GPIO,设置为带下拉的输入模式。代码实现如图2。
图2 KeyInit函数
2.3 设置按键状态值函数CheckPinKeyState 设置按键按下或者长按时按键状态值。代码实现如图3。
图3 CheckPinKeyState函数 2.4 读取按键ReadKeyState 读取引脚的值,消除抖动后,根据该值调用CheckPinKeyState函数设置按键状态值。具体代码如图4。
图4 ReadKeyState函数
3. 测试 测试流程: 每隔200ms检测一下按键的值,当按键按下时,使用Watch1监测KeyStateRead的值。测试代码如图5。
图5 测试主函数main 测试结果: 按下上键时,KeyStateRead的值为KEY_STATE_UP;
按下下键时,KeyStateRead的值为KEY_STATE_DOWN;
同时按下确认键和组合键时,KeyStateRead的值为KEY_STATE_CTRL_ENTER;
测试结果表明,按键驱动可以正常使用。
|