基于单片机的篮球比赛计分器设计毕业论文 下载本文

内容发布更新时间 : 2024/11/8 9:48:46星期一 下面是文章的全部内容请认真阅读。

基于单片机的篮球比赛计分器设计

本次实验仿真设计运用的是AT89C51单片机,P1和P3口用作按键的设计,P1.3定义为按键1,P1.4定义为按键2,按键1和按键2定义为客队加分按键和客队减分按键。P1.6定义为按键三,按键三为主队加分键。P1.7定义为按键4,按键4则是主队减分按键,即按下按键4,主队比分减一分。P3.1定义为按键5,按键5是修改时间比分的加分键,也就是按下按键5比赛时间加一分。P3.2定义为按键6,按键6是修改时间的减分键,操作方式和按键5一样。P3.5定义为按键7,按键7是24秒清零键,当开关断开时,24秒倒计时,在24秒内若没投进球则计时为零时,蜂鸣器发声,提示投球已过24秒,开关闭合时,此功能不起作用。P3.3为按键8,作为比赛的开始按钮。P3.4为按键9,作为暂停按钮。P1.2来接蜂鸣器作为比赛时间提醒的工具。

P0端口作为LCD显示器的显示接口,由图4-4可以看出在P0端口处还加入了一个10K的排阻,是因为P0端口本身不含有内部上拉电阻,目的是使输出的更稳定,而且传输的距离更远,可以用来消减线路传输时对信号的损耗;也起到了一个限流的作用。

由LCD显示屏上的显示图形可以看出“MIA”表示的是客队,“LAL”表示的是主队。“MIA”后面的“000”表示的是客队的分数,而“LAL”后面的“000”表示的是主队的分数。“1ST”表示的是比赛的第一小节,“24”表示的是24秒报警电路。“12:00”表示的是每一小节比赛的时间。

4.3.1 时间显示

具有12分钟倒计时功能,电路开始工作,如图所示4-5所示。

图4-5 电路开始启动

26

基于单片机的篮球比赛计分器设计

本次设计中我们在编写的程序里把时间初始值设置成12:00,由4-5

可以看出,时间显示在右下角。在仿真开始后时间开始倒计时,也就意味着比赛正式开始。

时间的显示主要程序如下: lcdcom(0x80+0x4a); lcddata(tab[fen/10]); lcddata(tab[fen]); lcddata(':');

lcddata(tab[miao/10]); lcddata(tab[miao]);

在比赛开始前,我们可以自行对比赛时间进行设定,按下时间的加减按键,即可修改时间,但在比赛开始之后,比赛时间不可修改,如图4-6、4-7所示。

//时间.秒

//时间.分钟

图4-6比赛时间上调

图4-7比赛时间下调

27

基于单片机的篮球比赛计分器设计

4.3.2 分数显示

客主两队的分数分别在LCD显示器的左上方和左下方,前面设置的字母为自己在程序里自定义的两队队名,可根据需求进行修改。紧接着显示的是分数,每队可以计分的范围为0~999分,并可根据实际情况修改比分,如图4-8所示。

图4-8客队得分

由上图可以看出在11分08秒时,客主两队的比分为6:0,即客队暂时领先。

在比赛过程中若发现主队的分数记录错误,则可按下客队减一分键来更改客队的分数,如图4-9所示。

图4-9客队得分

上图为更改客队的分数,可与图4-8进行对比。

比赛一段时间候,主客两队的得分进行刷新,即两队的比分为4:1,

如图4-10所示。

28

基于单片机的篮球比赛计分器设计

图4-10 主队得分

比分显示的主要程序:

//主队分数

void xianshi() { lcdcom(ad1); lcddata('M'); lcddata('I');

lcddata('A');lcddata(' '); lcddata(tab[zhudui/100]); lcddata(tab[zhudui/10]); lcddata(tab[zhudui0]); lcdcom(ad2); lcddata('L'); lcddata('A');

lcddata('L');lcddata(' '); lcddata(tab[kedui/100]); lcddata(tab[kedui/10]); lcddata(tab[kedui0]);}

//客队分数

4.3.3 倒计时功能

为了让参赛选手了解比赛进行的时间,在最后10时设计了提醒功能,及在程序里设计了10秒倒计时,当比赛进入到数十秒时蜂鸣器开始发声,如图4-11所示。

29

基于单片机的篮球比赛计分器设计

图4-11 倒计时开始电路

由图4-10可以看出电路图中P1.2口接的是蜂鸣器,当时间00:10时,由仿真图可以看出蜂鸣器导通,即可进行提示,客主两队的比分为16:9,也意味着上半场比赛结束。 倒计时主要程序: { beep=1; delay(5000); beep=0; } else { beep=1; delay(2000); beep=0; }

if(jie>4)

//比赛时间到

4.3.4 24秒报警电路

由图可以看出在LCD右上角设置了24秒倒计时,规则是:在篮球

30