基于C51單片機(jī)的籃球計(jì)分器設(shè)計(jì)_第1頁
基于C51單片機(jī)的籃球計(jì)分器設(shè)計(jì)_第2頁
基于C51單片機(jī)的籃球計(jì)分器設(shè)計(jì)_第3頁
基于C51單片機(jī)的籃球計(jì)分器設(shè)計(jì)_第4頁
基于C51單片機(jī)的籃球計(jì)分器設(shè)計(jì)_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、基于C51單片機(jī)的籃球計(jì)分器設(shè)計(jì)題目要求:1. 設(shè)計(jì)一款能夠顯示籃球比分的記分牌;2. 通過加分按鈕可以給A隊(duì),或B隊(duì)加分;3. 設(shè)計(jì)對(duì)調(diào)功能,更換場(chǎng)地后,AB隊(duì)分?jǐn)?shù)互換;仿真截圖:完整源代碼:#include<reg51.h>code unsigned seg=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /分別對(duì)應(yīng)數(shù)碼管顯示字形0-9int m=15,n=00,x=0,y=0,jie=2,bujin=1,zanting=0,chuzanting=0; /初始化,m、n為分、秒計(jì)時(shí)x、y為A、B兩隊(duì)分?jǐn)?shù) ,其余為中間變量 s

2、bit A_add = P30;/A隊(duì)加分按鈕sbit B_add = P31;/B隊(duì)加分按鈕sbit Time_add = P32;/時(shí)間加按鈕sbit Time_sub = P33;/時(shí)間減按鈕sbit A_sub = P34;/A隊(duì)減分按鈕sbit B_sub = P35;/B隊(duì)減分按鈕sbit pause = P36;/暫停、啟動(dòng)按鈕sbit change = P37;/ 換場(chǎng)地按鈕void keyScan();/按鍵掃描函數(shù)void delay(int t)/延時(shí)子程序,通過參數(shù)t,可以調(diào)整暫停時(shí)間while(t-)unsigned int i;for(i=0;i<200;i+

3、); /設(shè)置變量i的變化范圍,能調(diào)整延時(shí)的單位時(shí)間長度,i越小,延時(shí)單位時(shí)間越短,精度越高void display(int m,int n,int x,int y)/數(shù)碼管動(dòng)態(tài)刷新顯示程序if(jie=1&&bujin!=2) /中間變量jie=1時(shí),為上半場(chǎng),對(duì)p1賦值P1=0xbf; /p1=0xbf,即p1=1011111B,點(diǎn)亮上半場(chǎng)對(duì)應(yīng)指示燈P2=0xfe;/數(shù)碼管動(dòng)態(tài)刷新顯示程序p2=11111110,i為分鐘P0=segm/10; /刷新顯示時(shí)間顯示分鐘十位,調(diào)用延時(shí)程序delay(1);/延時(shí)數(shù)碼管的點(diǎn)亮P2=0xff;P0=0;P2=0xfd;/同理, 分鐘個(gè)

4、位并延時(shí)點(diǎn)亮P0=segm%10;delay(1);P2=0xff;P0=0;P2=0xfb; /秒鐘十位P0=segn/10;delay(1);P0=0;P2=0xff;P2=0xf7; /秒鐘個(gè)位P0=segn%10;delay(1);P0=0;P2=0xff;P2=0xef; / A隊(duì)分?jǐn)?shù)十位P0=segx/10;delay(1);P2=0xff;P0=0;P2=0xdf; /A隊(duì)分?jǐn)?shù)個(gè)位P0=segx%10;delay(10);P2=0xff;P0=0;P2=0xbf; /B隊(duì)分?jǐn)?shù)十位P0=segy/10;delay(1);P0=0;P2=0xff;P2=0x7f; /B隊(duì)分?jǐn)?shù)個(gè)位P0

5、=segy%10;delay(1);P0=0;P2=0xff;void t0(void) interrupt 1 /調(diào)用定時(shí)器T0 基本計(jì)時(shí)單位秒 中斷int i;TH0=0xb1; /利用定時(shí)器T0,送入計(jì)數(shù)初值TH0,TL0TL0=0x10; /定時(shí)器定時(shí)單位為20msi+;if(i=50) /利用中間變量i,令i的值為50 50*20ms=1秒if(n=0) /分鐘與秒時(shí)間的調(diào)整 當(dāng)秒減到0后分鐘減1n=60;if(m > 0) m-;n-; /實(shí)現(xiàn)1秒計(jì)時(shí)i=0;void main() /主程序TMOD=0x01;/設(shè)置定時(shí)器工作方式EA=1;ET0=1;TH0=0xb1; /定

6、時(shí)計(jì)送計(jì)數(shù)初值,EA=1,開中斷p3口電平拉高TL0=0x10; /p1-0x7f,上半場(chǎng)指示燈點(diǎn)亮TR0=1;P3=0xff;P1=0x7f;while(1) /通過while(1),反復(fù)調(diào)用循環(huán)體內(nèi)子程序display(m,n,x,y); /調(diào)用動(dòng)態(tài)刷新顯示程序keyScan();/按鍵處理函數(shù)if(m <=0 && n<=0)/時(shí)間結(jié)束了ET0=0;/關(guān)閉中斷,停止計(jì)時(shí)TR0 = 0;void keyScan()/按鍵掃描函數(shù)int temp; /中間變量temp,檢測(cè)到有按鍵按下時(shí)交換A,B兩隊(duì)分?jǐn)?shù)if(A_add=0)/當(dāng)檢測(cè)到A隊(duì)加分按鍵按下,對(duì)應(yīng)加分d

7、elay(1); /調(diào)用延時(shí)子程序,實(shí)現(xiàn)按鍵抖動(dòng)功能,即當(dāng)檢測(cè)到按鍵按下時(shí),延時(shí),按鍵仍按下,說明非抖動(dòng),A隊(duì)對(duì)應(yīng)加分if(A_add=0)x+;if(B_add=0) /B隊(duì)加分鍵被按下delay(1);if(B_add=0)y+;if(A_sub=0)/A隊(duì)減分delay(1);if(A_sub=0)if(x>=1) x-;if(B_sub=0)/B隊(duì)減分delay(1);if(B_sub=0)if(y>=1)y-;if(Time_add=0)/時(shí)間增加按鈕delay(10);if(Time_add=0)n+;if(n=60)m+;n=1;if(Time_sub=0)/時(shí)間減少delay(10);if(Time_sub=0)if(!(m = 0 && n = 0)/防止被減成了負(fù)數(shù)if(n <= 0)n = 60;m-;n-;if(change=0)/交換場(chǎng)地delay(1);if(change=0)temp=x;/兩個(gè)分?jǐn)?shù)值對(duì)調(diào)x=y;y=temp;if(pause=0)/檢測(cè)到暫停鍵按下是,令EA =0關(guān)閉中斷delay(1);if(pause=0)if(EA = 0)EA = 1; elseEA = 0;/當(dāng)有按鍵沒被松開

溫馨提示

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

評(píng)論

0/150

提交評(píng)論