久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6666|回復: 13
收起左側

關于矩陣鍵盤多按鍵同時按下的問題

[復制鏈接]
ID:516612 發表于 2021-1-27 13:00 | 顯示全部樓層 |閱讀模式
我是初學51單片機和C語言,前段時間學過矩陣按鍵后就有一個關于電腦鍵盤多按鍵的問題。
就是一般教程里面的矩陣鍵盤的程序都是行列掃描反轉來檢測位的,然后松開按鍵通過while程序來檢測,但是遇到多按鍵的問題就無解了。比如我想按下1鍵的時候1數碼管顯示1,不松手再按下4則4數碼管顯示4,再不松手按7數碼管7顯示7,哪個按鍵松開則關掉哪個。
再比如像電腦鍵盤,要輸入大寫A,如果只按照教程的按鍵程序,當我們按下shift的時候,由于沒有松手,那程序會一直卡在while,那么按下A和其他鍵的時候是無法檢測的。如果不寫松手檢測程序,我查了一下現在鍵盤大多使用的是第二套掃描碼,也就是通斷都發數據,那如果不寫松手檢測,也就不會發送斷碼,那輸入也是有問題的。更不用說Ctrl+Alt+這種組合按鍵了,那更沒法用了。
想了幾天也沒有頭緒,希望有經驗的大神能幫我解惑。謝謝!
回復

使用道具 舉報

ID:516612 發表于 2021-1-27 16:06 | 顯示全部樓層
自頂一下
回復

使用道具 舉報

ID:158375 發表于 2021-1-27 16:59 | 顯示全部樓層
首先說說你想做什么?
按鍵掃描有很多種方式的,按需來完成既定功能。
回復

使用道具 舉報

ID:872416 發表于 2021-1-27 17:07 來自觸屏版 | 顯示全部樓層
還有長按短按
回復

使用道具 舉報

ID:516612 發表于 2021-1-27 17:18 | 顯示全部樓層
本帖最后由 18674201426 于 2021-1-27 18:25 編輯
笨笨兔 發表于 2021-1-27 16:59
首先說說你想做什么?
按鍵掃描有很多種方式的,按需來完成既定功能。

我寫的您可能沒看太清楚,就比如我想按下1鍵的時候1數碼管顯示1,不松手再按下4則4數碼管顯示4,再不松手按7數碼管7顯示7,哪個按鍵松開則關掉哪個。其實實現什么功能倒是次要的,數碼管顯示無非就是段選。我主要是想知道怎樣在按鍵1按下后,按下其他按鍵不會有沖突,因為用循環函數判斷鍵位是否松開會卡住cpu直到按鍵松開為止。就像電腦鍵盤一樣,截圖就是Ctrl+Alt+A的3鍵組合,用循環函數判斷鍵位是否松開,根本無法實現這個功能。
回復

使用道具 舉報

ID:516612 發表于 2021-1-27 17:23 | 顯示全部樓層

長按短按應該還是能直接用延時函數實現的,直接在短按后面繼續延時就可以了,如果不需要短按的功能,可以在長按程序開始時關掉短按相關的處理
回復

使用道具 舉報

ID:332444 發表于 2021-1-27 19:28 | 顯示全部樓層
設計組合鍵是輕而易舉的事,組合鍵也對應一個鍵值。
回復

使用道具 舉報

ID:332444 發表于 2021-1-27 19:29 | 顯示全部樓層
組合鍵可以同時按下也可分開按下
回復

使用道具 舉報

ID:516612 發表于 2021-1-27 21:16 | 顯示全部樓層
xianfajushi 發表于 2021-1-27 19:28
設計組合鍵是輕而易舉的事,組合鍵也對應一個鍵值。

輕而易舉的事嗎?額,,,,您能抽空幫我寫一個簡單的我學習一下嗎,怎么實現的。
就比如1,2,3,4這四個鍵,組成2x2的矩陣鍵盤,1按下 燈1亮,2按下 燈2亮,,3按下 燈3亮,4按下 4燈亮。
重點是:按下任意鍵在不松開的情況下,按下其他鍵,相應的燈都會亮,松開哪個按鍵,哪個燈就熄滅。
只有這樣,當1鍵和2鍵同時按下的時候,經過延時,設定燈5亮,這樣的組合鍵才能實現。
希望能幫我寫個程序看看,謝謝大神!
回復

使用道具 舉報

ID:332444 發表于 2021-1-28 07:44 | 顯示全部樓層
很簡單檢測沒有按鍵釋放就重新掃描,把對應的值定義為需要的即可,寫代碼似乎不需要看你悟性。
回復

使用道具 舉報

ID:89217 發表于 2021-1-28 08:21 | 顯示全部樓層
真正寫按鍵程序是沒人用while的,一般一個程序里面只有一個主while,其他地方基本不用到,一些初學者總是容易被一些低級教程坑害,按鍵設計可以這樣,當你按鍵按下時系統里面就生成標識,抬起時就抹除標識,這樣無論什么時候只要標識還在就可以直接屏蔽當前操作,這樣你做其他操作也不會影響當前值,因為你的案件沒有抬起相當于屏蔽了此按鍵,如果是組合按鍵寫法是不一樣的,需要在一定的時間內完成和一直都生效是兩種不同的寫法,根據邏輯功能設置是必要的,不能一概而論
回復

使用道具 舉報

ID:592807 發表于 2021-1-28 08:43 | 顯示全部樓層
18674201426 發表于 2021-1-27 21:16
輕而易舉的事嗎?額,,,,您能抽空幫我寫一個簡單的我學習一下嗎,怎么實現的。
就比如1,2,3 ...


按鍵掃描會嗎?
簡單點:掃描到第一個按鍵A后直接退出延時10ms再次掃描重復3次,若是后三次沒出現新的按鍵值就直接輸出A,掃描到其他按鍵就組合。
延時10ms和重復3次這個你可以看情況自己決定是否要
復雜點:4個按鍵值做一個4位的數組,從頭到尾掃描一次,有檢測被按下就對應的數組位置置1,然后檢測有少少個1,就知道按了幾個按鍵了。或者
回復

使用道具 舉報

ID:158375 發表于 2021-1-28 08:47 | 顯示全部樓層
18674201426 發表于 2021-1-27 17:18
我寫的您可能沒看太清楚,就比如我想按下1鍵的時候1數碼管顯示1,不松手再按下4則4數碼管顯示4,再不松手 ...

這個很好實現。
按鍵用定時器查詢,定時中斷消抖。
兩次查詢的不同,把那個多出來的發送出去即可。
按鍵可不管抬起。
回復

使用道具 舉報

ID:743654 發表于 2021-1-28 08:49 | 顯示全部樓層
程序能傳上來研究嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品在线免费观看 | 日本亚洲一区 | 一区二区三区欧美大片 | 免费看啪啪网站 | 久久成人一区 | 一区二区三区亚洲 | 亚洲成av片人久久久 | 三级成人在线 | 久草热在线 | 国产黄色大片网站 | 成人久久视频 | 一级黄色短片 | 色综合久久天天综合网 | 欧美综合一区二区三区 | 日本a视频 | 色毛片| 久久综合一区二区三区 | 久久久综合久久 | 男女精品久久 | 精品一区二区三区免费视频 | 亚洲91精品 | 干狠狠 | 国产做a爱免费视频 | 亚洲精品久久久久avwww潮水 | 国产精品久久久久久久久 | 久久99国产精一区二区三区 | 国产精品久久久久久婷婷天堂 | 国产精品久久久爽爽爽麻豆色哟哟 | 每日在线更新av | 国产精品久久久亚洲 | 国产亚洲一区二区三区在线观看 | 欧美一区不卡 | 艹逼网 | 欧美激情久久久 | 91在线看 | 欧美一级二级在线观看 | 国产精品美女久久久 | 国产乱码精品一品二品 | 成人精品在线观看 | 国产精品久久久久久久久久久久久 | www97影院|