APP下载

基于单片机的便携式计时计分电路设计

2023-01-11倪钦如蔡武德

电子制作 2022年22期
关键词:乙队甲队甲乙

倪钦如,蔡武德

(云南师范大学 物理与电子信息学院,云南昆明,650500)

0 引言

计时和计分对一场运动比赛中两队的胜负十分重要,因此设计一款由单片机控制的便携式计时计分系统对运动比赛中裁判员的计时和计分有很大的帮助。由于单片机芯片上集成了大规模特定功能的器件,因此可以采用单片机实现不同电路的设计[1]。本文采用AT89C51单片机作为计时和计分电路的主要控制器件,以实现计时和计分电路的各个操作功能和显示功能。在运动比赛过程中,传统的计时大部分采用电子手表,计分大部分是用翻牌计分,有时也会采用在地上写“正”字来计分,设计一个计时和计分电路可以简化、方便比赛过程中的计时和计分。

1 设计要求

在接通电源后,通过相应按键设定一节比赛所需的时间,最高可以设定的一节比赛时长为99分钟。设定好比赛时长后,按下特定按键,比赛剩余时间就以1s的频率减少。在比赛过程中,甲乙两队任意一队得分,可以通过对应按键进行加分,最高可以加到999分。当一节比赛所规定的时间结束,蜂鸣器就会自动发声,提示比赛结束。一节比赛结束,两队交换场地,可以通过对应按键实现交换两队比分的显示位置的功能。

2 系统硬件设计

2.1 系统框图

图1为系统框图,包含51单片机最小系统,输入和输出三大部分。其中51芯片、复位电路、时钟电路和5V电源共同组成51最小系统[2]。输入电路有比赛时间的设定、比赛时间的启动/暂停和甲乙两队比分的加/减,输出电路有比赛剩余时间的显示、甲乙两队比赛得分的显示和比赛结束的声音提示。

图1 系统框图

2.2 电路原理图

系统电路原理图如图2所示。图中左边是三个四位一体的数码管,其中数码管A用于显示比赛剩余时间,数码管B和C用于显示甲队和乙队比赛得分情况。U1为51芯片、C3和R1为复位电路,C1与C2和X1与U1的XTAL1和XTAL2构成时钟电路。在比赛开始之前,按键ADD1、ADC1、ADD2、ADC2可以实现比赛时间的设定。按键ADD1、ADC1、ADD2、ADC2,在比赛开始前用于比赛时长的设定,在比赛开始后用于两队比分加减的操作。若比赛暂停或重新开始,可按下RUN/STOP。若一节比赛结束,两队交换比赛场地,按下EXCHANGE,可以互换两队比分显示位置。U2为74HC245,用来驱动数码管A、B和C。LS1为比赛结束发发声器。

图2 电路原理图

2.3 比赛时间预值设定与比赛剩余时间的显示

图2 中,数码管A,左起第一二位数码管用来显示比剩余时间的分钟数,第三四位数码管是用来显示比剩余时间的秒数。比赛分钟数和秒数的设定相互独立。在比赛开始之前,通过按键ADD1和ADC1可以完成一节比赛时长分钟数的设定,通过按键ADD2和ADC2可以完成一节比赛时长秒数的设定。其中,按一下ADD1按键可以增加一分钟的比赛时长,按一下ADC1按键可以减少一分钟的比赛时长,分钟数最多可以加到99,最低可以减到00。通过按一下ADD2按键增加一秒的比赛时长,按一下ADC2按键减少一秒的比赛时长,秒数最多可以加到59,最低可以减小到00。

裁判员吹响比赛开始的哨声后,立即按下图2中的RUN/STOP按键,比赛剩余时间就一秒一秒地减少,直至比赛结束计时显示器上显示00.00。

比赛过程中若有突发情况,如有队员受伤、换人等,需暂停比赛。按RUN/STOP键,可实现时间计时暂停。

2.4 比赛得分加减的实现

图2中,数码管B和C分别显示甲队和乙队的比赛得分情况。正常工作状态下,只有右边三位数码管接通电源。比赛得分加一,计分显示器上就显示001,最大值可以达到999,最小可以减小到为000。比赛进行中,按ADD1、ADC1、ADD2、ADC2按键可以完成比分加减。按ADD1按键甲队得分加1;按ADC1按键甲队得分减1;按ADD2按键乙队得分加1;按ADC2按键乙队得分减1。还没开始比赛和比赛结束后都无法对甲乙两队的比赛得分进行加减。

一节比赛结束,甲乙两队要交换场地,甲乙两队的比分显示位置也要相应地交换。上半场比赛中,计时器显示屏上显示00.00时,按下图2中的EXCHANGE按键,比赛时间重置为12.00,甲乙两队的分数显示位置也就自动地交换。上半场的赛程剩余时间显示不是00.00,按下交换甲乙两队显示比分位置的按键,甲乙两队的得分显示位置不会发生变化。

2.5 比赛结束报警

一节比赛剩余时间显示为00.00时,图2中的U1的P1.7口会输出一个低电平,LS1就会发出报警提示音,表示这节比赛结束。

3 系统软件设计

3.1 主函数设计

在Keil uVision5软件中新建工程,在新建的工程下创建各个模块所需的(*.hex)文件。本设计的主函数如下文所示。

void main(void)

{

TMOD=0x11; //定时器0和1的工作方式均为1

TL0=0xb0;

TH0=0x3c; //定时器0初值50ms

TL1=0xb0;

TH1=0x3c; //定时器1初值50ms

minit=12; //分钟初始值12

second=0; //秒钟初始值0

EA=1; //打开中断系统总开关

ET0=1; //打开定时器T0中断允许

ET1=1; //打开定时器T1中断允许

TR0=0; //关闭定时器T0中断开关

TR1=0; //关闭定时器T1中断开关

P1=0xFF; //所有I/O口默认高电平

P3=0xFF;

while(1) //进入while循环

{

keyscan(); //扫描按键函数

display(); //扫描显示函数

} }

3.2 计时显示模块

计时显示模块流程图如图3所示。在比赛开始之前,通过按键来控制比赛时间的设定。设定好一节比赛的时长,按下对应按键,比赛开始,赛程时间开始倒计时。若一节比赛时间到了,蜂鸣器就报警提示比赛结束,若比赛时间未结束,继续显示比赛时间。

图3 计时显示模块流程图

3.3 计分显示模块

计分显示模块流程图如图4所示。在比赛过程中,对应按键可以操控甲乙两队比赛得分的加/减。比赛开始后,若甲、乙两队任意一队得分,即可按下加分按键进行加分,随后甲乙两队的得分显示屏上就相应地显示甲队和乙队的比赛得分情况。

图4 计分显示模块流程图

4 系统仿真与电路制作

4.1 系统仿真

首先,用Proteus仿真软件画出计时计分器的电路原理图;第二,将生成的“*.hex”文件载入到51芯片中;第三,运行仿真操作,仿真结果如图5所示。

图5 仿真图

4.2 系统实物图

当仿真调试结束,可进行电路制作。制作完成的实际电路如图6~9所示。图6为一节比赛的时长是12分钟,计时计分器上显示1200。图7为比赛时间剩余是9分钟50秒时,甲队得分5分,乙队得分3分。图8为一节比赛结束,蜂鸣器自动发声,甲队得分12分,乙队得分8分。若继续下一节比赛,要交换甲乙两队比赛得分的显示位置,按下EXCHANGE按键,甲队的得分12就交换到右边的计分显示器上,乙队的得分8就交换在左边的计分显示器上,且比赛时间重置为12.00,如图9所示。

图6 比赛时间预设12分钟

图7 甲队5分,乙队3分

图8 甲队12分,乙队8分

图9 交换比分

5 结束语

经过调试,本设计的仿真与电路制作已经达到设计要求。它能模拟比赛过程中的计时和计分,符合各类运动比赛计时和计分的规则。因数码管尺寸较小,可见范围有限,无法直接在比赛中使用。但只要将数码管的尺寸加大,即可满足实际比赛计时和计分的需要。

猜你喜欢

乙队甲队甲乙
用分式方程解决工程问题
下一个字母
是甲队的吗
一类应用题的由繁到简的解法
减肥
把球灌进自家篮筐
两对老伴上大学
有趣的“换钱”游戏
甲乙推理