標題: 單片機5個IO口做25個按鍵(很牛) [打印本頁]
作者: daming 時間: 2014-12-30 00:58
標題: 單片機5個IO口做25個按鍵(很牛)

掃鍵流程:(設置某一IO口輸出為“0”――稱其為“掃某IO口”)
1、掃描直接接地的5個按鍵K61-K65,例如,若K61按下,則IO1-IO5為01111,若K62按下,IO為10111,依次類推。(二極管的導通壓降為零點幾父,單片機認為邏輯0)
2、若判斷沒有按鍵,接著對逐一對IO口進行掃鍵。例如,當對IO1掃描時(IO1置0),檢測IO2-2O5的狀態,若IO狀態為1110,則為K14按下,若為0111,則為K11按下。但當對某一IO口掃鍵時,如果有對地的鍵按下,這時有可能會誤判按鍵,因為對地鍵比其他鍵有更高的響應優先級。例如:掃IO1,IO1 輸出“0”,恰好此時K62按下,IO2 檢測到有按鍵,那就不能判斷是K11 還是K62。。我們可以在程序上避免這種按鍵誤判:若IO2 檢測到有按鍵,那下一步就去判斷是否有對地鍵按下,判斷方法為:先將IO1-IO5置為11111,再去掃描IO1-IO5的狀態,若IO狀態為10111,則可判為K62,如果沒有,即IO的狀態為11111,那就可以正確地判斷是K11了。
我們小結掃鍵個數S(N為IO口個數):
S = (N-1)*N + N ――啟用二極管
S = (N-1)*N /2 ――省掉二極管
詳細程序和仿真圖詳見:http://www.raoushi.com/mcu/1413.html
作者: WADZB 時間: 2015-1-13 17:24
一個字,牛
作者: xyz1015231411 時間: 2015-1-28 13:07
不錯,值得學習。
作者: 牽只羊 時間: 2015-5-28 17:58
四個鍵按兩次 能夠實現16個鍵的功能,這個是把用到對口的控制上了 不過很強
作者: digger63 時間: 2015-6-5 23:11
本壇大神,3個IO識別22個按鍵,四個IO能掃65個鍵。
http://www.raoushi.com/bbs/dpj-19840-1.html
作者: lilijun5292 時間: 2015-6-6 09:40
make an effort
作者: YOU1988 時間: 2015-9-28 22:18
流弊啊,
作者: jjbboox 時間: 2015-10-12 16:57
你要是愿意可以用1個IO口來實現這25個按鍵的功能。
可以用ADC來實現。
作者: wcs1668 時間: 2019-8-30 16:54
矩陣鍵盤實用性不大,多按鍵可以考慮用芯片
作者: aide51 時間: 2020-2-29 17:42
這個看著很厲害的樣子
作者: hhh402 時間: 2020-3-1 00:58
最牛是3個IO口控制PS2電腦鍵盤,有101個按鍵。
作者: 嘟嘟胖子 時間: 2020-6-23 15:32
牛人,值得學習。
歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |