基于51单片机的篮球赛计时计分器(仿真+源程序+原理图+PCB+论文)

资料编号:207

功能介绍(全套毕设资料齐全)

采用51单片机一种篮球赛计时计分器的设计方法,即单片机带外围扩展来驱动数码管工作的电路。电路采用单片机作为核心元件,利用两个供阴的三位一体数码管来显示两队的分数,一个四位一体数码管显示时间的计时。显示分数范围可达0~999分,足够赛程计分的需要。四位一体数码管中2个用于显示分钟,2个用于显示秒钟。

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

一、设计要求:

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秒。

程序中文注释,新手容易看懂,下面是程序部分展示:

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;

//-------------秒点闪动------------

下面是资料分享下载链接:

https://pan.baidu.com/s/1vKRyhL8hgEUEReuvXntMEg?pwd=ry18

  • 18
    点赞
  • 104
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值