標(biāo)題: 請(qǐng)問單片機(jī)如何實(shí)現(xiàn)16個(gè)按鍵兩兩同時(shí)工作 [打印本頁]

作者: 怪怪愛玩    時(shí)間: 2017-10-17 15:09
標(biāo)題: 請(qǐng)問單片機(jī)如何實(shí)現(xiàn)16個(gè)按鍵兩兩同時(shí)工作
  現(xiàn)要想16個(gè)矩陣按鍵中的任何一個(gè)按下不松手,對(duì)應(yīng)的功能在工作,然后再按另外一按鍵,對(duì)應(yīng)的功能也要工作,請(qǐng)問單片機(jī)程序能實(shí)現(xiàn)嗎,具體思路是怎樣的,想了半天,沒有任何進(jìn)展,可憐俺單片機(jī)才入門,有沒有高手指點(diǎn)一下,謝謝

作者: wulin    時(shí)間: 2017-10-17 17:00
編這樣的程序本身沒有什么問題,4個(gè)按鍵就有15種組合,關(guān)鍵是要看實(shí)際應(yīng)用場(chǎng)合才能選擇最佳方案。
看我給壇友的回帖http://www.torrancerestoration.com/bbs/dpj-93120-1.html
作者: yzwzfyz    時(shí)間: 2017-10-17 19:23
這個(gè)與你的單片機(jī)水平無關(guān),取決你對(duì)這件事的構(gòu)思!
1、兩個(gè)鍵都必須有“按鍵記錄”。
2、執(zhí)行的程序不要“立即”響應(yīng),要留有判斷、識(shí)別“按鍵記錄”的時(shí)間。
3、對(duì)事件的處理上,采用輪掃方式,即要保證不要死在一個(gè)事件中(無死等語句,含條件死等,如果必須死等某個(gè)條件,要給個(gè)時(shí)限,限時(shí)退出)。這樣就能保證兩個(gè)事件的處理,都會(huì)被執(zhí)行到。
作者: zl2168    時(shí)間: 2017-10-17 20:39
本帖最后由 zl2168 于 2017-10-17 20:44 編輯

兩個(gè)按鍵同時(shí)按下時(shí)就響應(yīng),一個(gè)按鍵按下時(shí)不響應(yīng),在一定延時(shí)時(shí)間內(nèi)等待另一個(gè)按鍵按下,然后響應(yīng)。
給你個(gè)參考案例,注意有些區(qū)別,下述案例是一個(gè)shift按鍵與其他按鍵同時(shí)按下,你的案例是任意一個(gè)兩個(gè)按鍵同時(shí)按下,不過,原理相同。
實(shí)例74  鍵擴(kuò)展Shift功能
實(shí)例74 按鍵擴(kuò)展shift功能.7z (23.73 KB, 下載次數(shù): 4)


Proteus仿真一下,確認(rèn)有效。
以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1,內(nèi)有常用的單片機(jī)應(yīng)用100案例,用于仿真實(shí)驗(yàn)操作,電路與程序真實(shí)可靠可信可行。書中電路和程序設(shè)計(jì)有詳細(xì)說明,程序語句條條有注解。

作者: imxuheng    時(shí)間: 2017-10-18 17:53
推薦你用狀態(tài)機(jī),每個(gè)按鍵都有自己所處狀態(tài)的標(biāo)志,而且相互不干擾




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1