欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 這個單片機繼電器的控制器程序實在是不知道怎么寫了 求指點 [打印本頁]

作者: 記憶5814    時間: 2020-7-24 14:13
標題: 這個單片機繼電器的控制器程序實在是不知道怎么寫了 求指點
想做個繼電器的控制器 單片機收到高電平觸發信號后計時60秒 高電平超過60秒 斷開繼電器 并保持10秒 (10秒內即使觸發信號變為低電平繼電器也不吸合)如果觸發信號在60秒內由高電平變為低電平 繼電器保持吸合狀態不變 望大神給指點 謝謝

作者: xianfajushi    時間: 2020-7-24 14:32
從描述可總結一下所謂的觸發電平變化問題即一個高電平觸發后無論是高或低斗延時60秒。括號內的沒看明白,能描述詳細點?因為是高電平觸發,低電平也觸發?
作者: 記憶5814    時間: 2020-7-24 14:43
xianfajushi 發表于 2020-7-24 14:32
從描述可總結一下所謂的觸發電平變化問題即一個高電平觸發后無論是高或低斗延時60秒。括號內的沒看明白,能 ...

只是高電平觸發  高電平觸發計時 超過60秒 繼電器斷開 在60秒內高電平變為低電平 繼電器保持吸合

作者: xianfajushi    時間: 2020-7-24 14:44
是高電平觸發后倒計時60秒后再計時10秒這樣的意思?
作者: 草草111111    時間: 2020-7-24 14:46
說的啥呀,完全看不懂你想說的是啥,能把問題描述明白嗎?
作者: 記憶5814    時間: 2020-7-24 14:47
xianfajushi 發表于 2020-7-24 14:32
從描述可總結一下所謂的觸發電平變化問題即一個高電平觸發后無論是高或低斗延時60秒。括號內的沒看明白,能 ...

括號內的意思是繼電器斷開后 在10秒內 不再吸合 10秒后如果觸發信號的低電平 吸合繼電器 如果是高電平繼續延時60秒再斷開繼電器

作者: 記憶5814    時間: 2020-7-24 14:48
xianfajushi 發表于 2020-7-24 14:44
是高電平觸發后倒計時60秒后再計時10秒這樣的意思?

就是這個意思

作者: xianfajushi    時間: 2020-7-24 14:56
記憶5814 發表于 2020-7-24 14:48
就是這個意思

那你做2個倒計時就可以了
作者: taotie    時間: 2020-7-24 15:01
整理一下:
輸入口高電平——輸出口繼電器吸合——什么也不做60S——60S到輸出口釋放繼電器——又什么也不做10S
對嗎~
作者: 記憶5814    時間: 2020-7-24 15:03
xianfajushi 發表于 2020-7-24 14:56
那你做2個倒計時就可以了

剛學不久 搞不清楚 能給詳細講解或者給個參考的程序嗎?網上好多事例程序僅僅是說明性的 到實際操作時就不會了

作者: 記憶5814    時間: 2020-7-24 15:14
taotie 發表于 2020-7-24 15:01
整理一下:
輸入口高電平——輸出口繼電器吸合——什么也不做60S——60S到輸出口釋放繼電器——又什么也不 ...

上電輸入口低電平 輸出口繼電器吸合 輸入口高電平 輸出口繼續繼電器吸合——什么也不做60S——60S到輸出口釋放繼電器——又什么也不做繼續10秒 10秒后輸入口低電平 繼電器吸合 如果高電平循環60S 10S
作者: 記憶5814    時間: 2020-7-24 15:15
taotie 發表于 2020-7-24 15:01
整理一下:
輸入口高電平——輸出口繼電器吸合——什么也不做60S——60S到輸出口釋放繼電器——又什么也不 ...

我好笨 問題都描述不清楚

作者: xianfajushi    時間: 2020-7-24 15:19
高低電平的來源是蝦米?
作者: taotie    時間: 2020-7-24 15:25
記憶5814 發表于 2020-7-24 15:15
我好笨 問題都描述不清楚

多學,多做,多看,多思考穩步提高~~~
作者: yoxi    時間: 2020-7-24 15:52
你說的是不是這個意思:

if((單片機接收口 == 1) && (time++>60S))
{
  繼電器 = 0;
  delay(10S);  
}

else ((單片機接收口 == 1) && (time++<60S))
{
        繼電器 = 1;
}

// 10秒內即使觸發信號變為低電平繼電器也不吸合,邏輯上不謹慎,不吸合就一直是繼電器= 0,保持10秒沒意義(delay(10S)),要下一波信號再來判斷
作者: taotie    時間: 2020-7-24 15:54
看來是對點觸按鍵和常閉,常開開關的觸發信號波形沒有理解
作者: 記憶5814    時間: 2020-7-24 15:57
xianfajushi 發表于 2020-7-24 15:19
高低電平的來源是蝦米?

蝦米是什么意思?高低電平是通過開關的通斷來實現
作者: 記憶5814    時間: 2020-7-24 16:02
taotie 發表于 2020-7-24 15:25
多學,多做,多看,多思考穩步提高~~~

謝謝 我想這樣學 自己先設定一個硬件需求 然后根據需求再去寫程序 可是真的自己要寫程序了 卻不知道如何開始了 網上的一些事例程序通過開發板可以實現 但是要是按照自己的思路去寫程序時卻又寫不出來

作者: 湖南    時間: 2020-7-24 16:07
單片機定時器延時可以解決吧
作者: 記憶5814    時間: 2020-7-24 16:09
yoxi 發表于 2020-7-24 15:52
你說的是不是這個意思:

if((單片機接收口 == 1) && (time++>60S))

謝謝 我周末搭個硬件去試試 再次感謝
作者: robinsonlin    時間: 2020-7-24 16:37
本帖最后由 robinsonlin 于 2020-7-24 16:51 編輯

理解你的需求,比寫代碼的時間還要長!!
#define K1                    P37
#define RELAY                 P36

unsigned long SysTick,T1,T2;
unsigned char Enable1,Enabel2,LowFlag;

void Timer0Init(void)                //1毫秒@22.1184MHz
{
        AUXR |= 0x80;                //定時器時鐘1T模式
        TMOD &= 0xF0;                //設置定時器模式
        TL0 = 0x9A;                //設置定時初值
        TH0 = 0xA9;                //設置定時初值
        TF0 = 0;                //清除TF0標志
        TR0 = 1;                //定時器0開始計時
}

void main()
{
    T1 = 0;
    T2 = 0;
    K1 = 0;
    RELAY = 0;
    Enable1 = 0;
    Enable2 = 0;   
    LowFlag = 0;
    Timer0Init() ;
    EA = 1;

    while(1)
    {
         if(K1==1 && Enalbe1==0)
         {
                 T1 = SysTick;
                 Enable1 = 1;         
         }
         else if(K1==0 && Enalbe1==1)
         {
                 T1 = SysTick;
                 Enable1 = 1;
                 LowFlag = 1;   
         }
         else if(K1==1 && LowFlag==1)
         {
                 T1 = SysTick;
                 Enable1 = 1;  
                 LowFlag = 0;
         }

         if((SysTick-T1)>=60000 && Enable1==1)
         {
             T2 = SysTick;
             Enable1 = 0;
             Enable2 = 1;           
         }

         if((SysTick-T2)>=10000 && Enable2==1)
         {         
             Enable2 = 0;
         }

    }
}


void tm0_isr() interrupt 1         //中斷入口
{
        SysTick++;
        if(Enable1==1 && Enalbe2==0)RELAY = 1;
        else RELAY = 0;
}

作者: 記憶5814    時間: 2020-7-25 10:07
robinsonlin 發表于 2020-7-24 16:37
理解你的需求,比寫代碼的時間還要長。!
#define K1                    P37
#define RELAY           ...

見笑了 非常感謝




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