1. 程式人生 > >關於CT107D開發板矩陣按鍵前兩列不工作問題的研究

關於CT107D開發板矩陣按鍵前兩列不工作問題的研究

CT107D開發板矩陣按鍵原理圖如下所示:

這裡寫圖片描述

其中CON3的1引腳和2引腳相連構成矩陣鍵盤。

//經典矩陣按鍵處理函式
unsigned char keyProcess(void)
{
    unsigned char keyTemp = 0;
    unsigned char keyValue = 0;
    unsigned char P3_Value = 0;

    P3 = 0xf0;
    if(P3 != 0xf0)
    {
        Delay15ms();
        if(P3 != 0xf0)
        {
            P3_Value = P3;
            switch
(P3_Value) { case 0xe0: { keyTemp = 1; }break; case 0xb0: { keyTemp = 2; }break; case 0xd0: { keyTemp = 3; }break
; case 0x70: { keyTemp = 4; }break; } } } P3 = 0x0f; if(P3 != 0x0f) { Delay15ms(); if(P3 != 0x0f) { P3_Value = P3; switch(P3_Value) { case
0x0e: { keyValue = keyTemp; }break; case 0x0b: { keyValue = 4 + keyTemp; }break; case 0x0d: { keyValue = 8 + keyTemp; }break; case 0x07: { keyValue = 12 + keyTemp; }break; } } } return keyValue; }

由上述經典矩陣鍵盤掃描函式編寫按鍵驅動時發現由P3^6和P3^7兩個引腳控制的兩列鍵盤無論如何按,都不產生任何效果,也許有人會認為這是開發板壞掉了,其實不然,開發板沒有壞掉,只是這裡的P3^6和P3^7實際上不控制該兩列按鍵。
若使用如下程式碼進行矩陣鍵盤驅動程式碼的編寫,則完全可以實現功能,程式碼如下:

sfr P4 = 0xC0;

sbit r1=P3^0;  
sbit r2=P3^1;
sbit r3=P3^2;
sbit r4=P3^3;

sbit c1=P4^4;
sbit c2=P4^2;
sbit c3=P3^5;
sbit c4=P3^4;

unsigned char keyProcess(void)
{
    unsigned char key_value;

    r1=0;
    r2=r3=r4=1;
    c1=c2=c3=c4=1;

    if(!c1) 
    {
        key_value=0;
    }
    else if(!c2) 
    {
        key_value=1;
    }
    else if(!c3) 
    {
        key_value=2;
    }
    else if(!c4) 
    {
        key_value=3;
    }

    r2=0;
    r1=r3=r4=1;
    c1=c2=c3=c4=1;

    if(!c1) 
    {
        key_value=4;
    }
    else if(!c2) 
    {
        key_value=5;
    }
    else if(!c3) 
    {
        key_value=6;
    }
    else if(!c4) 
    {
        key_value=7;
    }

    r3=0;
    r2=r1=r4=1;
    c1=c2=c3=c4=1;

    if(!c1) 
    {
        key_value=8;
    }
    else if(!c2) 
    {
        key_value=9;
    }
    else if(!c3) 
    {
        key_value=10;
    }
    else if(!c4) 
    {
        key_value=11;
    }

    r4=0;
    r2=r3=r1=1;
    c1=c2=c3=c4=1;

    if(!c1) 
    {
        key_value=12;
    }
    else if(!c2) 
    {
        key_value=13;
    }
    else if(!c3) 
    {
        key_value=14;
    }
    else if(!c4) 
    {
        key_value=15;
    }

    return key_value;
}

讓人驚訝的是,矩陣鍵盤的第1列和第2列竟然是有P4^4引腳和P4^2引腳控制的,這又是為何呢?
藍橋杯開發板的矩陣鍵盤電路連線和普通的開發板一樣,它使用的是P3口,但藍橋杯比賽要求使用IAP轉接板轉接的IAP15F2k61s2晶片,這個微控制器內建晶振,執行速度快,由於其沒有P36,P37口,在轉接板上用晶片的P42,P44口代替。因此在開發時需要改變一下控制引腳的地址。
最終測試程式參考程式碼下載地址:
http://download.csdn.net/download/qq_34706280/10260248