<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

          作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò) 收藏
          電路功能:
          按下k1比賽開(kāi)始
          按下k2比賽暫停
          按下k3鍵24s重新計(jì)時(shí)(用于搶斷,或后場(chǎng)籃板等)
          k4加1分
          k5加2分
          k6加3分
          元件清單:
          AT89c52單片機(jī)
          R1—R8 10K
          R9—R16 200R
          R17—R24 1K
          三極管 9015 *8個(gè)
          四位一體共陽(yáng)數(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; //按下比賽開(kāi)始
          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;
          }
          }


          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();