關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 用單片機做電風扇簡易定時控制器

        用單片機做電風扇簡易定時控制器

        作者: 時間:2012-08-01 來源:網絡 收藏

        自己的床頭風扇的機械器壞掉了,準備51給設計了一個.程序在實驗板初步調試通過,等待元件寄到就可以做板子了,只是有點浪費的資源。

        本文引用地址:http://www.104case.com/article/160215.htm

        一,設計思路:

        開始通過手動鍵給供電。直到電源指示燈LED4亮.單片機運行,繼電器2工作給單片機供電。通過按鍵設置繼電器2的工作時間,實現系統的自動斷電,通過設置繼電器1的工作時間,實現風扇的間歇轉動,實現節能。

        1.顯示部分:通過按鍵,在風扇轉動時間,暫停時間,和系統關閉剩余時間切換顯示。數碼顯示兩位,為“分”走時,其中系統關閉剩余時間為“小時”走時,LED為紅,黃,藍,分別點亮對應的風扇轉動,暫停,和系統關閉剩余時間的狀態。

        2.按鍵部分:

        lK1為時間調整移位鍵,按下此鍵,數碼閃爍,同時對應的燈閃爍。在風扇轉動時間,暫停時間,和系統之間切換

        lK2為加一和狀態切換顯示鍵,當有K1按下,為時間加1。否則,在在風扇轉動時間,暫停時間,和系統之間切換顯示。

        lK3為減1和備用鍵,當有K1按下,為時間加1,否則無效。

        3.繼電器部分:

        l繼電器1控制風扇的電源線,實現風扇的轉動和暫時。

        l繼電器2控制單片機系統的電源,實現系統關閉。

        二,原理圖

        三,程序清單

        /*********************************************
        系統名稱:
        創鍵人:w418781840日期:2008.7.6
        系統功能:
        **********************************************/
        /*********************************************
        函數名稱:聲明區
        功能描述:
        **********************************************/
        #include
        #defineucharunsignedchar
        #defineuintunsignedint
        #defineSEGP0//數碼管段選.
        #defineDIGP2//數碼管位選
        uchardis[2];//數碼驅動組
        ucharcodeTAB[]={0xC0,0xF9,0xA4,0xB0,0x99,//0-4共陽.
        0x92,0x82,0xF8,0x80,0x90,0xff};//5-9,熄滅符
        ucharstart,stop,close,sum,time;//各其本變量
        ucharfliflag,cflag,zflag,x,y;//各標志位
        uintcount_T0,count_T1,c_count;//計數變量
        sbitK1=P3^7;//功能移位鍵
        sbitK2=P3^2;//加一鍵和切換移位鍵.
        sbitK3=P3^3;//減一.
        sbitRLED=P2^2;//紅燈,表風扇轉動狀態.
        sbitYLED=P2^3;//黃燈,表風扇暫停狀態
        sbitBLED=P2^4;//藍燈,表系統狀態
        sbitCLED=P2^6;//風扇控制位
        sbitZLED=P2^7;//系統工作控制位
        /*********************************************
        函數名稱:延時1MS函數
        功能描述:顯示調用.
        **********************************************/
        voiddelay1ms(ucharx)
        {
        uchari,j;
        for(i=0;ifor(j=0;j120;j++);
        }

        /*********************************************
        函數名稱:顯示函數
        功能描述:顯示分走時,兩位顯示.
        **********************************************/
        voiddisplay(void)
        {
        uchari,scan=1;
        for(i=0;i2;i++)
        {SEG=0xff;
        DIG=~scan;
        SEG=TAB[dis[i]];
        delay1ms(5);
        scan=1;
        }
        }
        /*********************************************
        函數名稱:延時5MS函數
        功能描述:按鍵消抖調用.
        **********************************************/
        voiddelay5ms(ucharx)
        {
        ucharj;
        for(j=0;jdisplay();
        }

        /*********************************************
        函數名稱:初始化函數
        功能描述:各變量初始化.
        **********************************************/
        voidinit()
        {fliflag=0;//閃爍標志.
        cflag=1;//風扇狀態標志.
        zflag=0;//轉動標志.
        x=30;//暫存
        y=10;//暫存
        CLED=1;//系統工作.
        sum=0;//移位
        start=30;//風扇轉動時間
        stop=10;//暫停時間.
        close=5;//系統關閉剩余時間
        count_T0=0;//T0,T1相關
        count_T1=0;
        c_count=0;
        TMOD=0x11;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        TH1=(65536-50000)/256;
        TL1=(65536-50000)%256;
        EA=1;
        ET0=1;
        ET1=1;
        TR0=1;
        }
        /*********************************************
        函數名稱:分離函數
        功能描述:分離顯示十位,個位
        **********************************************/
        voiddisnner(void)
        {if(cflag==1)//1
        {RLED=0;YLED=1;BLED=1;//紅燈閃爍.
        time=start;//顯示轉動時間.
        }
        if(cflag==2)
        {RLED=1;YLED=0;BLED=1;
        time=stop;
        }
        if(cflag==3)
        {RLED=1;YLED=1;BLED=0;
        time=close;
        }
        dis[0]=time/10;
        dis[1]=time%10;
        }
        /*********************************************
        函數名稱:T0中斷函數
        功能描述:產生1分鐘.
        **********************************************/
        voidtimer0(void)interrupt1
        {TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        if(++count_T0==1200)//一分鐘.


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 沧源| 依兰县| 涟水县| 黄平县| 罗源县| 嘉定区| 本溪市| 彭水| 永丰县| 大化| 平邑县| 广河县| 东光县| 海盐县| 蕉岭县| 广汉市| 类乌齐县| 疏附县| 兴安盟| 密山市| 四会市| 怀宁县| 乌拉特前旗| 芒康县| 遵义市| 郓城县| 绥芬河市| 河北省| 台湾省| 宁乡县| 辉南县| 志丹县| 克山县| 平昌县| 句容市| 宜宾县| 林甸县| 海阳市| 织金县| 泊头市| 伊春市|