(21種方案的原理圖展示,及原理簡單介紹)
按鍵作為一個輸入模塊,在單片機開發板中必不可少,本文來討論按鍵的設計方案。本文1600字。之后可能對按鍵編程部分進行分析(可能是視頻形式,打字的話,太多了)
按鍵模塊的編程,實際上就是根據檢測口的電平變化和按鍵電路的狀態,判斷出按鍵模塊中哪個按鍵是真的按下了,按鍵編程的最基礎,常用的就是區分出每一個按鍵,其次是每個按鍵的長按,短按,雙擊。最后才是組合按鍵的情況。組合按鍵是指多個按鍵同時按下的情況,比如電腦鍵盤存在3個按鍵同時按下的情況。多個按鍵同時按下,獨立按鍵是比較好處理的,因為不存在電路問題,其他的按鍵電路,有的電路不能容忍多個按鍵同時按下,如,ADC檢測按鍵,還有的電路,檢測起來的程序可能更加復雜,這里就不進行展開了。
按鍵的模塊的設計,主要內容是:按鍵數量和需要IO口的數量,當然有些不常見的按鍵電路,需要一些其他器件,芯片輔助完成。
下表為按鍵設計的一些方案(占用IO口數量在8個IO口以內,可使用擴展芯片。只列出來一部分,有些專用的按鍵檢測芯片,因為本人沒有使用過,所以這里沒有列出來,歡迎評論區留言)
表1 一些按鍵檢測方案
方案1,2的電路圖相似,編程上也基本一致,但是要做到3X3矩陣按鍵不影響8個IO口剩下的兩個,需要對4X4矩陣按鍵的代碼做出一些優化,這里就不進行展開了。下圖是4X4矩陣按鍵和3X3矩陣按鍵的原理圖。
方案3-6,看似就是按鍵數量的增加,電路的重復,實際上針對不同的按鍵數量,他們的編程可能存在不同,比如最常見的獨立按鍵編程,只檢測一個按鍵,那如何編程2個獨立按鍵的程序呢?復制,再寫個一樣的函數?這樣做的效率其實很低。獨立按鍵的原理圖如圖所示。同時獨立按鍵可以加上0.1Uf的電容進行消抖處理,這樣我們代碼中就不需要軟件消抖了。
方案7,8都是按鍵結合二極管,使得較少的IO口可以檢測出較多的按鍵,這兩個我之前都分析過的,也分享過視頻,這里就不進行展開了。
方案9,4個IO口檢測52個按鍵,這里使用了較多的二極管,這個的檢測原理和方案7,8相似,這里不進行展開了,本人還沒有進行測試。但是原理沒有問題,同時4個IO口理論上可以檢測更多的按鍵,不過還需要增加二極管的數量。
方案10,譯碼器+
IO口方案,這個其實就是一個掃描方案,如果你的電路中出現數碼管,可以和數碼管的位選進行結合,減少單片機IO口的使用數量,當然那樣你的代碼可能更加的復雜。
方案11,一個IO口檢測兩個按鍵,這個設計呢,可能有點超出大部人的理解,但這個設計確實可以存在。通過判斷IO電平是被拉高還是拉低區分出兩個按鍵的動作。
方案12,矩陣按鍵8X8,是一個我之前制作過的一個項目,使用譯碼器進行掃描,使用CD4051讀取按鍵的狀態,64個按鍵需要掃描64次才完成一輪,當檢測按鍵按下時,停止掃描,進行按鍵的,短按,長按,雙擊判斷,算是轉化為普通的按鍵了。
方案13,ADC檢測按鍵,這個方案作為最節省IO口的代表,每次我發其他類型的視頻,總是有人推薦這個,有一說一,確實。但是這個是需要ADC口的,同時這個按鍵組合,一定不能存在兩個按鍵同時被按下的情況。還有就是電路中的電阻精度,盡量選擇1%,選擇5%精度的電阻可能出現按鍵檢測錯誤現象。
方案14-20,又是一系列方案,這個方案和方案7.8.9是一樣的,從方案7,8,9演變而來,取消了方案7,8,9中的部分情況。
方案20,這個8個IO口檢測64個按鍵,其中電路中二極管的數量為8個,這8個二極管的作用就是:區分出是IO1拉低了IO2,還是IO2拉低了IO1。區分出這些呢,一共是56種情況,加上最下邊的8個獨立按鍵,即可實現64個按鍵的區分。
方案21,8路觸摸按鍵。這個方案我是測試過的,可行,但是電路需要較多的元件,因為這個電路是從最基礎的部分做起。這個的原理就不分析了,分析起來能新開一篇文章。
至此,21個電路,12種按鍵方案的電路圖已經分享完了,部分方案我是分享過視頻的,而每一個方案都是可行的(如果問題,可以提出),之后呢,可能對每種方案的編程思想進行詳解,敬請期待。
-
電路圖
+關注
關注
10382文章
10729瀏覽量
537884 -
單片機
+關注
關注
6055文章
44795瀏覽量
643582 -
開發板
+關注
關注
25文章
5318瀏覽量
100347 -
按鍵電路
+關注
關注
1文章
35瀏覽量
21928 -
按鍵檢測
+關注
關注
0文章
24瀏覽量
4893
發布評論請先 登錄
相關推薦
ARM單片機的復位電路設計

STM32單片機按鍵電路設計資料下載

簡單51單片機開發板的電路設計

評論