新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機控制的微波爐定時程序

        51單片機控制的微波爐定時程序

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

        //免責聲明:這是的定時功能 純為技術交流、學習之用。
        //轉載、使用者切莫用于不正當的用途,一切后果由轉截/使用者自行負責
        //按下獨立鍵盤RD按鍵,每按一次增加60秒,按下INT1啟動,按下INT0停止
        //我們知道是不會自動運行的,得手動啟動

        #include reg52.h>
        #define uint unsigned int
        #define uchar unsigned uchar
        sbit duan=P2^5;
        sbit wei=P2^6;
        const unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,

        0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF}; //數碼管數組
        uint bai=0,gg=16,shi=0,ge=0,x;
        uint time=60,tt=0; //uint tt,time;

        void init()
        {

        TMOD=0x01;

        TH0=(65536-50000)/256;

        TL0=(65536-50000)%256;
        EA=1;

        ET0=1;

        TR0=0;

        }

        void scan()
        {
        if(RD==0)
        {
        while(!RD);
        time=time+60;
        }
        if(INT0==0)TR0=0;
        if(INT1==0)TR0=1;
        }
        void fuzhi()
        {
        bai=time/60;
        shi=time%60/10;
        ge=time%10;
        }
        uint jishi()
        {
        if(tt==20)
        {
        tt=0;
        time--;if(time==0)TR0=0; //這個位置不能動,time--必須在if(tt==20)里
        }
        }
        //-------------------函數聲明--------------------------
        void disp(uint bai,uint gg,uint shi,uint ge);

        void delay(uint x)
        {
        uint a,b;
        for(a=x;a>0;a--)
        for(b=110;b>0;b--);
        }
        void main()
        {
        init();
        while(1)
        {
        jishi();
        scan();

        fuzhi();
        disp(bai,gg,shi,ge);
        if(INT1==0)TR0=1;
        }
        }
        //------------------------------------------------
        void disp(uint bai,uint gg,uint shi,uint ge)
        {
        duan=1;P0=table[bai];duan=0;
        wei=1;P0=0x02;wei=0;
        delay(5);

        duan=1;P0=table[gg];duan=0;
        wei=1;P0=0x04;wei=0;
        delay(2);

        duan=1;P0=table[shi];duan=0;
        wei=1;P0=0x08;wei=0;
        delay(5);

        duan=1;P0=table[ge];duan=0;
        wei=1;P0=0x10;wei=0;
        delay(5);

        }
        void tming0() interrupt 1
        {
        TH0=(65536-50000)/256;

        TL0=(65536-50000)%256;
        tt++;

        }


        //-----------------------------------------------

        //
        //每按一次RD增加60秒,每按一次WR減少60秒,每按一次T1增加30秒,每按一次T0減少30秒
        //按下INT1啟動,按下INT0停止
        //我們知道微波爐是不會自動運行的,得手動啟動,所以設定好定時時長后按下INT0啟動。結束后蜂鳴器響3聲
        //已完善的程序見另一章文章:
        //免責聲明:這是模擬微波爐的定時



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 镇巴县| 赫章县| 东乡县| 克拉玛依市| 南皮县| 天镇县| 京山县| 民和| 泉州市| 图们市| 定日县| 静乐县| 宣城市| 济阳县| 通江县| 昭平县| 汉源县| 剑川县| 曲麻莱县| 手机| 旺苍县| 汝城县| 太仓市| 深水埗区| 张掖市| 湘阴县| 如皋市| 舟曲县| 醴陵市| 宁蒗| 天全县| 河间市| 双牌县| 密云县| 天门市| 金堂县| 长子县| 洞头县| 临朐县| 日照市| 乐昌市|