新聞中心

        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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 昔阳县| 民丰县| 大兴区| 久治县| 涞水县| 赤壁市| 怀仁县| 厦门市| 襄汾县| 安福县| 东阿县| 卢氏县| 罗平县| 巧家县| 五指山市| 合江县| 田阳县| 开化县| 肥东县| 辽源市| 精河县| 陇西县| 巨野县| 清徐县| 夹江县| 鄂托克前旗| 贺州市| 江阴市| 阜康市| 栖霞市| 金平| 江西省| 临潭县| 高阳县| 安庆市| 增城市| 玛曲县| 岳普湖县| 广元市| 八宿县| 衡水市|