标题:
单片机按键程序调试
[打印本页]
作者:
xnysfh
时间:
2023-6-29 10:02
标题:
单片机按键程序调试
unsigned char code KeyCodeMap[4][4] = { //矩阵按键编号到标准键盘键码的映射表
{ '1', '2', '3', 0x26 }, //数字键1、数字键2、数字键3、向上键
{ '4', '5', '6', 0x25 }, //数字键4、数字键5、数字键6、向左键
{ '7', '8', '9', 0x28 }, //数字键7、数字键8、数字键9、向下键
{ '0', 0x1B, 0x0D, 0x27 } //数字键0、ESC键、 回车键、 向右键
};
void KeyAction(unsigned char keycode)
{
if ((keycode>='0') && (keycode<='9')) //输入字符
{
NumKeyAction(keycode - '0');
}
else if (keycode == 0x26) //向上键,+
{
OprtKeyAction(0);
}
else if (keycode == 0x0D) //回车键,计算结果
{
GetResult();
}
else if (keycode == 0x1B) //Esc键,清除
{
Reset();
LcdShowStr(15, 1, "0");
}
}
问:在LCD上可以直接
keycode - '0'得出想要的数吗,为什么要用字符,不用0x26 的格式
作者:
飞云居士
时间:
2023-6-29 10:18
‘0’表示ascii码字符,其二进制数是0x30.而0x26(上箭头)没有方便的ascii码字符,所以,用二进制数。当然,前面的‘0’,你可以改用0x30.功能一样
作者:
Hephaestus
时间:
2023-6-29 10:22
很多余,读键盘程序转成ASCII码,在显示程序里面又要keycode - '0'得出想要的数,不如这样:
unsigned char code KeyCodeMap[4][4] = { //矩阵按键编号到标准键盘键码的映射表
{ 1, 2, 3, 0x26 }, //数字键1、数字键2、数字键3、向上键
{ 4, 5, 6, 0x25 }, //数字键4、数字键5、数字键6、向左键
{ 7, 8, 9, 0x28 }, //数字键7、数字键8、数字键9、向下键
{ 0, 0x1B, 0x0D, 0x27 } //数字键0、ESC键、 回车键、 向右键
复制代码
就不用keycode - '0',直接拿keycode就能用。
作者:
liujia21
时间:
2023-6-29 10:22
0’表示ascii码字符,直接减去48也可以
作者:
qq352133
时间:
2023-6-29 21:36
用0x26要转格式
作者:
dwping
时间:
2023-7-1 21:16
在给定的代码中,keycode - '0'是用于将字符型的按键编号转换为相应的数字。这是因为在KeyCodeMap中,数字键的按键编号是以字符形式表示的,例如'0'、'1'、'2'等。通过将字符型的按键编号减去字符'0',可以得到对应的数字值。 在LCD上直接使用keycode - '0'可以得到想要的数,因为字符型的按键编号与相应的数字字符的ASCII码是按照顺序排列的。例如,字符'0'的ASCII码是48,字符'1'的ASCII码是49,以此类推。因此,将字符型的按键编号减去字符'0',可以得到对应的数字值。 使用字符型的按键编号而不是直接使用0x26的格式,可能是为了方便理解和维护代码。使用字符形式的按键编号可以更直观地表示对应的按键,而不需要记住每个按键编号的十六进制值。此外,通过使用字符型的按键编号,可以在代码中添加注释,说明每个按键对应的功能,提高代码的可读性。 总的来说,通过keycode - '0'将字符型的按键编号转换为相应的数字是有效的,并且可以在LCD上直接使用。使用字符型的按键编号可以提高代码的可读性和可维护性。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1