![]() |
發布時間: 2022-3-8 16:46
正文摘要:如題所示:打算用STM32單片機的IO口去識別按鍵是否被按下,按鍵如圖所示:3個按鍵串聯為1組,總共4組12個按鍵。要求用盡量少的IO口和外圍器件去識別按鍵動作。我自己現在是要用8個按鍵,感覺還可以再減少,但是想不 ... |
188610329 發表于 2022-3-13 15:04 長見識了!! |
lkc8210 發表于 2022-3-9 23:56 大哥牛逼 |
在任何一個實際項目中, 按鍵應該都是最后考慮的東西, 因為實現方法太多了,應該根據實際有的資源,最后決定按鍵方案,你其他東西都設計好了, 還剩 12個以上IO 就什么都不要想,直接通通獨立按鍵。 如果 還剩 4~6個IO 就用 板凳的方法, 如果 還剩 1個IO 并且,可以ADC 那么就用10樓的方法。 如果 沒有剩余IO, 但是有用 TM1650 之類的 LED 驅動芯片,那么直接用 TM16系列LED芯片自帶的 按鍵識別功能,就可以了。 包括IO復用方案,單IO無DAC,電容充放電方案,等等等等,方法很多很多,單純的討論按鍵實現方法,不考慮應用場景,來確定哪個方案好,沒有太大的實際意義。 |
矩陣鍵盤四乘三 |
用上個ADC口掃描,可以串到你不想要 |
Y8FPWR9A24@CJB@)Y%`USLP.png (50.17 KB, 下載次數: 58)
矩陣鍵盤四乘三,這樣不對 |
串電阻用ADC識別,8個鍵用兩個IO口就能實現。 |
wulin 發表于 2022-3-8 21:13 確切的說是3*(3+gnd),只要6個IO |
如果按你圖上畫的3個一組,必須是4組的話,就可以用4個ADC口線引腳;每一組接一個STM32的ADC口線,每個按鍵上加上不同的電阻,根據采樣電壓不同,區分不同的按鍵;理論上一個ADC口線就可以接多個按鍵(理論上1個ADC口線就可以做出12個按鍵;當然要看看AD采樣的精度和鍵與鍵之間的電壓余量,盡可能的鍵與鍵之間余量多些,這樣就不至于把鍵采集錯誤); |
矩陣掃描鍵盤 3*4 但不是你這樣的接法 |
lkc8210 發表于 2022-3-9 23:56 當年數理邏輯肯定學的好。 |
不加二極管只需6個IO![]() 加二極管只需4個IO,但要消耗12顆二極管,不合算 原理是每次單片機只拉低一根腳 然后測量其它腳有沒有被拉低 |
12個按鍵3*4矩陣需要7個IO口 |