![]() |
也可以 |
3個IO口這樣能接6個按鍵,是查理復用接法的上限,并不是51單片機能力的上限。 用電阻電壓法理論上可以單口無限,實際單口接三五個也很常見。 |
太陽雨ZW 發(fā)表于 2025-1-17 11:01 也是哈,就DIY樂呵樂呵,真做項目不要再考慮用它了。 |
xiaobendan001 發(fā)表于 2025-1-17 09:54 我要這東西做什么哎。。。 手里還的幾十個8G1K08A的,當時剛出來沒多久就買了,放在手里吃灰呢。。 |
devcang 發(fā)表于 2025-1-14 15:38 也可以接10個按鍵,7個加B1-B2,B2-B3,B1-B3三個。 |
單片機學習習 發(fā)表于 2025-1-16 20:55 3個口帶ADC,沒有搞懂 |
zhuls 發(fā)表于 2025-1-17 09:16 手中還有過去買的幾十個,放著浪費了,現(xiàn)在用來做些小制做利用下。 |
zhuls 發(fā)表于 2025-1-17 09:16 我手里還有一點庫存呢,你要不? ![]() |
太陽雨ZW 發(fā)表于 2025-1-15 13:31 AT89C2051,可以說是史前文物了! 現(xiàn)在哪家上新項目還用這料? 現(xiàn)在新出的20腳MCU,哪個性能配置比不過它?除了固有的庫存,全新貨還貴的要人命。。 |
可以,但是那3個I/O必須帶ADC功能 |
太陽雨ZW 發(fā)表于 2025-1-14 00:49 3個IO不需要節(jié)任何別的零件,可以節(jié)6個按鍵: IO1、IO2、IO3分別對地接一個按鍵。 IO1-IO2、IO1-IO3、IO2-IO3接3個按鍵。 |
zhuls 發(fā)表于 2025-1-14 15:49 用的是AT89C2051,不帶ADC |
太陽雨ZW 發(fā)表于 2025-1-14 16:48 5樓提醒了我,代碼可以簡化為
|
這是都對地接,如果接兩個IO之間,是不是還能更多? |
這樣就很完善了,學習了。 |
注意按鍵不要同時按下多個就行 |
邏輯上沒啥問題。 但對于現(xiàn)在的MCU來說,意義不大, 6個4148不是錢? 為什么不用AD口來測按鍵?還能少兩個IO。 要知道硬件成本遠大于軟件成本。 |
再加3只二極管,可以7個按鈕 |
邏輯像是 3 排列,取2個、和取1個。 這硬件電路沒有問題,測試過。 程序中,可以使用掃描,也可以用3個中斷、再判斷哪個按鈕 |
不知道什么原理 ,為何不用ADC口 |
|
可以,也可以再接第7個開關(guān)同時拉低三個I/O口。 也可以只用3個開關(guān)組合使用。 二進制的 000-111 。 |
判斷B1、B2、B3的電平高低 b1低且b2、b3高對應sw1,b2低且b1、b3高對應sw3,b3低且b1、b2高對應sw5,b1、b2低且b3高對應sw2...... |
這樣寫可以實用吧,消抖用按鍵并電容, char key() { B1=1; B2=1; B3=1; if(B1==0)return 1; else if(B1==0&&B2==0)return 2; else if(B2==0)return 3; else if(B2==0&&B3==0)return 4; else if(B3==0)return 5; else if(B3==0&&B1==0)return 6; else return 0; } |
太陽雨ZW 發(fā)表于 2025-1-14 00:49 什么亂七八糟的,來搞笑的吧 |
Powered by 單片機教程網(wǎng)