1. 基於單片機的籃球計分器設計
一個單片機+lcd顯示器+按鈕 就搞定 具體hi我
2. 用單片機實現簡易的籃球比賽記分牌設計
做是沒問題,但是要求寫的太籠統。
發送端是用按鍵還是無線發射。。
3. 單片機原理與應用程序設計 籃球計分器
到郵箱去看看,我給你提供一個。
4. 籃球記分牌
這個做下來怎麼也值2000人民幣呀,雖然不難,但還是要花不少時間的。
5. 籃球計分器程序(單片機匯編語言編寫,不要C語言)
用C語言寫的可以幫你,如果是用匯編編寫的我可沒辦法了幫助你
6. 單片機籃球計分器編程
看板子是無法編程的,必須原理圖才可以,這里有一個籃球計分程序,供參考。
UP1EQUP1.1
DOWN1EQUP1.2
UP2EQUP1.3
DOWN2EQUP1.4
CHANGEEQUP1.5
BEGINEQUP1.6
BEEFEQUP2.4
DUANEQUP2.3
WEIEQUP2.2
GRATE1EQU30H
GRATE2EQU31H
GRATE_CHGEQU33H
TIMEEQU34H
CNTEQU35H
ORG0000H
LJMPMAIN
ORG001BH
LJMPT1ISR
ORG0030H
MAIN:
LCALLINITTIMER1
SETBUP1
SETBDOWN1
SETBUP2
SETBDOWN2
SETBCHANGE
SETBBEGIN
LOOP:
JBUP1,LOOP1
CLRET1
MOVR7,#5
LCALLDELAY
JNBUP1,$
INCGRATE1
SETBET1
SJMPLOOP6
LOOP1:
JBDOWN1,LOOP2
CLRET1
MOVR7,#5
LCALLDELAY
JNBDOWN1,$
MOVA,GRATE1
DECA
MOVGRATE1,A
SETBET1
SJMPLOOP6
LOOP2:
JBUP2,LOOP3
CLRET1
MOVR7,#5
LCALLDELAY
JNBUP2,$
INCGRATE2
SETBET1
SJMPLOOP6
LOOP3:
JBDOWN2,LOOP4
CLRET1
MOVR7,#5
LCALLDELAY
JNBDOWN2,$
MOVA,GRATE2
DECA
MOVGRATE2,A
SETBET1
SJMPLOOP6
LOOP4:
JBCHANGE,LOOP5
CLRET1
MOVR7,#5
LCALLDELAY
JNBCHANGE,$
MOVGRATE_CHG,GRATE1
MOVGRATE1,GRATE2
MOVGRATE2,GRATE_CHG
SETBET1
SJMPLOOP6
LOOP5:
JBBEGIN,LOOP6
MOVR7,#5
LCALLDELAY
JNBBEGIN,$
SETBTR1
LOOP6:
MOVA,TIME
JNZLOOP7
MOVTIME,#99
CLRTR1
MOVR7,#100
LCALLBEEFE
LOOP7:
LCALLDISPLAY
LJMPLOOP
T1ISR:
CLRTR1
MOVTH1,#HIGH(65536-50000)
MOVTL1,#LOW(65536-50000)
SETBTR1
DJNZCNT,T0E
MOVCNT,#20
DECTIME
T0E:
RETI
INITTIMER1:
MOVTMOD,#10H
MOVTH1,#HIGH(65536-50000)
MOVTL1,#LOW(65536-50000)
SETBEA
SETBET1
MOVCNT,#20
MOVTIME,#99
RET
DELAY:
MOVR2,#17
DLY:
MOVR3,#26
DJNZR3,$
DJNZR2,DLY
DJNZR7,DELAY
RET
BEEFC:
MOVR2,#17
BEEFD:
MOVR3,#16
BEEFE:
CPLBEEF
DJNZR3,BEEFE
DJNZR2,BEEFD
DJNZR7,BEEFC
RET
DISPLAY:
MOVA,GRATE1
MOVB,#10
DIVAB
MOV40H,A
MOV41H,B
MOVA,GRATE2
MOVB,#10
DIVAB
MOV42H,A
MOV43H,B
MOVA,TIME
MOVB,#10
DIVAB
MOV46H,A
MOV47H,B
MOVP0,#0FFH
SETBWEI
MOVP0,#0FEH
CLRWEI
MOVP0,#0FFH
SETBDUAN
MOVDPTR,#LEDTAB
MOVA,40H
MOVCA,@A+DPTR
MOVP0,A
CLRDUAN
MOVR7,#5
LCALLDELAY
MOVP0,#0FFH
SETBWEI
MOVP0,#0FDH
CLRWEI
MOVP0,#0FFH
SETBDUAN
MOVDPTR,#LEDTAB
MOVA,41H
MOVCA,@A+DPTR
MOVP0,A
CLRDUAN
MOVR7,#5
LCALLDELAY
MOVP0,#0FFH
SETBWEI
MOVP0,#0FBH
CLRWEI
MOVP0,#0FFH
SETBDUAN
MOVDPTR,#LEDTAB
MOVA,42H
MOVCA,@A+DPTR
MOVP0,A
CLRDUAN
MOVR7,#5
LCALLDELAY
MOVP0,#0FFH
SETBWEI
MOVP0,#0F7H
CLRWEI
MOVP0,#0FFH
SETBDUAN
MOVDPTR,#LEDTAB
MOVA,43H
MOVCA,@A+DPTR
MOVP0,A
CLRDUAN
MOVR7,#5
LCALLDELAY
MOVP0,#0FFH
SETBWEI
MOVP0,#0BFH
CLRWEI
MOVP0,#0FFH
SETBDUAN
MOVDPTR,#LEDTAB
MOVA,46H
MOVCA,@A+DPTR
MOVP0,A
CLRDUAN
MOVR7,#5
LCALLDELAY
MOVP0,#0FFH
SETBWEI
MOVP0,#07FH
CLRWEI
MOVP0,#0FFH
SETBDUAN
MOVDPTR,#LEDTAB
MOVA,47H
MOVCA,@A+DPTR
MOVP0,A
CLRDUAN
MOVR7,#5
LCALLDELAY
RET
LEDTAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
7. 基於AT89S52單片機的比賽記分牌設計,求匯編編程!
額,真心簡單。大半夜了,沒心情寫。況且一樓二樓都有意給你答案,我就不越俎代庖了哈
8. 基於單片機的籃球比賽計分器
這個程序 起始也就是 3個按鍵控制 +1 +2+ 3 1個按鍵控制 紅方藍方的電路 很簡單
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
// 段碼
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
// 待顯示的6位緩沖
uchar Num_Buffer[]={0,0,0,0,0,0};
// 按鍵代碼,按鍵計數
uchar Key_Code,Key_Counts1=0; Key_Counts2=0;//1 2分別是紅 藍方
// 延時
void DelayMS(uint x)
{
uchar i;
while(x--) for(i=0;i<120;i++);
}
// 顯示函數
void Show_Counts_ON_DSY()
{
uchar i,j=0x01;
Num_Buffer[2]=Key_Counts1/100;
Num_Buffer[1]=Key_Counts1/10%10;
Num_Buffer[0]=Key_Counts1%10;
Num_Buffer[5]=Key_Counts1/100;
Num_Buffer[4]=Key_Counts1/10%10;
Num_Buffer[3]=Key_Counts1%10;
for(i=0;i<6;i++)
{
j=_cror_(j,1);
P0=0xff;
P0=DSY_CODE[Num_Buffer[i]];
P2=j;
DelayMS(1);
}
}
// 主程序
void main()
{
uchar i;
P0=0xff;
P1=0xff;
P2=0x00;
Key_Code=0xff;
while(1)
{
Show_Counts_ON_DSY();
P1=0xff;
Key_Code=P1;
//有鍵按下時,數碼管刷新顯示 30 次,該行代碼同時起到延時作用
if(Key_Code!=0xff)
for(i=0;i<30;i++) Show_Counts_ON_DSY();
switch(Key_Code)
{
case 0xfe: if(color==1)Key_Counts1++; else Key_Counts2++; //左邊加1還是右邊加1
break;
case 0xfd: Key_Counts1=Key_Counts1+2; else Key_Counts2=Key_Counts2+2;
break;
case 0xfb: Key_Counts=Key_Counts1+3; else Key_Counts2=Key_Counts2+3;
case 0xf7; color=!color;//左邊還是右邊
}
Key_Code=0xff;
}
//P1接數碼官段碼 P2接片選
9. 求一份關於籃球計分器的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
}
}
10. 51單片機實現籃球記分牌
我認為輸入可以用按鈕鍵盤,用於加分,比如加1分按1鍵,3分按3鍵,減分另設鍵盤,這個你可以自己設計,應該用到的鍵格不多,鍵盤可以採用中斷掃描的方法查詢鍵值,如果條件允許就直接用按鍵輸入就行,這樣編程簡單。至於數碼管那隻能用簡單的符號表示隊名比如u表示正隊,n表示反隊。應該用到兩個三位的數碼管就行。顯示可採用動態顯示,如果有六個寄存器,完全可以採用靜態顯示,這樣編程很簡單。我認為自己焊板子更好,想怎麼搞就怎麼搞,只是注意一下ISP燒錄程序的電路。不會很麻煩,多琢磨一下吧!