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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3759|回復: 17
收起左側

求助大額延時小時級控制繼電器輸出延時程序

[復制鏈接]
ID:101987 發表于 2016-1-5 21:50 來自觸屏版 | 顯示全部樓層 |閱讀模式
本帖最后由 190482107 于 2016-1-5 22:47 編輯

硬件都有了,小弟正在學51中。。因為我需要延時的時間比較長(6個小時)定時和中斷系統小弟還沒理解透,哪位大神能這個參考程序給小弟研究研究也好,順便注釋下程序原理和思路。芯片是STC89C52晶振11.0592的。板子的P2.0和P2.1分別控制兩個三極管來驅動繼電器K1和K2的線圈。
這么長時間的延時程序我還不會寫,我要的功能是:
P1.0和P1.1為輸入觸發信號,當P1.0低電平觸發后,開始延時6小時后P2.0輸出信號控制繼電器K1動作,當P1.0恢復高電平后延時清零等待下一次觸發,P1.1對應P2.1控制繼電器K2同理,每次觸發要么P1.0要么P1.1不會同時觸發,
回復

使用道具 舉報

ID:1 發表于 2016-1-5 22:04 來自觸屏版 | 顯示全部樓層
6個小時這么長的延時不建議使用延時函數,要是這中間出現過斷電死機之類的,就會發生錯誤。。。所以還是用,實時時鐘比較好。
回復

使用道具 舉報

ID:33984 發表于 2016-1-5 22:19 | 顯示全部樓層
“板子的P2.0和P2.1分別控制繼電器K1和K2的線圈。”
沒有這樣控制的,要加驅動滴l。哈
回復

使用道具 舉報

ID:33984 發表于 2016-1-5 22:27 | 顯示全部樓層
如果用單位機控制繼電器。單片機有點吃不消。
回復

使用道具 舉報

ID:101987 發表于 2016-1-5 22:44 來自觸屏版 | 顯示全部樓層
plnh8258 發表于 2016-1-5 22:19
“板子的P2.0和P2.1分別控制繼電器K1和K2的線圈。”
沒有這樣控制的,要加驅動滴l。哈

是的,繼電器是24V的,管腳控制三極管的,
回復

使用道具 舉報

ID:101987 發表于 2016-1-5 22:49 | 顯示全部樓層
寫漏了,是用三極管驅動外圍電路控制的,
回復

使用道具 舉報

ID:33984 發表于 2016-1-5 22:52 | 顯示全部樓層
明天有時間幫你寫一個。(按照你說的要求寫)
回復

使用道具 舉報

ID:101987 發表于 2016-1-5 22:56 來自觸屏版 | 顯示全部樓層
admin 發表于 2016-1-5 22:04
6個小時這么長的延時不建議使用延時函數,要是這中間出現過斷電死機之類的,就會發生錯誤。。。所以還是用 ...

實時時鐘是什么意思,另外要專門的芯片么,
回復

使用道具 舉報

ID:33984 發表于 2016-1-5 23:07 | 顯示全部樓層
是滴  實時時鐘是芯片。有的片內有電池,有的沒有
回復

使用道具 舉報

ID:33984 發表于 2016-1-5 23:14 | 顯示全部樓層
有電池的在不使用的時候,能放大約十年。(它里的面的時鐘繼續工作,而且非常精確度如:DS12887)使用時用程序將它調出,而無電池的如果停電里面的時鐘就會復位(如:DS1032)。

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:101987 發表于 2016-1-5 23:26 來自觸屏版 | 顯示全部樓層
plnh8258 發表于 2016-1-5 22:52
明天有時間幫你寫一個。(按照你說的要求寫)

感謝,我也學習學習,
回復

使用道具 舉報

ID:101987 發表于 2016-1-5 23:29 來自觸屏版 | 顯示全部樓層
plnh8258 發表于 2016-1-5 23:14
有電池的在不使用的時候,能放大約十年。(它里的面的時鐘繼續工作,而且非常精確度如:DS12887)使用時用 ...

原來如此,
回復

使用道具 舉報

ID:33984 發表于 2016-1-6 11:55 | 顯示全部樓層
#include<reg52.h>
sbit button1=P1^0;        //定義button1(按鈕1)
sbit k1=P2^0;        //定義K1(斷電器)

sbit button2=P1^1;        //button2(按鈕)
sbit k2=P2^1;        //定義K2(斷電器)

void delay10s(void)   //10秒延時程序(11.0592MHZ)
{
    unsigned char a,b,c;
    for(c=203;c>0;c--)
       for(b=156;b>0;b--)
           for(a=144;a>0;a--);       
}

void main()
{
        while(1)
        {
                 if(0==button1)                //如果button1按下
                 {
                         for(i=2160;i>0;i--)          //6小時里有2160個10秒,所以循環2160次就是6小時
                        {
                                delay10s(); //10秒的延時
                        }
                         k1=0;        //斷電器吸哈
                 }

                 if(0==button2)                //如果button2按下
                 {
                         for(i=2160;i>0;i--)          //6小時里有2160個10秒,所以循環2160次就是6小時
                        {
                                delay10s(); //10秒的延時
                        }
                         k2=0;        //斷電器吸哈
                 }               
        }
}
回復

使用道具 舉報

ID:101987 發表于 2016-1-6 20:51 來自觸屏版 | 顯示全部樓層
plnh8258 發表于 2016-1-6 11:55
#include
sbit button1=P1^0;        //定義button1(按鈕1)
sbit k1=P2^0;        //定義K1(斷電器)

void delay10s(void) //10秒延時程序(11.0592MHZ)
{
  unsigned char a,b,c;
  for(c=203;c>0;c--)
   for(b=156;b>0;b--)
   for(a=144;a>0;a--);   
}
感謝賜教,這里有點不明白為什么是10秒,
回復

使用道具 舉報

ID:33984 發表于 2016-1-6 21:00 | 顯示全部樓層
這里有點不明白為什么是10秒,....我總是有計量的的吧,1秒、100ms.......


void delay1s(void)   //1秒延時程序(11.0592MHZ)
{
    unsigned char a,b,c;
    for(c=95;c>0;c--)
        for(b=26;b>0;b--)
            for(a=185;a>0;a--);
}
......
這樣也可。
for(i=21600;i>0;i--)          //6小時里有21600個1秒,所以循環21600次就是6小時
回復

使用道具 舉報

ID:102003 發表于 2016-1-6 21:28 | 顯示全部樓層
你時間是固定還是任意可調的。如果固定很簡單,做一個定時技術程序與你要求時間比較即可。若果是任意時間,可用按鍵開關或8421播碼開設置定時值輸入都行。
回復

使用道具 舉報

ID:152694 發表于 2016-12-23 00:26 | 顯示全部樓層
是測電流   然后繼電保護嗎?
回復

使用道具 舉報

ID:152694 發表于 2016-12-23 00:27 | 顯示全部樓層
是測電流   繼電保護嗎?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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