新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 精巧的4*4鍵盤程序

        精巧的4*4鍵盤程序

        作者: 時間:2016-11-23 來源:網絡 收藏
        #include

        #define uchar unsigned char;

        本文引用地址:http://www.104case.com/article/201611/320306.htm

        uchar key_val=0; //定義鍵值,初始默認為0
        uchar code TAB[16]={0x88,0Xbe,0Xc4,0X94,0Xb2,0X91,0X81,0Xbc, //74LS164驅動
        0X80,0X90,0xa0,0x83,0xc9,0x86,0xc1,0xe1 };//0-f編碼}; //0~F共陽數碼管顯示段碼

        void ms(unsigned char i)
        {
        unsigned char j;
        for(;i>0;i--)
        for(j=122;j>0;j--);
        }

        void Check_Key(void)
        {
        unsigned char row,col,tmp1,tmp2;
        tmp1 = 0x10; //tmp1用來設置P1口的輸出,取反后使P1.4~P1.7中有一個為0
        for(row=0;row<4;row++) // 行檢測
        {
        P0 = 0x0f; // 先將p1.4~P1.7置高
        P0 =~tmp1; // 使P1.4~p1.7中有一個為0
        tmp1*=2; // tmp1左移一位
        if ((P0 & 0x0f) < 0x0f) // 檢測P1.0~P1.3中是否有一位為0,只要有,則說明此行有鍵按下,進入列檢測
        {
        ms(10);
        if ((P0 & 0x0f) < 0x0f)
        {
        tmp2 = 0x01; // tmp2用于檢測出哪一列為0
        for(col =0;col<4;col++) // 列檢測
        {
        if((P0 & tmp2)==0x00) // 該列如果為低電平則可以判定為該列
        {
        key_val = row*4 +col; // 獲取鍵值,識別按鍵
        return; // 退出循環
        }
        tmp2*=2; // tmp2左移一位
        }
        }
        }
        }
        }



        void main()
        {
        unsigned char i;
        SCON=0x00;//串口工作方式0.
        while(1)
        {
        Check_Key();//檢測按鍵
        for(i=0;i<6;i++)
        {
        SBUF=TAB[key_val];//串口發送顯示按鍵值
        while(TI==0);
        TI=0;
        ms(5);
        }

        }
        }



        關鍵詞: 4*4鍵盤程

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 富民县| 隆化县| 远安县| 萨嘎县| 包头市| 新平| 重庆市| 达拉特旗| 霞浦县| 北安市| 池州市| 射阳县| 蕲春县| 永州市| 瑞丽市| 许昌市| 洪洞县| 涞源县| 兴业县| 金寨县| 南陵县| 北川| 湖南省| 尚志市| 兴城市| 三台县| 云和县| 古浪县| 鄄城县| 霸州市| 黄石市| 肇州县| 红安县| 瑞丽市| 霍州市| 故城县| 邵武市| 赤城县| 木兰县| 兴安盟| 阿鲁科尔沁旗|