標(biāo)題: 單片機(jī)按鍵程序調(diào)試 [打印本頁(yè)]

作者: xnysfh    時(shí)間: 2023-6-29 10:02
標(biāo)題: 單片機(jī)按鍵程序調(diào)試
unsigned char code KeyCodeMap[4][4] = { //矩陣按鍵編號(hào)到標(biāo)準(zhǔn)鍵盤鍵碼的映射表
    { '1',  '2',  '3', 0x26 }, //數(shù)字鍵1、數(shù)字鍵2、數(shù)字鍵3、向上鍵
    { '4',  '5',  '6', 0x25 }, //數(shù)字鍵4、數(shù)字鍵5、數(shù)字鍵6、向左鍵
    { '7',  '8',  '9', 0x28 }, //數(shù)字鍵7、數(shù)字鍵8、數(shù)字鍵9、向下鍵
    { '0', 0x1B, 0x0D, 0x27 }  //數(shù)字鍵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)  //回車鍵,計(jì)算結(jié)果
    {
        GetResult();
    }
    else if (keycode == 0x1B)  //Esc鍵,清除
    {
        Reset();
        LcdShowStr(15, 1, "0");
    }
}


問:在LCD上可以直接keycode - '0'得出想要的數(shù)嗎,為什么要用字符,不用0x26 的格式


作者: 飛云居士    時(shí)間: 2023-6-29 10:18
‘0’表示ascii碼字符,其二進(jìn)制數(shù)是0x30.而0x26(上箭頭)沒有方便的ascii碼字符,所以,用二進(jìn)制數(shù)。當(dāng)然,前面的‘0’,你可以改用0x30.功能一樣
作者: Hephaestus    時(shí)間: 2023-6-29 10:22
很多余,讀鍵盤程序轉(zhuǎn)成ASCII碼,在顯示程序里面又要keycode - '0'得出想要的數(shù),不如這樣:
  1. unsigned char code KeyCodeMap[4][4] = { //矩陣按鍵編號(hào)到標(biāo)準(zhǔn)鍵盤鍵碼的映射表
  2.     { 1,  2,  3, 0x26 }, //數(shù)字鍵1、數(shù)字鍵2、數(shù)字鍵3、向上鍵
  3.     { 4,  5,  6, 0x25 }, //數(shù)字鍵4、數(shù)字鍵5、數(shù)字鍵6、向左鍵
  4.     { 7,  8,  9, 0x28 }, //數(shù)字鍵7、數(shù)字鍵8、數(shù)字鍵9、向下鍵
  5.     { 0, 0x1B, 0x0D, 0x27 }  //數(shù)字鍵0、ESC鍵、  回車鍵、 向右鍵
復(fù)制代碼

就不用keycode - '0',直接拿keycode就能用。
作者: liujia21    時(shí)間: 2023-6-29 10:22
0’表示ascii碼字符,直接減去48也可以
作者: qq352133    時(shí)間: 2023-6-29 21:36
用0x26要轉(zhuǎn)格式
作者: dwping    時(shí)間: 2023-7-1 21:16
在給定的代碼中,keycode - '0'是用于將字符型的按鍵編號(hào)轉(zhuǎn)換為相應(yīng)的數(shù)字。這是因?yàn)樵贙eyCodeMap中,數(shù)字鍵的按鍵編號(hào)是以字符形式表示的,例如'0'、'1'、'2'等。通過將字符型的按鍵編號(hào)減去字符'0',可以得到對(duì)應(yīng)的數(shù)字值。  在LCD上直接使用keycode - '0'可以得到想要的數(shù),因?yàn)樽址偷陌存I編號(hào)與相應(yīng)的數(shù)字字符的ASCII碼是按照順序排列的。例如,字符'0'的ASCII碼是48,字符'1'的ASCII碼是49,以此類推。因此,將字符型的按鍵編號(hào)減去字符'0',可以得到對(duì)應(yīng)的數(shù)字值。  使用字符型的按鍵編號(hào)而不是直接使用0x26的格式,可能是為了方便理解和維護(hù)代碼。使用字符形式的按鍵編號(hào)可以更直觀地表示對(duì)應(yīng)的按鍵,而不需要記住每個(gè)按鍵編號(hào)的十六進(jìn)制值。此外,通過使用字符型的按鍵編號(hào),可以在代碼中添加注釋,說明每個(gè)按鍵對(duì)應(yīng)的功能,提高代碼的可讀性。  總的來說,通過keycode - '0'將字符型的按鍵編號(hào)轉(zhuǎn)換為相應(yīng)的數(shù)字是有效的,并且可以在LCD上直接使用。使用字符型的按鍵編號(hào)可以提高代碼的可讀性和可維護(hù)性。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1