新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機--矩陣鍵盤模塊(C51)

        單片機--矩陣鍵盤模塊(C51)

        作者: 時間:2016-11-22 來源:網絡 收藏
        #include < reg52.h >

        #include <intrins.h>//包含crol移位子函數的頭文件

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

        #define uchar unsigned char

        #defind uintunsigned int

        uchar key_value=0x19;

        uchar temp,a;

        uchar keyboard()

        {

        uchari,t=4;

        P2=0xFF;//P2口寫1

        a=0x7F;//p_value賦初始值

        i=1;

        while(t--)

        {

        a=_crol_(a,1);//循環左移一位,檢測下一行

        key_scan();

        i++;

        if(i==5){ i=1; a=0x7f;}

        }

        returnkey_value;

        }

        void key_scan()

        {

        P2=a;//P2.0置零

        temp=P2; //讀P2口的值

        temp=temp&0xF0;//取高四位,都得用temp,即temp=p2,temp=temp&0xf0;

        while(temp!=0xF0)//如果高四位不全為0,則有鍵下

        {

        delay(5);//延時消抖

        while(temp!=0xF0)//再讀一次,如果高四位還是不全為0,真的有鍵按下了

        {

        temp=P2;//讀P2口的值給temp

        switch(temp)

        {

        case0xEE:key_value=0; break;

        case0xDE:key_value=1;break;

        case0xBE:key_value=2;break;

        case0x7E:key_value=3;break;

        case0xED:key_value=4;break;

        case0xDD:key_value=5;break;

        case0xBD:key_value=6;break;

        case0x7D:key_value=7;break;

        case0xEB:key_value=8;break;

        case0xDB:key_value=9;break;

        case0xBB:key_value=10; break;

        case0x7B:key_value=11; break;

        case0xE7:key_value=12; break;

        case0xD7:key_value=13; break;

        case0xB7:key_value=14; break;

        case0x77:key_value=15; break;

        }

        while(temp!=0xf0)//松手檢測

        {

        temp=P2;

        temp=temp&0xf0;

        }

        }

        }

        }

        void delay(uint z)

        {

        uintm,n;

        for(m=z;m>0;m--)

        for(n=78;n>0;n--);

        }?




        評論


        技術專區

        關閉
        主站蜘蛛池模板: 前郭尔| 南充市| 澜沧| 怀来县| 沽源县| 安远县| 滁州市| 康乐县| 湘乡市| 泊头市| 海伦市| 建宁县| 洪湖市| 永仁县| 广宗县| 饶河县| 花垣县| 陆河县| 宣恩县| 宜丰县| 通州市| 临清市| 伊春市| 阿拉善盟| 读书| 玉溪市| 浦城县| 营口市| 和平县| 柏乡县| 蒙自县| 长岛县| 同心县| 丽水市| 宁强县| 保定市| 新宁县| 太白县| 鄯善县| 紫云| 崇礼县|