找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機如何實現(xiàn)三個或者三個以上按鍵,控制一個IO口的狀態(tài)

查看數: 1616 | 評論數: 4 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2023-5-11 16:38

正文摘要:

請問各位大神,單片機如何實現(xiàn)以下功能呢?比方說:     按鍵1是控制LED的總開關,1和0;      按鍵2是在LED=1開的狀態(tài)下,按一下發(fā)送一定時間(如160ms)的脈沖(占空比1 ...

回復

ID:1073399 發(fā)表于 2023-5-11 19:55
例如常見的STM32、Arduino等。以下是一個基本的流程:

1.初始化GPIO口,將按鍵1和LED對應的GPIO口設置為輸入和輸出口。

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

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

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

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

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

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

需要注意的是,實現(xiàn)這個功能需要使用定時器,計算時間間隔并控制LED的狀態(tài)。具體實現(xiàn)方式可能會因不同單片機型號和開發(fā)環(huán)境而有所差異,需要根據具體情況進行調整。
ID:1045628 發(fā)表于 2023-5-11 19:12
不知道你說的發(fā)送一定時間的占空比是什么意思,發(fā)送脈沖嗎?
還有如果把這個IO口設置成脈沖輸出口是否還能以普通IO的形式控制,這個我也沒試過,如果可以:
1.把LED的IO設置成PWM或者輸出比較狀態(tài)
2.按鍵1正?刂艻O
3.按鍵2、3按下的時候判斷IO狀態(tài),啟動定時器開始發(fā)相應應脈沖
4.脈沖結束將IO拉回高電平
ID:213173 發(fā)表于 2023-5-11 19:08
這個示例里有你想要的內容
4位數碼管時鐘溫度表仿真.rar (332.04 KB, 下載次數: 7)

ID:1073299 發(fā)表于 2023-5-11 18:04
軟件實現(xiàn),設置一個uint8 的狀態(tài)信息,判斷LED狀態(tài),設置狀態(tài)信息(防止其它2個按鍵動作)執(zhí)行完成,設置狀態(tài)信息。

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表