1.按键初始化
三个按键、两个拨码开关
void GPIO_KEY_Init(void)
{
// 初始化,输入口,高电平
PIN_InitConfig(KEY0p, PIN_MODE_INPUT, 1);
PIN_InitConfig(KEY1p, PIN_MODE_INPUT, 1);
PIN_InitConfig(KEY2p, PIN_MODE_INPUT, 1);
PIN_InitConfig(DSW0p, PIN_MODE_INPUT, 1);
PIN_InitConfig(DSW1p, PIN_MODE_INPUT, 1);
}
#pragma warning 544 // 屏蔽警告
2.按键操作
按键编码
/*************************************************************************
-
函数名称:unsigned char KEY_Read_All(void)
-
功能说明:读取全部按键状态
-
参数说明:无
-
函数返回:按键组合状态,0–7八种状态
-
修改时间:2020年3月10日
-
备 注:读取三个按键状态,方便组合键使用
*************************************************************************/
unsigned char KEY_Read_All(void)
{
unsigned char tm=0;tm = (PIN_Read(KEY0p)|(PIN_Read(KEY1p)<<1)|(PIN_Read(KEY2p)<<2));//读取各个按键状态并编码
if(tm==0x07)
{
return 0;
}
// while(tm == (PIN_Read(KEY0p)|(PIN_Read(KEY1p)<<1)|(PIN_Read(KEY2p)<<2)));//等待按键释放return (~tm)&0X07;
}
按键切换显示
void Test_ComKEY_Tft(void)
{
unsigned char k=0xFF;
TFTSPI_Init(0); //LCD初始化 0:横屏 1:竖屏
TFTSPI_CLS(u16BLUE); //蓝色屏幕
TFTSPI_Show_Logo(0,37);//显示龙邱LOGO
TFTSPI_P16x16Str(0,0,"北京龙邱智能科技",u16RED,u16BLUE); //字符串显示
TFTSPI_P8X16Str(0,1,"Long Qiu i.s.t.",u16WHITE,u16BLACK); //字符串显示
delayms(1000); //延时等待
TFTSPI_Init(1); //LCD初始化 0:横屏 1:竖屏
TFTSPI_CLS(u16BLACK); //黑色屏幕
TFTSPI_P8X16Str(0,1,"KEY Pressed: ",u16WHITE,u16BLACK); //字符串显示
GPIO_KEY_Init();
while(1)
{
k= KEY_Read_All();
switch(k)
{
case NOKEYDOWN:
//TFTSPI_P8X16Str(35,3,"NO key! ",u16WHITE,u16BLACK); //字符串显示
break;
case KEY0DOWN:
TFTSPI_P8X16Str(35,3,"KEY0! ",u16WHITE,u16BLACK); //字符串显示
break;
case KEY1DOWN:
TFTSPI_P8X16Str(35,3,"KEY1! ",u16WHITE,u16BLACK); //字符串显示
break;
case KEY2DOWN:
TFTSPI_P8X16Str(35,3,"KEY2! ",u16WHITE,u16BLACK); //字符串显示
break;
case KEY01DOWN:
TFTSPI_P8X16Str(35,3,"KEY0&1! ",u16WHITE,u16BLACK); //字符串显示
break;
case KEY02DOWN:
TFTSPI_P8X16Str(35,3,"KEY0&2! ",u16WHITE,u16BLACK); //字符串显示
break;
case KEY12DOWN:
TFTSPI_P8X16Str(35,3,"KEY1&2! ",u16WHITE,u16BLACK); //字符串显示
break;
case KEY012DOWN:
TFTSPI_P8X16Str(35,3,"KEY0&1&2!",u16WHITE,u16BLACK); //字符串显示
break;
default:
break;
}
LED_Ctrl(LED0,RVS); //四个LED同时闪烁
delayms(100); //延时等待
}
}