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

          新聞中心

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

          單片機課程設(shè)計(籃球記分器)

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

          /*******************設(shè)置場次比賽時間********************/
          void Key_Y(void)
          {
          if(YK1==0) //初始狀態(tài),分鐘的十位為0
          {
          delay(1); //延時去抖動
          fs=fs+1; //分十位加1分
          fy=fs*10+fg; //求出預(yù)置時間的分鐘值
          f=fy;
          while(YK1==0); //中間變量
          }
          if(YK2==0) //初始狀態(tài),分鐘的個位為0
          {
          delay(1); //延時去抖動
          fg=fg+1; //分個位加1分
          fy=fs*10+fg; //求出預(yù)置時間的分鐘值
          f=fy; //中間變量
          while(YK1==0);
          }
          Js_Jf_Scan();
          }
          /********T0中斷服務(wù)函數(shù),每隔50ms產(chǎn)生一次中斷********/
          void Js_50ms(void)interrupt 1 using 1 //定時器T0中斷,用工作寄存器組1
          {
          TH0=(65535-50000)/256; //定時器T0的高8位
          TL0=(65535-50000)%256; //定時器T0的低8位
          num++; //每50ms累加一次
          Ptime(num); //調(diào)用時間處理函數(shù)
          }
          /**********************時間處理函數(shù)********************/
          void Ptime(uchar time)
          {
          if(time==20) //如果為1s(50ms*20=1s)
          {
          num=0;
          m--; //每到1s,計時器累加1次
          ms=m/10; //秒的十位
          mg=m%10; //秒的個位
          if(m<0) //如果為1min
          {
          m=59; //秒鐘置0
          mg=m%10; //秒鐘的個位置0
          ms=m/10; //秒鐘的十位置0
          f--; //分鐘開始在預(yù)設(shè)的比賽時間基礎(chǔ)上倒計時
          fs=f/10; //分鐘的十位
          fg=f%10; //分鐘的個位
          if(f==0) //分鐘數(shù)倒計時到0
          {
          TR0=0; //時間到,停止計時
          }
          }
          }
          }
          /******************數(shù)碼管動態(tài)掃描顯示******************/
          void Js_Jf_Scan(void)
          {
          uchar j;
          for(j=0;j<=5;j++)
          {
          KL4=0;P0=LED_Num[g1];delay(1);KL4=1; /*將A隊分?jǐn)?shù)的個位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/
          KL3=0;P0=LED_Num[s1];delay(1);KL3=1; /*將A隊分?jǐn)?shù)的十位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/
          KL2=0;P0=LED_Num[b1];delay(1);KL2=1; /*將A隊分?jǐn)?shù)的百位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/
          KL1=0;P0=LED_Num[q1];delay(1);KL1=1; /*將A隊分?jǐn)?shù)的千位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/
          CL4=0;P0=LED_Num[g];delay(1);CL4=1; /*將B隊分?jǐn)?shù)的個位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/
          CL3=0;P0=LED_Num[s];delay(1);CL3=1; /*將B隊分?jǐn)?shù)的十位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/
          CL2=0;P0=LED_Num[b];delay(1);CL2=1; /*將B隊分?jǐn)?shù)的百位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/
          CL1=0;P0=LED_Num[q];delay(1);CL1=1; /*將B隊分?jǐn)?shù)的千位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/
          S4=0;P0=LED_Num[mg];delay(1);S4=1; /*將秒鐘的個位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/
          S3=0;P0=LED_Num[ms];delay(1);S3=1; /*將秒鐘的十位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/
          S2=0;P0=LED_Num[fg];delay(1);S2=1; /*將分鐘的個位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/
          S1=0;P0=LED_Num[fs];delay(1);S1=1; /*將分鐘的十位傳遞給譯碼器,通過按鍵,實現(xiàn)邊沿跳變,并把結(jié)果譯成相應(yīng)的段碼顯示出來*/
          }
          }
          /*****************判斷是哪個隊加分或者減分*****************/
          void Key_if(void)
          {
          if(Key1==0) //當(dāng)按鍵按下時
          {
          delay(1); //延時去抖動
          sum=sum+1; //B隊加1分
          }
          if(Key2==0 && sum>=1) //減分按鍵按下并且中得分不得少于1分
          {
          delay(1); //延時去抖動
          sum=sum-1; //B隊減1分
          }
          if(Key3==0) //當(dāng)按鍵按下時
          {
          delay(1); //延時去抖動
          sum1=sum1+1; //A隊加1分
          }
          if(Key4==0 && sum1>=1) //減分按鍵按下并且中得分不得少于1分
          {
          delay(1); //延時去抖動
          sum1=sum1-1; //A隊減1分
          }
          q=0; // A隊分值的千位默認(rèn)為0
          b=sum/100; //求出A隊分值的百位
          s=sum/10-b*10; //求出A隊分值的十位
          g=sum%10; //求出A隊分值的個位
          q1=0; // B隊分值的千位默認(rèn)為0
          b1=sum1/100; //求出B隊分值的百位
          s1=sum1/10-b1*10; //求出B隊分值的十位
          g1=sum1%10; //求出B隊分值的個位
          }
          /***********************鳴笛處理***********************/
          void sound(void) interrupt 0 using 0 //外部中斷0(),用工作寄存器組0
          {
          uchar i,j;
          if(Int_Key==0) //判斷鳴笛鍵是否按下,有按下就鳴笛
          {
          for(i=0;i<8;i++) //控制一種發(fā)音的時間
          {
          for(j=0;j<250;j++) //控制發(fā)音的頻率,延時長,頻率低,音低
          {
          music=~music; //取反
          delay1(1); //延時去抖動
          }
          Js_Jf_Scan();
          }
          for(i=0;i<16;i++) //控制另一種發(fā)音的時間
          {
          for(j=0;j<250;j++) //控制發(fā)音的頻率,延時短,頻率高,音高
          {
          music=~music; //取反
          delay(1); //延時去抖動
          }
          Js_Jf_Scan();
          }
          }
          else
          music=0; //喇叭不響
          }
          /*******************場地交換函數(shù)*******************/
          void jiaohuan(void)
          {
          int t;
          if(JH==0)
          {
          sum=t;
          t=sum1;
          sum1=t;
          }

          }

          /*******************延時1.8ms的子程序*******************/
          void delay1(uchar x)
          {
          uchar k;
          while(x--)
          for(k=0;k<215;k++); //延時長
          }
          /*******************延時1.0ms的子程序*******************/
          void delay(uchar x)
          {
          uchar k;
          while(x--)
          for(k=0;k<120;k++); //延時短
          }

          本文引用地址:http://www.ex-cimer.com/article/201611/323575.htm

          上一頁 1 2 下一頁

          評論


          技術(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); })();