基于单片机的篮球赛计时计分器.docx
《基于单片机的篮球赛计时计分器.docx》由会员分享,可在线阅读,更多相关《基于单片机的篮球赛计时计分器.docx(46页珍藏版)》请在冰豆网上搜索。
基于单片机的篮球赛计时计分器
编号
毕业实践报告
题目基于单片机的篮球赛计时计分器设计
学生姓名姜韬
学号07110414
专业通信技术
班级071104
指导教师刘佳
2010年5月
第二章设计的总体方案...............................................6
2.2器件选择........................................................6
2.3基本功能介绍....................................................7
2.3.2赛程时间启动/停止设置.......................................7
2.3.3比分交换控制................................................7
2.3.4比分刷新控制................................................7
2.3.524s显示控制................................................7
2.3.6计时计分显示................................................8
2.3.7计时结束后报警.............................................8
第三章硬件部分设计...............................................9
3.2计时电路设计...................................................9
3.2.1显示器及其接口..............................................9
3.2.2定时器/计数器..............................................15
3.2.3报警电路...................................................18
3.2.4计时电路...................................................19
3.3计分电路设计.................................................19
3.3.1串行接口..................................................19
3.3.2比分校正控制电路.........................................23
3.3.3计分电路..................................................23
3.4计时计分器的工作过程..........................................24
第四章系统的软件设计…………………………………………………………26
4.1主程序.......................................................27
4.1.1主程序流程图.............................................27
4.1.2主程序...................................................28
4.2中断程序设计.................................................32
第五章系统调试..................................................34
结束语...........................................................35
致谢………………………………………………………………………………36
参考文献……………………………………………………………………………37
附录…………………………………………………………………………………38
基于单片机的篮球赛计时计分器设计
摘要
随着单片机在各个领域的广泛应用,许多用单片机作控制的球赛计时计分器也应运产生,如用单片机控制LCD液晶显示器的计时计分器,用单片机控制LED七段显示器的计时计分器等等。
本设计的篮球赛计时计分器以AT89C51单片机为核心元件,利用它内部的计数器T0完成比赛的计时,通过7段共阴LED来显示比分和时间。
计时部分采用CD4511(七段BCD码译码器)进行硬件译码;计分部分采用CD4094(8位移位存贮总线寄存器)进行串行口扩展显示器接口,并利用74LS21(双四输入与门)来实现比分的刷新功能。
报警部分采用蜂鸣器为音响器件。
该计时计分器具有以下功能:
1、计时:
赛程时间设置、赛程时间启/停设置、24s倒计时控制;2、计分:
比分刷新控制;3、报警。
且价格低廉、操作简单、携带方便,适合与学校和小团体作为赛程计时计分工具。
关键词:
篮球;AT89C51;计时计分器
第一章绪论
1.1引言
体育比赛计时计分器是对体育比赛过程中所产生的时间、比分等数据进行快速采集记录、加工处理、传递利用的工具。
根据不同运动项目的不同比赛规则要求,体育比赛计时计分器包括测量类、评分类、命中类、制胜类、得分类等多种类型。
篮球比赛是根据运动队在规定比赛时间里得分多少来决定胜负的。
因此,篮球比赛的计时计分器是一种得分类型的工具。
篮球比赛的计时计分器由计时器、计分器等多种电子设备组成。
单片机是微型计算机发展的一个重要分支,它以其独特的结构和性能,越来越普遍地应用到国民经济建设的各个领域,而且采用AT89S51单片机设计,能使仪表向数字化、智能化、多功能化、柔性化方向发展,使监测、处理、控制等功能一体化,重量大大减轻,便于携带和使用,具有很高的性价比。
本设计是一种由AT89C51编程控制LED七段数码显示管作显示的篮球赛计时计分器。
它不仅可以很好地实现开启、暂停、复位等功能,同时还具有24s显示的功能。
具有价格低廉、性能稳定、操作方便且易携带等特点。
广泛适用于各类学校和小团体作为比赛计时计分工具使用。
1.2选题的背景和意义
篮球比赛在中国越来越被人们关注,同时也被更多青少年所喜爱。
本设计除了具有赛程时间计时、调整及暂停和比赛计分的功能,还具有24s倒计时的功能。
且价格低廉、操作方便且便于携带,适合于学校和小团体作为赛程计时计分工具。
从另一方面说,本设计方便了人们比赛时的计时计分工作,在某种程度上也促进了篮球赛的开展,既有利于发展篮球这项体育运动,又有利于增强人们的体质。
另外参与篮球运动的人多了,也利于篮球运动员的选拔,对我国的篮球事业也具有促进作用。
此外,该计时计分器经过少许修改,即去掉24s计时功能后,同样也适用于其他球类比赛的计时。
第二章设计的总体方案
2.1系统构成框图
基于单片机的篮球比赛计时计分器的系统构成框图如图1所示。
图1篮球比赛计时计分器系统构成框图
本系统采用AT89C51作为设计的核心原件。
利用七段共阴LED数码管作为显示器件。
其中,计分电路中共接入6个7段共阴LED显示器用于记录参赛两队的分数,每对3个LED显示器,显示范围可达0~999分。
比分是通过按键来人工控制加分,为了避免人工操作时失误错加分,故增加了两个用于减分的按键。
比分显示时采用静态显示,即6个LED显示器在同一瞬间可以显示不同的字符。
计时电路中共接6个LED显示器。
其中4个用于记录赛程时间,即2个用于显示分钟,2个用于显示秒钟。
赛程时间采用倒计时方式,即比赛前将时间设置好,比赛开始时启动计时,直至计时到零为止,比赛暂停时停止计时,比赛重新开始时计时继续,计时范围可达0~99分钟。
另外2个LED显示器用于24s计时,即采用倒计时,比赛开始启动计时,计时到零或控球发生改变时重新计时开始由24s倒计时,如此循环,直至比赛结束。
当有暂停同样停止计时,重新开始时继续计时。
其次,为了配合计时器和计分器的校正、调整时间和比分,设计中接入了8个按键。
其中四个用于输入参赛两对的分数;另外四个用于完成设置、调整、启动、暂停、交换和24s重新计时功能。
此外,系统中还有一个按键,用于手动复位。
再次,本设计中还设计的定时报警系统,即赛程时间结束或24s结束时,立即通过蜂鸣器发出警报声提示。
2.2器件选择
本设计中主要选取了以下器件:
●单片机:
AT89C51
●七段BCD译码器:
CD4511
●并行/串行转换芯片:
CD4094
●四输入与门:
74LS21
●显示器件:
7段共阴LED显示器
●按键:
欧姆龙按键
2.3基本功能介绍
2.3.1赛程时间设置
●通过按键S5、S6来设置赛程时间。
篮球比赛的一节时间为12分钟,通过按S5按键,是LED显示器1显示“1”即可。
在按S6按键,设置比赛时间的个位数,即使LED显示器2显示“2”。
●当比赛结束是,如果由于一些特殊原因要增加比赛时间,这时比赛时间的调整同样由S5、S6按键来设置,且方法和上面一样。
但一般情况下只需按下S6设置即可。
因为加赛时间通常只有几分钟。
2.3.2赛程时间启动/停止设置
●当时间设置好之后,比如每节时间为12分钟,则LED显示器1~4上分别显示1200,12表示分钟,00表示秒钟。
这时,如果裁判吹响开始哨声,则立即按下S7按键,即比赛开始,计时显示由1200变成1159,1158,1157……一直到0000时为止,即表示比赛结束。
●在比赛过程中,遇到换人、暂停等时按下S7按键时间停止计时,显示器上的数值保持不变。
当比赛继续进行时,应立即按下S7按键,继续进行计时。
2.3.3比分交换控制
比分交换也由S7按键控制完成。
我们知道,因为比分交换是在每节比赛结束后进行的,也就是说比分交换受赛程时间控制,只有当一节比赛结束,即计时器显示0000时,按S7按键才会自动交换两队的比分。
如果一节比赛没有结束,则按下S7按键只会暂停比赛,不能交换比分。
因此,S7按键由三重功能,即:
启动、暂停和交换比分。
2.3.4比分刷新控制
由于在比赛中,两队的比分时不断变化,所以需要设置比分刷新控制装置。
该功能由按键S1~S4完成:
S1按键:
甲队比分加1
S2按键:
甲队比分减1
S3按键:
乙队比分加1
S4按键:
乙队比分减1
2.3.524s显示控制
24s值在程序中设置,由LED显示器5~6显示,即LED显示器5~6显示24。
比赛开始时按下S7按键24s随赛程时间一起计时,即计时显示由24变成23、22、21
……直到00。
然后在由24s开始重新计时。
比赛过程中,当进攻的一方改变时,应立即按下S8按键,即使24s重新计时。
2.3.6计时计分显示
计时计分显示器是采用七段共阴LED显示器显示。
其中计分个六个LED显示器,赛程时间四个LED,24s两个LED显示器。
显示器显示格式分别为:
000000和0000以及00。
2.3.7计时结束后报警
当赛程时间或24s计时结束是,系统会自动发出10s报警声提示。
第三章硬件部分设计
硬件部分的设计是整个设计中的一个重要部分。
在进行硬件部分设计时,首先要确定元器件,并且知道这些器件的工作原理和功能。
然后才可以进行设计。
本设计的硬件电路包含两部分:
计时电路、计分电路。
硬件部分的设计除了硬件电路的设计,还包括SCH和PCB图的绘制。
由于本次设计我主要负责的是软件部分的设计,硬件参与的不多,所以硬件部分有些功能就一带而过,在这里就不详细介绍了。
3.1AT89C51单片机
本设计采用AT89C51单片机为核心元件。
AT89C51是一个低电压,高性能CMOS8位单片机,它有4K字节的可反复擦写的只读存储器(PENROM—FalshProgrammableandErasableReadOnlyMemory)和128字节的存取数据存储器(RAM),这种器件采用ATMEL公司的高密度、不容易丢失存储技术生产,并且能够与MCS-51系列的单片机兼容。
片内含有8位中央处理器和闪烁存储单元。
3.1.1AT89C51功能特性
AT89C51采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令和引脚相兼容。
目前许多嵌入控制系统使用了这种芯片。
它的主要性能特点如下:
与MCS-51兼容
4K字节可编程闪烁存储器
寿命:
1000写/擦循环
数据保留时间:
10年
全静态工作:
0Hz-24Hz
128B8位内部RAM
三级程序存储器锁定
5个中断源
两个16位定时器/计数器
32可编程I/O线
可编程串行通道
低功耗的闲置和掉电模式
3.2计时电路设计
3.2.1显示器及其接口
显示器是最常用的输出设备,其种类繁多,但是在单片机系统设计中常用的是发光二极管显示器(LED)和液晶显示器(LCD)两种。
由于这两种显示器结构简单,价格便宜,接口容易实现,因而得到了广泛的应用。
1、LED结构和原理
LED显示器又称为数码管,它主要由八段发光二极管组成,如图2(a)所示
图2(a)中,a~g为数字或字符显示段,h段位小数点段(本设计采用的是七段数码管,即没有h段)。
通过a~g为7个发光二极管的不同组合,可以显示0~9和A~F共16个数字和字母。
例如,当a、b、g、e、d段亮时,显示数字“2”,当a、f、e、g段亮时,则显示字母“F”。
LED可以分为共阴极和共阳极两种结构,如图2(b)和(c)所示其中图(b)为共阴极结构。
即把8个发光二极管阴极连在一起。
这时如果需要点亮a~g中的任何一盏灯,则只需要在相应端输入高电平即可;输入低电平则静止。
比如我们现在要显示数字“3”’则只要在对应的a、b、c、d、g段送入高电平,在其他段送入低电平即可,点亮为“3”。
图(c)则是共阳极结构。
其显示端输入低电平有效,高电平截止。
表1列出了共阴极和共阳极LED显示器显示数字、字母与显示代码之间的对应关系。
表1显示器显示数字、字母与显示代码之间的对应关系
显示字符
共阴极段码
共阳极段码
显示字符
共阴极段码
共阳极段码
0
3FH
C0
9
6FH
90H
1
06H
F9
A
77H
88H
2
5BH
A4
B
7CH
83H
3
4FH
B0
C
39H
C6H
4
66H
99H
D
5EH
A1H
5
6DH
92H
E
79H
86H
6
7DH
82H
F
71H
8EH
7
07H
F8
P
73H
8CH
8
7FH
80H
“灭”
00H
FFH
2、LED显示器显示方式
点亮LED显示器有两种方式:
一是静态显示;二是动态显示。
(本设计采用静态显示。
)
所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定地导通或截止。
4位静态LED显示电路每位可以单独显示。
只要在显示的那位的段上保持段选码电平,该位就能保持显示相应的字符。
这种电路的优点是:
在同一瞬间可以显示不同的字符,但是缺点就是占用端口资源较多。
每位LED显示器需要单独占用8根端口线。
因此,在数据较多的时候往往不采用此设计,而是采用动态显示方式。
所谓动态显示,就是将要显示的多位LED显示器采用一个8位的段选端口,然后采用动态扫描方式一位一位地轮流点亮各位显示器。
在此电路中,单片机P1口用于控制4位LED的段选码;P2口的P2.0~P2.3用于控制4位LED位选码。
由于所有段选码连在一起,所以同一瞬间只能显示同一种字符。
但是要显示不同字符,则要借助位选口来控制。
(如果LED为共阴则P2.0~P2.3输出高电平,为共阳则P2.0~P2.3输出为低电平。
)例如,现在要显示“1234”四个数字,则首先应该将“1”的显示代码(共阴LED显示代码为6DH,共阳LED显示代码为92H)由P1.0送出。
然后P2.0~P2.3输出相应位码(共阴LED时P2.0~P2.3输出1000,共阳LED时P2.0~P2.3输出0111)时,则可以看到第一个数码管(从左起)上显示“1”。
再将显示的数字“1”
延时5~10ms,以造成视觉暂留效果;同时代码由P1.0送出。
用同样的方法将其余3个数字显示“234”送数码管2、3、4显示,最后则可以在4位LED上看到“1234”四个数字。
为了使显示效果稳定,可以使每个数码管实现的数字不断重复,当重复频率达到一定程度时,加之人眼的“留光”效应,便可以看到稳定的“1234”四个数字。
3、LED显示器接口实例
由LED显示器的结构及其工作原理可知,要想在LED上显示数据或字母,则首先要把待显示的数据或字母转换成LED的七位显示代码,这样才可以显示相应的数据或字母。
通过实现这种转换的方法由两种:
一、专用硬件译码器;二、软件译码器。
(本设计采用硬件译码器CD4511实现。
)
一、硬件译码显示接口
即采用专用带驱动器的LED段译码器,如CD4511,MC14495,74LS164等。
1 BCD七段十进制译码器显示接口:
在本设计中,由于只要求LED显示器显示0~9十个数字,因此我选用了CD4511为LED显示器的译码芯片,图3.2.4所示为CD4511引脚分布图。
CD4511——BCD锁存/七段译码/驱动,是常用的七段BCD码译码器,它可以实现对BCD码的译码,但不对大于9的二进制数译码。
其中,A~D为BCD码输入端;a~g是7段码输出端;
为试灯脚;
为消隐(灭灯);
和
接高电平(电源);LE端为选通脚,接低电平有效。
当
=0时LED数码管显示全亮笔端“8”,可以检查数码管质量好坏,有无笔端残缺现象。
显示数“6”时,a=“0”;显示数“9”时,d=“0”。
当
=0时强迫显示器消隐;当LE=0时选通,LE=1时锁存。
使用时,只要将CD4511的输入端与微机系统的输出端口的某4个数据位相连,而CD4511的输出直接与LED的a~g相连,便可实现对BCD的显示。
图4所示为对1位BCD码的显示。
表2为CD4511的逻辑功能表。
输入
输出
显示数字
DCBA
abcdefg
×
×
0
××××
1111111
B
×
0
1
××××
0000000
0
1
1
0000
1111110
0
0
1
1
0001
0110000
1
0
1
1
0010
1101101
2
0
1
1
0011
1111001
3
0
1
1
0100
0110011
4
0
1
1
0101
1011011
5
0
1
1
0110
0011111
6
0
1
1
0111
1110000
7
0
1
1
1000
1111111
8
0
1
1
1001
1110011
9
0
1
1
1010
0000000
0
1
1
1011
0000000
0
1
1
1100
0000000
0
1
1
1101
0000000
0
1
1
1110
0000000
0
1
1
1111
0000000
0
1
1
××××
×××××××
×
2
表2CD4511的逻辑功能表
BCD七段十六进制译码器显示接口:
如果手边找不到CD4511译码芯片,还可以用BCD七段十六进制译码驱动芯片MC14495代替。
MC14495为Motorola公司生产的CMOSBCD七段十六进制译码驱动芯片,它具有锁存、译码驱动等功能。
它与CD4511主要区别是:
它能对大于9的二进制数译码。
即它可以用字母A,B,C,D,E,F来显示二进制数10,11,12,13,14,15,同时还有译码器输入大于等于10时的指示段(h+1)。
当输入数据大于等于10时,h+1端输出“1”电平。
另外,还有输入数据15时,电路输出端VCR为0电平(其他输入状态时为高阻)的功能。
电路内部还有一个290的限流电阻。
LE为选通端,电路中的锁存器在LE=0时输入数据,在LE=1时锁存数据。
MC14495引脚图如图5所示。
表3为MC14495的真值表。
从表中可以看出,当数据大于等于10时,h+1端输高电平。
表3MC14495的真值表
输入
输出
显示字符
DCBA
abcdefgh+1
0000
11111100
0
0001
01100000
1
0010
11011010
2
0011
11110010
3
0100
01100110
4
0101
10110110
5
0110
00111110
6
0111
11100000
7
1000
11111110
8
1001
11110110
9
1010
11101111
A
1011
00111111
B
1100
10011101
C
1101
01111011
D
1110
10011111
E
1111
10001111
F
二、软件译码
如图6所示,这种电路在软件设计时,在数据段定义0~9十个数字。
在程序中利用查表指令MOVC指令进行软件译码。
现假设用共阴极LED来显示数据,则可以用以下一段程序实现0~9十个数字的显示。
sbitP1_0=0x90;
sbitP1_1=0x91;
sbitP1_2=0x92;
sbitP1_3=0x93;
sbitP1_4=0x94;
sbitP1_5=0x95;
sbitP1_6=0x96;
sbitP1_7=0x97;
3.2.2定时器/计数器
定时器/计数器是AT89C51单片机中的主要模块之一。
AT89C51单片机内部有两个16位定时器/计数器,分别是定时器/计数器0(T0)和定时器/计数器1(T1)。
(本设计中的计时就是用定时器T0计时的。
)
1、定时器/计数器一般结构和工作原理
定时器由一个N位计数器、计数时钟源控制电路、状