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

📄 keyboard.c

📁 一个在PROTEUS 中方真lpcarm的ucosii移植
💻 C
字号:
/****************************************Copyright (c)**************************************************
**--------------File Info-------------------------------------------------------------------------------
** File name: keyboard.C
** Last modified Date:2007-12-20
** Last Version: 1.0
** Descriptions: 键盘驱动程序
**------------------------------------------------------------------------------------------------------
** Created by:   Rein Lee
** Created date: 2007-12-20
** Version:      1.0
** Descriptions: The original version
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
samples:
|---------col0--col1--col2--co3----|
|rowA------0-----1-----2-----3-----|
|rowB------4-----5-----6-----7-----|
|rowC------8-----9-----a-----b-----|
|rowD------c-----d-----e-----f-----|
|----------------------------------|
********************************************************************************************************/
#include "config.h"

#define	COLUMN_START 16
/*
#define	KEY1	16		//Column1
#define	KEY2	17		//Column2
#define	KEY3	18		//Column3
#define	KEY4	19		//Column4
*/
#define	ROW_START	20
/*
#define	KEYA	20		//Row1
#define	KEYB	21		//Row2
#define	KEYC	22		//Row3
#define	KEYD	23		//Row4
*/
//column取值范围(0~(KEYBOARD_COLUMN-1))
#define	Column_Clear(column)	IO1CLR = (1<<(COLUMN_START+column))   //列线置低
#define Column_Set(column)		IO1SET = (1<<(COLUMN_START+column))   //列线拉高
//row取值范围(0~(KEYBOARD_ROW-1))
#define Row_Status(row)		(IO1PIN&(1<<(ROW_START+row)))
/*********************************************************************************************************
** 函数名称: Keyboard_Initialize
** 功能描述: 键盘输入输出定义
** 输 入: 无 
** 输 出: 无       
** 全局变量: 无
** 调用模块: 无
**------------------------------------------------------------------------------------------------------
** Created by    Rein Lee
** Created date: 2007-12-20
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void Keyboard_Initialize(void)
{
    uint8 i;	
    uint32 pinselbak;
    pinselbak = PINSEL2;		//根据文档,PINSEL2操作使用读-修改-写的方式。
    pinselbak |= 0x00000000;		//PINSEL2.3 = 0时,P1.16~P1.25用于GPIO
    PINSEL2 = pinselbak;
    for(i=0;i<KEYBOARD_COLUMN;i++)	
    IO1DIR |= (1<<(COLUMN_START+i));	//KEY1-4输出,列,column
    
    for(i=0;i<KEYBOARD_ROW;i++)		
    IO1DIR &= ~(1<<(ROW_START+i));		//KEYA-D输入,行,row
    
    for(i=0;i<KEYBOARD_COLUMN;i++)		
    IO1SET |= (1<<(COLUMN_START+i));	//初始化,KEY1-4输出高电平
} 
/*********************************************************************************************************
** 函数名称: Keyboard_Scan()
** 功能描述: 键盘扫描
** 输 入: 无 
** 输 出: 键值,无键按下,返回0xFF。
           Keyboard_Scan出口的keycode值如keyboard.c的Descriptions所示,是连续的。
           因此可以很方便的构建数组,重新映射键码,新建一个如下的数组即可。
           uint8 const KEYCODE_TAB[KEYBOARD_COLUMN*KEYBOARD_ROW],偏移为扫描得到的keycode。    
** 全局变量: 无
** 调用模块: 
**------------------------------------------------------------------------------------------------------
** Created by    Rein Lee
** Created date: 2007-12-20
**------------------------------------------------------------------------------------------------------
** Modified by:    
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8	Keyboard_Scan(void)
{
	uint8 keycode = 0xff;
	uint8 row;
	uint8 col;
	for(col=0;col<KEYBOARD_COLUMN;col++)
	{
	   Column_Clear(col);
	   for(row=0;row<KEYBOARD_ROW;row++)
	   {
	      if(Row_Status(row)==0){
	        keycode = row*KEYBOARD_ROW+col;	
	        }
	   }
	  Column_Set(col);
	}
	return keycode;
}
/*********************************************************************************************************
** 函数名称: Keyboard_Process()
** 功能描述: 键盘扫描
** 输 入: 无 
** 输 出: 无     
** 全局变量: 无
** 调用模块: 
**------------------------------------------------------------------------------------------------------
** Created by    Rein Lee
** Created date: 2007-12-20
**------------------------------------------------------------------------------------------------------
** Modified by:    
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void	Keyboard_Process(void)
{

	
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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