一下是我写的4*4矩阵键盘的程序。但是函数返回的是数值型值。如何返回字符型呢?
比方说:
switch(GPIO_ReadInputData(GPIOC)&0xff)
{
case 0x71: return 'UP'; break;
case 0xB1: return 'DOWN'; break;
case 0xD1: return 'F1'; break;
case 0xE1: return 'F2'; break;
}
uint8_t ReadKey(void)
{
uint8_t KeyValue;
if((GPIO_ReadInputData(GPIOC)&0xff)!=0x0f)
{
Delay_us(10000);//延时10ms
if((GPIO_ReadInputData(GPIOC)&0xff)!=0x0f)
{
GPIO_SetBits(GPIOC, GPIO_Pin_0);
GPIO_ResetBits(GPIOC, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);
switch(GPIO_ReadInputData(GPIOC)&0xff)
{
case 0x71: KeyValue = 1; break;
case 0xB1: KeyValue = 5; break;
case 0xD1: KeyValue = 9; break;
case 0xE1: KeyValue = 13; break;
}
GPIO_SetBits(GPIOC, GPIO_Pin_1);
GPIO_ResetBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2);
switch(GPIO_ReadInputData(GPIOC)&0xff)
{
case 0x72: KeyValue = 2; break;
case 0xB2: KeyValue = 6; break;
case 0xD2: KeyValue = 10; break;
case 0xE2: KeyValue = 14; break;
}
GPIO_SetBits(GPIOC, GPIO_Pin_2);
GPIO_ResetBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3);
switch(GPIO_ReadInputData(GPIOC)&0xff)
{
case 0x74: KeyValue = 3; break;
case 0xB4: KeyValue = 7; break;
case 0xD4: KeyValue = 11; break;
case 0xE4: KeyValue = 15; break;
}
GPIO_SetBits(GPIOC, GPIO_Pin_3);
GPIO_ResetBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2);
switch(GPIO_ReadInputData(GPIOC)&0xff)
{
case 0x78: KeyValue = 4; break;
case 0xB8: KeyValue = 8; break;
case 0xD8: KeyValue = 12; break;
case 0xE8: KeyValue = 16; break;
}
GPIO_SetBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);
GPIO_ResetBits(GPIOC, GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);
while((GPIO_ReadInputData(GPIOC)&0xff)!=0x0f);
return KeyValue;
}
}
return 0;
}
求大神修改一下,提点建议啊 |