admin
发表于: 2015-5-15 09:38:38 | 显示全部楼层

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引脚。连接图如下:

011.jpg

图1 独立按键连接图

本设计按键采用高电平输入有效方式。按键按下时,LPC1752检测到高电平,认为有按键信号输入。本设计可以处理独立按键的按下、长按以及按键间的组合键。


2. 程序设计

2.1 定义

与独立按键连接的GPIO引脚定义:

001.jpg

按键有效时GPIO1 引脚的值:

002.jpg

按键的状态值定义:

006.jpg


2.2 初始化函数KeyInit

初始化与按键相连的GPIO,设置为带下拉的输入模式。代码实现如图2。

007.jpg

图2 KeyInit函数 


2.3 设置按键状态值函数CheckPinKeyState

设置按键按下或者长按时按键状态值。代码实现如图3。

008.jpg

图3 CheckPinKeyState函数

2.4 读取按键ReadKeyState

读取引脚的值,消除抖动后,根据该值调用CheckPinKeyState函数设置按键状态值。具体代码如图4。

009.jpg

图4 ReadKeyState函数


3. 测试

测试流程:

每隔200ms检测一下按键的值,当按键按下时,使用Watch1监测KeyStateRead的值。测试代码如图5。

010.jpg

图5 测试主函数main

测试结果:

按下上键时,KeyStateRead的值为KEY_STATE_UP;

004.jpg

按下下键时,KeyStateRead的值为KEY_STATE_DOWN;

003.jpg

同时按下确认键和组合键时,KeyStateRead的值为KEY_STATE_CTRL_ENTER;

005.jpg

测试结果表明,按键驱动可以正常使用。





跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 53 | 回复: 76



手机版|

GMT+8, 2024-12-22 01:55 , Processed in 0.049134 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表