新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于AT89C51的電子時鐘

        基于AT89C51的電子時鐘

        作者: 時間:2016-11-29 來源:網絡 收藏
        最近閑著沒時的時候又寫了個基于AT89C51單片機的電子時鐘,采用6位12小時制顯示,運用了6個共陽數碼管。具體功能如下:上午第一個數碼管顯示A,下午顯示P,第四個數碼管顯示分隔符“-”,并且一秒閃爍一次。按鍵SW0調節分鐘,SW1調節小時。下面是C程序和硬件電路圖:
        #include
        #include
        #define uchar unsigned char
        #define uint unsigned int
        sbit MG=P1^0;
        sbit MS=P1^1;
        sbit MM=P1^2;
        sbit HG=P1^3;
        sbit HS=P1^4;
        sbit SD=P1^5;
        bit shan;
        code uchar NUM[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
        uchar sec,min,hour;
        uchar hour1;
        void delay(uint a)
        {
        while(a--);
        }
        void init0 ()
        {
        TMOD=0x01;
        TL0=0xb0;
        TH0=0x3c;
        TR0=1;
        EA=1;
        ET0=1;
        }
        void display_time()
        {
        P0=NUM[min%10];
        MG=1;
        delay(300);
        P1=0x00;
        P0=NUM[min/10];
        MS=1;
        delay(300);
        P1=0x00;
        P0=0xbf;
        MM=shan;
        delay(300);
        P1=0x00;

        if(hour>12)
        {
        hour1=hour-12;
        }
        else
        {
        hour1=hour;
        }
        P0=NUM[hour1%10];
        HG=1;
        delay(300);
        P1=0x00;
        P0=NUM[hour1/10];
        HS=1;
        delay(300);
        P1=0x00;
        if(hour>=12)
        {
        P0=0x8c;
        SD=1;
        delay(300) ;
        P1=0x00;
        }
        else
        {
        P0=0x88;
        SD=1;
        delay(300);
        P1=0x00;
        }
        }
        void FT()
        {
        while(P3==0xfe)
        display_time();
        sec=0;
        min++;
        if(min==60)
        min=0;
        }
        void ST()
        {
        while(P3==0xfd)
        display_time();
        hour++;
        if(hour==24)
        hour=0;
        }
        main()
        {
        init0();
        hour=1;
        while(1)
        {
        display_time();
        if(P3==0xfe) FT();
        if(P3==0xfd) ST();
        }
        }
        上一頁 1 2 下一頁

        關鍵詞: AT89C51電子時

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 石屏县| 绿春县| 平遥县| 揭阳市| 永顺县| 杨浦区| 荃湾区| 江山市| 沽源县| 长汀县| 乐平市| 洪雅县| 宜州市| 礼泉县| 武宣县| 宣威市| 惠州市| 临沂市| 利川市| 开原市| 行唐县| 三亚市| 嘉定区| 双江| 东莞市| 汶上县| 沙田区| 蕲春县| 贡山| 达孜县| 兴化市| 甘洛县| 定远县| 百色市| 神木县| 宽城| 泾川县| 广平县| 淮安市| 文登市| 漯河市|