找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1104|回复: 5
收起左侧

单片机按键程序调试

[复制链接]
回帖奖励 20 黑币 回复本帖可获得 20 黑币奖励! 每人限 1 次
ID:1079270 发表于 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 的格式

回复

使用道具 举报

ID:404160 发表于 2023-6-29 10:18 | 显示全部楼层
‘0’表示ascii码字符,其二进制数是0x30.而0x26(上箭头)没有方便的ascii码字符,所以,用二进制数。当然,前面的‘0’,你可以改用0x30.功能一样

评分

参与人数 1黑币 +10 收起 理由
xnysfh + 10 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:883242 发表于 2023-6-29 10:22 | 显示全部楼层
很多余,读键盘程序转成ASCII码,在显示程序里面又要keycode - '0'得出想要的数,不如这样:
  1. unsigned char code KeyCodeMap[4][4] = { //矩阵按键编号到标准键盘键码的映射表
  2.     { 1,  2,  3, 0x26 }, //数字键1、数字键2、数字键3、向上键
  3.     { 4,  5,  6, 0x25 }, //数字键4、数字键5、数字键6、向左键
  4.     { 7,  8,  9, 0x28 }, //数字键7、数字键8、数字键9、向下键
  5.     { 0, 0x1B, 0x0D, 0x27 }  //数字键0、ESC键、  回车键、 向右键
复制代码

就不用keycode - '0',直接拿keycode就能用。

评分

参与人数 1黑币 +10 收起 理由
xnysfh + 10

查看全部评分

回复

使用道具 举报

ID:89606 发表于 2023-6-29 10:22 | 显示全部楼层
0’表示ascii码字符,直接减去48也可以
回复

使用道具 举报

ID:1066599 发表于 2023-6-29 21:36 | 显示全部楼层
用0x26要转格式
回复

使用道具 举报

ID:1086796 发表于 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上直接使用。使用字符型的按键编号可以提高代码的可读性和可维护性。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表