新聞中心

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

        單片機鬧鐘程序設計

        作者: 時間:2013-03-08 來源:網絡 收藏

        這個是在之前的上功能的擴展,主要加入鬧鐘模塊。即到達預定時間響鈴一分鐘,一分鐘后自動停止,也可以按下已設定的鍵實現手動停止。

        數碼管方面的學習就到此為此吧,下一步是對液晶顯示的學習。

        設計如下:

        #i ncludereg51.h>
        #define uchar unsigned char
        unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, 0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//數碼管數字編碼
        uchar i,j,k,second,tcount,minute,hour,tminute,thour,ring;
        sbit beep=P2^6;sbit S2=P3^4;
        //---------------------------------------------------延時子程序,大約延時 n MS
        delay(uchar n)
        {
        for(j=n;j>0;j--)
        for(k=125;k>0;k--);
        }
        //---------------------------------------------------中斷子程序
        void timer0() interrupt 1 using 0
        {
        TH0=(65536-50000)/256; //中斷設置初始化
        TL0=(65536-50000)%256;
        tcount++;
        if(tcount==20) //滿1秒
        {tcount=0;second++;beep=0; //秒數加1
        if(second==60) //滿1分
        {second=0;minute++; //分數加1,秒數歸零
        if(minute==60) //滿1小時
        {
        minute=0;hour++; //小時數加1,分數歸零
        if(hour==24)
        {hour=0;}
        }
        }
        }
        }
        void timer1() interrupt 3 using 1
        {
        TH1=0x3c; //中斷設置初始化
        TL1=0xb0;
        if(minute==tminute hour==thour ring==1) {beep=0;}//到預設時間自動響鈴,持續一分鐘后自己關閉
        if(S2==0)
        {
        ring=0; //鈴聲中斷
        }
        }
        //---------------------------------------------------
        void main()
        {tminute=1;thour=0; //預置響鈴時間
        second=55;minute=0;hour=0; //給賦初值,即啟動時顯示的時間
        ring=1; //啟動響鈴功能
        TH0=(65536-50000)/256; //中斷設置初始化
        TL0=(65536-50000)%256;
        EA=1;ET0=1;TMOD=0x21;TR0=1; //開中斷總開關,計數器0允許中斷,設置中斷模式,啟動計數器0
        ET1=1;TR1=1;
        while(1) //死循環,進入顯示,主要是動態顯示原理
        {
        P0=table[(second%10)];
        P2=0xdf;
        delay(5);
        P0=table[(second/10)];
        P2=0xef;
        delay(5);
        P0=table[(minute%10)];
        P2=0xf7;
        delay(5);
        P0=table[(minute/10)];
        P2=0xfb;
        delay(5);
        P0=table[(hour%10)];
        P2=0xfd;
        delay(5);
        P0=table[(hour/10)];
        P2=0xfe;
        delay(5);
        }
        }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 自治县| 灵璧县| 兴隆县| 赣州市| 镇安县| 秀山| 曲松县| 韩城市| 宁陵县| 赣州市| 克山县| 谢通门县| 城固县| 富锦市| 绥德县| 青阳县| 抚顺市| 江陵县| 临潭县| 大连市| 东兰县| 西峡县| 平罗县| 江源县| 莱西市| 泸溪县| 潮安县| 施秉县| 自贡市| 清镇市| 洱源县| 得荣县| 尼木县| 大足县| 高邮市| 高邑县| 黄平县| 抚州市| 无锡市| 姚安县| 简阳市|