找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1440|回復: 4
打印 上一主題 下一主題
收起左側(cè)

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

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:293079 發(fā)表于 2023-5-11 16:38 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
請問各位大神,單片機如何實現(xiàn)以下功能呢?比方說:     按鍵1是控制LED的總開關,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;

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



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

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

按鍵3按下

按鍵3按下

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

按鍵2按下

按鍵2按下
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

使用道具 舉報

板凳
ID:213173 發(fā)表于 2023-5-11 19:08 | 只看該作者
這個示例里有你想要的內(nèi)容
4位數(shù)碼管時鐘溫度表仿真.rar (332.04 KB, 下載次數(shù): 7)

回復

使用道具 舉報

地板
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.脈沖結(jié)束將IO拉回高電平
回復

使用道具 舉報

5#
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)境而有所差異,需要根據(jù)具體情況進行調(diào)整。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

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