基于单片机的篮球计时器.docx
《基于单片机的篮球计时器.docx》由会员分享,可在线阅读,更多相关《基于单片机的篮球计时器.docx(19页珍藏版)》请在冰豆网上搜索。
基于单片机的篮球计时器
郑州轻工业学院
微控制器课程设计
题目篮球比赛计时控制器设计
___________________
学生姓名xxx________
专业班级_电信10-班___
学号**********xx_____
院(系)电气信息工程学院___
指导教师耿鑫________
完成时间2013年12月27日
摘要
本计时计分系统的设计主要是篮球比赛为例,然后可以拓展到其他球类比赛的各个方面,篮球比赛的计时计分系统主要是以AT89C51单片机为核心元件,利用它内部的计数器T0,通过软件编程来完成比赛的计时,硬件部分除了AT89C51之外,还有7段LED数码管和开关,通过程序控制后显示比分和时间。
报警部分采用蜂鸣器为音响器件。
该计时计分器具有以下功能:
篮球比赛上下半场四节制,每节12分钟,要求能随时暂停,启动后继续计时,一节比赛结束后应可清零;按篮球比赛规则,进攻方有24秒为例计时;“分”、“秒”显示用LED数码管;用开关控制计时器的启动/暂停;24秒计时时间到、每节结束、全场结束能自动音响提示。
关键词:
篮球,AT89C51,计时计分系统
1引言
1.1绪论
球类比赛计时计分系统是辅助比赛的工具。
球类比赛分为篮球,足球,排球,乒乓球等许多种类,不同球类比赛规则要求各不相同,例如足球比赛要求比赛时间为九十分钟,其中还包括伤停补时时间,乒乓球比赛为十一球制等。
篮球比赛根据美国男篮职业联赛(NBA)的规定,则是采取四节制,每节十二分钟,比赛结束后两队比分相同时,需要进行加时赛,在加时比赛中,每节比赛则是五分钟,直到分出胜负为止。
篮球比赛的计时计分系统由51单片机,计时七段LED数码管、计分七段LED数码管,开关等设备组成。
本计时计分系统设计不仅可以实现开始、暂停等功能,同时还具有24s显示的功能。
且价格低廉、操作简单、携带方便,适合学校单位举办友谊比赛等赛事的计时计分辅助工具。
1.2选题的背景和意义
随着姚明,易建联等球星成功的加入NBA后,篮球比赛在中国越来越被人们关注,同时在学校单位等也受到欢迎,更被绝大多数青少年所喜爱。
本设计除了具有赛程时间计时、时间调整及暂停和比赛计分的功能,还具有24s进攻的功能。
且价格低廉、操作简单、携带方便,适合学校单位举办友谊比赛等赛事的计时计分辅助工具。
从另一方面说,本设计方便了记录人员比赛时的计时分工作,在某种程度上也促进了篮球比赛在大众人群的普及,这样既有利于发展篮球运动,又有利于增强人们的体质。
另外这样能使比赛更趋向于公平化、正规化,减少了比赛中由比赛记录出错产生的摩擦和不愉快的事情的发生,提高了比赛的友谊性、娱乐性。
此外,该计时计分系统经过少许修改,即去掉24s计时功能后,同样也适用于其他球类比赛的计时计分。
2系统的总体设计方案
2.1设计方案
计时电路主要由按键开关、单片机AT89C51[4]、译码器及LED显示器构成。
当调时开关(十位)按下时产生一个低电平,对应调分(十位)控制端P2.0的LE输出高电平,表示可以向CD45ll的调分位(十位)发送数据,将要显示数据的代码经P1.0送到CD4511的A另—端,送完后将LE清零。
调时按键开关每按一次,数字自动加1。
直到调到需要设置的时间即可。
调时(个位)的操作方法与之相同。
时间设置完后,启动定时器。
如果比赛中暂停,按一下暂停键即可暂停计时。
后一种计时电路主要由按键开关、单片机AT89C51及LED显示器构成,采用双电源供电。
单片机采用+5V,数码管采用+15V采用单片机直接驱动数码管显示。
当按下秒钟加1按键时,秒计时显示加1;当按下秒钟减1按键时,秒计时显示减1;当按下分钟加1按键时,分钟显示加1,当按下分钟减1按键时,分钟显示减1。
时间设置完后,启动定时器开始倒计时。
如果比赛中裁判叫暂停,则只要按一下暂停键,即可暂停计时。
根据此次设计的实验条件及设计目的,我采用前一种方案,即单片机带外围扩展驱动数码管工作的电路系统。
球赛计时计分器系统图如1-1图所示。
2.2系统的基本功能和介绍
本设计要实现的基本功能有:
赛程时间设置,赛程时间启/停设置,比分交换控制,比分刷新控制,计时计分显示,赛程结束报警。
以下对个功能进行介绍。
1、赛程时间设置
在计时电路中,按键开关K5、K6用来设置赛程时间。
比如:
比赛时间上半场时间20分钟,则通过按键K5键,使数码管1显示“2”即可;再按K6键,设置比赛时间的个位数,使数码管2显示“0”即可。
一般比赛时间为40分钟,所以只需要按K5键使数码管1显示“4”,按K6使数码管2显示“0”即可。
时间设置好后,等待比赛开始。
当比赛结束时,如果由于一些特殊原因需要增加比赛时间,这时增加比赛时间同样由按键K5、K6来设置,并且设置方法与上面所述一眼,但一般情况下只需要按K6键来设置即可,因为加时比赛一般只有几分钟而已。
2、赛程时间启动/暂停设置
当时间设置完成后,比如设置赛程时间为45分钟,则在LED显示器上显示为4500,45表示分钟,00表示秒钟。
这时,如果裁判吹响开始的哨声时,则应立即按下按键K7,表示赛程开始,计时显示则由4500变成4459,4458……一直计时直到计为0000时表示赛程结束。
按键K7为赛程启动和暂停控制。
3、计时计分显示
计时计分显示器是采用七段共阴极LED显示器来显示的。
其中计分是用6个LED显示器。
计时采用4个LED显示器;显示格式为000000和0000。
4`、24秒违例计时
其工作过程如下:
首先在比赛开始前接通电源,通过硬件系统复位,此时计时中的12分钟和24秒,计分中的比分都显示“0”。
计时的LED则显示120024。
当裁判吹响开始哨声前,立即按下暂停键,计时停止,当裁判吹响开始哨声,这时立即按下暂停键,计时开始,并且采用倒计时,即从12分钟减为0表示一节结束,同时24也倒计时,倒计时到0时自动返回到24s重新倒计时,如此循环直至比赛结束。
当比赛中,进攻方改变时,立即按下24秒复位键,24s就立即重新由24s开始倒计时。
当12分钟或24s倒计时到零时,蜂鸣器都会发出3秒的响声,用以提示。
当一节比赛结束后,系统复位,进行第二节比赛。
整个赛程中,我们还要对比分进行及时手动刷新,这时我们通过计分电路中的甲队加分,甲队减分,乙队加分,乙队减分四个按键完成此功能,甲队加分,甲队减分完成甲队加、减分,乙队加分和乙队减分完成乙队加、减分。
加分键每按一下,LED则显示加一分。
减分键每按一下,LED则显示减一分。
如果在赛程过程中,出现暂停,应立即按下暂停键,即可以立即暂停计时,暂停结束时,在按下暂停键继续计时,直至比赛一节结束,蜂鸣器发出3秒声响。
每节的计时计分过程同以上相同。
5、赛程结束报警
当比赛结束时,系统会自动发出10秒钟报警声,提示赛程结束。
篮球赛计时计分器电路工作过程
整个篮球计时计分器的工作过程如下:
首先在比赛之前,接通电源,系统自动复位,此时计时电路与计分电路中的共阴极数码管分别显示为0000和000000;然后我们按照计时电路图2-5中的K5键来设置比赛时间的十位数,再按下K6键,设置比赛时间的个位数字,使数码管2显示“0”即可。
一般比赛时间为40分钟,所示只需要按下K5键显示“4”,按下K6键显示“0”即可。
时间设置好时,等待赛程开始,当裁判吹响哨声时,启动计时,这时计时电路便开始工作,计时采用倒计时方式,即从20分钟减为0分钟表示上半场结束。
上半场结束时,蜂鸣器会发出10秒钟响声,通知上半场结束,这时按下K7键,便完成了甲、乙两队的分数交换。
在整个赛程中,我们还要对两队比分进行及时刷新,这时我们通过计分电路图2-9中的K1~K4键完成此功能,K1和K2键完成甲队加分、减分,K3和K4键完成乙队加分、减分。
按键每按一下,表示加上或者减去1分。
由于加分、减分我们采用中断完成,且加、减分的中断优先权小于计时电路中的中断优先权,所以不会对计时电路造成影响。
如果在赛程过程中,一方的教练申请暂停时,经裁判批准,我们立即按下K7键,即可以暂停计时,暂停时间到时,再按下K7键继续计时,直至上半场赛程结束,蜂鸣器会发出10秒的响声。
下半场的流程和上半场基本上是一样的。
2.3系统硬件电路组
2.3.1计时电路
1.显示器及其接口
显示器是最常用的输出设备,其种类繁多,但在单片机系统设计中最常用的是发光二极管显示器(LED)和液晶显示器(LCD)两种。
由于这两种显示器结构简单,价格便宜,接口容易实现,因而得到广泛的应用。
下面介绍发光二极管显示器(LED)的结构、工作原理及其接口电路。
图2计时电路原理图
图3计时显示原理图
2.3.2计分电路
8051系列单片机除了有4个8位并行口外,还有一个能同时进行串行发送和接收的全双工串行通信口。
它能同时发送和接收数据,还能作为同步移位寄存器使用。
球赛计分电路正是利用了8051单片机串行口可以外接串行输入并行输出移位寄存作用为输出口来实现球赛比分刷新显示的。
1.串行接口工作原理
MCS-51[9]系列单片机片内有一个串行I/O端口,通过引脚RXD(P3.0)和TXD(P3.1)可与外设电路进行全双工的串行异步通信。
8051的串行端口有4种基本工作方式,通过编程设置,可以使其工作在任一种方式。
其中,方式0主要用于外接移位寄存器,以扩展单片机的I/O电路;方式1多用于双机之间或者与外设电路的通信;方式2,3除有方式l的功能外,还可用作多机通信,以构成分布式多微机系统[10]。
串行端口有两个控制寄存器(SCON[11]和PCON[12]),用来设置工作方式、发送或接收的状态、特征位、数据传送的波特率(每秒传送的位数)以及作为中断标志等。
串行端口有一个数据寄存器SBUF[13](在特殊功能寄存器中的字节地址为99H),该寄存器为发送和接收所共同。
发送时,只写不读;接收时,只读不写。
在一定条件下,向SBUF写入数据就启动了发送过程;读SBUF就启动了接收过程。
串行通信的波特率可以程控设定。
在不同工作方式中,由时钟振荡频率的分频可由定时器T1的溢出率[14]确定,使用十分方便灵活。
表2-3为寄存器SCON内容定义表,表2-4为寄存器PCON位地址
图4计分电路原理图
2.计分电路的工作原理
计分电路主要由单片机AT89C51,串行/并行转换器[15](CD4094),LED显示器,74LS21以及按键开关组成。
其工作过程如下:
按键开关K1~~K4组成甲、乙两队加减分控制。
按键K1~K4一端接地,另一端输入与门74LS21的9脚,10脚,12脚,13脚,以及单片机AT89C51的P3.5,P3.4,P0.2,P0.1,8脚接AT89C51的P3.2脚。
当按键开关K1~K4这四个按键的任何一个一位按下时,与门的8脚输出都会产生低电平使单片机中断,从而使相应LED显示。
因为按键开关按下时为低电平。
例如:
现在先在以甲队加分为例,来说明整个过程。
假设比赛刚开始,双方比分为000:
000,当某一时刻之后,当甲队加分时,则按下K1键,这时K1=0(低电平),其余K2K3K4=111(为高电平)K1K2K3K4相与之后的结果为低电平,这时与门8脚输出的低电平到AT89C51的P3.2脚,使其外部中断INT0[16]发生中断,从而调用中断服务程序,将要显示的数据从程序中定义的LED显示常数表TAB中取出数据06H(因为LED显示常数表TAB的偏移地址为36H,36H首先是指向LED显示常数表TAB中第一个数据3FH的,当K1按下时,相当于将33H地址加1,这时便指向第二数据06H,即对应字母代码关系表中的加1)。
经串行发送端RXD/P3.0送至串行/并行转换器CD4094的第二个输入引脚,即数据输入DATA脚。
由于串行口的工作方式设置为方式0。
所以在串行数据通过RXD/P3.0引脚输出时,则TDX/P3.1引脚会输出多位时钟作为移位脉冲。
将8位数据顺利送到串行/并行转换器CD4094中。
另外,在RXD/P3.0引脚输出数据的同时,单片机AT89C51的P3.7引脚输出高电平给串行/并行转换器CD4094的第1个引脚STR(使能端控制),使前一片CD4094中的8位数据从QS移位至下一片CD4094输入端的第2引脚,即DATA引脚。
在RXD/P3.0引脚输出数据的过程中,连续使单片机RD/P3.7引脚输出6次高电平6,这样便使6片CD4094中得到不同的显示代码,然后使单片机RD/P3.7引脚输出为低电平,将6片CD4094中显示代码送LED显示器显示,便得到结果,显示为001000。
其对应的程序原理如下阐述:
因为,在程序中定义了33H,34H,35H,36H,37H,38H,6地址单元分别对应乙队、甲队3个LED显示器在程序中定义的LED显示常数表TAB的偏移首地址。
单片机的RXD每次发送6个数据,分别对应以33H,34H,35H,36H,37H,38H为偏移首地址单元里的数据。
例如:
甲队加分表示以36H为偏移首地址的单元加1,指向第二个数据06H,其他以33H,34H,35H,37H,38H为偏移首地址单元的数据仍然指向第一个数据3FH,这样将这六个数据:
3FH,3FH,3FH,06H,3FH,3FH,经单片机的RXD发送出去,再在单片机RD/P3.7输出的6次高电平作用下产生6次移位,便在6片CD4094中得到显示代码:
3FH,3FH,06H,3FH,3FH,3FH。
然后在RD/P3.7输出时显示为001000。
2.3.3报警电路
当比赛结束时,系统会自动发出10秒钟报警声,提示赛程结束
3器件选择及介绍
3.1器件清单
本系统在设计的过程中主要选取了以下一些器件:
单片机:
AT89C51
四一七段BCD译码芯片:
CD4511
并行/串行转换芯片:
CD4094
四输入与门:
74LS21
显示器件:
7段共阴极LED显示器
按键:
欧姆龙按键
3.2AT89C51
AT89C51是一个低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的Flash[17]只读程序存储器和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。
AT89C51具有PDIP、PQFP/TQFP及PLCC等三种封装形式[18],以适应不同产品的需求。
它是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
如图所示,图2-10为AT89C51单片机基本构造,其基本性能介绍如下:
图6AT89C51引脚图
AT89C51的主要特性如下表2-5所示。
下面介绍各个管脚:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏极开路双向I/O口,每个引脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入[19]。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容,P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
表1AT89C51主要功能描述
兼容MCS—51指令系统
4k可反复擦写(>1000次)FlashROM
32个双向I/O口
可编程UARL通道
两个16位可编程定时/计数器
全静态操作0-24MHz
1个串行中断
128x8bit内部RAM
两个外部中断源
共6个中断源
可直接驱动LED
3级加密位
低功耗空闲和掉电模式
软件设置睡眠和唤醒功能
P3口:
P3口管脚是8个带有内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如表2-6所示。
P3口同时为闪烁编程[20]和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,
ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
表2AT89C51特殊功能表
端口引脚
第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
/INT0(外部中断0)
P3.3
/INT1(外部中断1)
P3.4
T0(记时器0外部输入)
P3.5
T1(记时器1外部输入)
P3.6
/WR(外部数据存储器写选通)
P3.7
/RD(外部数据存储器读选通)
3.374LS21芯片介绍
本次设计中的比分校正电路采用四输入与门74LS21来实现。
74LS21是双4输入与门。
在一个芯片里有两个相同的单元,其中一个任何一个都是1/2断口。
同型号的74系列、74HC系列、74LS系列芯片,逻辑功能上是一样的。
表2-8为74、74HC、74LS系列芯片资料。
表374、74HC、74LS相关资料表
系列
电平
典型传输延迟ns
最大驱动电流(-Ioh/Lol)mA
AHC
CMOS
8.5
-8/8
AHCT
COMS/TTL
8.5
-8/8
HC
COMS
25
-8/8
HCT
COMS/TTL
25
-8/8
ACT
COMS/TTL
10
-24/24
F
TTL
6.5
-15/64
ALS
TTL
10
-15/64
LS
TTL
18
-15/24
结论
在本次设计中,我通过基于典型单片机AT89C51的设计和应用,对于单片机工作原理,功能有了宏观的了解,并对单片机汇编程序的应用有了新的、进一步的认识。
在设计的过程中,我发现很多的问题,给我的感觉就是下手很难,很不顺手,看似很简单的电路,要动手把它给设计出来,是很难的一件事,主要原因是我们没有经常动手设计过电路。
另外单片机系统的知识似懂非懂,而且很多知识当时弄明白了,现在要用的时候又不记得,造成我用了大量的时间去查阅各种资料和程序命令,因此整个过程时间安排不合理。
由于设计的计划没有安排好,设计的时间极为仓促,尤其是在硬件调试的过程中出现了很大的问题。
另外资料的查找也是一大难题,这就要求我们在以后的学习中,应该注意到这一点,更重要的是我们要学会把从书本中学到的知识和实际的电路联系起来,这不论是对我们以后的就业还是学习,都会起到很大的促进和帮助。
本次设计测试结果以及不足之处:
计时电路可完成倒计时、暂停、继续等功能,在比赛时间到后可进行报警。
记分电路工作正常,可完成对比分的刷新与暂存。
但在测试过程中发现,在比赛上半场时间到后,不能进行比分的交换。
参考文献
[1]徐惠民,安德宁.单片微型计算机原理接口及应用.(第二版)北京:
北京邮电大学出版社.2000:
23-38
[2]唐俊翟.单片机原理与应用.北京:
冶金工业出版社,2003.8
[3]丁明亮,唐前辉.51单片机应用设计与仿真-基于KeilC和Proteus.北京:
北京航空航天大学出版社,2009
[4]彭为.黄科,雷道仲.单片机典型系统设计实例精讲.北京:
电子工业出版社.2006:
247-273
[5]潘永雄.新编单片机原理与应用.西安:
西安电子科技大学出版社.2003[6]求是科技.单片机典型模块设计实例导航.北京:
人民邮电出版社,2004
汇编源程序
ORG0000H
AJMPLK1;主程序地址
ORG000BH;定时中断入口地址
AJMPCTCO
ORG0013H;外部中断入口地址
AJMPCXT
secondEQU30H
minuteEQU31H
tEQU32H
ORG1000H
MOVminute,#0FF;minute=-1
MOVR7,#0FFH;(R7)=-1
MOVR6,#100;(R6)=100
MOVA3H,#00H;P2.2为低电平
MOVA2H,#0FH;P2.1为高电平
KEY1:
INCR7;(R70=(R7)+1(R7)初值为0
MOVA,R7;A第一次为0循环以后不为0
JNZCLOCK;在每次12秒结束时响音响
LCALLKS1;检查有闭合键没有
JNZA1;A非0,有键闭合则转
LJMPLK8;无键闭合则则转并返回
A1:
LCALLDIR;消抖
LCALLDIR
MOVA,90H;P0.0地址送累加器
CJNEA,#0FH,START;比较判断是非是A键,使则转
START:
INCminute
MOVA,minute;
MOVB,#10
DIVAB
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP0,A
LCALL
MOVA,B
MOVA,@A+DPTR
MOVP0,A
MOVPC2,0FH
LCALLDD
LCALLLD1
MOVA,B
MOVA,@A+DPTR
MOVP0,A
MOVPC3,0FH
LCALLDD
LCALLLD1
MOVA,minute
CJNEA,#0CH,KEY1
NEXT:
MOVsecond#00H
MOVB,#10
DIVAB
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP0,A
MOVPC0,0FH
LCALLDD
LCALLLD1
MOVA,B
MOVA,@A+DPTR
MOVP0,A
L