单片机C51篮球计时计分器课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

篮球赛计时计分器

一设计目的

设计并制作一个用于赛场的篮球赛计时计分器,实现如下基本功能:

(1)能记录整个赛程的比赛时间,并能修改比赛时间,暂停比赛时间。

(2)能随时刷新甲,乙两队在整个赛程中的比分。

(3)中场交换场地时,能交换甲,乙两队比分的位置。

(4)比赛时间结束时,能发出报警指令。

二设计意义

通过篮球计分计时器的制作,可以使我熟悉,了解单片机开发设计实例的过程,并能使读者加深对单片机的理解和运用以及掌握单片机与外围接口的一些方法和技巧,这主要表现在以下的一些方面:

(1)篮球计分计时器包含了8051系列单片机的最小应用系统的构成,同时在此基础上扩展了一些实用性强的外围接口。

(2)掌握键盘接口原理,能正确地把键盘使用到单片机系统中,可以了解到LED显示器的结构,工作原理以及这种显示器的接口实例。

(3)学会调试电路,分析电路故障,积累电路调试经验。

三具体设计内容

1 系统框图构成

基于单片机系统的篮球计分计时器的系统构成框图如下所示:

2硬件电路改进:

由于原来的电路比较复杂,用了很多芯片,浪费成本,而且给后期调试的调试会带来较多麻烦,故对原来的硬件电路进行了改动。改动方面主要关于数码管显示的驱动和位选的,前期的电路设计采用了大量的CD4511和CD4094来进行数码管显示的驱动和位选,而这次的电路设计只用了8个三极管就实现了这项功能。

下面前期电路设计的计时部分的原理图,还有更为复杂的计分原理图未给出

后期改进的整体原理图:

(3)软件调试及组装

软件的编程调试首先要抓住计分和计时两大模块,在这两大模块成功的基础上再进行其他细小模块的组装和完善。主要编程的问题,所以就概述就举例子概述一下

计分模块和计时模块刚开始均会出现显示数值范围不正确或者十位和个位二者之中只显示个位的情况,经软件调试,重新编程后成功的解决了问题。

I 上半场比赛结束,可按下交换比分按钮,交换甲乙两队的比分,重新调整计时时间为20分钟,按下启动按钮,下半场比赛开始

八 篮球赛计时计分器程序流程图及程序

开始定时清零甲乙两队分数清零设置定时启动键是否按下

定时时间到否

倒计时开始定时暂停键是否按下

K1,K2,K3,K4是否按下

对应甲乙两队加减分数

喇叭响10秒

交换键是否按下

甲乙两队交换分数并显示

Y

N

Y

Y

Y

Y

N

N

N

N

代码如下:

K1 B IT P1.0 K2 B IT P1.1

K3 BIT P1.2 K4 BIT P1.3 K5 B IT P1.4 K6 B IT P1.5

K7 BIT P1.6 K8 BIT P1.7

MIN EQU 30H SEC EQU 31H

SEC100 EQU 32H DIS_BUF EQU 33H BUF_MIN_H EQU DIS_BUF

BUF_MIN_L EQU DIS_BUF+1 BUF_SEC_H EQU DIS_BUF+2 BUF_SEC_L EQU DIS_BUF+3

K_OLD EQU 41H

K_NEW EQU 42H

DIS_DIGIT EQU 43H

DIS_INDEX EQU 44H

K_OLD1 EQU 45H

K_NEW1 EQU 46H

FLAG EQU 47H

CONVERT EQU 48H

ORG 0000H

JMP MAIN

ORG 0003H

LJMP INT_0

ORG 0000BH

LJMP TIMER0

ORG 0001BH

LJMP TIMER1

ORG 0030H

MAIN:

MOV SP,#60H

MOV P0,#0FFH

MOV P2,#0FFH

MOV TMOD,#011H

MOV TH0,#0FCH

MOV TL0,#017H

MOV TH1,#0DCH

CLR A

MOV TL1,A

MOV CONVERT,#00H

MOV CONVERT+1 ,#00H

MOV CONVERT+2,#00H

MOV CONVERT+3 ,#00H

CLR A

MOV MIN,#20

MOV SEC,A

MOV SEC100,A

MOV BUF_MIN_H,#0A4H

MOV BUF_MIN_L,#0C0H

MOV BUF_SEC_H,#0C0H

MOV BUF_SEC_L,#0C0H

MOV DIS_BUF+4,#0C0H

MOV DIS_BUF+5,#0C0H

MOV DIS_BUF+6,#0C0H

MOV DIS_BUF+7,#0C0H

MOV FLAG ,#00H

MOV K_OLD,#00H

BEEP_BL00: MOV R3,#10

MOV R2,#200

MAIN1100:

CPL p3.7

LCALL DELAY500

LCALL DELAY500

DJNZ R2,MAIN1100

CPL p3.6

LCALL DELAY500

LCALL DELAY500

LCALL DELAY500

MOV R2,#200

MAIN2100:

CPL p3.7

LCALL DELAY500

DJNZ R2,MAIN2100

DJNZ R3,MAIN1100

LJMP START

DELAY500:

MOV R7,#230

LOOP1:

DJNZ R7,LOOP1

RET

START: MOV DIS_DIGIT,#0FEH CLR A

MOV DIS_INDEX,A

SETB EA

SETB ET0

SETB TR0

SETB IT0

SETB EX0

SETB PT0

MAIN_LP:

CALL KEY_PROG

SJMP MAIN_LP

KEY_PROG:

CALL K_SCAN

MOV A,K_NEW

CJNE A,K_OLD,KEY_P1

JMP END_PROC_KEY KEY_P1:

相关文档
最新文档