基于单片机的球类比赛计时计分系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于单片机的球类比赛计时计分系统
毕业论文
基于单片机的球类比赛计时计分系统设计
摘要:单片机广泛应用在电子领域的各个方面,因此想到要把单片机应用在球类比赛当中去,球类比赛主要包括计时和计分两大块,这样就可以应用单片机来控制七段数码管LED来实现这种功能,达到预期的效果。
本此计时计分系统的设计主要是篮球比赛为例,然后可以拓展到其他球类比赛的各个方面,篮球比赛的计时计分系统主要是以AT89C51单片机为核心元件,利用它内部的计数器T0,通过软件编程来完成比赛的计时,硬件部分除了AT89C51之外,还有7段LED数码管和开关,通过程序控制后显示比分和时间。
报警部分采用蜂鸣器为音响器件。
该计时计分器具有以下功能:1、计时:赛程时间启/停设置、24s倒计时控制;2、计分:比分加减控制,调整两队的比分;3、报警。
且价格低廉、操作简单、携带方便,适合学校单位举办友谊比赛等赛事的计时计分辅助工具。
关键词:篮球AT89C51 计时计分系统
中图分类号:TN
Based on SCM ball games timing scoring system design Abstract:widely used in the electronic field
microcontroller, therefore all aspects of the thought of putting SCM in ball games, ball games among mainly includes timing and scoring two
bulks, so it can be used a singleship controlling seven segment digital tube LED to implement this function, achieve the desired effect.
The timing of the scoring system is designed as an example, then basketball game could expand to other ball games each aspect, the game of basketball timing scoring system is mainly by
AT89C51 components, use it internal counter T0, through software programming to complete game timing, hardware part besides AT89C51 seven sections, but also LED digital tube and switch, through the program control time and that the score. Alarm part adopts for audio devices. Buzzer The timing JiFenQi has the following functions: 1, timing: schedule time rev/stop setting, 24s countdown control; 2, scoring: score to add and subtract control, adjustment two teams score; 3, call the police. And the price is cheap, simple operation, easy to carry, suitable for school held a sports event friendship match unit of auxiliary tool clock scoring.
Keywords:basketball AT89C51 Timing scoring system Subdivisision classified number:TN
目录
1.绪论 (3)
1.1引言 (3)
1.2选题的背景及意义 (3)
2.设计的总体方案 (4)
2.1系统构成框图 (4)
2.2器件选择 (5)
2.3基本功能介绍 (5)
2.3.1 比赛时间设置 (5)
2.3.2 赛程时间开始/暂停设置 (5)
2.3.3比分手动控制刷新 (5)
2.3.4 24s显示控制 (6)
2.3.5 计时计分的显示方法 (6)
2.3.6 计时结束后自动报警 (6)
3.硬件部分设计 (6)
3.1AT89C51单片机 (6)
3.1.1 AT89C51功能特性 (6)
3.2计时电路设计 (7)
3.2.1 LED显示器 (7)
3.2.2 报警电路 (9)
3.2.3 计时电路 (9)
3.3计分电路设计 (10)
3.4计时计分系统的工作过程 (10)
4.系统的软件设计 (11)
4.1主程序 (12)
4.1.1主程序的流程图 (12)
4.1.2 主程序 (14)
5.系统调试 (14)
6.结束语 (15)
致谢 (16)
参考文献 (17)
1.绪论
1.1 引言
球类比赛计时计分系统是辅助比赛的工具。
球类比赛分为篮球,足球,排球,乒乓球等许多种类,不同球类比赛规则要求各不相同,例如足球比赛要求比赛时间为九十分钟,其中还包括伤停补时时间,乒乓球比赛为十一球制等。
篮球比赛根据美国男篮职业联赛(NBA)的规定,则是采取四节制,每节十二分钟,比赛结束后两队比分相同时,需要进行加时赛,在加时比赛中,每节比赛则是五分钟,直到分出胜负为止。
篮球比赛的计时计分系统由51单片机,计时七段LED数码管、计分七段LED数码管,开关等设备组成。
本计时计分系统设计不仅可以实现开始、暂停等功能,同时还具有24s显示的功能。
且价格低廉、操作简单、携带方便,适合学校单位举办友谊比赛等赛事的计时计分辅助工具。
1.2 选题的背景及意义
随着姚明,易建联等球星成功的加入NBA后,篮球比赛在中国越来越被人们关注,同时在学校单位等也受到欢迎,更被绝大多数青少年所喜爱。
本设计除了具有赛程时间计时、时间调整及暂停和比赛计分的功能,还具有24s进攻的功能。
且价格低廉、操作简单、携带方便,适合学校单位举办友谊比赛等赛事的计时计分辅助工具。
从另一方面说,本设计方便了记录人员比赛时的计时计分工作,在某种程度上也促进了篮球比赛在大众人群的普及,这样既有利于发展篮球运动,又有利于增强人们的体质。
另外这样能使比赛更趋向于公平化、正规化,减少了比赛中由比赛记录出错产生的摩擦和不愉快的事情的发生,提高了比赛的友谊性、娱乐性。
此外,该计时计分系统经过少许修改,即去掉24s计时功能后,同样也适
用于其他球类比赛的计时计分。
2.设计的总体方案
2.1 系统构成框图
本计时计分系统的构成框图如图1所示。
图1 篮球比赛计时计分系统的构成框图本系统是用AT89C51设计的,起到核心的作用。
显示器件是利用七段共阴LED数码管实现。
其中,计分电路系统中共接入6个7段共阴LED数码管用于记录参赛甲乙两队的分数,每对3个LED数码管,一般的篮球比赛的比分范围是0~150分的范围之间,这3对LED数码管的显示范围可达0~999分,满足比分的要求。
比分是通过按键来手动控制加分,为了避免手动操作时失误错加分,因此增加了两个用于减分的按键。
比分显示是采用静态显示,换言之,6个LED 数码管在同一瞬间可以显示不同的字符。
计时电路系统中共接6个LED数码管。
其中4个用于记录每节比赛的赛程时间,2个用于显示分钟,2个用于显示秒钟,中间用小数点隔开。
比赛时间采用倒计时方式,即比赛前将时间设置好,通过按键暂停,比赛开始时按下按键,开始倒计时,直至计时到零为止,比赛
暂停时停止计时,比赛重新开始时继续计时,计时范围可达到0~99分钟,满足计时上限12分钟。
另外2个LED数码管用于24s计时,同样采用倒计时,比赛开始通过按键启动计时,计时到零或进攻方出手投篮或被抢断则重新开始由24s倒计时,如此循环,直至比赛结束。
当有暂停同样停止计时,重新开始时继续计时。
其次,为了满足计时系统和计分系统的要求,设计中接入了6个按键。
其中四个用于输入参赛甲乙两队的分数;另外两个用于完成启动、暂停和24s重新计时功能。
再次,本设计中还设计了计时报警器,当比赛时间结束或24s结束时,立即通过蜂鸣器发出警报声提示。
2.2 器件选择
本设计中主要选取了三种器件:
●单片机:AT89C51
●显示器件:共阴极LED数码管
●按键:欧姆龙按键
2.3 基本功能介绍
2.3.1 比赛时间设置
●通过按键暂停键、24秒复位键来设置比赛时间。
●当比赛结束时,如果两队比分相同要进行加时赛是,这时比赛时间
的调整同样由暂停键、24秒复位键来设置。
2.3.2 赛程时间开始/暂停设置
●当时间设置好以后,例如每节时间为12分钟,那么LED数码管1~4
上分别显示1200,12表示分钟,00表示秒钟。
这时,在裁判吹响开始哨声前,则立即按下暂停键,当比赛开始时,再次按下暂停键,这时计时开始,计时显示由1200变成1159,1158,1157……一直到0000时为止,即表示这节的比赛结束。
●在比赛过程中,遇到换人、暂停等时仍然通过暂停键来控制时间停
止计时,数码管上的数值保持不变。
当比赛继续进行时,应立即按下暂停键,继续进行计时。
2.3.3比分手动控制刷新
由于在比赛中,两队的比分不断变化,所以需要设置比分手动控制装置。
该功能由按键甲队加分,甲队减分,乙队加分,乙队减分完成:甲队加分:甲队比分加1
甲队减分:甲队比分减1
乙队加分:乙队比分加1
乙队减分:乙队比分减1
2.3.4 24s显示控制
24s值在程序中设置,由LED数码管5~6显示,即LE数码管5~6显示24。
比赛开始时按下暂停键,24s随比赛时间一起计时,即计时显示由24变成23、22、21……直到00。
然后再从24s开始重新计时。
比赛过程中,当进攻的一方改变,应立即24秒复位键,使24s重新计时。
2.3.5 计时计分的显示方法
计时计分系统是采用七段共阴LED数码管显示。
其中计分的六个LED数码管,赛程时间四个LED数码管,24s两个LED数码管。
显示器显示格式分别为:000 000和0000以及00。
2.3.6 计时结束后自动报警
当比赛时间或24s计时结束时,系统会自动发出3s报警声提示。
3.硬件部分设计
在进行硬件部分设计时,首先要确定元器件,并且知道这些器件的实现功能。
然后才能进行设计。
本设计的硬件电路是LED显示电路。
硬件部分的设计除了硬件电路的设计,还包括PCB图的绘制。
3.1 AT89C51单片机
本系统是用AT89C51设计的,起到核心的作用。
AT89C51是高性能CMOS8位单片机,它有4K字节的可反复擦写的只读存储器(PENROM—Falsh Programmable and Erasable Read Only Memory)和128字节的存取数据存储器(RAM)。
3.1.1 AT89C51功能特性
目前许多嵌入控制系统使用了这种芯片。
它的主要性能特点如下:
与MCS-51 兼容
寿命:1000写/擦循环
数据保留时间:10年
全静态工作:0Hz-24Hz
128B8位内部RAM
三级程序存储器锁定
5个中断源
可编程串行通道
低功耗的闲置和掉电模式
3.2 计时电路设计
3.2.1 LED显示器
一、LED结构和原理
LED数码管组成结构如图2(a)所示
图2(a)中,a~g为数字或字符显示段,h段位小数点段。
通过a~g为7个发光二极管的不同组合,可以显示0~9和A~F共16个数字和字母。
例如, a、b、c段亮,显示数字“7”, c、f、e、d段亮,则显示字母“b”。
LED可以分为两种结构,分别是共阴极和共阳极,如图2(b)和(c)所示,其中图(b)为共阴极结构。
即把8个发光二极管的阴极连在一起接地。
当a~g输入端为高电平时,则能够点亮a~g中相应的发光二极管,输入低电平则静止。
比如我们现在要显示数字“2”,则对应的a、b、g、d、e段一定要送入高电平,除此之外的段送入低电平,点亮为“2”。
图(c)则是共阳极结构。
其显示端输入低电平时点亮,输入高电平时截止。
(a)引脚分布(b)共阴LED (c)共阳LED
图2八段LED图
表1列出了共阴极和共阳极LED数码管的两种显示0~9、a~f与显示代码之间的对应关系,即共阴极显示和共阳极显示。
表1 显示器显示数字、字母与显示代码之间的对应关系表
显示字符
共
阴极段
码
共
阳极段
码
显
示字符
共
阴极段
码
共
阳极段
码
0 3F
H C0 9 6F
H
90
H
1 06F9 A 7788
2、 LED数码管显示方式
点亮LED数码管有两种方式:一种是静态显示;另一种是动态显示。
(本设计采用静态显示。
)
所谓静态显示,就是当片选端有效后,相应的数码管开始工作,当显示器显示
某一字符时,通过程序控制51单片机的接口,将数据送到相应的数码管的数据接口,这时相应的发光二极管恒定地导通或截止,显示出设置的数字或字母。
这样每个LED 数码管可以单独显示。
这种电路的优点是:在同一时间段时可以显示不同的字符,且无闪烁。
缺点是比较浪费端口资源。
因此,在数据较多的时候一般不采用此设计,而是采用动态显示。
51单片机共有40个端口,可以用来做为编程的端口有P1口,P2口,P3口,共记32个端口。
此次硬件设计共用到27个端口,端口满足编程需要,所以采用静态显示。
动态显示在这里不做介绍。
3、LED数码管接口译码
由LED数码管的结构及其工作原理可知,为了在LED上显示数据或字母,则首先要把待显示的数据或字母转换成LED的七位显示代码,这样才可以显示相应的数据或字母。
通过实现这种转换的方法由两种:一、硬件译码;二、软件译码。
(本设计采用软件译码。
)
二、软件译码
如图3所示,这种电路在软件设计时,数码管采用共阴极方式,在数据段定义0~9十个数字。
图3一位动态LED显示器电路
如图3所示,P1.0到P1.7分别接a、b、c、d、e、f、g、h,如果要显示数字“5”
则只需要令P1=6D。
3.2.2 报警电路
图4报警电路图
报警电路如图4所示。
3.2.3 计时电路
计时电路,主要由按键暂停键、24秒复位键、单片机AT89C51以及共阴极LED
数码管构成。
其工作原理如下:定时器T0开始一直处于定时计数状态。
计时采用倒
计时,初始化时每节时间为12分钟,则LED显示器1~4上分别显示1200,12
表示分钟,00表示秒钟。
这时,如果裁判吹响开始哨声,则立即按下暂停键,
即比赛开始,计时显示由1200变成1159,1158,1157……一直到0000时为
止,即表示一节的比赛结束,一场比赛共有四节。
与此同时24s也在倒计时。
当24s倒计时到0时,再从24s重新倒计时如此反
复循环,直至比赛结束。
当进攻方改变时,按下24秒复位键,24s重新计时。
如果
比赛中暂停,按下暂停键即可,可多次暂停。
其中暂停键功能复用,既能暂停,又能继续开始比赛。
3.3 计分电路设计
计分电路主要由单片机AT89C51和按键构成,其工作过程如下:按键甲队
加分,甲队减分,乙队加分,乙队减分组成甲、乙两队加减分控制。
例如:现
在以甲队加分为例来说明系统的工作方式。
假设比赛刚开始,双方比分为000 000,某次进攻中甲队投进两分球,则需要按下甲队加分键加分,按两下,这
时使得到显示为002 000,每次加减时只能加一分,当甲对投进三分球时,则按三下甲队加分。
3.4 计时计分系统的工作过程
其工作过程如下:首先在比赛开始前接通电源,通过硬件系统复位,此时计时中的12分钟和24秒,计分中的比分都显示“0”。
计时的LED则显示1200 24 。
当裁判吹响开始哨声前,立即按下暂停键,计时停止,当裁判吹响开始哨声,这时立即按下暂停键,计时开始,并且采用倒计时,即从12分钟减为0表示一节结束,同时24也倒计时,倒计时到0时自动返回到24s重新倒计时,如此循环直至比赛结束。
当比赛中,进攻方改变时,立即按下24秒复位键,24s就立即重新由24s 开始倒计时。
当12分钟或24s倒计时到零时,蜂鸣器都会发出3秒的响声,用以提示。
当一节比赛结束后,系统复位,进行第二节比赛。
整个赛程中,我们还要对比分进行及时手动刷新,这时我们通过计分电路中的甲队加分,甲队减分,乙队加分,乙队减分四个按键完成此功能,甲队加分,甲队减分完成甲队加、减分,乙队加分和乙队减分完成乙队加、减分。
加分键每按一下,LED则显示加一分。
减分键每按一下,LED则显示减一分。
如果在赛程过程中,出现暂停,应立即按下暂停键,即可以立即暂停计时,暂停结束时,在按下暂停键继续计时,直至比赛一节结束,蜂鸣器发出3秒声响。
每节的计时计分过程同以上相同。
4.系统的软件设计
系统的软件主要是根据硬件电路通过编程来实现计时、计分、比分刷新等功能,并显示比分和时间。
P0.0~P0.5接口分别接12:00分钟和24秒的片选端,其中接上上拉电阻和5伏的电源。
sbit t1=P0^0;
sbit t2=P0^1;
sbit t3=P0^2;
sbit t4=P0^3;
sbit t5=P0^4;
sbit t6=P0^5;
P1.0~P1.7接12个数码管的数据端口。
P2.0~P2.7接甲乙两队的比分接口的片选端。
sbit led1=P2^0;
sbit led2=P2^1;
sbit led3=P2^2;
sbit led4=P2^3;
sbit led5=P2^4;
sbit led6=P2^5;
sbit led7=P2^6;
sbit led8=P2^7;
P3.0~P3.5接开关。
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
sbit k5=P3^4;
sbit k6=P3^5;
sbit k7=P3^6;
P3.7接蜂鸣器。
sbit buz=P3^7;
本设计的软件由主程序,延时程序和定时服务程序三部分组成。
主程序按要求读取显示数据,包括计时过程的处理以及比分的显示。
延时程序主要用来延时,定时程序主要是定时倒计时。
复位主要通过硬件来实现。
4.1 主程序
4.1.1 主程序的流程图
图5 主程序的流程图
4.1.2 主程序
见附录2。
5.系统调试
本次软件设计我运用了所学过的keil,protel99se,proteus等软件,在设计的过程中遇到了许多困难,有很多不懂的地方我请教了老师,查阅了图书馆的资料,和同学讨论,在同学和老师的帮助下,一步步的克服了困难,例如怎么样减化电路,怎么样实现延时更合理,怎么样通过按键完成计时和计分等等,通过不断的努力,最终整个程序能基本编译通过,proteus仿真实现。
本课题是用AT89C51设计的篮球计时计分系统的,51单片机起到核心的作用。
同时运用了LED数码管的静态显示。
并采用c语言进行编程设计。
本次设计完成的主要工作如下:
提出构想和产品设计的可行性
熟悉AT89C51单片机系统,掌握其C语言的程序设计
了解使用各器件的原理,功能及其引脚
硬件总体的设计
完成C语言编写程序
完成软件的调试编译
6.结束语
通过这个学期的毕业设计,我对一些专业的电子设计有了更深的了解,同时也尝试着去应用自己所掌握的知识完成作品的设计,这次毕业设计主要是对单片机控制LED数码管显示的应用,各种设计软件的操作的一个综合性的考核。
经过几个礼拜的努力,我发现了自身的差距与不足,认识从理论与实践的过程是困难的,只有经过努力才能实现,以后要不断学习,不断的完善自己。
毕业设计不仅给我们提供了一个很好的展现和应用自己所掌握的知识的平台,又是检验自己所学知识和实现所学知识价值的一个机会。
在设计的过程中不可避免的遇到了许多困难。
尤其是在最后的调试中,会因为某种原因而得不到满意的结果,但最后还是解决了。
最后在调试结果终于出来以后我更是无比兴奋,无比自豪。
在这里我要感谢帮助过我的老师和同学尤其是我的毕业设计指导老师赵明老师,没有你们也就没有这份毕业设计和论文。
对我而言,知识上的收获重要,精神上的丰收更加可喜。
我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。
挫折是一份财富,经历是一份拥有。
这次课程设计必将成为我人生旅途上一个非常美好的回忆。
致谢
在论文完成之际,我首先要特别感谢赵明老师给予了我无私的帮助,正是在他的鼓励和帮助之下,我得以顺利完成论文。
我还要向那些热心帮助的同学表示最真挚的谢意。
在论文写作期间,我遇到了很多不懂的地方,包括理论知识和做实物的过程,我都向他们请教,他们都无私热情的告诉我。
其次我还要更特别的感谢四年来默默关心我、支持我、鼓励我的家人,亲戚,朋友;是他们让我有信心、有勇气克服了太多的困难,最终得以顺利完成学业,在此对他们表达我深深的谢意。
参考文献
[1]丁元杰.单片机原理及应用
[M].北京:机械工业出版社.
[2]李广军等.微机的原理与接口
技术[M].成都:电子科技大学出版社
[3]何立民.MCS-51单片机应用系
统设计[M].北京:北京航空航天大学出版社.
[4]中国篮球协会审定.篮球规则
[M].北京:光明日报出版社.
[5]高鹏等. 电路设计与制版—
—Protel99入门与提高[M].北京:人民邮电出版社.
[6]谭浩强.c程序设计(第三版).
北京:清华大学出版社
[7]阎石等.数字电路基础(第五
版)[M].北京:高等教育出版社
[8]林志琦等.基于proteus的单片机可视化软硬件仿真[M].北京:北京航空航天大学出版社.
[9]孟祥莲等. 单片机原理与应用----基于proteus与keil c[M].哈尔滨:哈尔滨工业大学出版社.
[10]夏路易,石宗义.电路原理与电路设计教程Protel 99SE[M].北京:北京希望电子出版社.
附录1
附录2
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define led_out P1
uchar
tab[10]={0x3F,0x06,0x05b,0x4f,0x66,0x6d,0 x07d,0x07,0x7f,0x6f};
sbit led1=P2^0;
sbit led2=P2^1;
sbit led3=P2^2;
sbit led4=P2^3;
sbit led5=P2^4;
sbit led6=P2^5;
sbit led7=P2^6;
sbit led8=P2^7;
sbit t1=P0^0;
sbit t2=P0^1;
sbit t3=P0^2;
sbit t4=P0^3;
sbit t5=P0^4;
sbit t6=P0^5;
sbit t7=P0^6;
sbit t8=P0^7;
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
sbit k5=P3^4;
sbit k6=P3^5;
sbit k7=P3^6;
sbit buz=P3^7;
int num1,num2,num4,num3=24,num5=12; void init(void)
{
TMOD=0X01;//T0,模式1
TL0=0XB0; //定时50ms
TH0=0X3C;
TR0=1; //启动T0
ET0=1; //开中断
EA=1;
}
void delay(uint xms)
{
uint x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}
void Disply(void)
{
led1=0;
led_out=tab[num1/100]; delay(3);
led1=1;
led2=0;
led_out=tab[num1%100/10]; delay(3);
led2=1;
led3=0;
led_out=tab[num1%10]; delay(3);
led3=1;
led4=0;
led_out=0x40;
delay(3);
led4=1;
led5=0;
led_out=0x40;
delay(3);
led5=1;
led6=0;
led_out=tab[num2/100];
delay(3);
led6=1;
led7=0;
led_out=tab[num2%100/10];
delay(3);
led7=1;
led8=0;
led_out=tab[num2%10];
delay(3);
led8=1;
}
void Disply1(void)
{
t1=0;
led_out=tab[num5/10];
delay(3);
t1=1;
led_out=(tab[num5%10]|0x80); delay(3);
t2=1;
t3=0;
led_out=tab[num4/10];
delay(3);
t3=1;
t4=0;
led_out=tab[num4%10]; delay(3);
t4=1;
t5=0;
led_out=tab[num3/10];
delay(3);
t5=1;
t6=0;
led_out=tab[num3%10]; delay(3);
}
void jianpan();
void main()
{ init();
while(1)
{
jianpan();
Disply1();
Disply();
}
}
void timer0(void) interrupt 1 using 0 {
uint aa;
TL0=0XB0; //重装初值
TH0=0X3C;
aa++;
if(aa==20)
{aa=0;
num3--;
if(num3==0)
buz=0;
if(num3==23)
buz=1;
if(num3<0)
num3=24;
num4--;
if(num4<0)
{num4=59;num5--;}
if(num4==0&&num5==0)
{num5=12;num4=0;TR0=0;buz=0;} }
}
void jianpan()
{
if(k1==0)
{while(!k1) {Disply(); Disply1();} num1++;
}
if(k2==0)
{while(!k2) {Disply(); Disply1();} num1--;
if(num1<0) num1=0;
}
if(k3==0)
{while(!k3) {Disply(); Disply1();} num2++;
}
if(k4==0)
{while(!k4) {Disply(); Disply1();} num2--;
if(num2<0) num2=0;
}
if(k5==0)
{while(!k5) {Disply(); Disply1();}
TR0=~TR0; buz=1;
}
if(k6==0)
{while(!k6) {Disply(); Disply1();}
num3=24; }
}。