導航:首頁 > 操作系統 > 單片機籃球計數器

單片機籃球計數器

發布時間:2025-01-05 11:12:09

㈠ 求一份關於籃球計分器的51單片機C語言程序

這是一個數碼管顯示的籃球計分程序,你可以參考一下:
#include"reg52.h"

#defineu8unsignedchar
#defineu16unsignedint


sbitUP_1=P1^1; //第一隊加分鍵
sbitDOWN_1=P1^2; //第一隊減分鍵
sbitUP_2=P1^3; //第二隊加分鍵
sbitDOWN_2=P1^4; //第二隊減分鍵
sbitChange=P1^5; //交換鍵
sbitBegin=P1^6; //開始鍵
sbitPause =P1^7; //暫停鍵

sbitBeef=P2^4; //蜂鳴器

sbitan=P2^3; //段選
sbitwei=P2^2; //位選


u8Grate_1=0; //第一隊計分
u8Grate_2=0; //第二隊計分
u8Grate_change=0; //換場標志
u8Time=99; //總時間
u16Flag=0; //計時次數

u8leddata[]={
0x3F,//"0"
0x06,//"1"
0x5B,//"2"
0x4F,//"3"
0x66,//"4"
0x6D,//"5"
0x7D,//"6"
0x07,//"7"
0x7F,//"8"
0x6F,//"9"
};


voidInitTimer1(void)
{
TMOD=0x10; //定時器1設為模式1
TH1=0xFC;
TL1=0x18;//1ms
EA=1;//開總中斷
ET1=1;//開定時器1中斷
//TR1=1;//
}

voiddelay(u8d) //延時
{
u8a,b,c;
for(c=d;c>0;c--)
for(b=17;b>0;b--)
for(a=16;a>0;a--);
}

voidbeef(u8d)//發聲
{
u8a,b,c;
for(c=d;c>0;c--)
for(b=17;b>0;b--)
for(a=16;a>0;a--)
{
Beef=~Beef;
}
}


voiddisplay(u8grate_1,u8grate_2,u8time) //顯示
{
u8w1,w2,w3,w4,w7,w8;
w1=grate_1/10; //計算第一隊分數十位
w2=grate_1%10; //計算第一隊分數個位

w3=grate_2/10; //計算第二隊分數十位
w4=grate_2%10; //計算第二隊分數個位

w7=time/10; //計算時間十位
w8=time%10; //計算時間個位


P0=0xff; //消隱,該段顯示第一隊分數十位
wei=1;
P0=0xfe; //送位碼
wei=0;
P0=0xff;
an=1;
P0=leddata[w1]; //送段碼
an=0;
delay(5);P0=0xff; //顯示第一隊分數個位
wei=1;
P0=0xfd;
wei=0;
P0=0xff;
an=1;
P0=leddata[w2];
an=0;
delay(5);P0=0xff; //顯示第二隊分數十位
wei=1;
P0=0xf7;
wei=0;
P0=0xff;
an=1;
P0=leddata[w3];
an=0;
delay(5);

P0=0xff; //顯示第二隊分數個位
wei=1;
P0=0xef;
wei=0;
P0=0xff;
an=1;
P0=leddata[w4];
an=0;
delay(5);P0=0xff; //顯示時間十位
wei=1;
P0=0xbf;
wei=0;
P0=0xff;
an=1;
P0=leddata[w7];
an=0;
delay(5);P0=0xff; //顯示時間個位
wei=1;
P0=0x7f;
wei=0;
P0=0xff;
an=1;
P0=leddata[w8];
an=0;
delay(5);
}


voidmain()
{
InitTimer1(); //初始化定時器1
UP_1=1; //以下初始化IO口
DOWN_1=1;
UP_2=1;
DOWN_2=1;
Change=1;
Begin=1;
while(1)
{
if(UP_1==0) //如果第一隊加分鍵按下
{
ET1=0; //關閉定時器1中斷
delay(5); //稍加延時
while(UP_1==0);//等待按鍵抬起
Grate_1++; //第一隊分數加1
ET1=1; //開啟定時器1中斷
}
if(DOWN_1==0) //如果第一隊減分鍵按下
{
ET1=0;
delay(5);
while(DOWN_1==0);
Grate_1--; //第一隊分數減1
ET1=1;
}
if(UP_2==0) //如果第二隊加分鍵按下
{
ET1=0;
delay(5);
while(UP_2==0);
Grate_2++; //第二隊分數加1
ET1=1;
}
if(DOWN_2==0) //如果第二隊減分鍵按下
{
ET1=0;
delay(5);
while(DOWN_2==0);
Grate_2--; //第二隊分數減1
ET1=1;
}
if(Change==0) //如果換場鍵按下
{
ET1=0;
delay(5);
while(Change==0);
Grate_change=Grate_1;//一下三行語句完成分數交換顯示
Grate_1=Grate_2;
Grate_2=Grate_change;
ET1=1;
}
if(Begin==0) //如果開始鍵按下
{
delay(5);
while(Begin==0);
TR1=1;//開啟定時器1
}
if(Pause==0)
{
delay(5);
while(Pause==0);
TR1=0;
}
if(Time<=0) //如果時間計數到0
{
Time=99; //恢復初始時間
TR1=0; //關閉定時器1
beef(100); //發聲
}
display(Grate_1,Grate_2,Time);//顯示分數、時間
}
}
voidTimer1Interrupt(void)interrupt3 //定時器1中斷函數
{
TH1=0xFC; //重賦初值
TL1=0x18;
Flag++; //中斷次數加1
if(Flag>=1000)//1000次也就是1秒到
{
Flag=0;
Time--; //秒變數減1
}

}

㈡ 單片機c51籃球計時器程序

暑假寫的,你參考參考#include#include#include#include#defineucharunsignedchar#defineuintunsignedint#defineoutbitP3#defineoutsegP1ucharsecond;sbitp20=P2^0;//設置sbitp21=P2^1;//+sbitp22=P2^2;//-sbitchange=P2^3;//顯示選擇sbitspeak=P2^4;//蜂鳴器ucharclock[7]={6,6,12,58,12,59,0};//依次為月日時分鬧鍾時鬧鍾分比較量ucharcodeTAB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};ucharm,n,q,i,h;j=6;k=1;a=0xff;b=0xff;c=0xff;d=0xff;voiddelay(){uinte;for(e=0;e1)clock[j]=clock[j]-1;elseclock[j]=12;break;case1:if(clock[j]>1)clock[j]=clock[j]-1;elseclock[j]=31;break;case2:if(clock[j]>0)clock[j]=clock[j]-1;elseclock[j]=23;break;case3:if(clock[j]>0)clock[j]=clock[j]-1;elseclock[j]=59;break;case4:if(clock[j]>0)clock[j]=clock[j]-1;elseclock[j]=23;break;case5:if(clock[j]>0)clock[j]=clock[j]-1;elseclock[j]=59;break;default:break;}}if(change==1){while(1){P2=0x0f;if((P2&0x0f)==0x0f)break;}}}main(){EA=1;ET0=1;TMOD=0x01;TH0=-20000/256;TL0=-20000%256;TR0=1;while(1){display();keyscan();if(j==6){if(change==1){m=clock[3]%10;//選擇顯示時間n=clock[3]/10;q=clock[2]%10;i=clock[2]/10;outbit=0x08;//顯示秒的點閃動outseg=second;delay();}else{m=clock[1]%10;//選擇顯示日期n=clock[1]/10;q=clock[0]%10;i=clock[0]/10;}}elseif(j==0){q=clock[j]%10;i=clock[j]/10;}elseif(j==1){m=clock[j]%10;n=clock[j]/10;}elseif(j==2){q=clock[j]%10;i=clock[j]/10;}elseif(j==3){m=clock[j]%10;n=clock[j]/10;}elseif(j==4){q=clock[j]%10;i=clock[j]/10;}elseif(j==5){m=clock[j]%10;n=clock[j]/10;}if(clock[2]==clock[4]&&clock[3]==clock[5])//定點報時{if(p20==0||p21==0||p22==0||change==0)//有鍵按下則停止報警k=0;speak=1&k;}elsek=1;}}voidtimer0()interrupt1using1{uchare,f,g,h;TH0=-20000/256;TL0=-20000%256;e=e+1;if(e==50)//1sec{e=0;g=g+1;second=second^0x80;if(g==60)//1min{g=0;if(clock[3]==59)//每過60s改變下時間{if(clock[2]==23){clock[2]=0;clock[3]=0;}else{clock[2]=clock[2]+1;clock[3]=0;}}elseclock[3]=clock[3]+1;if(clock[3]==0&&clock[2]==0)//時間都為0時改變日期{switch(clock[0]){case1:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=2;}break;case2:if(clock[1]<29)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=3;}break;case3:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=4;}break;case4:if(clock[1]<30)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=5;}break;case5:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=6;}break;case6:if(clock[1]<30)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=7;}break;case7:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=8;}break;case8:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=9;}break;case9:if(clock[1]<30)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=10;}break;case10:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=11;}break;case11:if(clock[1]<30)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=12;}break;case12:if(clock[1]<31)clock[1]=clock[1]+1;else{clock[1]=1;clock[0]=1;}break;default:break;}}}if(j!=6){f=f+1;if(f!=10)//判斷10s是否到是否有鍵按下{switch(j)//所設置的那位閃動{case0:a=~a;b=~b;c=0;d=0;break;case1:c=~c;d=~d;a=0;b=0;break;case2:a=~a;b=~b;c=0;d=0;break;case3:c=~c;d=~d;a=0;b=0;break;case4:a=~a;b=~b;c=0;d=0;break;case5:c=~c;d=~d;a=0;b=0;break;default:break;}if(clock[6]!=clock[j]||h!=j){f=0;h=j;clock[6]=clock[j];}}else{j=6;f=0;a=0xff;b=0xff;c=0xff;d=0xff;}}else{a=0xff;b=0xff;c=0xff;d=0xff;}}}

㈢ 求單片機籃球計分器,8個按鈕.開始.結束.加一分.加兩分.加三分,不用記時間和換場地,程序和仿圖

用單片機做籃球計分器,8個按鈕用於計分,這個可以實現,計多少分都可以,可由程序來控制實現。仿圖如下圖所示。

㈣ 單片機的籃球比賽計時器的工作原理和使用優勢

單片機的籃球比賽計時器 是一種可以用於專業比賽的計時工具,通過時鍾電路為單片機提供一個振動器,從而產生節拍效果。當節拍與時間相吻合的時候,就可以充當計時器,由於於單片機只能在時鍾電路中正常工作,所以這種計時器的工作效率極高,而且准確率也會比較高,常常用在籃球比賽或者其他專業性質的比賽當中。

首先,在 單片機的籃球比賽計時器 中,單片機和時鍾電路是完全吻合的,兩者缺一,不可始終作為計時單位,並沒有其他用處,而單片機缺少了振動器,也失去了計時的意義。所以這種計時器能夠在比賽中保證即時效果,對於籃球比賽來說,特別是在比賽後期的一分鍾內,如果產生絕殺球,卻不能通過計時器完全判斷的話,對於籃球比賽來說,是一場莫大的損失,所以高伍缺只有保證精準的計時效果,才可以精彩的籃球比賽。

其次,在籃球比賽中,為了能夠保證比賽公平性,一定不能出現問題。 單片機的籃球比賽計戚辯時器 由於其設計操作步驟比較復雜,所以在質量上也有一定保障,只要擁有時鍾電路就可以及時計時,精確比賽時間,保證比賽公平。這也是單片機的籃球比賽計時器,能夠長期使用的原因,不需要太多人為操作,直接讓時鍾電路控橘寬制計時器的開始和結束。選擇一款合適的比賽計時器,能夠在最大程度上保證籃球比賽的時間問題。

㈤ 51單片機的籃球計分器液晶LCD1602顯示 proteus模擬C語言程序+原理圖+PCB+設計報告

基於51單片機的籃球計分器,採用液晶LCD1602進行顯示,主要功能包括籃球比賽計時計分、隊伍加分、對調比分、顯示比賽倒計時以及創新功能如顯示第幾小節、小節結束蜂鳴提醒、按鍵加1、加2、加3操作、24秒進攻倒計時等。

設計內容包括:設計LCD顯示籃球比賽計時計分牌,通過加分按鈕控制A隊或B隊的得分,設計對調功能進行中場換場,顯示比賽剩餘時間,以及添加額外功能如顯示當前小節、小節結束提醒和按鍵控制的得分增加操作,包含24秒進攻倒計時功能。

該設計適用於AT89C51/52(包括AT89S51/52、AT89C51/52、STC89C51/52等51內核單片機),程序使用C語言編寫,並支持keil 4/keil 5編譯器。提供proteus 7.8及以上版本的模擬模型,PCB布局圖,設計報告及講解視頻,幫助用戶深入了解設計原理和實現過程。

模擬步驟包括:啟動proteus模擬環境,選擇單片機型號和對應的hex文件路徑,進行模擬測試。通過對比模擬結果與設計要求,驗證設計功能的正確性。

模擬與實物作品的差異在於:運行環境、調試方式、電路連接、運行速度及功能實現方式。模擬提供更便捷的調試手段,而實物則受限於硬體性能和物理連接。

資料包包含模擬模型、C語言源碼、設計報告、原理圖、功能需求文檔、元器件清單、軟硬體設計流程、講解視頻以及模擬和實物開發所需的相關軟體資料,如Altium Designer、KEIL、Proteus等,還包括單片機學習資源和答辯技巧指導。

注意:查看常見使用問題及解決方法、模擬圖、程序源碼、開題報告、原理圖、功能要求、元器件清單、設計報告、軟硬體流程框圖、講解視頻等資源。包含單片機相關課程畢業設計的鏈接,以及更多資源獲取鏈接。

㈥ at89s52 籃球計時器 編寫求助

130分啊,哈哈,給我吧,謝謝!

閱讀全文

與單片機籃球計數器相關的資料

熱點內容
如何進入2b2t伺服器視頻 瀏覽:994
鐵虎加密演算法 瀏覽:949
手機qq怎麼解加密 瀏覽:756
程序員辭職把所有程序卸載 瀏覽:121
cf游戲伺服器IP地址 瀏覽:598
python地圖上畫三維柱狀圖 瀏覽:798
學大教育程序員 瀏覽:979
壓縮機維修濟南 瀏覽:739
演算法21是什麼 瀏覽:311
加密文件解密時非法的標志 瀏覽:358
哪些php網站有哪些東西 瀏覽:789
pdf文件轉word文件怎麼打開 瀏覽:808
許可權的文件夾圖標 瀏覽:827
智能加密門卡怎麼弄在手機 瀏覽:501
程序員改需求 瀏覽:111
android環信圖片 瀏覽:134
ees演算法具有什麼特點 瀏覽:768
安卓手機如何弄戀愛日記 瀏覽:624
android連接webservice 瀏覽:221
對於簡單的加密和編碼方法 瀏覽:334