加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

基于51单片机篮球计时器计分器设计(源码+原理图+PCB+仿真+设计报告+讲解视频)

3小时前
357
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
实物图
相关方案
  • 方案介绍
    • 讲解视频
    • 1 设计要求:
    • 讲解视频
    • 2 仿真图:
    • 3 原理图:
    • 4 程序:
    • 5 报告:
    • 6 资料清单&&网盘下载链接:
  • 相关文件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

仿真:proteus 7.8

程序编译器:keil 4/keil 5

编程语言:C语言

编号C0004

电路采用单片机作为核心元件,利用两个供阴的三位一体数码管来显示两队的分数,一个四位一体数码管显示时间的计时。显示分数范围可达0~999分,足够赛程计分的需要。四位一体数码管中2个用于显示分钟,2个用于显示秒钟。

该系统具有赛程定时设置,赛程时间暂停,及时刷新甲、乙双方的成绩等功能。设计分为软件设计和硬件设计两部分。主控芯片采用AT89C51,使用C语言编写软件程序,主体分为计时显示模块、计分显示模块、定时报警、按键控制模块。编程后利用Keil C51软件来进行编译,再将生成的HEX文件装入芯片中,检验功能是否能够正常实现。

讲解视频


51单片机篮球计分器(程序+仿真+原理图+报告)

1 设计要求:

1、能记录整个赛程的比赛时间,并能修改时间,暂停比赛时间。

2、能随时刷新甲、乙两队在整个赛程中的比分。

3、场中交换比赛场地时,能交换甲、乙两队比分的位置。

4、比赛时间结束时,能发出报警指令。

5、有24秒倒计时功能,可通过按键随时复位24秒,如果24秒违例会启动蜂鸣器报警,同时比赛时间暂停,处理好后按一下24秒复位键,比赛继续。

二、实现功能:

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、当比赛结束时,发出报警。

三、作用说明:

1、调整比赛时间:插上电源后,系列默认比赛时间为15:00,甲乙队比分默认000,此时按下ADD1键,可以对比赛时间分钟加1,按下DEC1键,可以对比赛时间的分钟减1,按下ADD2键,可以对比赛时间秒加1,按下DEC2键,可以对比赛时间秒减1。

2、启动比赛:按下RUN/STOP键,计时开始,比赛时间以1秒的频率倒计时。

3、暂停比赛:比赛运行的状态下,按RUN/STOP键,比赛暂停,计时暂停。

4、比分加减,在比赛进行的状态下按ADD1,DEC1键,可以对甲队比分加、减1,按ADD2、DEC2键,可以对乙队比分加、减1.

5、交换场地:在一节比赛时间结束后,按下EXCHANGE键,比赛时间重新预置为15:00,同时左右两边数码管的比分交换显示。此时按下启动键可以开始新一节的比赛。

6、报警提示:在一节比赛时间倒计时到00:00时,蜂鸣器发出报警提示。

7、比赛时,24秒会以1秒的速度减,可随时按下24秒复位键重置24秒。

讲解视频

包含仿真讲解和代码讲解,详情见压缩包内

2 仿真图:

img

3 原理图:

img

4 程序:

显示函数

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;
//-----------显示时间秒------------
	LEDData=LEDCode[second/10];
	led3=0;
	Delay5ms();
	led3=1;
	LEDData=LEDCode[second%10];
	led4=0;
	Delay5ms();
	led4=1;
//-----------显示1组的分数百位-------
	if(AorB==0)
		LEDData=LEDCode[scoreA/100];
	else
		LEDData=LEDCode[scoreB/100];
	led5=0;
	Delay5ms();
	led5=1;
//---------------显示1组分数的十位-----------
	if(AorB==0)
		LEDData=LEDCode[(scoreA%100)/10];
	else
		LEDData=LEDCode[(scoreB%100)/10];
	led6=0;
	Delay5ms();
	led6=1;

//---------------显示1组分数的个位-----------
	if(AorB==0)
		LEDData=LEDCode[scoreA%10];
	else
		LEDData=LEDCode[scoreB%10];
	led7=0;
	Delay5ms();
	led7=1;

//-----------显示2组分数的百位-------
	if(AorB==1)
		LEDData=LEDCode[scoreA/100];
	else
		LEDData=LEDCode[scoreB/100];
	led8=0;
	Delay5ms();
	led8=1;
//-----------显示2组分数的十位-----------
	if(AorB==1)
		LEDData=LEDCode[(scoreA%100)/10];
	else
		LEDData=LEDCode[(scoreB%100)/10];
	led9=0;
	Delay5ms();
	led9=1;

//-----------显示2组分数的个位-----------
	if(AorB==1)
		LEDData=LEDCode[scoreA%10];
	else
		LEDData=LEDCode[scoreB%10];
	led10=0;
	Delay5ms();
	led10=1;

//-----------显示时间分--------------
	LEDData=LEDCode[sec24/10];
	led11=0;
	Delay5ms();
	led11=1;
	LEDData=LEDCode[sec24%10];
	led12=0;
	Delay5ms();
	led12=1;
}

main函数

//******************************主函数*************************************************
void main(void)
{
	TMOD=0x11;
 	TL0=0xb0;
 	TH0=0x3c;
 	TL1=0xb0;
 	TH1=0x3c;
	minit=min;				//初始值为15:00
	second=sec;
 	EA=1;
	ET0=1;
	ET1=1;
 	TR0=0;
	TR1=0;
	EX0=1;
	IT0=1;
	IT1=1;
//	EX1=1;
	PX0=1;
//	PX1=1;
	PT0=0;
	P1=0xFF;
	P3=0xFF;
	alam=1;
 	while(1)
 	{
		keyscan();
		display();			
    }
}


void PxInt0(void) interrupt 0
{
	Delay5ms();
	EX0=0;
	alam=1;
	TR1=0;
	if(timeover==1)
	{
		timeover=0;
	}

	if(playon==0)
	{
		playon=1;				//开始标志位
		TR0=1;					//开启计时
		
		if((minit+second)==0)
		{
			sec24=24;
			minit=min;			
			second=sec;
		}
	}
	else
	{
		playon=0;				//开始标志位清零,表示暂停
		TR0=0;					//暂时计时
	}	
	EX0=1;						//开中断	
}

image-20231031010452699

5 报告:

8615字设计报告附赠开题报告

image-20231031010459882

器件清单:

篮球计分器元件清单

1) 万用板9*15

2) stc89C51单片机

3) 40脚IC座

4) 0.36四位一体共阳数码管

5) 0.36三位一体共阳数码管*2

6) 0.36两位一体共阳数码管

7) 10K排阻(103)

8) 2.2K电阻*13

9) 10K电阻

10) 10uF电容

11) 按键*7

12) 12M晶振

13) 30P电容 *2

14) 9012三极管*13

15) 蜂鸣器

16) DC电源插座

17) 自锁开关

18) 导线若干

19) 焊锡若干

USB电源线(电池盒+DC插头)

6 资料清单&&网盘下载链接:

资料下载地址

image-20231031010536344

  • 设计资料获取联系方式.doc

相关推荐

电子产业图谱