单片机篮球计时
摘 要
随着单片机在各个领域的广泛应用,许多用单片机作控制的球赛计时器也应运而生,如用单片机控制LCD液晶显示器的计时器,用单片机控制LED七段显示器的计时器等等。
本次设计的篮球计时系统以AT89C51单片机为核心元件,利用它内部的计数器T0完成比赛的计时,通过七段共阴极LED来显示比分和时间。计时部分采用CD4511(七段BCD码译码器)进行硬件译码;计分部分采用CD4094(8位移位存贮总线寄存器)进行串行口扩展显示器接口,并利用74LS21(双四输入与门)来实现比分的刷新功能。报警部分采用蜂鸣器为音响器件。本系统具有赛事时间设置、赛事时间启/停设置、24s倒计时控制;比分刷新控制;报警等功能。且造价低廉、操作简单、携带方便,适合于学校或小团体作为赛程计时工具。
关键词 篮球计时系统 七段共阴LED数码管 AT89C51
目 录
1 绪论........................................................................................................................ 1
1.1 选题背景和意义........................................................................................... 1
1.2 选题目的....................................................................................................... 1 2 总体设计方案 ..................................................................................................... 2
2.1 系统的构成框图........................................................................................... 2 3 各部分功能介绍 ................................................................................................ 4
3.1 赛程时间设置............................................................................................... 4
3.2 赛程时间启动/停止设置............................................................................. 4
3.3 24s显示控制................................................................................................ 4
3.4 计时显示....................................................................................................... 5
3.5 计时结束后报警........................................................................................... 5 4 硬件部分的设计 ................................................................................................ 6
4.1 单片机简介................................................................................................... 6
4.2 单片机最小系统........................................................................................... 7
4.3 计时电路....................................................................................................... 8 5 软件设计 ............................................................................................................ 11
5.1 编程设置及总流程框图............................................................................. 11
5.2 计时部分模块流程..................................................................................... 12
5.3 系统调试..................................................................................................... 12 总 结 ........................................................................................................................ 14 参考文献 ................................................................................................................. 15 附录 .......................................................................................................................... 16
1 绪论
1.1 选题背景和意义
篮球比赛在中国越来越受到人们的关注,同时也被更多的青少年所喜爱。本设计除了具有赛程时间计时、调整及暂停和比赛计分的功能,还具有24s倒计时的功能。且造价低廉、操作方便且便于携带,适合于学校和小团体作为比赛赛程的计时工具。从另一方面说,本设计方便了人们比赛时的计时工作,在某种程度上也促进了篮球赛的开展,既有利于发展篮球这项体育运动,又有利于增强人们的体质。另外参与篮球运动的人多了,也利于篮球运动员的选拔,对我们国家的篮球事业也具有促进作用。
1.2 选题目的
通过设计过程,培养学生分析解决实际问题的能力,使学生对单片机工作原理有更加系统和更深层次的认识,提高单片机系统软硬件设计能力。同时通过设计练习,使学生初步掌握电子系统的设计步骤和设计方法,提高电子技术理论和技能的综合应用水平。
2 总体设计方案
2.1 系统的构成框图
基于单片机的篮球比赛计时系统的构成框图如图2-1所示
图2-1 篮球比赛计时系统构成框图
本系统采用AT89C51作为设计的核心元件,利用七段共阴LED数码管作为显示器件。其中,计分电路中共接入6个七段共阴LED数码管用于显示比赛两队的分数,每队3个数码管,显示范围0~999分。比分是通过按键来人工控制加分,为了避免人工操作时的失误错加分,故增加了两个用于减分的按键。比分显示时采用静态显示,即6个LED数码管在同一瞬间可以显示不同的字符。计时电路中共接6个LED数码管,其中4个用于显示赛程时间,即2个显示分钟,2个显示秒钟。赛程采用倒计时方式,即比赛前将时间设置
好,比赛开始时启动计时,直至计时到零为止,比赛暂停时停止计时,比赛重新开始时计时继续,计时范围0~99分钟。另外两个数码管用于显示24秒计时,即采用倒计时,比赛开始启动计时,计时到零或控球发生改变时重新计时开始由24s倒计时,如此循环,直至比赛结束。当有暂停同样停止计时,重新开始时继续计时。
最后,设计中还有定时报警系统,即赛程时间结束或24s结束时,立即通过蜂鸣器发出报警声提示。
3 各部分功能介绍
3.1 赛程时间设置
通过按键K5、K6来设置赛程时间。篮球比赛的一节时间为12分钟,通过按K5按键,使LED数码管1显示“1”即可。在按K6按键,设置比赛时间的个位数,即使数码管2显示“2”。
当比赛结束时,如果由于一些特殊原因要增加比赛时间,这时比赛时间的调整同样由K5、K6按键来设置,且方法和上面一样。但一般情况下只需按下K6来设置即可。因为加赛时间通常只有几分钟。
3.2 赛程时间启动/停止设置
当时间设置好之后,比如每节时间为12分钟,则数码管1~4上分别显示1200,即12表示时间,00表示秒钟。这时,如果裁判吹响开始哨声,则立即按下K7按键,即比赛开始,计时显示由1200变为1159、1158„„一直到0000时为止,即表示比赛结束。
在比赛过程中,遇到换人。暂停等时按下K7按键时间停止计时,数码管上的数值保持不变。当比赛继续进行时,应立即按下K7按键,继续进行计时。
3.3 24s显示控制
24s值在程序中设置,由数码管5、6来显示,即数码管5、6显示24.比赛开始时按下K7按键24s随赛程时间一起计时,即计时显示由24变成23、22、21„„直到00.然后再由24s开始重新计时。比赛过程中,当进攻的一方改变时,应立即按下K8按键,即使24s重新计时。
3.4 计时显示
计时显示采用七段共阴LED数码管显示,其中计分6个数码管,赛程时间4个数码管,24秒2个数码管,数码管显示格式分别是:000 000和00 00以及00。
3.5 计时结束后报警
当赛程时间或24s计时结束时,系统会自动发出
提示。
10s报警声
4 硬件部分的设计
硬件部分的设计是整个设计中的一个重要部分。在进行硬件部分设计时,首先要确定元器件,并且知道这些器件的工作原理和功能。然后才可以进行设计。本设计的硬件电路包括两部分:计时电路、计分电路。硬件电部分的设计除了硬件电路的设计,还包括PCB板的绘制。
4.1 单片机简介 MCS-51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了很多品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。 INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。
AT8AT89C51是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。
4.2 单片机最小系统
单片机最小系统主要由复位电路模块和时钟电路模块组合而成。其电路图如图4-1所示:
图4-1 最小系统原理图
复位电路和时钟电路分别如图4-2和图
4-3
图4-2 复位电路
复位电路可以分为上电复位和手动按键复位两种。在系统上电的一瞬间单片机上电复位,原理是利用电容两端的电压不能突变,在一上电的瞬间电容好比短路,所以加在第九脚RST的电平是高电平,虽然时间很短,但是足以让单片机系统复位。
手动按键复位的原理是,在系统正常工作的过程中可以手动触动按键使单片机复位。具体原理是,按下S1按键,因此5V电压经过一个200欧姆的电阻分压后加到系统的RST上,手动按键按下到抬起的过程足以使系统复位。
图4-3 时钟电路
对于单片机系统而言,晶振电路就好比是人的心脏一样,是一个跳动的动力来源,18,19号引脚接的是11.0592M的晶振。
4.3 计时电路
采用计时芯片,针对计算机系统对计时芯片的要求,各大芯片厂家推出了键时钟/倒计时/正计时各种芯片,可采用自动控制计时芯片,通过触发控制电路使计时器自动地计时,达到预定时间后芯片重新开始计时(实现倒计时功能);也可以通过触发控制电路使计时器不计时,达到预定时间后芯片重新开始计时(实现暂停功能),不需要程序干预。计算机可通过中断或查询方
式读取计时器数据,实现计时的暂停的功能,并进行显示,计时功能的实现就无需占用 CPU 的时间,程序简单,控制精度高,因此在工业控制系统中多采用这一类专用芯片来实现计时功能。
设计中还用到一个显示译码器CD4511,它是一个用于驱动共阴极数码管(LED)显示器的BCD码—七段译码器。它具有BCD码转换、消隐、和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的上拉电流,可以直接驱动LED显示器。
CD4511的引脚功能:
图4-4 CD4511封装图
BI:4脚是消隐输入控制端,当BI=0 时,不管其它输入端状态是怎么样的,七段数码管都会处于消隐也就是不显示的状态。
LE:锁定控制端,当LE=0时,允许译码输出。 LE=1时译码器是锁定保持状态,译码器输出被保持在LE=0时的数值。
LT:3脚是测试信号的输入端,当BI=1,LT=0 时,译码输出全为1,不管输入 DCBA 状态如何,七段均发亮全部显示。它主要用来检测数7段码管是否有物理损坏。
A1、
A2、A3、A4、为8421BCD码输入端。
a、b、c、d、e、f、g:为译码输出端,输出为高电平1有效。
电路如图2-2所示,主要由按键开关K5~K9,单片机AT89C51,译码以及
LED显示器构成。
时间的设置操作如下:当调时(十位)开关K5按下时,产生一个低电平;此时对应调分(十位)控制端P2.0的LE输出高电平,表示此时可以向调分(十位)的CD4511发送数据,但因为LE=1时,CD4511锁存,CD4511的输出端a~g不会有输出。这时将要显示数据的代码经P1口的P1.0送到CD4511的输入端A~D端,送完后,将LE清零;便可以将要显示数据的代码经CD4511译码后,送LED显示器显示。调时按键开关每按一次,数字自动加1,直到调到需要设置的时间即可。调时(个位)K6的操作方法与上一样。
时间设置完后,启动定时器T0开始定时计数。计时采用倒计时,总倒计时和进攻时间倒计时同时倒计时。若24秒倒计时到0,则一次进攻结束。24秒到0报警一次,按K8键重新置位24秒比赛重新开始,如此进行下去直到赛程结束。如果比赛中,裁判叫暂停,则只要按一下K7键,即可暂停计时。
K9是用来调节节数的。按1次K9,节数显示为“1”,2次显示为“2”,
第三节,第四节也是如此。
图4-5 计时电路
5 软件设计
5.1 编程设置及总流程框图
编程前,必须设置好地址、数据以及控制信号。编程单元的地址加在P1口和P2口的P2.0—P2.3(11位地址范围为0000H—0FFFH),数据从P0口输入,引脚P2.6、P2.7、P3.6、P3.7的电平设置参考校验电路,/PSEN为低电平,RST保持高电平,EA/Vpp引脚是编程电源的输入端,按要求加上编程电压,ALE/PROG引脚输入编程脉冲。
编程时,可采用4—20MHZ的时钟振荡器,本次设计采用12MHZ的石英晶体振荡器。具体过程是:
(1)在地址线上加上要编程单元的地址信号,这里为33H,34H,35H,36H,37H,38H,6个地址符。
(2)在数据线上加上要写入的数据字节,比如甲队加一分就是在36H地址上加上(偏移)一个字符06H。
(3)激活相应的控制信号。
(4)在高电压编程方式时,将EA/Vpp端加上+12V编程电压。
(5)改变编程单元的地址和写入的数据,重复1—5步骤,直到全部文件编程结束,每个字节写入周期是自身定时的,通常约为1.5ms
5.2 计时部分模块流程
图5-1 计时部分流程图
5.3 系统调试
整个篮球赛计时器的测试过程如下:
(1)在比赛之前,接通电源,系统自动复位,此时计时电路与计分电路中的共阴极数码管全部显示为00:00、24和000 : 000;
(2)按计时电路中的K5~K8按键来设置比赛时间,例如比赛时间一节为12
分钟,则通过按K5、K6键,使计时数码管显示为“12”即可。
(3)按K9设置比赛的节数的初始值,如第1节。
(4)设置好时,等待赛程开始,当裁判吹响开始哨声时,立即按K7键,启动计时。
(5)当24秒进攻时间结束时,喇叭会自动发出警告并暂停比赛计时,第一节结束时,扬声器会发出5秒钟响声,通知第一节结束,然后再按K9键来调整节数显示。
(6)当一次进攻在24秒进攻时间内结束时,我们还可以通过K8键来复位24秒进攻时间。
(7)如果在赛程过程中,一方教练申请暂停时,经裁判批准,我们立即按K7键,即可以暂停计时,暂停时间到时,再按K7键继续计时,直至比赛结束,扬声器会发出5秒的响声。每一节的操作都是一样。
总 结
通过这次的课程设计,我对一些专业的电子设计有了更深的了解,同时也尝试着去应用自己所掌握的知识。这次课程设计主要对电路的设计,单片机AT89C51的应用,各种设计软件的操作的一个综合性的考核。经过这次的设计,我感受很深。课程设计不仅给我们提供了一个很好的展现和应用自己所学知识的平台,又是检验自己所学的知识和实现知识价值能力的一个机会。
在设计过程中不可避免的会遇到很多的问题,给我的感觉就是下手很难,很不顺手,看似很简单的电路,要动手把它给设计出来,是很难的一件事,主要原因是我们没有经常动手设计过电路。尤其是在最后调试部分,会因为各种原因使得自己得不到满意的结果,由于单片机系统的知识似懂非懂,而且很多知识当时弄明白了,现在要用的时候又不记得,造成需要花费大量的时间去重新查阅各种资料和程序命令,但一旦问题解决了,会使得自己得到重来没有过的兴奋与自豪。对我而言,知识上的收获可喜,精神上的丰收更加珍贵。让我知道了学无止境的道理,就像这次设计由于对单片机知识的不扎实,导致浪费很多时间在查阅资料和了解程序指令意思上。我们每个人永远都不要只满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折就是一份财富,经历是一份拥有。我相信,这次的课程设计必将成为我人生旅途上最美好回忆。
参考文献
[1]彭为,黄科,雷道仲.单片机典型系统设计实例精讲.北京:电子工业出版社.2006 [2]樊明龙,任丽静.单片机原理与应用.北京:化学工业出版社.2005.6
[3]李东生.Protel99 SE电路设计技术入门与应用.第一版.北京:电子工业出版社.2002
[4]何立民.MCS-51单片机应用系统设计.北京:北京航天航空大学出版社.1990
[5]王新贤.通用集成电路速查手册.山东:山东科学技术出版社.2004
[6]罗温萍等.球类比赛计时系统.江西:赣南师范学院学报.2003年第三期
附录
程序:
ORG 0000H
AJMP LK1 //主程序地址
ORG 000BH //定时中断入口地址
AJMP CTCO
ORG 0013H //外部中断入口地址
AJMP CXT
LK1: MOV 33H,#00H //甲队记分清0
MOV 34H,#00H
MOV 35H,#00H
MOV 36H,#00H //乙队记分清0
MOV 37H,#00H
MOV 38H,#00H
MOV 40H,#00H //记时分钟清0
MOV 41H,#00H
CLR P0.0
Mp: CLR P2.0 //计时牌子清零 CLR P2.1 //分分秒秒清0
CLR P2.2
CLR P2.3
MOV P1,#00H
NOP
NOP
SETB P2.0
SETB P2.1
SETB P2.2
SETB P2.3
MOV 42H,#05H //送秒钟初值59秒
MOV 43H,#09H
MOV SCON,#00H //计分牌子清零程序
CLR P3.7
MOV R1,#33H
MOV R2,#06
LP: MOV A,@R1
MOV DPTR,#TAB //
MOVC A,@A+DPTR
MOV SBUF,A //
JNB TI,$ //
CLR TI //
INC R1
DJNZ R2,LP //6
SETB P3.7 //
LK3: JB P2.4,LK6
ACALL D10MS
JB P2.4,LK3
ACALL D2S
LK4: JB P2.4,LK3 //
CLR P2.0 //
MOV P1,40H
SETB P2.0
ACALL D2S //
INC 40H //
MOV A,40H
CJNE A,#0AH,LK4 //
MOV 40H,#00H 取显示数 通过串行口发显示数据 是否发送完毕 清除标志位 次是否 发送完毕 显示数据 调整分钟(十位) 显示分钟十位数据 调用延时程序 将十位加1 十到了没有
AJMP LK4
LK6: JB P2.5,LK5
ACALL D10MS
JB P2.5,LK6
ACALL D2S
LK7: JB P2.5,LK6 // 调分钟(个位)
CLR P2.1 //
MOV P1,41H
SETB P2.1
ACALL D2S //
INC 41H //
MOV A,41H
CJNE A,#0AH,LK7 //
MOV 41H,# 00H
AJMP LK7
LK5: JB P2.6,LK3 //
ACALL D10MS
JB P2.6,LK5
CLR P2.2 //
MOV P1,42H
NOP
NOP
SETB P2.2
CLR P2.3 //
MOV P1,43H
NOP
NOP
SETB P2.3 显示分钟个位数据 调用延时程序 将个位加1 十到了没有 等待启动计时 显示秒钟十位 显示秒钟个位
SETB P0.0 //点亮计时指示灯 MOV TMOD,#01H //定时中断初始化 MOV TL0,#0B0H //送定时初值 MOV TH0,#3CH
SETB ET0 //开放定时中断 SETB EX1 //开放外部中断
CLR IT0 //SETB TR0 //MOV R0,#14H SJMP $
CTCO: JNB P2.6,LK8 //DJNZ R0,NEXT //MOV R0,#14H DEC 43H
CLR P2.3 //MOV P1,43H //NOP NOP
SETB P2.3
CLR P2.2 //MOV P1,42H NOP NOP
SETB P2.2
CLR P2.1 //MOV P1,41H NOP NOP
SETB P2.1
外部中断低电平有效 启动定时 定时中断程序 一秒钟到了吗? 显示时间 显示秒钟个位 显示秒钟十位 显示分钟个位
CLR P2.0 //显示分钟十位 MOV P1,40H NOP NOP
SETB P2.0 MOV A,43H
CJNE A,#00H,NEXT //MOV 43H,#0AH //MOV A,42H
CJNE A,00H,LP3 //MOV 42H,#05H //MOV A,41H
CJNE A,#00H,LP2 //MOV 41H,#09H //MOV A,40H
CJNE A,#00H,LP1 //CLR P0.0
CLR P3.6 //ACALL D24S SETB P3.6
KP11: JB P2.6,KP11 //AJMP KP12 //LK8: ACALL D10MS
JB P2.6,CTCO //CLR P0.0
LK9: JNB P2.6,LK9 //KL10: JB P2.6,LK10 //SETB P0.0 //AJMP CTCO
秒钟个位回到0没有 秒钟个位送初值10 秒钟十位回到0没有 秒钟十位送初值5 分种个位回到0没有 分钟个位送初值9 分钟十位回到0没有 时间到发出警备24S 等待交换 去两队分数交换程序 计时暂停处理 等待键按下 等待键放开 继续计时
P3: DEC 42H //将秒钟十位减1 AJMP NEXT
LP1: DEC 40H //将分钟十位减1 AJMP NEXT
LP2: DEC 41H //将分钟个位减1
NEXT: MOV TL0,#0B0H //定时中断送初值返回 MOV TH0,#3CH RETI END