您的位置: 首頁 >游戲 >

5個IO口最多能掃描多少個按鍵

2022-06-12 18:30:51 編輯:畢晴藍(lán) 來源:
導(dǎo)讀 大家好,小科來為大家解答以上問題。5個IO口最多能掃描多少個按鍵這個很多人還不知道,現(xiàn)在讓我們一起來看看吧!1、在做項(xiàng)目(項(xiàng)目)的時候,

大家好,小科來為大家解答以上問題。5個IO口最多能掃描多少個按鍵這個很多人還不知道,現(xiàn)在讓我們一起來看看吧!

1、在做項(xiàng)目(項(xiàng)目)的時候,往往需要用到的按鍵比較多,IO資源又比較緊張,所以就想盡辦法在其他模塊中節(jié)省IO端口,最后擠出一兩個IO端口,卻發(fā)現(xiàn)還是不夠用,所以真的沒有辦法再增加一個IC來掃描按鍵。

2、一個IC的價(jià)格雖然不高,但對于大批量生產(chǎn)、產(chǎn)品利潤低的廠商來說,卻是一筆巨大的開支!

3、那么,我們能否想出一個更好的密鑰掃描方法:使用最少的IO端口,掃描最多的密鑰?可以嗎?

4、例如:給定五個IO端口,可以掃描多少個按鍵?有人說2*3=6,如圖1所示:

5、圖1

6、是的,大多數(shù)技術(shù)參考書都是這樣做的,我們經(jīng)常這樣做:3個IO端口用于行掃描,2個IO端口用于列檢測(為了描述方便,我們同意將一個IO端口的輸出設(shè)置為“0”——稱之為“掃一個IO端口”)。

7、行行輸出掃描鍵碼,列行檢測是否有掃描按鍵的按鍵查詢方式。

8、掃描鍵流程:行線上依次輸出011、101、110的掃描鍵值,行線上輸出每個掃描鍵值,列線上檢測一次。

9、當(dāng)列線檢測到一個鍵時,可以結(jié)合輸出的掃描鍵值來判斷對應(yīng)的鍵。

10、但是,5 IO真的只能掃描6鍵嗎?有人說能掃九,很聰明!從行IO和地導(dǎo)出三個鍵(注意上拉電阻),如圖2所示:

11、圖二

12、掃鍵過程:首先檢測三行的IO口,掃K1’、K2’、K3’的鍵,然后按照上面2*3的掃鍵過程。

13、5個IO端口可以掃描9個按鍵,足夠強(qiáng)大,比6個按鍵多1/2!

14、動動腦筋。你能再掃幾個嗎?就幾個?一個就行!好了,再想想,就當(dāng)是被逼出來的吧!圖3:

15、圖3

16、不多不少,就10把鑰匙!這種掃描按鍵的方式比較少見!太美了!掃鍵過程:將IO1輸出設(shè)置為“0”,檢測IO2…IO5,如果判斷有對應(yīng)的按鍵按下,則知道有按鍵;如果沒有按鍵,繼續(xù)掃描按鍵:將IO2的輸出設(shè)置為“0”,檢測IO3、IO4、IO5,判斷按鍵是否被按下,以此類推。

17、這里需要注意的是,當(dāng)某個IO端口被掃描(輸出為“0”)時,不要檢測已經(jīng)被掃描的IO端口。

18、比如此時將IO2的輸出設(shè)置為“0”,依次檢測IO3、IO4、IO5,但不要檢測IO1,否則會出問題(為什么,請思考)。

19、你感覺如何?還不錯!讓我們再看看圖3。多么有成就感??!看,看.你看到了什么?來啊!參見圖4:

20、圖4

21、真的很強(qiáng)!你看到了20把鑰匙!又一個對稱的三角形。

22、然而,這樣的安排能正確掃描20個按鍵嗎?答案是肯定的:不是!上下三角形相互對稱,對稱掃過的按鍵無法區(qū)分。

23、你注意到圖3分析中提到的幾點(diǎn)了嗎?(“清掃IO端口時,不要檢查已清掃的IO端口,否則會出錯”)

24、我們來分析一下圖4:當(dāng)IO1輸出“0”時,按下K11或K11’鍵可以被IO2檢測到,但I(xiàn)O2檢測無法區(qū)分K11和K11’鍵!同樣,無論掃描哪個IO端口,都有兩個對稱的按鍵無法區(qū)分。

25、我們假設(shè)如果能區(qū)分對稱密鑰,就能正常判斷密鑰。

26、我們在想:有沒有單向傳導(dǎo)裝置?沒錯。參見圖5!

27、圖5

28、很聰明的思維!利用二極管的單向?qū)щ娦詤^(qū)分兩個對稱密鑰。

29、按鍵掃描思路:對IO端口逐個掃描按鍵,另外四個IO端口可以分別檢測到它們所在的四個按鍵。

30、這樣就不會有圖3分析中提到的注意點(diǎn)。

31、夠酷了!等等,我們不要滿足于現(xiàn)狀。讓我們再看看圖2。是不是有點(diǎn)啟發(fā)?是的,我們來分析一下“五個IO口的地衍生五鍵”。

32、看圖片6:

33、圖6

34、25把鑰匙!5個IO端口掃出25個按鍵!別激動,我們來分析一下它的可行性,通過分析才能使用。

35、假設(shè)按鍵掃描過程:先掃描地面上的五個按鍵,然后掃描按鍵,如圖5所示。

36、首先將五個按鍵掃描到地面,判斷沒有按鍵,然后逐一掃描IO口。

37、但是,在掃描一個鍵的IO端口時,如果按下一個接地鍵,該鍵可能會被誤判,因?yàn)榻拥劓I比其他鍵具有更高的響應(yīng)優(yōu)先級。

38、比如掃一掃IO1,IO1輸出“0”,就在按下K62的時候,IO2檢測到有按鍵,所以無法判斷是K11還是K62。

39、我們可以在程序中避免這種對按鍵的誤判:如果IO2檢測到一個按鍵,那么下一步就是判斷是否有接地按鍵被按下,如果沒有,那么就可以正確判斷是K11。

40、我們總結(jié)了掃描鍵的數(shù)量:

41、s=(n-1)* n n-使能二極管

42、s=(n-1)* n/2n-省略二極管。

43、經(jīng)典?多經(jīng)典??!我告訴你一個小道消息:第一個設(shè)計(jì)這條賽道的人是一位大亨。他(她?)還為此申請了專利!在此我們默默向老板致敬!

44、來源:【微信微信官方賬號:硬件攻擊獅子】歡迎添加關(guān)注!請注明文章來源。

45、支票

本文到此結(jié)束,希望對大家有所幫助。


免責(zé)聲明:本文由用戶上傳,如有侵權(quán)請聯(lián)系刪除!

最新文章

精彩推薦

圖文推薦

點(diǎn)擊排行

2016-2022 All Rights Reserved.平安財(cái)經(jīng)網(wǎng).復(fù)制必究 聯(lián)系QQ280 715 8082   備案號:閩ICP備19027007號-6

本站除標(biāo)明“本站原創(chuàng)”外所有信息均轉(zhuǎn)載自互聯(lián)網(wǎng) 版權(quán)歸原作者所有。