新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機小鬧鐘

        51單片機小鬧鐘

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


        void keyscan()
        {

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

        if(hour_key==0) //時按鍵
        {

        delay(10);
        if(hour_key==0)
        {
        while(!hour_key)display(hour1,minu1,sec1); //消除數碼管的抖動

        if(mode_number%2==0)//如果在時鐘模式下,時鐘時+1
        hour1++;
        else hour0++;//如果在鬧鐘模式下,鬧鐘時+1

        if(hour1==12)
        {
        hour1=0;
        }

        if(hour0==12)
        {
        hour0=0;
        }

        }
        }

        if(minu_key==0) //分按鍵
        {

        delay(10);
        if(minu_key==0)
        {
        while(!minu_key)display(hour1,minu1,sec1); //消除數碼管的抖動
        if(mode_number%2==0)
        minu1++;
        else
        minu0++;

        if(minu1==60)
        {
        minu1=0;
        }

        if(minu0==60)
        {
        minu0=0;
        }

        }

        }


        if(mode_key==0) //模式按鍵

        {

        delay(10);
        if(mode_key==0)
        {

        while(!mode_key)display(hour1,minu1,sec1); //數碼管的抖動

        mode_number++;


        }

        }


        if(stopsounder_key==0) //關鬧鐘按鍵
        {
        sounder_flag=1;
        delay(10);
        if(stopsounder_key==0)
        {

        while(!stopsounder_key)display(hour1,minu1,sec1);

        beep=1;
        }

        }



        }




        void display(uchar hour,uchar minu,uchar sec)
        {
        h1=hour/10;
        h2=hour;

        m1=minu/10;
        m2=minu;

        s1=sec/10;
        s2=sec;


        P2=0xff;
        P1=table[h1];
        P2=select[0];
        delay(5);

        P2=0xff;
        P1=table[h2];
        P2=select[1];
        delay(5);

        P2=0xff;
        P1=0x40;;
        P2=select[2];
        delay(5);

        P2=0xff;
        P1=table[m1];
        P2=select[3];
        delay(5);

        P2=0xff;
        P1=table[m2];
        P2=select[4];
        delay(5);

        P2=0xff;
        P1=0x40;
        P2=select[5];
        delay(5);

        P2=0xff;
        P1=table[s1];
        P2=select[6];
        delay(5);

        P2=0xff;
        P1=table[s2];
        P2=select[7];
        delay(5);

        }



        void timer1_int() interrupt 3 //控制時鐘工作 50ms
        {
        TH1=(65536-50000)/256;
        TL1=(65536-50000)%6;
        b++;
        if(b==10)led=~led;
        if(b==20)
        {
        led=~led;
        b=0;
        sec1++;
        if(sec1==60)
        {

        sounder_flag=0; //每隔一分鐘,釋放檢測鬧鐘

        sec1=0;
        minu1++;
        if(minu1==60)
        {
        minu1=0;
        hour1++;
        if(hour1==24)
        hour1=0;

        }
        }

        }

        }



        void main()
        {
        init();


        for(;;)
        {

        keyscan(); //按鍵掃描


        if(mode_number%2==0) //正常時鐘顯示
        {

        display(hour1,minu1,sec1);
        }

        else
        {


        display(hour0,minu0,sec0); //設定時間顯示

        delay(100);

        }




        if(hour0==hour1&&minu0==minu1) //如果設定的時間到
        {
        if(!sounder_flag) //且按鍵按下一分鐘之后
        {
        beep=0;//鬧鈴開


        }

        }



        }


        }


        上一頁 1 2 下一頁

        關鍵詞: 51單片機小鬧

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 克什克腾旗| 泗水县| 华阴市| 慈溪市| 南充市| 阳朔县| 壶关县| 文山县| 徐州市| 咸丰县| 巴里| 遂溪县| 岗巴县| 灵寿县| 宜春市| 博白县| 靖西县| 宜阳县| 东乡县| 乡宁县| 沽源县| 迁安市| 蓬溪县| 寿宁县| 邵阳市| 乌兰察布市| 保定市| 陕西省| 大安市| 长顺县| 庐江县| 铜川市| 榆树市| 鄂温| 孝感市| 炉霍县| 恭城| 鸡西市| 湛江市| 电白县| 仁怀市|