新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于單片機(jī)的電子時鐘設(shè)計

        基于單片機(jī)的電子時鐘設(shè)計

        作者: 時間:2016-11-23 來源:網(wǎng)絡(luò) 收藏


        上圖是Proteus仿真圖,其中反相器用74lHC14,排阻用10K的,晶振用12MHZ的,電阻R1-R8用200歐的即可。但在實際制作時數(shù)碼管可以用兩個四位一體共陽極的,這樣連接電路會更加方便。可以用三極管代替反相器,這樣可以節(jié)約成本,但代替后無法用Proteus仿真出來,下圖為代替后的圖片,三極管用常用的9012或者9015即可,經(jīng)本人實際驗證效果非常好。

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



        下圖為原理圖:




        下圖為實物圖



        以下為源程序

        #include
        #define uint unsigned int
        #define uchar unsigned char
        uchar code table[]={ //不帶小數(shù)點(diǎn)的數(shù)碼管編碼
        0xc0,0xf9,0xa4,0xb0,
        0x99,0x92,0x82,0xf8,
        0x80,0x90};
        uchar code table1[]={ //帶小數(shù)點(diǎn)的數(shù)碼管編碼
        0x40,0x79,0x24,0x30,
        0x19,0x12,0x02,0x78,
        0x00,0x10};

        uchar shi=12,second,minute;
        uint num,num1,num2,num3;
        sbit k1=P1^4;
        sbit k2=P1^5;
        void display();
        void keyscan();
        void delay(uint z)
        {
        uint x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--);
        }

        void init()
        {
        TMOD=0x01;

        TH0=(65536-50000)/256;
        TL0=(65536-50000)%6;
        EA=1;
        ET0=1;
        TR0=1;
        }

        void main()
        {
        init();
        while(1)
        {
        keyscan();
        display();

        }
        }

        void timer0() interrupt 1
        {
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%6;
        num++;
        if(num==20)
        {
        num=0;
        second++;
        if(second==60)
        {
        second=0;
        minute++;
        }
        if(minute>=60)
        {
        minute=0;
        shi++;
        }
        if(shi>=24)
        shi=0;

        }
        }

        void display()
        {
        P2=0xdf;
        P0=table[second];
        delay(2);
        P2=0xff;

        P2=0xef;
        P0=table[second/10];
        delay(2);
        P2=0xff;

        P2=0xf7;
        P0=table1[minute];
        delay(2);
        P2=0xff;

        P2=0xfb;
        P0=table[minute/10];
        delay(2);
        P2=0xff;

        P2=0xfd;
        P0=table1[shi];
        delay(2);
        P2=0xff;

        P2=0xfe;
        P0=table[shi/10];
        delay(2);
        P2=0xff;
        }

        void keyscan()
        {
        if(k1==0)
        {
        delay(10);
        if(k1==0)
        {
        shi++;
        while(!k1);
        }
        }
        if(k2==0)
        {
        delay(10);
        if(k2==0)
        {
        minute++;
        while(!k2);
        }

        }

        }



        關(guān)鍵詞: 單片機(jī)電子時

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 清苑县| 彭阳县| 浮山县| 彭州市| 东源县| 绵竹市| 东乌珠穆沁旗| 子长县| 思茅市| 邯郸市| 潞西市| 剑河县| 红河县| 桦川县| 绥宁县| 南岸区| 康定县| 贺兰县| 民丰县| 普兰县| 麟游县| 紫阳县| 永昌县| 广东省| 莱阳市| 扬中市| 阿克| 永靖县| 龙州县| 九江县| 大名县| 子洲县| 沾化县| 凤山市| 南阳市| 玛沁县| 江山市| 凌云县| 建平县| 南康市| 沐川县|