新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)的籃球計(jì)時(shí)計(jì)分器

        基于單片機(jī)的籃球計(jì)時(shí)計(jì)分器

        作者: 時(shí)間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
        電路功能:
        按下k1比賽開始
        按下k2比賽暫停
        按下k3鍵24s重新計(jì)時(shí)(用于搶斷,或后場籃板等)
        k4加1分
        k5加2分
        k6加3分
        元件清單:
        AT89c52單片機(jī)
        R1—R8 10K
        R9—R16 200R
        R17—R24 1K
        三極管 9015 *8個(gè)
        四位一體共陽數(shù)碼管兩個(gè)
        其他的電路圖上能看清
        制作原理圖如下:


        源程序:
        #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};
        sbit k1=P3^1; //按下比賽開始
        sbit k2=P3^2;//按下比賽暫停
        sbit k3=P3^3;//24s計(jì)時(shí)
        sbit k4=P3^4;//加1分
        sbit k5=P3^5;//加2分
        sbit k6=P3^6;//加3分
        sbit beep=P3^7;
        uchar second,minute;
        uint num,num1,num2,num3,num4,num5,sum,sum1,sum2,sum3;
        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=0x11;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%6;
        TH1=(65536-50000)/256;
        TL1=(65536-50000)%6;
        EA=1;
        ET0=1;
        TR0=0;
        ET1=1;
        TR1=0;
        num2=24;
        }
        void main()
        {
        init();
        while(1)
        {
        display();
        keyscan();
        }
        }

        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==99)
        {
        minute=0;
        }
        }
        }
        }
        void timer1() interrupt 3
        {
        TH1=(65536-50000)/256;
        TL1=(65536-50000)%6;
        num1++;
        if(num1==20)
        {
        num1=0;
        num2--;
        if(num2==0)
        {
        beep=0;
        delay(300);
        beep=1;
        delay(300);
        TR1=0;
        }
        }
        }
        void display()
        {
        P2=0xf7;
        P0=table[second];
        delay(1);
        P2=0xff;
        P2=0xfb;
        P0=table[second/10];
        delay(1);
        P2=0xff;
        P2=0xfd;
        P0=table1[minute];
        delay(1);
        P2=0xff;
        P2=0xfe;
        P0=table[minute/10];
        delay(1);
        P2=0xff;
        P2=0xdf;
        P0=table1[num2];
        delay(1);
        P2=0xff;
        P2=0xef;
        P0=table[num2/10];
        delay(1);
        P2=0xff;
        P2=0x7f;
        P0=table[(num3+num4+num5)];
        delay(1);
        P2=0xff;
        P2=0xbf;
        P0=table[(num3+num4+num5)/10];
        delay(1);
        P2=0xff;
        }
        void keyscan()
        {
        if(k1==0)
        {
        TR0=1;
        TR1=1;
        }
        if(k3==0)
        {
        num2=24;
        TR1=1;
        }
        if(k4==0)
        {
        delay(10);
        if(k4==0)
        {
        num3++;
        while(!k4);
        }
        }
        if(k5==0)
        {
        delay(10);
        if(k5==0)
        {
        num4+=2;
        while(!k5);
        }
        }
        if(k6==0)
        {
        delay(10);
        if(k6==0)
        {
        num5+=3;
        while(!k6);
        }
        }
        if(k2==0)
        {
        TR0=0;
        TR1=0;
        }
        }


        評論


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

        關(guān)閉
        主站蜘蛛池模板: 额尔古纳市| 宁陕县| 台江县| 通州区| 元氏县| 吉木萨尔县| 德惠市| 衡东县| 离岛区| 遂川县| 新兴县| 乾安县| 嵊州市| 黄梅县| 揭阳市| 澄江县| 瑞丽市| 马尔康县| 辛集市| 漾濞| 雅江县| 东明县| 白城市| 西乡县| 遂平县| 滦平县| 泸水县| 宣恩县| 潞城市| 墨脱县| 登封市| 永登县| 丹江口市| 离岛区| 高淳县| 湘阴县| 修文县| 昆明市| 同德县| 佛教| 巨鹿县|