1. 篮球比赛计分器

篮球比复赛计时计分器是为了解决篮制球比赛时计分与计时准确的问题。此装置利用单片机AT89C51完成了计时和计分的功能。本文详细地介绍了系统硬件与软件的设计过程,采用该装置可根据实际情况进行比分修改和时间的准确显示,具有低功耗,可靠性,安全性以及低成本等特点

2. 篮球计分器ge怎么编程

#include"reg52.h"

#define u8 unsigned char
#define u16 unsigned int

sbit UP_1 = P1^1; //第一队加分键
sbit DOWN_1 = P1^2; //第一队减分键
sbit UP_2 = P1^3; //第二队加分键
sbit DOWN_2 = P1^4; //第二队减分键
sbit Change = P1^5; //交换键
sbit Begin = P1^6; //开始键
sbit Pause = P1^7; //暂停键

sbit Beef = P2^4; //蜂鸣器

sbit an = P2^3; //段选
sbit wei = P2^2; //位选

u8 Grate_1=0; //第一队计分
u8 Grate_2=0; //第二队计分
u8 Grate_change=0; //换场标志
u8 Time = 99; //总时间
u16 Flag=0; //计时次数

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

void InitTimer1(void)
{
TMOD = 0x10; //定时器1设为模式1
TH1 = 0xFC;
TL1 = 0x18; //1ms
EA = 1; //开总中断
ET1 = 1; //开定时器1中断
// TR1 = 1; //
}

void delay(u8 d) //延时
{
u8 a,b,c;
for(c=d;c>0;c--)
for(b=17;b>0;b--)
for(a=16;a>0;a--);
}

void beef(u8 d) //发声
{
u8 a,b,c;
for(c=d;c>0;c--)
for(b=17;b>0;b--)
for(a=16;a>0;a--)
{
Beef=~Beef;
}
}

void display(u8 grate_1,u8 grate_2,u8 time) //显示
{
u8 w1,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=0xfb;
wei=0;
P0=0xff;
an=1;
P0=leddata[w3];
an=0;
delay(5);

P0=0xff; //显示第二队分数个位
wei=1;
P0=0xf7;
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);
}

void main()
{
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); //显示分数、时间
}
}
void Timer1Interrupt(void) interrupt 3 //定时器1中断函数
{
TH1 = 0xFC; //重赋初值
TL1 = 0x18;
Flag++; //中断次数加1
if(Flag>=1000)//1000次也就是1秒到
{
Flag=0;
Time--; //秒变量减1
}

}

3. 篮球比赛计分器用数字电路设计

数字复电路不好整
单片机很容易制就可以实现。
8个按键,一个按键做清零,6个键分两组,分别表示A队、B队,每组3个按键,三个按键分别为:1分、2分、3分,按相应的键,加相应的分;空余的那个按键可以不用,也可以实现其他功能。
显示用7段LED数码管显示,每组显示用3位数码管,既显示0——999。
空余的那个键用来做撤销键。也就是按一下,撤销前一次的操作。这个主要是在加分错误的情况下用来撤销前一次操作。

4. 一、设计题目:篮球电子计分器

#include<reg51.h>
#include<INTRINS.h>
#defineu16unsignedint
#defineu8unsignedchar

sbitk1=P1^0;//加1
sbitk2=P1^1;//加2
sbitk3=P1^2;//加3
sbitk4=P1^3;//减1
sbitk5=P1^4;//连按2下开始或停止计时,按下该键再按加减分键给另一边加分

sbitbz=P1^6;//按按键时响,不按不响
sbitled=P1^5;//创新能力不够没想到在哪加


u8key=0xff;//消抖后的有效按键值
u8key_down=0x00;//按键下降沿扫描结果,1有效
u8key_up=0x00; //上升沿扫描结果,1有效
u8key_sc=0xff;//上次扫描的按键值

//按键扫描程序
voidscanKey(){
staticu8temp0;
staticu8ms;
u8temp=0xff;
if(k1==0)temp&=0xfe;
if(k2==0)temp&=0xfd;
if(k3==0)temp&=0xfb;
if(k4==0)temp&=0xf7;
if(k5==0)temp&=0xef;
if(temp==temp0){//按键消抖
if(++ms>=5){//连续5次扫描的值一样,则认为是稳定状态
key=temp;
ms=0;
}
}else{
temp0=temp;
ms=0;
}
key_down=key_sc&(~key);//下降沿扫描
key_up=(~key_sc)&key;//下降沿扫描
key_sc=key;
}

u8readPIN(u8port,u8pin){
codeu8tab[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};
return((port&tab[pin])==0?0:1);
}

sbitdx=P3^2;
u8ds[8];//数码管显示缓存
codeu8w[]={~0x01,~0x02,~0x04,~0x08,~0x10,~0x20,~0x40,~0x80,}; //位码
codeu8d[]={~0xc0,~0xf9,~0xa4,~0xb0,~0x99,~0x92,~0x82,~0xf8,~0x80,~0x90,0x00};//断码
codeu8d_huo[]={0x00,0x00,0x80,0x00,0x80,0x00,0x00,0x00,};
voiddispaly(){//显示函数
staticu8a;
if(++a>7)a=0;
P2=0xff;
P0=d[ds[a]]|d_huo[a];
dx=1;dx=0;
P2=w[a];
}voidinit() //初始化函数
{TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;

}//加分和减分
voidjjf(u16*val){
if(readPIN(key_down,0)==1){//加1
*val+=1;
}
if(readPIN(key_down,1)==1){//加2
*val+=2;
}
if(readPIN(key_down,2)==1){//加3
*val+=3;
}
if(readPIN(key_down,3)==1){//减1
if(*val>0)*val-=1;
}
}

//连按程序
u8la_count=0;
u16la_js=0;
voidlan(){
if(la_js>=1000||((key&0xef)!=0xef))la_count=0;
if(readPIN(key_down,4)==1){
la_count++;
la_js=0;
}
}

u16count=0;
u16count1=0;
u16s24=24000;
u8s24off_flag=0;
voidmain()//主函数
{
init();
TR0=1;
while(1){
ds[0]=(count>99?count/100%10:10);//将当前分值送到数码管缓存
ds[1]=(count>9?count/10%10:10);
ds[2]=count%10;
ds[3]=(s24>9999?s24/10000%10:10);
ds[4]=s24/1000%10;
ds[5]=(count1>99?count1/100%10:10);//将当前分值送到数码管缓存
ds[6]=(count1>9?count1/10%10:10);
ds[7]=count1%10;



scanKey();//扫描按键
bz=(key!=0xff?0:1);//按下按键,蜂鸣器响
if(readPIN(key,4)==0){//判断给哪一方加减分
jjf(&count);
}else{
jjf(&count1);
}

lan();
if(la_count==2){
if(s24off_flag==0){
s24=24000;
s24off_flag=1;
}else{
s24off_flag=0;
}
la_count=3;
}

}

}voidtimer0()interrupt1//定时器
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
dispaly();
if(s24off_flag==1){
if(s24>0)s24--;
}

if(la_js<60000)la_js++;
}


单片机最小系统自己画吧,功能设计可以再探讨,你在问一下出这题的人,为什么不用两个573,用一个跟没用有什么区别


5. 篮球计时计分器

KEY_NUM EQU 30H
MD EQU 31H
BEEP BIT P2.0
LED_R BIT P1.0
LED_Y BIT P1.2
LED_G BIT P1.4
org 000h
JMP main
org 0023h
ljmp rx_int
ORG 100H
main:MOV SP ,#60H
mov tmod,#23h
mov scon,#0d0h
mov th1,#0e6h ;串行通信1200-n-2
mov tl0,#0E6H
setb tr1
setb es
setb ea
MOV P1,#00H ;TEST
MOV P0,#00H
MOV P2,#00H
LCALL DELAY
MOV P1,#0FFH ;INIT
MOV P2,#0FFH
MOV P0,#0FFH
MOV P3,#0FFH
CLR A
MOV MD ,#00H
MOV A,P3 ;读地址开关SW1-SW4
CPL A
ANL A,#0F0H
SWAP A
MOV MD,A
RL A
MOV DPTR,#JUMP
JMP @A+DPTR
JUMP: AJMP MOD0 ;子程序散转到MOD0__MOD15

;------------P2 SEC_WATCH_TABLE---------------
;电子秒表
MOD0:MOV A,MD
MOV P1,#0FFH
MOV R0,#00H
MOV A,#00H
MOV P3,#0FEH
MOV P0,#0C0H
MOV P2,#0C0H
M1:MOV R3,#10h
M2:LCALL DELAY ;SEC_LOOP
CLR P1.0
DJNZ R3,M2
MOV A,R0
ADD A,#01H
DA A
MOV R0,A
LCALL DISP1
CJNE R0,#15h,M1
clr p2.7
lcall delay
setb p2.7
JMP MOD1
MOD1:MOV A,MD
MOV P1,#0FFH
MOV R0,#00H
MOV A,#00H
MOV P3,#0FEH
MOV P0,#0C0H
MOV P2,#0C0H
M3:MOV R3,#10h
M4:LCALL DELAY ;SEC_LOOP
CLR P1.4
DJNZ R3,M4
MOV A,R0
ADD A,#01H
DA A
MOV R0,A
LCALL DISP1
CJNE R0,#15h,M3
clr p2.7
lcall delay
setb p2.7
JMP MOD0
;----------------rx----------
;串行中断
rx_int:push acc
push psw
jnb ri,end_rx
clr ri
mov a,sbuf
mov sbuf,a
jnb ti,$
clr ti
clr beep
lcall delay
lcall delay
setb beep

end_rx: pop psw
pop acc
reti
;===============SUB LIB============================
DISP0: MOV P0,#8CH ;"P"
PUSH ACC
MOV DPTR,#LED_CODE_P2
MOVC A,@A+DPTR
MOV P2,A
POP ACC
RET
DISP1:;DA A
PUSH ACC
ANL A,#0FH
MOV DPTR,#LED_CODE_P2
MOVC A,@A+DPTR
MOV P2,A
POP ACC
ANL A,#0F0H
SWAP A
mov dptr,#led_code_p0
MOVC A,@A+DPTR
MOV P0,A
RET
DELAY: MOV R6,#0F0H
DL1: MOV R7,#0F0H
DJNZ R7,$
DJNZ R6,DL1
RET

KEY: MOV A,P3 ;jianpian
ANL A,#0FH
MOV KEY_NUM,A
LCALL DELAY
MOV A,P3
ANL A,#0FH
CJNE A,KEY_NUM,KEY
CPL A
ANL A,#0FH
MOV KEY_NUM,A
RET

LED_CODE_P0:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H ;"0-F"
DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH
LED_CODE_P2:
DB 00000011B,10011111B,00100101B,00001101B
DB 10011001B,01001001B,01000001B,00011111B
DB 00000001B,00001001B,00010001B,11000001B
DB 01100011B,10000101B,01100001B,01110001B
END


6.  篮球比赛计分器的设计

7. 篮球计分器的设计及制作

1、用来Protel软件绘制出本设计任务的电源路原理图,并设计印制电路板图及制作印制电路板。 2、连接仿真器,将本设计任务的程序输入计算机,并进行仿真调试及运行。 3、连接编程器,将仿真通过的程序代码下载到单片机中,脱机运行并观察电路运行情况。 4、如把按键去抖动程序删除,即删除LCALL DELAY指令,仿真运行,观察运行情况。 5、如把等待按键释放的程序段删除,即删除“WAIT:MOV A,P0”、“ANL A,#0FH”、“CJNE A,#0FH,WAIT”三条指令,仿真运行,观察运行情况。 6、如按S1键加2分,按S2键加4分,按S3键加6分,按S4键减2分则程序应如何修改,修改后仿真运行,观察运行情况

8. 篮球计分器怎么做

找几个牌子分别写上0~9这几个数字,然后粘在一起,每一次得分就翻牌,这样是比较简便的。

9. 篮球积分器,要求74ls148,74ls00,74ls04,74ls192,555,7448,7seg-com-cat-grn,按键导线,别的都不能用

ADASFFGGHFHJGHSDFF