新聞中心

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

        基于單片機的籃球計時計分器

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


        源程序:
        #include
        #define uint unsigned int
        #define uchar unsigned char
        uchar code table[]={ //不帶小數(shù)點的數(shù)碼管編碼
        0xc0,0xf9,0xa4,0xb0,
        0x99,0x92,0x82,0xf8,
        0x80,0x90};
        uchar code table1[]={ //帶小數(shù)點的數(shù)碼管編碼
        0x40,0x79,0x24,0x30,
        0x19,0x12,0x02,0x78,
        0x00,0x10};
        sbit k1=P3^1; //按下比賽開始
        sbit k2=P3^2;//按下比賽暫停
        sbit k3=P3^3;//24s計時
        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;
        }
        }


        關(guān)鍵詞: 單片機籃球計時計分

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 温泉县| 久治县| 克东县| 合水县| 神农架林区| 韶关市| 满洲里市| 乐至县| 额尔古纳市| 甘洛县| 东乌珠穆沁旗| 河源市| 武胜县| 萨迦县| 林周县| 晋中市| 定州市| 天祝| 和田市| 江孜县| 华蓥市| 鄄城县| 淮安市| 河北区| 吐鲁番市| 德江县| 商丘市| 青冈县| 洛隆县| 偃师市| 南投县| 天长市| 陈巴尔虎旗| 民勤县| 东至县| 吉安县| 开远市| 宿松县| 栾川县| 黎平县| 广南县|