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

📄 key4x4al.h

📁 SPCE061A+SPCL051液晶显示汉字程序
💻 H
字号:
#ifndef	__KEY4X4_h__
#define	__KEY4X4_h__
//	write your header here
#include "easyIO.h"

//======================================================================
//使用说明
//首先调用Key_InitIO()函数对Key4x4的IO口做配置
//然后调用KeyScan()函数扫描键盘,取返回值
//有键按下则调用GetKey()函数对KeyScan()返回的键值进行翻译,得到你要的值
//====================================================================


//********************************************************
// 对Key4x4的IO口做配置
//IOA0-----IOA7         
//********************************************************
void Key_InitIO()
{
	*P_IOA_Dir   |= 0x00f0;
	*P_IOA_Dir   &= 0xfff0;
	*P_IOA_Attrib|= 0x00f0;
	*P_IOA_Attrib&= 0xfff0;
	*P_IOA_Data  |= 0x00f0;
	*P_IOA_Data  &= 0xfff0;
}

//************************************************************
//延时去抖
//***********************************************************
void Delay(unsigned int i)
{
	for(;i>0;i--)
	{
		*P_Watchdog_Clear = 0x0001;
	}
}


//***************************************************************
//全键盘扫描 有键按下则返回键值,无键按下则返回0
//***************************************************************
unsigned int KeyScan()
{
	unsigned int f;
	*P_IOA_Data  |= 0x00f0;
	*P_IOA_Data  &= 0xfff0;
	f=*P_IOA_Data&0x000f;
	if(f==0)			//无键按下
	{
		return f;
	}
	else
	{
		Delay(5000);	//去抖,对按键再次全扫描
		f=*P_IOA_Data&0x000f;
		if(f==0)
		{
			return f;
		}
		else
		{
			f=rowScan();		//有键按下,进行逐行扫描
			return f;
		}
	}
}


//*************************************************************
//逐行扫描函数
//*************************************************************
unsigned int rowScan()
{
	unsigned int f;
	//**********扫描IOB7******************
	*P_IOA_Data  &= 0xff00;	
	Set_IO_Data(A,7,1);
	f=*P_IOA_Data&0x000f;
	if(f!=0)		//有键按下
	{
		f=*P_IOA_Data&0x00ff;
		return f;
	}
	//**********扫描IOB6******************
	*P_IOA_Data  &= 0xff00;	
	Set_IO_Data(A,6,1);
	f=*P_IOA_Data&0x000f;
	if(f!=0)		//有键按下
	{
		f=*P_IOA_Data&0x00ff;
		return f;
	}
	//**********扫描IOB5******************
	*P_IOA_Data  &= 0xff00;	
	Set_IO_Data(A,5,1);
	f=*P_IOA_Data&0x000f;
	if(f!=0)		//有键按下
	{
		f=*P_IOA_Data&0x00ff;
		return f;
	}
	//**********扫描IOB4******************
	*P_IOA_Data  &= 0xff00;	
	Set_IO_Data(A,4,1);
	f=*P_IOA_Data&0x000f;
	if(f!=0)		//有键按下
	{
		f=*P_IOA_Data&0x00ff;
		return f;
	}
}

//*********************************************
//翻译键值 可自行设置
//************************************************
unsigned int GetKey(unsigned int x)
{
	switch(x)
	{
		case 0x0088:return 0x0000;
		case 0x0084:return 0x0001;
		case 0x0082:return 0x0002;
		case 0x0081:return 0x0003;
		case 0x0048:return 0x0004;
		case 0x0044:return 0x0005;
		case 0x0042:return 0x0006;
		case 0x0041:return 0x0007;
		case 0x0028:return 0x0008;
		case 0x0024:return 0x0009;
		case 0x0022:return 0x000a;
		case 0x0021:return 0x000b;
		case 0x0018:return 0x000c;
		case 0x0014:return 0x000d;
		case 0x0012:return 0x000e;
		case 0x0011:return 0x000f;
		default:break;
	}
}


#endif

⌨️ 快捷键说明

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