详见文末

在这里插入图片描述


功能效果演示

基于51单片机的篮球比赛计分器积分器仿真讲解

具体功能

由STC89C51单片机+数码管显示模块+按键模块+电源模块构成
(1)能记录单节比赛的比赛时间,并能修改时间,暂停比赛。
(2)能随时刷新甲、乙两队在整个赛程中的比分。
(3)场中交换比赛场地时,能交换甲、乙两队比分的位置。
(4)比赛时间结束时,能发出报警指令。
(5)有24秒倒计时功能,可通过按键随时复位24秒,如果24秒违例会启动蜂鸣器报警,同时比赛时间暂停,处理好后按一下24秒复位键,比赛继续。


1.系统方案说明

1.1 方案选择

1.1.1 篮球计时计分器设计的现状
体育比赛计时计分系统是对体育比赛过程中所产生的时间,比分等数据信息进行快速采集记录、加工处理、传递和利用的系统。根据运动项目的不同,比赛规则要求也不同,体育比赛的计时计分系统包括测量类、评分类、命中类、制胜类和得分类等多种类型。
篮球比赛是根据运动队员在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统。篮球比赛的计时计分系统由计时器、计分器等多种电子设备组成的,同时,根据目前高水平篮球比赛要求,完善的篮球比赛计时计分系统设备应能与现场成绩处理、现场大屏幕、电视转播车等多种设备相联,以便实现激烈的比赛现场感和表演娱乐等功能目标。现在,根据设计要求,介绍一下设计方案。

1.1.2 系统总体设计方案
1、能记录整个赛程的比赛时间,并能修改时间,暂停比赛时间。
2、能随时刷新甲、乙两队在整个赛程中的比分。
3、场中交换比赛场地时,能交换甲、乙两队比分的位置。
4、比赛时间结束时,能发出报警指令。

在这里插入图片描述
1.2 系统基本功能介绍
1、一个四位一体数码管显示比赛时间,时间格式如:15:00,两个三位一体数码管显示甲乙两对的比分,比分格式如:008。
2、比赛时间采用倒计时方式,以一秒的频率减时,上电时默认初值为15:00,在没有开始比赛时,可以修改时间,比赛开始后不能修改。
3、甲乙队比分采用三位数,上电初值为000,最大值为999,满足常理要求,未开始比赛以及比赛结束后比分无法加减,
4、比赛未开始之前,可以通过ADD1、DEC1键对比较时间的分钟进调时,通过ADD2、DEC2键对比较时间的秒进行调时。
5、可随时暂停/启动比赛时间。
6、比赛进行时,可以通过ADD1、DEC1键对甲队比分加、减,可以通过ADD2、DEC2对乙队比分加、减。每按一次键,加/减1分。
7、当一节比赛完后,可以通过(EXCHANGE)换场键换场,换场后,比分交换显示,交换后,下一节比赛开始时,相应的比分加减键也随之交换。
8、当比赛结束时,发出报警。

在这里插入图片描述

如图示:键盘对应名称如下:
ADD1,DEC1,EXCHANGE,ADD2,DEC2,RUN/STOP
其中,
ADD1为甲队比分加1键,(比赛开始前为调整时间加1)
DEC1为甲队比分减1键,(比赛开始前为调整时间减1)
EXCHANGE为换场键,一节比赛结束后才可换场。
ADD2为乙队比分加1键,(比赛开始前为调整时间加1)
DEC2为乙队比分减1键,(比赛开始前为调整时间减1)
RUN/STOP为启动暂停键,比赛开始前按下启动计时,比赛开始,比赛开始后,按下为暂停计时,比赛暂停。

2.系统硬件电路设计

2.1 篮球计时计分器电路原理图
用Protel99 SE设计的电路原理图见附录1。

2.2 篮球计时计分器电路工作过程
1.调整比赛时间:插上电源后,系列默认比赛时间为15:00,甲乙队比分默认000,此时按下ADD1键,可以对比赛时间分钟加1,按下DEC1键,可以对比赛时间的分钟减1,按下ADD2键,可以对比赛时间秒加1,按下DEC2键,可以对比赛时间秒减1。
启动比赛:按下RUN/STOP键,计时开始,比赛时间以1秒的频率倒计时。
暂停比赛:比赛运行的状态下,按RUN/STOP键,比赛暂停,计时暂停。
比分加减,在比赛进行的状态下按ADD1,DEC1键,可以对甲队比分加、减1,按ADD2、DEC2键,可以对乙队比分加、减1。
交换场地:在一节比赛时间结束后,按下EXCHANGE键,比赛时间重新预置为15:00,同时左右两边数码管的比分交换显示。此时按下启动键可以开始新一节的比赛。
报警提示:在一节比赛时间倒计时到00:00时,蜂鸣器发出报警提示。

2.3系统硬件电路组成
2.3.1 计时电路
1.显示器及其接口
显示器是最常用的输出设备,其种类繁多,但在单片机系统设计中最常用的是发光二极管显示器(LED)和液晶显示器(LCD)两种。由于这两种显示器结构简单,价格便宜,接口容易实现,因而得到广泛的应用。下面介绍发光二极管显示器(LED)的结构、工作原理及其接口电路。
(1)LED结构与原理
图3为典型的数码管。
在这里插入图片描述

如图3,LED显示器又称为数码管,LED显示器由8个发光二极管组成。中7个长条形的发光管排列成“日”字形,另一个点形的发光管在显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。LED显示器有两种不同的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED显示器。
(2)LED显示器显示方式
点亮LED显示器有两种方式:一是静态显示;二是动态显示。在本次设计中,采用的是静态显示。
所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种方法单片机中CPU的开销小。
这种电路的优点在于:在同一时间可以显示不同的字符;但缺点就是占用端口资源较多。从图3以看出,每位LED显示器需要单独占用8根端口线,因此,在数据较多的时候,往往不采用这种设计,而是采用动态显示方式。本设计采用的便是此种显示方式。

在这里插入图片描述
由于所有的段选码连在一起,所以同一瞬间只能显示同一种字符。但如果要显示不同字符,则要由位选码来控制。(如果LED为共阴极则P2.0P2.3输出为高电平,如果LED为共阳极则P2.0P2.3输出为低电平。)
2.报警器
(1)报警器的工作原理
报警器的种类很多,比如:扬声器,蜂鸣器等,本次设计采用的是电磁式蜂鸣器作为报警器。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、震动膜片以及外壳等组成。接通电源后,振荡器产生的音频信号通过电磁线圈,使得电磁线圈产生了一个磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性的振动发声。

3.计时电路的工作原理图
在这里插入图片描述
4.计时电路的工作原理(篇幅有限,详见文末)
5.振荡电路(篇幅有限,详见文末)

2.3.2 计分电路
本次设计使用的是石英晶体谐振器,因此采用30pF的电容,频率大小采用12MHZ与6MHZ均可,这里采用的是12MHZ晶振。
1.计分电路
8051系列单片机除了有4个8位并行口外,还有一个能同时进行串行发送和接收的全双工串行通信口。它能同时发送和接收数据,还能作为同步移位寄存器使用。球赛计分电路正是利用了8051单片机串行口可以外接串行输入并行输出移位寄存作用为输出口来实现球赛比分刷新显示的。
2.计分电路原理图
计分电路原理图如图7所示。
在这里插入图片描述
3.计分电路的工作原理(篇幅有限,详见文末)

2.4器件选择及介绍(篇幅有限,详见文末)

3.软件的编程与调试

3.1系统设计流程图
系统程序设计流程图如图所示。

在这里插入图片描述

在这里插入图片描述

3.2 部分C语言程序设计(完整详见文末)

#include<reg51.h>
#define LEDData P0

unsigned char code LEDCode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

int minit,second,count,count1;        	//分,秒,计数器
char min=15,sec=0;

sbit add1=P1^0;						//甲对加分,每按一次加1分   /在未开始比赛时为加时间分
sbit dec1=P1^1;						//甲对减分,每按一次减1分	/在未开始比赛时为减时间分
sbit exchange=P1^2;					//交换场地
sbit add2=P1^3;						//乙对加分,每按一次加1分	/在未开始比赛时为加时间秒
sbit dec2=P1^4;						//乙对减分,每按一次减1分	/在未开始比赛时为减时间秒
sbit p24_sec=P1^5;
sbit secondpoint=P0^7;				//秒闪动点
//----依次点亮数码管的位------
sbit led1=P2^7;
sbit led2=P2^6;
sbit led3=P2^5;
sbit led4=P2^4;
sbit led5=P2^3;
sbit led6=P2^2;
sbit led7=P2^1;
sbit led8=P2^0;
sbit led9=P3^7;
sbit led10=P3^6;
sbit led11=P3^5;
sbit led12=P3^4;

sbit alam=P1^7;						//报警

bit  playon=0;						//比赛进行标志位,为1时表示比赛开始,计时开启
bit  timeover=0;					//比赛结束标志位,为1时表示时间已经完
bit  AorB=0;						//甲乙对交换位置标志位
bit  halfsecond=0;					//半秒标志位

unsigned int scoreA;				//甲队得分
unsigned int scoreB;				//乙队得分
char sec24=24;		

void Delay5ms(void)
{
	unsigned int i;
	for(i=100;i>0;i--);
}


void display(void)
{
//-----------显示时间分--------------
	LEDData=LEDCode[minit/10];
	led1=0;
	Delay5ms();
	led1=1;
	LEDData=LEDCode[minit%10];
	led2=0;
	Delay5ms();
	led2=1;
//-------------秒点闪动------------
	if(halfsecond==1)
		LEDData=0x7f;
	else
		LEDData=0xff;
	led2=0;
	Delay5ms();
	led2=1;
	secondpoint=0;

原理图

在这里插入图片描述

仿真图

在这里插入图片描述


点击下方小卡片,那边发送“资源”两个字

获取论文报告+AD原理图源文件+Proteus仿真源文件+单片机源程序+配套视频讲解等全套资料

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐