<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        矩陣鍵盤實驗程序

        作者:huqin   來源:本站原創   點擊數:  更新時間:2014年03月24日   【字體:

        試驗效果如下:


         

        #include<reg51.h>
         
        #define duan   P0//段選
        #define wei P2//位選
        unsigned char code wei1[8] = {
        0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位選控制   查表的方法控制
        unsigned char code duan1[17] = {
        0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼
        unsigned char ge;
        unsigned int temp;
        void keys();  //鍵盤掃描函數
        void s(unsigned char xms);  //延時函數
        void DigDisplay(); //動態顯示函數
        void main(void)
        {
        while(1)
        {
        DigDisplay();
        keys();
        }
        }

         
        void DigDisplay()
        {
        unsigned char i;
        unsigned int j;

         
        wei = wei1[i]; //發送位選
        duan = duan1[ge];     //發送段碼
        j = 10; //掃描間隔時間設定
        while(j--);
        duan = 0x00;   //消隱
        }

         
        void s(unsigned char xms)
        {
        unsigned char x,y;
        for(x=xms;x>0;x--)
        for(y=110;y>0;y--);
        }

         
        void keys()
        {
        P1=0x7f;
        temp=P1;
        if(temp!=0x7f)
        {
        s(5);
        temp=P1;
        if(temp!=0x7f)
        {
        temp=temp&0x0f;
        switch(temp)
        {
        case 0x07:ge=0;break;
        case 0x0b:ge=1;break;
        case 0x0d:ge=2;break;
        case 0x0e:ge=3;break;
        }
        while(temp!=0x0f)
        {
        temp=P1;
        temp=temp&0x0f;
        DigDisplay();
        }
        }
        }

         
        P1=0xbf;
        temp=P1;
        if(temp!=0xbf)
        {
        s(5);
        temp=P1;
        if(temp!=0xbf)
        {
        temp=temp&0x0f;
        switch(temp)
        {
        case 0x07:ge=4;break;
        case 0x0b:ge=5;break;
        case 0x0d:ge=6;break;
        case 0x0e:ge=7;break;
        }
        while(temp!=0x0f)
        {
        temp=P1;
        temp=temp&0x0f;
        DigDisplay();
        }
        }
        }

         
        P1=0xdf;
        temp=P1;
        if(temp!=0xdf)
        {
        s(5);
        temp=P1;
        if(temp!=0xdf)
        {
        temp=temp&0x0f;
        switch(temp)
        {
        case 0x07:ge=8;break;
        case 0x0b:ge=9;break;
        case 0x0d:ge=10;break;
        case 0x0e:ge=11;break;
        }
        while(temp!=0x0f)
        {
        temp=P1;
        temp=temp&0x0f;
        DigDisplay();
        }
        }
        }

         
        P1=0xef;
        temp=P1;
        if(temp!=0xef)
        {
        s(5);
        temp=P1;
        if(temp!=0xef)
        {
        temp=temp&0x0f;
        switch(temp)
        {
        case 0x07:ge=12;break;
        case 0x0b:ge=13;break;
        case 0x0d:ge=14;break;
        case 0x0e:ge=15;break;
        }
        while(temp!=0x0f)
        {
        temp=P1;
        temp=temp&0x0f;
        DigDisplay();
        }
        }
        }
        }
        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮