新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機程序——4乘4矩陣鍵盤使用方法

        51單片機程序——4乘4矩陣鍵盤使用方法

        作者: 時間:2016-11-23 來源:網絡 收藏
        #include
        #define uint unsigned int
        #define uchar unsigned char
        #define dula P0
        #define wela P1
        unsigned char code DuanMa[]={0xc0,0xf9,0xa4,0xb0,
        0x99,0x92,0x82,0xf8,
        0x80,0x90,0x88,0x83,
        0xa7,0xa1,0x86,0x8e,0xff};
        uchar num,temp;
        void delay(uint z)
        {
        uint x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--);
        }
        uchar keyscan();
        void display(uchar aa);
        void main()
        {
        num=16;
        while(1)
        {
        display(keyscan());
        }
        }
        void display(uchar aa)
        {
        wela=0xff;
        dula=DuanMa[aa];
        }
        uchar keyscan()
        {
        P2=0xef;
        temp=P2;
        temp=temp&0x0f;
        while(temp!=0x0f) //確認是否按下
        {
        delay(5);
        temp=P2;
        temp=temp&0x0f;
        while(temp!=0x0f)
        {
        temp=P2;
        switch(temp)
        {
        case 0xee:num=0;
        break;
        case 0xed:num=1;
        break;
        case 0xeb:num=2;
        break;
        case 0xe7:num=3;
        break;
        }
        while(temp!=0x0f) //松手檢測
        {
        temp=P2;
        temp=temp&0x0f;
        }
        }
        }
        P2=0xdf;
        temp=P2;
        temp=temp&0x0f;
        while(temp!=0x0f)
        {
        delay(5);
        temp=P2;
        temp=temp&0x0f;
        while(temp!=0x0f)
        {
        temp=P2;
        switch(temp)
        {
        case 0xde:num=4;
        break;
        case 0xdd:num=5;
        break;
        case 0xdb:num=6;
        break;
        case 0xd7:num=7;
        break;
        }
        while(temp!=0x0f)
        {
        temp=P2;
        temp=temp&0x0f;
        }
        }
        }
        P2=0xbf;
        temp=P2;
        temp=temp&0x0f;
        while(temp!=0x0f)
        {
        delay(5);
        temp=P2;
        temp=temp&0x0f;
        while(temp!=0x0f)
        {
        temp=P2;
        switch(temp)
        {
        case 0xbe:num=8;
        break;
        case 0xbd:num=9;
        break;
        case 0xbb:num=10;
        break;
        case 0xb7:num=11;
        break;
        }
        while(temp!=0x0f)
        {
        temp=P2;
        temp=temp&0x0f;
        }
        }
        }
        P2=0x7f;
        temp=P2;
        temp=temp&0x0f;
        while(temp!=0x0f)
        {
        delay(5);
        temp=P2;
        temp=temp&0x0f;
        while(temp!=0x0f)
        {
        temp=P2;
        switch(temp)
        {
        case 0x7e:num=12;
        break;
        case 0x7d:num=13;
        break;
        case 0x7b:num=14;
        break;
        case 0x77:num=15;
        break;
        }
        while(temp!=0x0f)
        {
        temp=P2;
        temp=temp&0x0f;
        }
        }
        }
        return num;
        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 开平市| 依兰县| 泗水县| 娄底市| 那曲县| 远安县| 麻城市| 扶沟县| 江山市| 革吉县| 临海市| 柘荣县| 济宁市| 永济市| 延川县| 嘉黎县| 霍林郭勒市| 潍坊市| 湘阴县| 竹山县| 县级市| 伊金霍洛旗| 河西区| 南充市| 桦甸市| 商洛市| 凤阳县| 德钦县| 蓝山县| 寿阳县| 湘潭县| 马关县| 汉沽区| 安阳市| 台东县| 天镇县| 凌源市| 进贤县| 新建县| 长垣县| 宜城市|