设计题目:基于单片机的篮球比赛计分器 设计内容及要求: 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显示,安装方便。解决了篮球比赛计分器的安装问题,节约了线材,适合在各种规模的体育场馆使用,完全可以代替传统的用钟表进行计时的方法,当然稍加改动也可以用于其他球类比赛,是体育器材向智能化发展的一个实例。
目录
一. 设计的基本步骤及方案 ..................................3 1.AT89C51简介 ..................................3 2.数码管显示原理..................................3 3.总体方案..................................4 二. 硬件电路设计及描述..................................5 1. 硬件原理电路图..................................6 2. 硬件电路设计及描述.................................. 7 三. 软件设计思想及流程图..................................8 1 .主流程图.................................. 8 2.记分流程图.................................. 9 3.时间中断流程图..................................10 4.源程序代码见附录一..................................12 四.硬软件的调试过程及调试方法..................................12 五.课程设计心得体会..................................14 附录一 源程序代码..................................15
一.设计的基本步骤及方案 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 共阴极数码管显示
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:MOV R0,#34H MOV R3,#7FH MOV A,R3 PLAYF:MOV P2,A MOV A,@R0 MOV DPTR,#DSEG1 MOVC A,@A+DPTR MOV P0,A LCALL DL1 MOV P2,#0FFH MOV A,R3 RR A JNB ACC.3,LD1 INC R0 MOV R3,A LJMP PLAYF AJMP LD1 键盘扫描子程序 3. 时间中断流程图10 时间中断程序: TIME: PUSH ACC PUSH PSW MOV TH0,#0D8H MOV TL0,#0F0H DJNZ R2,RET0 MOV R2,#64H MOV A,20H CLR C DEC A MOV 20H,A MOV A,21H CJNE A,#00H,PFF ;;;;;;;;;非0分跳转;;;;;;;;;;;;;;;;; MOV A,20H CJNE A,#00H,PFF ;;;;;;;;;非0分0秒情况跳转;;;;;;;;;; CLR TR0 ;;;;;;;;;比赛结束停止计时;;;;;;;;;; MOV 20H,#00H MOV 21H,#00H MOV 32H,#00H MOV 33H,#00H LCALL MINGYIN MOV 21H,26H MOV 30H,#00H MOV 31H,#00H MOV 32H,24H MOV 33H,25H LJMP RET0 PFF: MOV A,20H CJNE A,#0FFH,OUT MOV 20H,#59 ; MOV 30H,#09H MOV 31H,#05H MOV A,21H DEC A MOV 21H,A OUT: MOV A,20H MOV B,#0AH DIV AB MOV 30H,B MOV 31H,A MOV A,21H MOV B,#0AH DIV AB MOV 32H,B MOV 33H,A RET0: POP PSW POP ACC RETI YANSHI:PUSH ACC ;定时器1中断 PUSH PSW MOV TH1,#0D8H MOV TL1,#0F0H DJNZ R2,RET1 MOV R2,#64H DJNZ 39H,RET1 MOV 39H,#03H ;TIAN HEIHEI MOV R2,#64H CLR TR1 CLR P3.6 RET1: POP PSW POP ACC RETI 时间显示程序: DISPT: MOV R0,#30H MOV R3,#0F7H MOV A,R3 PLAYT:MOV P2,A MOV A,@R0 MOV DPTR,#DSEG1 MOVC A,@A+DPTR MOV P0,A LCALL DL1 MOV P2,#0FFH MOV A,R3 RR A JNB ACC.7,LD1 INC R0 MOV R3,A LJMP PLAYT 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进行两队分数调整 五.课程设计心得体会 俗话说:好的开始是成功的一半。说起课程设计,最重要的就是做好设计的预习,认真的研究老师给的题目,选一个自己感兴趣的题目。其次,老师对课程设计的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍。最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。 本次设计,我查阅了相关书籍,做好各项准备后才开始进行设计,本次设计测试结果以及不足之处:计时电路可完成倒计时、暂停、继续等功能,在比赛时间到后可进行报警。记分电路工作正常,可完成对比分的刷新与暂存。但在测试过程中发现,在比赛上半场时间到后,不能进行比分的交换。进行分析后得出结论如下:系统电路部分设计没有原则性的错误,在制版的过程中注意了走线,因此硬件部分功能完好。但因为软件系统编写方面的疏忽,在比分交换及计时部分没有能很好的实现。除此之外,软件达到了系统的要求。 通过课程设计,发现了我们的很多不足,我们知识的很多漏洞,看到了我们的实践经验还是比较缺乏,理论联系实际的能力还急需提高。在这个过程中,我们也曾经因为实践经验的缺乏失落过,也曾经仿真成功而热情高涨。通过单片机课程设计,我们加深了对单片机理论的理解,学回了怎样将理论很好地应用到实际当中去,而且我们还学会了如何去培养我们的不畏困难的挑战精神,从而不断地战胜自己,超越自己,我们在这一设计过程中,学会了坚持不懈,不轻易言弃。设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。 此次课程设计充分锻炼了我们的设计能力和团队合作能力,给我们注入了一些全新的认识,为我们以后的设计和实验奠定了基础,也为引导我们以理论结合实践起到重要意义。
单片机源程序如下:
- ORG 0000H
- LJMP MAIN
- ORG 0003H
- LJMP CHANGE
- ORG 000BH
- LJMP TIME
- ORG 0013H
- LJMP TIAOSHI
- ORG 001BH
- LJMP YANSHI
- MAIN: MOV SP,#50H
- MOV TCON,#04H
- MOV 20H,#00H ;秒
- MOV 21H,#0CH ;分
- MOV 22H,#00H ;;;;;;;;;A队分数;;;;;;;;;;;;;;;;;
- MOV 23H,#00H ;;;;;;;;;;B队分数;;;;;;;;;;;
- MOV 24H,#02H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- MOV 25H,#01H
- MOV 26H,#0CH ;;;;;;;;;;;分钟定时区;;;;;;;
- MOV 30H,#00H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- MOV 31H,#00H ;;;;;;;;;时间缓冲区;;;;;;;;;;
- MOV 32H,#02H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- MOV 33H,#01H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- MOV 34H,#00H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- MOV 35H,#00H ;;;;;;;;分数显示缓冲区;;;;;;;
- MOV 36H,#00H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- MOV 37H,#00H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- MOV 39H,#03H ;TIAN HEIHEI
- MOV TMOD,#11H
- MOV TH0,#0D8H
- MOV TL0,#0F0H
- MOV TH1,#0D8H
- MOV TL1,#0F0H
- MOV IE,#10001111B
- MOV IP,#05H
- MOV R2,#64H
- CLR P3.6
- START:LCALL DISPT
- LCALL DISPF
- JNB P1.0,PP1 ;A队加一分
- JNB P1.1,PP2 ;A队加两分
- JNB P1.2,PP3 ;A队加三分
- JNB P1.3,PP4 ;A队减一分
- JNB P1.4,PP55 ;B队加一分
- JNB P1.5,PP66 ;B队加两分
- JNB P1.6,PP77 ;B队加三分
- JNB P1.7,PP88 ;B队减一分
- JB P3.0,START
- LCALL DELAY
- JB P3.0,START
- STOP1:JNB P3.0,STOP1
- LCALL DELAY
- JNB P3.0,STOP1
- CPL TR0 ;按键奇数次开始,偶数次暂停
- LJMP START
- PP55: LJMP PP5
- PP66: LJMP PP6
- PP77: LJMP PP7
- PP88: LJMP PP8
- PP1: LCALL DELAY
- JB P1.0,PPB
- STOP11:JNB P1.0,STOP11
- LCALL DELAY
- JNB P1.0,STOP11
- INC 22H
- MOV A,22H
- LJMP STOREA
- PP2: LCALL DELAY
- JB P1.1,PPB
- STOP22:JNB P1.1,STOP22
- LCALL DELAY
- JNB P1.1,STOP22
- MOV A,22H
- ADD A,#02
- MOV 22H,A
- LJMP STOREA
- PP3: LCALL DELAY
- JB P1.2,PPB
- STOP33:JNB P1.2,STOP33
- LCALL DELAY
- JNB P1.2,STOP33
- MOV A,22H
- ADD A,#03
- MOV 22H,A
- LJMP STOREA
- PP4: LCALL DELAY
- JB P1.3,PPB
- STOP44:JNB P1.3,STOP44
- LCALL DELAY
- JNB P1.3,STOP44
- DEC 22H
- MOV A,22H
- STOREA:MOV B,#0AH
- DIV AB
- MOV 34H,B
- MOV 35H,A
- PPB: LJMP START
- PP5: LCALL DELAY
- JB P1.4,PPC
- STOP55:JNB P1.4,STOP55
- LCALL DELAY
- JNB P1.4,STOP55
- INC 23H
- MOV A,23H
- LJMP STOREB
- PP6: LCALL DELAY
- JB P1.5,PPC
- STOP66:JNB P1.5,STOP66
- LCALL DELAY
- JNB P1.5,STOP66
- MOV A,23H
- ADD A,#02
- MOV 23H,A
- LJMP STOREB
- PP7: LCALL DELAY
- JB P1.6,PPC
- STOP77:JNB P1.6,STOP77
- LCALL DELAY
- JNB P1.6,STOP77
- MOV A,23H
- ADD A,#03
- MOV 23H,A
- LJMP STOREB
- PP8: LCALL DELAY
- JB P1.7,PPC
- STOP88:JNB P1.7,STOP88
- LCALL DELAY
- JNB P1.7,STOP88
- DEC 23H
- MOV A,23H
- STOREB:MOV B,#0AH
- DIV AB
- MOV 36H,B
- MOV 37H,A
- PPC: LJMP START
- DELAY:MOV R4,#5H
- DL00: MOV R5,#0FFH
- DL11: DJNZ R5,DL11
- DJNZ R4,DL00
- RET
- ;;;;;;;;;;;;;;;;;;时间中断程序;;;;;;;;;;;;;;;
- TIME: PUSH ACC
- PUSH PSW
- MOV TH0,#0D8H
- MOV TL0,#0F0H
- DJNZ R2,RET0
- MOV R2,#64H
- MOV A,20H
- CLR C
- DEC A
- MOV 20H,A
- MOV A,21H
- CJNE A,#00H,PFF ;;;;;;;;;非0分跳转;;;;;;;;;;;;;;;;;
- MOV A,20H
- CJNE A,#00H,PFF ;;;;;;;;;非0分0秒情况跳转;;;;;;;;;;
- CLR TR0 ;;;;;;;;;比赛结束停止计时;;;;;;;;;;
- MOV 20H,#00H
- MOV 21H,#00H
- MOV 32H,#00H
- MOV 33H,#00H
- LCALL MINGYIN
- MOV 21H,26H
- MOV 30H,#00H
- MOV 31H,#00H
- MOV 32H,24H
- MOV 33H,25H
- LJMP RET0
- PFF: MOV A,20H
- CJNE A,#0FFH,OUT
- MOV 20H,#59 ;
- MOV 30H,#09H
- MOV 31H,#05H
- MOV A,21H
- DEC A
- MOV 21H,A
- OUT: MOV A,20H
- MOV B,#0AH
- DIV AB
- MOV 30H,B
- MOV 31H,A
- MOV A,21H
- MOV B,#0AH
- DIV AB
- MOV 32H,B
- MOV 33H,A
- RET0: POP PSW
- POP ACC
- RETI
- YANSHI:PUSH ACC ;定时器1中断
- PUSH PSW
- MOV TH1,#0D8H
- MOV TL1,#0F0H
- DJNZ R2,RET1
- MOV R2,#64H
- DJNZ 39H,RET1
- MOV 39H,#03H ;TIAN HEIHEI
- MOV R2,#64H
- CLR TR1
- CLR P3.6
- RET1: POP PSW
- POP ACC
- RETI
- ;;;;;;;;;;;;;;鸣音子程序;;;;;;;;;;;;
- MINGYIN: SETB P3.6
- SETB TR1
- RETI
- ;;;;;;;时间显示程序;;;;;;;;;;;
- DISPT: MOV R0,#30H
- MOV R3,#0F7H
- MOV A,R3
- PLAYT:MOV P2,A
- MOV A,@R0
- MOV DPTR,#DSEG1
- MOVC A,@A+DPTR
- MOV P0,A
- LCALL DL1
- MOV P2,#0FFH
- MOV A,R3
- RR A
- JNB ACC.7,LD1
- INC R0
- MOV R3,A
- LJMP PLAYT
- LD1: RET
- ;;;;;;;;;;比分显示程序;;;;;;;;;;;;;;
- DISPF:MOV R0,#34H
- MOV R3,#7FH
- MOV A,R3
- PLAYF:MOV P2,A
- MOV A,@R0
- MOV DPTR,#DSEG1
- MOVC A,@A+DPTR
- MOV P0,A
- LCALL DL1
- MOV P2,#0FFH
- MOV A,R3
- RR A
- JNB ACC.3,LD1
- INC R0
- MOV R3,A
- LJMP PLAYF
- AJMP LD1
- ;;;;;;;;;;调时时间显示程序;;;;;;;;;;
- DISPW: MOV R0,#24H
- MOV R3,#0F7H
- MOV A,R3
- PLAYW:MOV P2,A
- MOV A,@R0
- MOV DPTR,#DSEG1
- MOVC A,@A+DPTR
- MOV P0,A
- LCALL DL1
- MOV P2,#0FFH
- MOV A,R3
- RR A
- JNB ACC.1,LD1
- INC R0
- MOV R3,A
- LJMP PLAYW
- DL1: MOV R7,#05H
- DL: MOV R6,#0FFH
- DL6: DJNZ R6,DL6
- DJNZ R7,DL
- RET
- DSEG1:DB 3FH,06H,5BH,4FH,66H
- DB 6DH,7DH,07H,7FH,6FH
- ;;;;;;;;;调时子程序;;;;;;;;;;;;;
- TIAOSHI:PUSH ACC
- PUSH PSW
- JB P3.3,CHU
- LCALL DELAY
- JB P3.3,CHU
- STOPQ:JNB P3.3,STOPQ
- LCALL DELAY
- JNB P3.3,STOPQ
- IF10: LCALL DISPW
- LCALL DISPF
- JNB P1.3,DECT
- JB P1.0,WHAIT2
- LCALL DELAY
- JB P1.0,WHAIT2
- STOPE:MOV C,P1.0
- JNC STOPE
- LCALL DELAY
- MOV C,P1.0
- JNC STOPE
- INC 26H
- LJMP STORE
- DECT: MOV C,P1.3
- LCALL DELAY
- JC WHAIT2
- STOPY:MOV C,P1.3
- JNC STOPY
- LCALL DELAY
- MOV C,P1.3
- JNC STOPY
- DEC 26H
- STORE: MOV 21H,26H
- MOV 20H,#00H
- MOV A,26H
- MOV B,#0AH
- DIV AB
- MOV 24H,B
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
篮球计分器.docx
(260.56 KB, 下载次数: 247)
|