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