回覆列表
  • 1 # 誰暖冬季歲月花念伊

    1、比如是一個4行×4列的矩陣鍵盤。

    2、將4行和4列共8根線分別接到微控制器的I/O口,比如接P1口,行接低4位(P1.0~P1.3),列接高4位(P1.4~P1.7)。

    3、微控制器先將行置第電平0,列置高電平1.

    4、在鍵盤掃描程式中,判斷是否有任意按鍵按下:if((P1&0xf0)!=0xf0),表示有按鍵按下,延時消抖後,再次判斷,如果(P1&0xf0)!=0xf0,則表示有按鍵按下。

    5、然後開始逐行掃描:

    P1=0xfe;//第一行置為低電平“0”(P1.0輸出低電平“0”)

    if(P14==0)keyval=1;//如果檢測到接P1.4引腳的列線為低電平“0”,可判斷是S1鍵被按下

    if(P15==0)keyval=2;//如果檢測到接P1.5引腳的列線為低電平“0”

    ,可判斷是S2鍵被按下

    if(P16==0)keyval=3;//如果檢測到接P1.6引腳的列線為低電平“0”,可判斷是S3鍵被按下

    if(P17==0)keyval=4;//如果檢測到接P1.7引腳的列線為低電平“0”,可判斷是S4鍵被按下

    P1=0xfd;//第二行置為低電平“0”(P1.1輸出低電平“0”)

    if(P14==0)keyval=5;//如果檢測到接P1.4引腳的列線為低電平“0”,可判斷是S5鍵被按下

    if(P15==0)keyval=6;//如果檢測到接P1.5引腳的列線為低電平“0”,可判斷是S6鍵被按下

    if(P16==0)keyval=7;//如果檢測到接P1.6引腳的列線為低電平“0”,可判斷是S7鍵被按下

    if(P17==0)keyval=8;//如果檢測到接P1.7引腳的列線為低電平“0”,可判斷是S8鍵被按下

    P1=0xfb;//第三行置為低電平“0”(P1.2輸出低電平“0”)

    if(P14==0)keyval=9;//如果檢測到接P1.4引腳的列線為低電平“0”,可判斷是S9鍵被按下

    if(P15==0)keyval=10;//如果檢測到接P1.5引腳的列線為低電平“0”,可判斷是S10鍵被按下

    if(P16==0)keyval=11;//如果檢測到接P1.6引腳的列線為低電平“0”,可判斷是S11鍵被按下

    if(P17==0)keyval=12;//如果檢測到接P1.7引腳的列線為低電平“0”,可判斷是S12鍵被按下

    P1=0xf7;//第四行置為低電平“0”(P1.3輸出低電平“0”)

    if(P14==0)keyval=13;//如果檢測到接P1.4引腳的列線為低電平“0”,可判斷是S13鍵被按下

    if(P15==0)keyval=14;//如果檢測到接P1.5引腳的列線為低電平“0”,可判斷是S14鍵被按下

    if(P16==0)keyval=15;//如果檢測到接P1.6引腳的列線為低電平“0”,可判斷是S15鍵被按下

    if(P17==0)keyval=16;//如果檢測到接P1.7引腳的列線為低電平“0”,可判斷是S16鍵被按下

    依次類推,得到4×4=16個按鍵的鍵值。就知道哪個按鍵被按下。

  • 中秋節和大豐收的關聯?
  • 全世界國家城市的名字?