新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 感覺比較好的矩陣鍵盤掃描程序

        感覺比較好的矩陣鍵盤掃描程序

        作者: 時間:2012-08-15 來源:網絡 收藏

        =================================================================
        uchar code key_table[]=
        {
        0x77,
        0x7b,
        0x7d,
        0xb7,
        0xbb,
        0xbd,
        0xd7,
        0xdb,
        0xdd,
        0xe7,
        0xeb,
        0xed
        };
        /*上面的數組要自己事先計算好,只要把行和列的值連接在一起就可以得到相應按鍵對應的值了*/
        unsigned char key_scan(void )
        {
        unsigned char i, key_code;/*變量的聲明*/
        key_port = 0x0f;/*這里的key_port是在前面宏定義的一個GPIO口,
        先將行(或者列)置位*/ 
        if(key_port != 0x0f)/*如果有按鍵按下則GPIO的初值就會變化,
        就會執行下面的語句*/
        {
        delay(5);/*這里是的延時實現的是消抖,這里就不作介紹了*/
        if(key_port != 0x0f)/*確定真的有按鍵按下*/
        {
        key_code = key_port;/*把行(或者列)的值賦給key_code*/
        key_port = 0xf0;/*再把列(或者行置位)*/
        key_code |= key_port;/*把行和列的值組合起來并賦值給key_code*/
        for(i = 0; i 12; i++)/*因為每一個按鍵按下對應的key_code只有一個,
        所以根據的按鍵個數用相應的就可以確定到底是哪一個按鍵被按下*/
        {
        if(key_table[i] == key_code)
        {
        key = i+1;
        break;
        }
        }
        }
        }
        else key = 0;
        return key;/*返回的KEY值就是,相應位置的按鍵了*/
        }
         

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 哈尔滨市| 廊坊市| 东乌| 宁国市| 读书| 化德县| 射阳县| 旌德县| 永川市| 宣化县| 彭山县| 江永县| 丰都县| 连云港市| 甘孜县| 长葛市| 昌图县| 翁牛特旗| 石泉县| 浠水县| 柘荣县| 鄯善县| 延津县| 德昌县| 馆陶县| 湖口县| 北海市| 鄯善县| 广平县| 什邡市| 咸阳市| 武义县| 郯城县| 玉林市| 乐业县| 松溪县| 清流县| 清水河县| 娱乐| 普格县| 社旗县|