|
發(fā)布時間: 2021-1-15 20:54
正文摘要:附件是矩陣鍵盤的原理圖 以下是矩陣鍵盤掃描程序以及在數(shù)碼管顯示0-f 請問如果第一個按鍵被按下,P1口應該是0x07,但進入到測試列的程序中時,P1口被重新賦值為0x0f,那么P1口怎么還會一直保留原來的0x07 ... |
| 按鍵行做輸出,列做輸入,只需檢測列那邊電平即可 |
yousir 發(fā)表于 2021-1-16 10:18 感謝。。。。! |
| 單片機的處理速度很快(按鍵時間雖短,但在按鍵的時間內(nèi),單片機已經(jīng)將這些處理進行完畢,意思就是你還按著那個鍵,賦予新的初值只是軟件上的改變,而你還按著這個鍵就是硬件上給io口改變了賦值)軟件上賦值給io口是為檢測硬件上的改變(到底按了哪個鍵)做準備,然后switch case語句去檢測到底按下了哪個鍵 |
| 參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
|---|---|---|
|
| + 20 | 回帖助人的獎勵! |
| 你想啊。單片機執(zhí)行速度非常的快,你按下按鍵的時候(按下的時間很短但對于單片機來說很長了,單片機的處理速度很快)這些操作都已經(jīng)進行完了,意思就是你雖然進行了賦值,但你還按下了按鍵,按鍵改變了你的賦值,然后switch case語句去判斷你按下了哪個按鍵, |
| 按鍵抖動 |
| 預置P1口0x0f,如果第一個按鍵被按下,P1口應該是0x07,此時P1的低4位當前狀態(tài)已讀取,以鍵值的方式保存在變量KeyValue中,進入到測試列的步驟時,P1口被重新賦值為0xf0,此時P1的高4位當前狀態(tài)0X70再被讀取并與低4位相加。測試得到的結(jié)果是0x77。最終輸出KeyValue=0。 |
這就是矩陣鍵盤掃描的代碼,主函數(shù)循環(huán)調(diào)用本函數(shù)就行 不能有死等延遲。必須計數(shù)延遲。定時器調(diào)用也行(有些浪費不建議)。 |
Powered by 單片機教程網(wǎng)