標題: 單片機如何實現(xiàn)三個或者三個以上按鍵,控制一個IO口的狀態(tài) [打印本頁]

作者: youyouku    時間: 2023-5-11 16:38
標題: 單片機如何實現(xiàn)三個或者三個以上按鍵,控制一個IO口的狀態(tài)
請問各位大神,單片機如何實現(xiàn)以下功能呢?比方說:     按鍵1是控制LED的總開關(guān),1和0;
     按鍵2是在LED=1開的狀態(tài)下,按一下發(fā)送一定時間(如160ms)的脈沖(占空比1),時間到了,又變?yōu)楦唠奓ED=1;
     按鍵2也是在LED=1開的狀態(tài)下,按一下發(fā)送一定時間(如300ms)的脈沖(占空比2),時間到了,又變?yōu)楦唠奓ED=1;

煩請各位大神提供一下思路。謝謝大家。



首先感謝各位回復(fù)!
是的,如是說,是按鍵2和3按下時,發(fā)送一段脈沖信號。時間到了又拉為高電平,類似紅外發(fā)送一段脈沖碼一樣。如圖。

2aeabe4034ad5af3b5ae0bd4e64884c.jpg (197.96 KB, 下載次數(shù): 71)

按鍵3按下

按鍵3按下

66bd27c1e12e6764ac01b9e500af379.jpg (189.69 KB, 下載次數(shù): 61)

按鍵2按下

按鍵2按下

作者: wydev    時間: 2023-5-11 18:04
軟件實現(xiàn),設(shè)置一個uint8 的狀態(tài)信息,判斷LED狀態(tài),設(shè)置狀態(tài)信息(防止其它2個按鍵動作)執(zhí)行完成,設(shè)置狀態(tài)信息。
作者: wulin    時間: 2023-5-11 19:08
這個示例里有你想要的內(nèi)容
4位數(shù)碼管時鐘溫度表仿真.rar (332.04 KB, 下載次數(shù): 7)


作者: rctty    時間: 2023-5-11 19:12
不知道你說的發(fā)送一定時間的占空比是什么意思,發(fā)送脈沖嗎?
還有如果把這個IO口設(shè)置成脈沖輸出口是否還能以普通IO的形式控制,這個我也沒試過,如果可以:
1.把LED的IO設(shè)置成PWM或者輸出比較狀態(tài)
2.按鍵1正常控制IO
3.按鍵2、3按下的時候判斷IO狀態(tài),啟動定時器開始發(fā)相應(yīng)應(yīng)脈沖
4.脈沖結(jié)束將IO拉回高電平
作者: 多木    時間: 2023-5-11 19:55
例如常見的STM32、Arduino等。以下是一個基本的流程:

1.初始化GPIO口,將按鍵1和LED對應(yīng)的GPIO口設(shè)置為輸入和輸出口。

2.進入主循環(huán),在主循環(huán)中讀取按鍵1的狀態(tài)。如果按鍵1被按下,將LED的狀態(tài)取反。

3.如果LED被打開(即LED=1),則進入另一個循環(huán),等待按鍵2被按下。

4.當按鍵2被按下時,記錄當前時間。同時設(shè)置LED為高電平,并開始計時。

5.當計時器的時間到達160ms時,將LED設(shè)置為低電平(占空比1)。

6.繼續(xù)計時,當計時器的時間到達300ms時,將LED設(shè)置為低電平(占空比2)。

7.回到主循環(huán),等待下一次按鍵事件。

需要注意的是,實現(xiàn)這個功能需要使用定時器,計算時間間隔并控制LED的狀態(tài)。具體實現(xiàn)方式可能會因不同單片機型號和開發(fā)環(huán)境而有所差異,需要根據(jù)具體情況進行調(diào)整。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1