首先分享一個矩陣鍵盤電路:
上述的鍵盤編碼方式是目前為止原理最簡單的方式。首先我們知道當有一個按鍵按下去之后,相應的列線和行線之間就會短路(也可以說是直接相連),因此我們做掃描程序編碼時候,一般都是讓我們的8位輸出口首先輸出0xf0或者0x0f這樣子比較有特點的一些數(shù)值,因為一旦按鍵按下之后,就能和清晰的讀取回來,并且第一次判斷是哪一行,哪一列。然后在第二次把這些行全一或者列全一的數(shù)值進行對調,再讀入之后就能進行編碼了。
但是,我們仔細想一下以下的敘述方式。我第一次輸出0xf0,假設KEY2按下時,入讀的就應該是0xe0,那么假設我讓第二次輸出0x0e,試想下在讀取8這個電路的行列時候會變成什么樣子?是不是很容易得出0xde這個值?那這個0xde就是KEY2的編碼。因此我們在這里總結了行反轉法的基本流程:
(1)端口輸出0xf0;
(2)讀入,判斷是否為0xf0,如果不是表示有按鍵按下;
(3)將讀入值的高4位和低4位交換,再輸出;
(4)讀入端口的值,即按鍵的編碼。
附件內容截圖:
部分源碼截圖: