基于单片机的篮球记分器.docx
《基于单片机的篮球记分器.docx》由会员分享,可在线阅读,更多相关《基于单片机的篮球记分器.docx(34页珍藏版)》请在冰豆网上搜索。
基于单片机的篮球记分器
学号:
201025090229
中州大学毕业设计
设计题目:
基于单片机的篮球计分器的设计
学院:
工程技术学院
专业:
机电一体化对口班级二班
姓名:
周康
指导教师:
沈娣丽
日期:
2013年4月22日
诚信声明
本人郑重声明:
所提交的毕业设计(论文)是本人在指导教师的指导下,独立工作所取得的成果并撰写完成的,郑重确认没有剽窃、抄袭等违反学术道德、学术规范的侵权行为。
文中除已经标注引用的内容外,不包含其他人或集体已经发表或撰写过的研究成果。
对本文的研究做出重要贡献的个人和集体,均已在文中作了明确的说明并表示了谢意。
本人完全意识到本声明的法律后果由本人承担。
毕业设计(论文)作者签名:
指导导师签名:
签字日期:
签字日期:
毕业设计任务书
班级:
学生:
学号
设计题目:
设计内容及要求:
1)设计一款显示篮球比分的记分牌;
2)通过加分按钮可以给A队,或B队加分;
3)设计对调功能,更换场地后,AB队分数互换;
4)计时:
能实现0~99分和0~59秒任意调整,具有启动、暂停、复位功能;
5)秒计时:
能实现0~99秒任意调整,具有启动、暂停、复位功能;
6)增加局数比分功能;
7)增加比赛时间倒计时功能;
8)报警:
0~99秒违例自动声、光报警:
0~99分终场自动声响;
9)可实现A、B两队暂停次数和犯规的显示和任意加减;
指导老师(签字):
年月日
摘要:
本设计是采用单片机AT89C51作为本设计的核心元件。
利用7段共阴LED作为显示器件。
在此设计中共接入了8个7段共阴LED显示器,其中4个用于记录AB队的分数,每队2个LED显示器显示范围可达到0~99分,足够满足赛程需要,另外4个LED显示器则用来记录赛程时间,其中2个用于显示分钟,2个用于显示秒钟。
赛程计时采用倒计时方式。
即比赛前将时间设置好,比赛开始时启动计时,直至计时到零为止。
计时范围可达到0~99分钟,也完全满足实际赛程的需要。
当比赛队A队得1分时,按下A+1键;得2分时,按下A+2键;得3分时,按下A+3键;当加分出现错误时,可以按A-1键减1分,可以达到调整分数的作用;依照同样的方法可以记录B队的得分。
采用单片机控制使这个系统按键操作使用简洁,LED显示,安装方便。
解决了篮球比赛计分器的安装问题,节约了线材,适合在各种规模的体育场馆使用,完全可以代替传统的用钟表进行计时的方法,当然稍加改动也可以用于其他球类比赛,是体育器材向智能化发展的一个实例。
关键词:
单片机篮球计分器数码管
序言
51系列单片机有许多制造商,而国产宏晶科技的STC系列单片机使用更为方便,可有效减少外隔器件的数量,并支持ISP功
能,可通过串口下载用户应用程序,数秒就可完成一片。
数码管和键盘驱动电路可以使用逻辑电路搭建,但这种方法用到的器件多,
造成接口的浪费,使电路的抗干扰能力弱,不便于使用。
南京沁恒公司的数码管、键盘驱动芯片AT89C5I有效地解决了这个问题,既减少了器件数目,又提供了相应电路的许多常用功能,便于编程实现。
通过采用以上两种芯片,大大简化r没汁,既方便了后续程序的
程序开发,也很好地控制了成本
一.设计的基本步骤及方案...................................6
1.AT89C51简介.........................................6
2.数码管显示原理........................................6
3.总体方案..............................................8
二.硬件电路设计及描述......................................9
1.硬件原理电路图........................................9
2.硬件电路设计及描述...................................10
三.软件设计思想及流程图....................................11
1.主流程图..............................................11
2.记分流程图............................................12
3.时间中断流程图.........................................13
4.源程序代码见附录一.....................................16
四.硬软件的调试过程及调试方法.............................16
五.课程设计心得体会.......................................18
附录一源程序代码..........................................19
六.参考文献.................................................29
一.设计的基本步骤及方案
1.AT89C51简介
单片机是在一块芯片中集成了CPU、RAM、ROM、定时/计数器和多功能I/O口等计算机所需要的基本部件的大规模集成电路。
其以体积小、功能全、性价比高等诸多优点而独具特色,在工业控制、尖端武器、通信设备、家用电器等嵌入式应用领域中独占鳌头。
如果说C语言程序设计课程设计软件设计的基础课,那么单片机以其系统硬件构架完整、价格低廉、学生能动手等特点,成为工科学生硬件设计基础课。
2.数码管显示原理
数码管实际上是由7个发光管组成8字形构成的,加上小数点就是8个。
我们分别把他命名为A,B,C,D,E,F,G,H。
图1数码管内部结构图
假设我们要显示一个数字2,那么A、B、G、E、D这5个段的发光管亮就可以了,C、F、H不亮,同时由于接法为共阴接法,那么为高电平是亮,低电平是灭。
从高往低排列,P1.7-P1.0写成二进制为01011011,把他转化为16进制则为5BH。
我们可以根据硬件的接线把数码管显示数字编制成一个表格,见下表,以后直接调用就行了。
数码管的接口有静态接口和动态接口两种。
静态接口为固定显示方式,无闪烁,其电路可采用一个并行口接一个数码管,数码管的公共端按共阴接GND,本次课程设计由于所需数码管不多,故可用些种方法接线。
这种接法占用接口多,仅能接少量数码管。
动态接口采用各数码管循环轮流显示的方法,当循环显示的频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出,另一接口完成各数码管的轮流点亮。
多位一体的数码管原理和单个的差不多。
表2共阴极数码管显示
显示
P1.7
小数点
P1.6
G
P1.5小F
P1.4
E
P1.3
D
P1.2
C
P1.1
B
P1.0
A
HE代码
0
0
0
1
1
1
1
1
1
3FH
1
0
0
0
0
0
1
1
0
06H
2
0
1
0
1
1
0
1
1
5BH
3
0
1
0
0
1
1
1
1
4FH
4
0
1
1
0
0
1
1
0
66H
5
0
1
1
0
1
1
0
1
6DH
6
0
1
1
1
1
1
0
1
7DH
7
0
0
0
0
0
1
1
1
07H
8
0
1
1
1
1
1
1
1
7FH
9
0
1
1
0
1
1
1
1
6FH
3.总体方案:
基于单片机系统的篮球赛计时计分器的系统构成图如下图所示:
图3系统结构图
本系统采用单片机AT89C51作为AT89C51本设计的核心元件。
利用7段共阴LED作为显示器件。
在此设计中共接入了8个7段共阴LED显示器,其中4个用于记录AB队的分数,每队2个LED显示器显示范围可达到0~99分,足够满足赛程需要,另外4个LED显示器则用来记录赛程时间,其中2个用于显示分钟,2个用于显示秒钟。
赛程计时采用到计时方式。
即比赛前将时间设置好,比赛开始时启动计时,直至计时到零为止。
计时范围可达到0~99分钟,也完全满足实际赛程的需要。
其次,为了配合计时器和计分器校正调整时间和比分,我们特定在本设计中设立了11个按键,其中8个用于设置,交换场地,启动和暂停等功能。
二.硬件电路设计及描述
1.硬件原理电路
系统硬件图如下图4所示:
记分图如下图5所示:
计时图如下图6所示:
2.硬件电路设计及描述
硬件部分的设计是整个设计中的一个重要部分。
在进行硬件部分设计时,首先要确定元器件,并且知道这些器件的工作原理和功能。
然后才可以进行设计。
本设计的硬件电路包括两部分:
计时电路、计分电路。
硬件电部分的设计除了硬件电路的设计,还包括PCB板的绘制。
三.软件思想及流程
1.主流程图8:
2.记分流程图9:
比分显示程序:
DISPF:
MOVR0,#34H
MOVR3,#7FH
MOVA,R3
PLAYF:
MOVP2,A
MOVA,@R0
MOVDPTR,#DSEG1
MOVCA,@A+DPTR
MOVP0,A
LCALLDL1
MOVP2,#0FFH
MOVA,R3
RRA
JNBACC.3,LD1
INCR0
MOVR3,A
LJMPPLAYF
AJMPLD1
键盘扫描子程序
3.时间中断流程图10
时间中断程序:
TIME:
PUSHACC
PUSHPSW
MOVTH0,#0D8H
MOVTL0,#0F0H
DJNZR2,RET0
MOVR2,#64H
MOVA,20H
CLRC
DECA
MOV20H,A
MOVA,21H
CJNEA,#00H,PFF;;;;;;;;;非0分跳转;;;;;;;;;;;;;;;;;
MOVA,20H
CJNEA,#00H,PFF;;;;;;;;;非0分0秒情况跳转;;;;;;;;;;
CLRTR0;;;;;;;;;比赛结束停止计时;;;;;;;;;;
MOV20H,#00H
MOV21H,#00H
MOV32H,#00H
MOV33H,#00H
LCALLMINGYIN
MOV21H,26H
MOV30H,#00H
MOV31H,#00H
MOV32H,24H
MOV33H,25H
LJMPRET0
PFF:
MOVA,20H
CJNEA,#0FFH,OUT
MOV20H,#59;
MOV30H,#09H
MOV31H,#05H
MOVA,21H
DECA
MOV21H,A
OUT:
MOVA,20H
MOVB,#0AH
DIVAB
MOV30H,B
MOV31H,A
MOVA,21H
MOVB,#0AH
DIVAB
MOV32H,B
MOV33H,A
RET0:
POPPSW
POPACC
RETI
YANSHI:
PUSHACC;定时器1中断
PUSHPSW
MOVTH1,#0D8H
MOVTL1,#0F0H
DJNZR2,RET1
MOVR2,#64H
DJNZ39H,RET1
MOV39H,#03H;TIANHEIHEI
MOVR2,#64H
CLRTR1
CLRP3.6
RET1:
POPPSW
POPACC
RETI
时间显示程序:
DISPT:
MOVR0,#30H
MOVR3,#0F7H
MOVA,R3
PLAYT:
MOVP2,A
MOVA,@R0
MOVDPTR,#DSEG1
MOVCA,@A+DPTR
MOVP0,A
LCALLDL1
MOVP2,#0FFH
MOVA,R3
RRA
JNBACC.7,LD1
INCR0
MOVR3,A
LJMPPLAYT
LD1:
RET
4.源程序代码见附录一
四.硬软件的调试过程及调试方法
1.进入比赛,先设置时间为一节或者半场。
默认是12分钟(按下“A+1”进行分钟加1,按下“A-1”进行分钟减1),如图11
图11
2.按下“K1”开始比赛或者暂停,如图12
3.上面的液晶显示为计时显示。
下面的液晶显示为分数显示“左侧为攻左半场的队的分数,右侧为攻右半场的对的分数。
”换场后依然如此。
4.按下“K2”交换场地,重新计时。
5.A+1,A+2,A+3,A-1,B+1,B+2,B+3,B-1进行两队分数调整
五.课程设计心得体会
俗话说:
好的开始是成功的一半。
说起课程设计,最重要的就是做好设计的预习,认真的研究老师给的题目,选一个自己感兴趣的题目。
其次,老师对课程设计的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍。
最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。
本次设计,我查阅了相关书籍,做好各项准备后才开始进行设计,本次设计测试结果以及不足之处:
计时电路可完成倒计时、暂停、继续等功能,在比赛时间到后可进行报警。
记分电路工作正常,可完成对比分的刷新与暂存。
但在测试过程中发现,在比赛上半场时间到后,不能进行比分的交换。
进行分析后得出结论如下:
系统电路部分设计没有原则性的错误,在制版的过程中注意了走线,因此硬件部分功能完好。
但因为软件系统编写方面的疏忽,在比分交换及计时部分没有能很好的实现。
除此之外,软件达到了系统的要求。
通过课程设计,发现了我们的很多不足,我们知识的很多漏洞,看到了我们的实践经验还是比较缺乏,理论联系实际的能力还急需提高。
在这个过程中,我们也曾经因为实践经验的缺乏失落过,也曾经仿真成功而热情高涨。
通过单片机课程设计,我们加深了对单片机理论的理解,学回了怎样将理论很好地应用到实际当中去,而且我们还学会了如何去培养我们的不畏困难的挑战精神,从而不断地战胜自己,超越自己,我们在这一设计过程中,学会了坚持不懈,不轻易言弃。
设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。
此次课程设计充分锻炼了我们的设计能力和团队合作能力,给我们注入了一些全新的认识,为我们以后的设计和实验奠定了基础,也为引导我们以理论结合实践起到重要意义。
附录一:
源程序代码
ORG0000H
LJMPMAIN
ORG0003H
LJMPCHANGE
ORG000BH
LJMPTIME
ORG0013H
LJMPTIAOSHI
ORG001BH
LJMPYANSHI
MAIN:
MOVSP,#50H
MOVTCON,#04H
MOV20H,#00H;秒
MOV21H,#0CH;分
MOV22H,#00H;;;;;;;;;A队分数;;;;;;;;;;;;;;;;;
MOV23H,#00H;;;;;;;;;;B队分数;;;;;;;;;;;
MOV24H,#02H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV25H,#01H
MOV26H,#0CH;;;;;;;;;;;分钟定时区;;;;;;;
MOV30H,#00H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV31H,#00H;;;;;;;;;时间缓冲区;;;;;;;;;;
MOV32H,#02H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV33H,#01H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV34H,#00H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV35H,#00H;;;;;;;;分数显示缓冲区;;;;;;;
MOV36H,#00H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV37H,#00H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV39H,#03H;TIANHEIHEI
MOVTMOD,#11H
MOVTH0,#0D8H
MOVTL0,#0F0H
MOVTH1,#0D8H
MOVTL1,#0F0H
MOVIE,#10001111B
MOVIP,#05H
MOVR2,#64H
CLRP3.6
START:
LCALLDISPT
LCALLDISPF
JNBP1.0,PP1;A队加一分
JNBP1.1,PP2;A队加两分
JNBP1.2,PP3;A队加三分
JNBP1.3,PP4;A队减一分
JNBP1.4,PP55;B队加一分
JNBP1.5,PP66;B队加两分
JNBP1.6,PP77;B队加三分
JNBP1.7,PP88;B队减一分
JBP3.0,START
LCALLDELAY
JBP3.0,START
STOP1:
JNBP3.0,STOP1
LCALLDELAY
JNBP3.0,STOP1
CPLTR0;按键奇数次开始,偶数次暂停
LJMPSTART
PP55:
LJMPPP5
PP66:
LJMPPP6
PP77:
LJMPPP7
PP88:
LJMPPP8
PP1:
LCALLDELAY
JBP1.0,PPB
STOP11:
JNBP1.0,STOP11
LCALLDELAY
JNBP1.0,STOP11
INC22H
MOVA,22H
LJMPSTOREA
PP2:
LCALLDELAY
JBP1.1,PPB
STOP22:
JNBP1.1,STOP22
LCALLDELAY
JNBP1.1,STOP22
MOVA,22H
ADDA,#02
MOV22H,A
LJMPSTOREA
PP3:
LCALLDELAY
JBP1.2,PPB
STOP33:
JNBP1.2,STOP33
LCALLDELAY
JNBP1.2,STOP33
MOVA,22H
ADDA,#03
MOV22H,A
LJMPSTOREA
PP4:
LCALLDELAY
JBP1.3,PPB
STOP44:
JNBP1.3,STOP44
LCALLDELAY
JNBP1.3,STOP44
DEC22H
MOVA,22H
STOREA:
MOVB,#0AH
DIVAB
MOV34H,B
MOV35H,A
PPB:
LJMPSTART
PP5:
LCALLDELAY
JBP1.4,PPC
STOP55:
JNBP1.4,STOP55
LCALLDELAY
JNBP1.4,STOP55
INC23H
MOVA,23H
LJMPSTOREB
PP6:
LCALLDELAY
JBP1.5,PPC
STOP66:
JNBP1.5,STOP66
LCALLDELAY
JNBP1.5,STOP66
MOVA,23H
ADDA,#02
MOV23H,A
LJMPSTOREB
PP7:
LCALLDELAY
JBP1.6,PPC
STOP77:
JNBP1.6,STOP77
LCALLDELAY
JNBP1.6,STOP77
MOVA,23H
ADDA,#03
MOV23H,A
LJMPSTOREB
PP8:
LCALLDELAY
JBP1.7,PPC
STOP88:
JNBP1.7,STOP88
LCALLDELAY
JNBP1.7,STOP88
DEC23H
MOVA,23H
STOREB:
MOVB,#0AH
DIVAB
MOV36H,B
MOV37H,A
PPC:
LJMPSTART
DELAY:
MOVR4,#5H
DL00:
MOVR5,#0FFH
DL11:
DJNZR5,DL11
DJNZR4,DL00
RET
;;;;;;;;;;;;;;;;;;时间中断程序;;;;;;;;;;;;;;;
TIME:
PUSHACC
PUSHPSW
MOVTH0,#0D8H
MOVTL0,#0F0H
DJNZR2,RET0
MOVR2,#64H
MOVA,20H
CLRC
DECA
MOV20H,A
MOVA,21H
CJNEA,#00H,PFF;;;;;;;;;非0分跳转;;;;;;;;;;;;;;;;;
MOVA,20H