標題:
lpc1768五項按鍵實驗例程
[打印本頁]
作者:
惜羽飛
時間:
2017-6-2 09:37
標題:
lpc1768五項按鍵實驗例程
五向按鍵
lpc1768單片機源程序如下:
/******************************Copyright (c)***********************************
** Nanjing University Jinling College
**
**-----------------------------------------------------------------------------
** Created by: James Ho
** Created date: 2013-07-01
** Version: V1.00
**-----------------------------------------------------------------------------
******************************************************************************/
#include "lpc17xx.h"
#include "lpc1768_timer.h"
#include "bmboard.h"
#include "joystick.h"
void (*oldcb)(void);
/* define the Key scan state machine status */
/* this is a Critical Area var !! */
static KEY_FSM_STATUS status;
/* define current key and previous key */
static KEY_TypeDef Key;
static uint8_t pressedkey;
void Joystick_Config(void){
/*add your code */
LPC_PINCON->PINSEL3=0;
LPC_GPIO1->FIODIR=~(JOY_ENTER|JOY_LEFT|JOY_RIGHT|JOY_UP|JOY_DOWN);
oldcb=pTimer0Callback;
pTimer0Callback=KeyboardScan;
status=KEY_IDLE;
}
KEY_TypeDef GetKey(void)
{
/*add your code */
KEY_TypeDef CurKey;
CurKey.KeyValue=Key.KeyValue;
CurKey.Pressed=Key.Pressed;
CurKey.Released=Key.Released;
if(status==KEY_RELEASE_CONFIRMED){
Key.KeyValue=KEY_VALUE_NOKEY;
Key.Pressed=0;
Key.Released=0;
status=KEY_IDLE;
}
else if(status==KEY_PRESS_CONFIRMED||status==KEY_RELEASED){
Key.Pressed=0;
}
return CurKey;
}
void KeyboardScan()
{
/*add your code */
static uint8_t counter=0;
uint32_t key;
if(counter++<15){
oldcb();
return;
}
else{
counter=0;
key=~(LPC_GPIO1->FIOPIN)&0x3E000000;
if(key&JOY_UP)key=KEY_VALUE_UP;
else if(key&JOY_DOWN)key=KEY_VALUE_DOWN;
else if(key&JOY_LEFT)key=KEY_VALUE_LEFT;
else if(key&JOY_RIGHT)key=KEY_VALUE_RIGHT;
else if(key&JOY_ENTER)key=KEY_VALUE_ENTER;
else key=KEY_VALUE_NOKEY;
}
switch(status){
case KEY_IDLE:
if(key)
status=KEY_PRESSED;
break;
case KEY_PRESSED:
if(key){
status=KEY_PRESS_CONFIRMED;
Key.KeyValue=key;
Key.Pressed=1;
}
else
status=KEY_IDLE;
break;
case KEY_PRESS_CONFIRMED:
if(key)
status;
else
status=KEY_RELEASED;
break;
case KEY_RELEASED:
if(key)
status=KEY_PRESS_CONFIRMED;
else{
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
0.png
(45.33 KB, 下載次數(shù): 42)
下載附件
2017-6-2 16:11 上傳
所有資料51hei提供下載:
實驗8 五項按鍵.rar
(617.88 KB, 下載次數(shù): 15)
2017-6-2 09:37 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1