新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于51單片機的倒計時器設計

        基于51單片機的倒計時器設計

        作者: 時間:2016-11-29 來源:網絡 收藏

        void Displaypro(void)
        {
        StrTab[0]=tab[hour/10]; //存儲小時
        StrTab[1]=tab[hour%10];
        StrTab[2]=0x40; //存儲"-"
        StrTab[3]=tab[minute/10]; //存儲分鐘
        StrTab[4]=tab[minute%10];
        StrTab[5]=0x40; //存儲"-"
        StrTab[6]=tab[second/10]; //存儲秒
        StrTab[7]=tab[second%10];
        }

        void Print_play_pro(void) //動態掃描數碼管
        {
        D0=1; D1=1; D2=1; //顯示秒
        P0=StrTab[7];
        delay(3);

        D0=0;D1=1; D2=1;
        P0=StrTab[6];
        delay(3);
        D0=1;D1=0; D2=1; //顯示"-"
        P0=StrTab[5];
        delay(3);
        D0=0;D1=0;D2=1; //顯示分
        P0=StrTab[4];
        delay(3);

        D0=1;D1=1;D2=0;
        P0=StrTab[3];
        delay(3);
        D0=0;D1=1;D2=0; //顯示"-"
        P0=StrTab[2];
        delay(3);
        D0=1;D1=0;D2=0; //顯示小時
        P0=StrTab[1];
        delay(3);
        D0=0;D1=0;D2=0;
        P0=StrTab[0];
        delay(3);
        }
        /*****************************定時器1中斷*********************************/
        void time1_isr(void) interrupt 3 //定時器1用來處理蜂鳴器
        {
        static uint count = 1; //位置待定
        TH1=0xd8; //重入初值定時20ms
        TL1=0xf0;
        //Print_play_pro(); //抖動效果
        count++;
        D3=0; //產生鬧鐘方波
        if(200==count)
        {
        TR0=1;
        TR1=0;
        count=1;
        D3=1;
        }
        }
        /***************************定時器0中斷**********************************/
        void tim(void) interrupt 1 //定時器0用來處理倒計時
        {
        static uchar count; //定義內部局部變量
        TH0=0xd8; //重新賦值
        TL0=0xf0;
        count++;
        switch (count)
        {
        case 80:Displaypro();break; //隔一定時間調用顯示處理
        default:break;
        }
        if (count==100)
        {
        clock_judge_pro(); //定時時間判斷
        count=0;

        if((0==minute)&&(second==0)) //倒計時值處理
        {
        if(0==hour) { hour=0; }
        else { hour--; }
        minute=60;
        }
        if(0==second)
        {
        if(0==minute) { minute=59; }
        else { minute-=1; }
        }
        if(0==second) { second=60; }
        else { second-=1; }
        if((0==hour)&&(0==minute)&&(0==second)) //倒計時到00:00:00,結束倒計時
        { hour=0; minute=0; second=0; Displaypro(); TR0=0; }
        }
        }

        上一頁 1 2 下一頁

        關鍵詞: 51單片機倒計時

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 武功县| 海原县| 保亭| 锡林郭勒盟| 全州县| 赣州市| 拉萨市| 密云县| 唐河县| 祁阳县| 家居| 台中县| 吴忠市| 囊谦县| 兰州市| 若尔盖县| 孟村| 达孜县| 界首市| 赞皇县| 聂拉木县| 上思县| 石首市| 宣化县| 岑溪市| 外汇| 文山县| 嘉兴市| 乌恰县| 开封县| 昔阳县| 鄄城县| 泾阳县| 清河县| 诸城市| 桃江县| 赫章县| 华池县| 天气| 永宁县| 南开区|