新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)系列連載8—獨(dú)立鍵盤與矩陣鍵盤

        51單片機(jī)系列連載8—獨(dú)立鍵盤與矩陣鍵盤

        作者: 時(shí)間:2016-11-27 來源:網(wǎng)絡(luò) 收藏

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

        #include
        #define uint unsigned int
        #define uchar unsigned char
        sbit dula=P2^6;
        sbit wela=P2^7;
        sbit key1=P3^4;
        uchar code table[]={
        0x3f,0x06,0x5b,0x4f,
        0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,
        0x39,0x5e,0x79,0x71,0};
        uchar num,temp,num1;
        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=17;
        dula=1;
        P0=0;
        dula=0;
        wela=1;
        P0=0xc0;
        wela=0;

        while(1)
        {
        display(keyscan());
        }
        }
        void display(uchar aa)
        {
        dula=1;
        P0=table[aa-1];
        dula=0;
        }
        uchar keyscan()
        {
        P3=0xfe;
        temp=P3;
        temp=temp&0xf0;
        while(temp!=0xf0)
        {
        delay(5);
        temp=P3;
        temp=temp&0xf0;
        while(temp!=0xf0)
        {
        temp=P3;
        switch(temp)
        {
        case 0xee:num=1;
        break;
        case 0xde:num=2;
        break;
        case 0xbe:num=3;
        break;
        case 0x7e:num=4;
        break;
        }
        while(temp!=0xf0)
        {
        temp=P3;
        temp=temp&0xf0;
        }
        }
        }

        P3=0xfd;
        temp=P3;
        temp=temp&0xf0;
        while(temp!=0xf0)
        {
        delay(5);
        temp=P3;
        temp=temp&0xf0;
        while(temp!=0xf0)
        {
        temp=P3;
        switch(temp)
        {
        case 0xed:num=5;
        break;
        case 0xdd:num=6;
        break;
        case 0xbd:num=7;
        break;
        case 0x7d:num=8;
        break;
        }
        while(temp!=0xf0)
        {
        temp=P3;
        temp=temp&0xf0;
        }
        }
        }


        P3=0xfb;
        temp=P3;
        temp=temp&0xf0;
        while(temp!=0xf0)
        {
        delay(5);
        temp=P3;
        temp=temp&0xf0;
        while(temp!=0xf0)
        {
        temp=P3;
        switch(temp)
        {
        case 0xeb:num=9;
        break;
        case 0xdb:num=10;
        break;
        case 0xbb:num=11;
        break;
        case 0x7b:num=12;
        break;
        }
        while(temp!=0xf0)
        {
        temp=P3;
        temp=temp&0xf0;
        }
        }
        }


        P3=0xf7;
        temp=P3;
        temp=temp&0xf0;
        while(temp!=0xf0)
        {
        delay(5);
        temp=P3;
        temp=temp&0xf0;
        while(temp!=0xf0)
        {
        temp=P3;
        switch(temp)
        {
        case 0xe7:num=13;
        break;
        case 0xd7:num=14;
        break;
        case 0xb7:num=15;
        break;
        case 0x77:num=16;
        break;
        }
        while(temp!=0xf0)
        {
        temp=P3;
        temp=temp&0xf0;
        }
        }
        }
        return num;

        }


        上一頁 1 2 下一頁

        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 牡丹江市| 北流市| 镇沅| 宣武区| 太康县| 区。| 哈巴河县| 阿图什市| 克山县| 临沭县| 电白县| 麻江县| 确山县| 宁夏| 平罗县| 资源县| 安徽省| 玛多县| 蓬溪县| 临泉县| 金平| 怀宁县| 高陵县| 镇赉县| 茂名市| 大厂| 筠连县| 建昌县| 平利县| 高清| 邢台市| 永安市| 西华县| 年辖:市辖区| 德安县| 泸溪县| 茂名市| 兰溪市| 鹰潭市| 沧州市| 尉犁县|