找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6470|回復: 15
打印 上一主題 下一主題
收起左側

想用單片機做一個延時電路,卻沒有思路

  [復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:425206 發(fā)表于 2018-11-26 11:01 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
按鈕1按下后過一段時間(比如2s)后,按下按鈕2,控制繼電器啟動,按鈕2按下后過一段時間(比如2s)后,按下按鈕1,控制繼電器啟動,我想理解怎么讓按鈕2知道按鈕1按下,有大佬可以給一下思路嗎,看一下程序

評分

參與人數(shù) 1黑幣 +8 收起 理由
滅雷決88 + 8 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:94031 發(fā)表于 2018-11-26 11:32 | 只看該作者
按鍵狀態(tài)應建一個標志,根據(jù)標志就知道那個按下,那個沒按下。
回復

使用道具 舉報

板凳
ID:277550 發(fā)表于 2018-11-26 12:32 | 只看該作者
全局變量,記住按鍵狀態(tài)


~~~~~~
回復

使用道具 舉報

地板
ID:424598 發(fā)表于 2018-11-26 13:05 來自觸屏版 | 只看該作者
比較A1代表按鈕1的標志,A2代表按鈕2的標志,當按鈕1按下后,A1=1,按下按鈕2里,判斷A1=1的話就啟動繼電器 并讓A1=0
回復

使用道具 舉報

5#
ID:429166 發(fā)表于 2018-11-26 13:40 | 只看該作者
你的按鈕二不能自動按下吧,按鈕一按下2s后按鈕二按下的話,你寫個延時函數(shù)就可以啊
回復

使用道具 舉報

6#
ID:404720 發(fā)表于 2018-11-26 15:02 | 只看該作者
定義一個標志位,改變按鈕1的時候給標志位賦值就ok
回復

使用道具 舉報

7#
ID:430265 發(fā)表于 2018-11-26 15:43 | 只看該作者
最簡單的是在按鈕的程序時候定義標志位,根據(jù)標志位不同實現(xiàn)不同的功能。如果考慮到按下的時間就很復雜了
回復

使用道具 舉報

8#
ID:433533 發(fā)表于 2018-11-26 16:23 | 只看該作者
按下按鈕1后啟動定時器,當定時器超過2s后,持續(xù)查詢按鈕2狀態(tài),如果按鈕2按下,啟動繼電器
回復

使用道具 舉報

9#
ID:397465 發(fā)表于 2018-11-26 17:25 | 只看該作者
用單片機做延時電路,確實是浪費,還得編程。用555電路做就行,焊完電路通電就能用,方便很多。非要用單片機也行,你會編寫程序嗎,會編程就好辦了,用單片機延時是最簡單事了,延時的時間長短控制也非常靈活,范圍更大,延時一年都行,最短幾毫秒也行。
回復

使用道具 舉報

10#
ID:423639 發(fā)表于 2018-11-26 20:24 | 只看該作者
A2代表按鈕2的標志,當按鈕1按下后,A1=1,按下按鈕2里,判斷A1=1的話就啟動繼電器 并讓A1=0
回復

使用道具 舉報

11#
ID:433747 發(fā)表于 2018-11-26 21:15 | 只看該作者
按鍵按下,看P口是什么情況,給按鍵編號,通過比較P口值判斷是幾號按鍵按下
回復

使用道具 舉報

12#
ID:434015 發(fā)表于 2018-11-27 11:06 | 只看該作者
比較判斷嵌套,滿足第一個條件和第二個條件之后進行跳轉(zhuǎn),可以跳轉(zhuǎn)到一個子程序去執(zhí)行你想要的功能。
回復

使用道具 舉報

13#
ID:138119 發(fā)表于 2018-11-27 16:38 | 只看該作者

//僅提供編程思路,代碼僅供參考,以51單片機為例:

sbit S1  Px.x
sbit S2  Px.x


bit S1_down_bit
bit S2_down_bit


if(S1 == 0)                                //按鈕1 按下
{
        S1_down_bit = 1;        //按鈕1 按下標志
}


if(S2 == 0)                                //按鈕2 按下
{
        S2_down_bit = 1;        //按鈕1 按下標志
}


if(S1_down_bit == 1)        //按鈕1按下過,且在2秒內(nèi)
{
        if(S2 == 0)                        //按鈕2 按下
        {
                OUT1 = 1;                //繼電器1輸出
        }
}

if(S2_down_bit == 1)        //按鈕2按下過,且在2秒內(nèi)
{
        if(S1 == 0)                        //按鈕1 按下
        {
                OUT2 = 1;                //繼電器2輸出
        }
}



//定時器中斷程序

void TIMx() interrupt 1        //配置成2秒定時器中斷
{
        //清中斷標志
        S1_down_bit = 0;        //清0 按鈕1 按下標志
        S2_down_bit = 0;        //清0 按鈕2 按下標志
}

回復

使用道具 舉報

14#
ID:388197 發(fā)表于 2018-11-27 23:49 | 只看該作者
簡單的延遲功能用單片機確實有點浪費,555或者用分立原件加個LM358搭個RC延遲電路就能勝任了
回復

使用道具 舉報

15#
ID:367840 發(fā)表于 2018-11-28 08:49 | 只看該作者
標志位
回復

使用道具 舉報

16#
ID:434735 發(fā)表于 2018-11-28 09:55 | 只看該作者
使用定時器延時,仔細看下規(guī)格書
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

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