回覆列表
  • 1 # 已經過期了

    #include

    #include

    #define uchar unsigned char

    uchar key;

    int i=0;

    char b[4]={"0","0","0","0"};//輸入的密碼放這裡和初始的比較來判斷是否密碼正確

    void keyscan() //掃描按鍵是否按下

    {

    uchar temp;

    P3=0xfe; //掃描第一行

    temp=P3;

    temp=temp&0xf0;

    if(temp!=0xf0) //判斷按鍵是否按下

    {

    delayms(10);//去抖動

    temp=P3;

    temp=temp&0xf0;

    if(temp!=0xf0)//確認按鍵按下

    {

    temp=P3;

    switch(temp)

    {

    case 0xee:key="0";break;

    case 0xde:key="1";break;

    case 0xbe:key="2";break;

    case 0x7e:key="3";break;

    }

    while(temp!=0xf0) //判斷按鍵是否鬆開

    {

    temp=P3;

    temp=temp&0xf0;

    }

    b[i]=key;i++;if(i==3)i=0;

    }

    }

    P3=0xfd; //掃描第二行

    temp=P3;

    temp=temp&0xf0;

    if(temp!=0xf0)

    {

    delayms(10);

    temp=P3;

    temp=temp&0xf0;

    if(temp!=0xf0)

    {

    temp=P3;

    switch(temp)

    {

    case 0xed:key="4";break;

    case 0xdd:key="5";break;

    case 0xbd:key="6";break;

    case 0x7d:key="7";break;

    }

    while(temp!=0xf0)

    {

    temp=P3;

    temp=temp&0xf0;

    }

    b[i]=key;i++;if(i==3)i=0;

    }

    }

    P3=0xfb; //掃描第三行

    temp=P3;

    temp=temp&0xf0;

    if(temp!=0xf0)

    {

    delayms(10);

    temp=P3;

    temp=temp&0xf0;

    if(temp!=0xf0)

    {

    temp=P3;

    switch(temp)

    {

    case 0xeb:key="8" ;break;

    case 0xdb:key="9" ;break;

    case 0xbb:key="A";break;

    case 0x7b:key="B";break;

    }

    while(temp!=0xf0)

    {

    temp=P3;

    temp=temp&0xf0;

    }

    b[i]=key;i++;if(i==3)i=0;

    }

    }

    P3=0xf7; //掃描第四行

    temp=P3;

    temp=temp&0xf0;

    if(temp!=0xf0)

    {

    delayms(10);

    temp=P3;

    temp=temp&0xf0;

    if(temp!=0xf0)

    {

    temp=P3;

    switch(temp)

    {

    case 0xe7:key="C";break;

    case 0xd7:key="D";break;

    case 0xb7:key="E";break;

    case 0x77:key="F";break;

    }

    while(temp!=0xf0)

    {

    temp=P3;

    temp=temp&0xf0;

    }

    b[i]=key;i++;if(i==3)i=0;

    }

    }

    }

    main()

    {

    char a[4]={"3","5","A","C"}; //這個做初始密碼

    while(1)//無限迴圈,保證了b 0-3 四個數有值

    {

    keyscan();

    if(a[0]==b[0]&&a[1]==b[1]&&a[2]==b[2]&&a[3]==b[3])

    {

    //這裡寫密碼正確程式要怎麼處理

    }

    }

    }

    程式碼應該可以。。 我沒板子,只是想著寫。你main裡面加上你要的功能試試,順便把結果告訴我下。。。 我只是給每個按鍵做標記,然後根據按鍵按下的順序,和預定的標記相同則判斷密碼正確。 按鍵是低電平選通。

  • 中秋節和大豐收的關聯?
  • 多WAN口路由器有哪些技術和應用?