![]() |
發布時間: 2021-1-15 20:54
正文摘要:附件是矩陣鍵盤的原理圖 以下是矩陣鍵盤掃描程序以及在數碼管顯示0-f 請問如果第一個按鍵被按下,P1口應該是0x07,但進入到測試列的程序中時,P1口被重新賦值為0x0f,那么P1口怎么還會一直保留原來的0x07 ... |
按鍵行做輸出,列做輸入,只需檢測列那邊電平即可 |
yousir 發表于 2021-1-16 10:18 感謝!!!!!! |
你想啊。單片機執行速度非常的快,你按下按鍵的時候(按下的時間很短但對于單片機來說很長了,單片機的處理速度很快)這些操作都已經進行完了,意思就是你雖然進行了賦值,但你還按下了按鍵,按鍵改變了你的賦值,然后switch case語句去判斷你按下了哪個按鍵, |
按鍵抖動 |
預置P1口0x0f,如果第一個按鍵被按下,P1口應該是0x07,此時P1的低4位當前狀態已讀取,以鍵值的方式保存在變量KeyValue中,進入到測試列的步驟時,P1口被重新賦值為0xf0,此時P1的高4位當前狀態0X70再被讀取并與低4位相加。測試得到的結果是0x77。最終輸出KeyValue=0。 |
![]() 這就是矩陣鍵盤掃描的代碼,主函數循環調用本函數就行 不能有死等延遲。必須計數延遲。定時器調用也行(有些浪費不建議)。 |