内容发布更新时间 : 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