基于AT89C51的籃球比賽計分器設計_第1頁
基于AT89C51的籃球比賽計分器設計_第2頁
基于AT89C51的籃球比賽計分器設計_第3頁
基于AT89C51的籃球比賽計分器設計_第4頁
基于AT89C51的籃球比賽計分器設計_第5頁
已閱讀5頁,還剩21頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于AT89C51的籃球比賽計分器課程設計學院:學生姓名:班級:學號:指導教師:附錄/* PO控制連接段選,P2連接位選,P1連接矩陣鍵盤 矩陣鍵盤按下按鍵,數碼管顯示相應的數據 比賽開始后,初始狀態為000--000 比賽結束后,可復位為000--000*/#include<reg51.h>sbitkey=P1; //P1連接矩陣鍵盤voidLED(); //數碼管顯示voidkaishi(); //開始或復位voidexchange();//交換得分voidguan(); //關閉voidjixu();//繼續voidajian(intt); //a-tvoidbjian(intt); // b-tvoiddelay(unsignedinti);//延時程序unsignedcharkeyscan(void);//矩陣鍵盤掃描unsignedinta,b,m;unsignedcharj[16]={0x7e,0x7d,0x7b,0x77,0xbe,0xbd,0xbb,0xb7,0xde,0xdd,0xdb,0xd7,0xee,0xed,0xeb,0xe7};//鍵值unsignedcharDisp_Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段選unsignedchardispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; //位選main(){ a=0;b=0;m=0; while(1) { unsignedkey; LED();//顯示數碼管 key=keyscan();//調用鍵盤掃描, switch(key) { case0x7e:a=a+1;LED();break; //a隊加1 case0x7d:a=a+2;LED();break; /a隊加2 case0x7b:a=a+3;LED();break; //a隊加3 case0x77:a=0;b=0;kaishi();break; // 復位 case0xbe:ajian(1);LED();break; //a隊減1 case0xbd:ajian(2);LED();break; //a隊減2 case0xbb:ajian(3);LED();break; //a隊減3 case0xb7:jixu();break;//暫停,繼續 case0xde:b=b+1;LED();break; //b隊加1 case0xdd:b=b+2;LED();break; //b隊加2 case0xdb:b=b+3;LED();break; //b隊加3 case0xd7:exchange();LED();break; //交換比分 case0xee:bjian(1);LED();break; //b隊減1 case0xed:bjian(2);LED();break; //b隊減2 case0xeb:bjian(3);LED();break; //b隊減3 case0xe7:guan();break;//關閉 }}}voidkaishi(){ m=1;LED();}voidajian(intt){if(a>=t){a=a-t;}}voidbjian(intt){if(b>=t){b=b-t;}}voidjixu(){ m=!m;LED();}voidguan(){m=0; LED();}voidexchange(){ unsignedinti; i=a; a=b; b=i;}voidLED(){unsignedinti,d,LedNumVal=1; //變量定義unsignedintLedOut[10]; //變量定義unsignedintDelayCNT=0;for(d=0;d<30;d++){ if(++DelayCNT>=20) //控制數字變化速度 { DelayCNT=0; //20個掃描周期清零一次 } if(m==1) {LedOut[2]=Disp_Tab[a/100];LedOut[1]=Disp_Tab[a%100/10];LedOut[0]=Disp_Tab[a%10];LedOut[3]=0x40; LedOut[4]=0x40; LedOut[7]=Disp_Tab[b/100];LedOut[6]=Disp_Tab[b%100/10]; LedOut[5]=Disp_Tab[b%10]; }if(m==0) { LedOut[0]=0x40;LedOut[1]=0x40;LedOut[2]=0x40;LedOut[3]=0x40; LedOut[4]=0x40; LedOut[5]=0x40;LedOut[6]=0x40; LedOut[7]=0x40; } for(i=0;i<9;i++) { P0=LedOut[i]; //P0控制段選 switch(i) //使用switch語句控制位選 { case0:P2=0x7F;break; case1:P2=0xbF;break; case2:P2=0xdF;break; case3:P2=0xeF;break; case4:P2=0xf7;break; case5:P2=0xfb;break; case6:P2=0xfd;break; case7:P2=0xfe;break; } delay(150); //掃描間隔時間 太長會數碼管會有閃爍感 } }}voiddelay(unsignedinti){charj;for(i;i>0;i--)for(j=200;j>0;j--);}unsignedcharkeyscan(void)//鍵盤掃描函數,使用行列反轉掃描法{unsignedcharcord_h,cord_l;//行列值P1=0x0f;//行線輸出全為0cord_h=P1&0x0f;//讀入列線值if(cord_h!=0x0f)//先檢測有無按鍵按下{delay(20);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論