新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 自己用單片機數碼管做的秒表

        自己用單片機數碼管做的秒表

        作者: 時間:2016-12-01 來源:網絡 收藏
        基于51hei單片機開發板電路圖可從官網去下載,p1為位選 p0為段選

        /*
        實現功能,數碼管前五位計數,顯示時間的變化,誤差1/1000s
        */
        #include
        #include
        #define uint unsigned int
        #define uchar unsigned char
        uchar code wetable[]={
        0xfe,0xfd,0xfb,0xf7,
        0xef,0xdf,0xbf,0x7f};

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

        uchar code dutable[]={
        0x3f,0x06,0x5b,0x4f,
        0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,
        0x39,0x5e,0x79,0x71};//段選

        uint closedu,closewe;
        uint ge,shi,bai,num;
        uchar wenum,count;
        uchar doucount,dounum,doufirst,dousecond;
        uchar decimal;

        void delay(uint z);

        void init();

        void display(uint bai,uint shi,uint ge,uint doufrist,uint dousecond);

        void main()
        {
        init();
        while(1)
        {
        display(bai,shi,ge,doufirst,dousecond);
        }
        }

        void init()
        {
        num=0;
        dounum=0;
        doucount=0;
        decimal=0x80;
        count=0;
        wenum=0;
        closedu=0xff;
        closewe=0xff;
        P1=closewe;//關閉位選
        P0=closedu;//關閉段選
        TMOD=0x01;
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;
        EA=1;
        ET0=1;
        TR0=1;
        }

        void delay(uint z)//延時1ms
        {
        uint x,y;
        for(x=z;x>0;x--)
        {
        for(y=0;y<11;y++)
        {
        }
        }
        }

        void display(uint bai,uint shi,uint ge,uint doufrist,uint dousecond)
        {
        closedu=0xff;
        closewe=0xff;
        wenum=0;
        P1=wetable[wenum];
        P0=dutable[bai];
        delay(1);
        P1=closewe;
        P0=closedu;
        wenum++;
        P1=wetable[wenum];
        P0=dutable[shi];
        delay(1);
        P1=closewe;
        P0=closedu;
        wenum++;
        P1=wetable[wenum];
        P0=dutable[ge];
        delay(1);
        P1=closewe;
        P0=closedu;
        P1=wetable[wenum];
        P0=decimal;
        delay(1);
        P1=closewe;
        P0=closedu;
        wenum++;
        P1=wetable[wenum];
        P0=dutable[doufirst];
        delay(1);
        wenum++;
        P1=wetable[wenum];
        P0=dutable[dousecond];
        delay(1);
        wenum=0;
        }
        void time0() interrupt 1
        {
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;
        count++;
        doucount++;
        if(count==100)
        {
        count=0;
        num++;
        if(num==1000)
        {
        num=0;
        }
        bai=num/100;
        shi=num%100/10;
        ge=num%10;
        }
        if(doucount==1)
        {
        doucount=0;
        dounum++;
        if(dounum==100)
        {
        dounum=0;
        }
        doufirst=dounum/10;
        dousecond=dounum%10;
        }
        }



        關鍵詞: 單片機數碼管秒

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 荆门市| 成安县| 兰考县| 高淳县| 南安市| 龙井市| 平昌县| 怀柔区| 虞城县| 大荔县| 汾西县| 无为县| 太康县| 中方县| 宣威市| 纳雍县| 旬邑县| 吴堡县| 江安县| 仙桃市| 满洲里市| 辽中县| 体育| 三穗县| 淮安市| 伊金霍洛旗| 乌恰县| 西吉县| 潮州市| 彭水| 南城县| 寻甸| 庆元县| 宁乡县| 刚察县| 永昌县| 任丘市| 岢岚县| 兴城市| 大余县| 屯昌县|