单片机C篮球计计分器.docx

上传人:b****1 文档编号:2659795 上传时间:2023-05-04 格式:DOCX 页数:22 大小:142.92KB
下载 相关 举报
单片机C篮球计计分器.docx_第1页
第1页 / 共22页
单片机C篮球计计分器.docx_第2页
第2页 / 共22页
单片机C篮球计计分器.docx_第3页
第3页 / 共22页
单片机C篮球计计分器.docx_第4页
第4页 / 共22页
单片机C篮球计计分器.docx_第5页
第5页 / 共22页
单片机C篮球计计分器.docx_第6页
第6页 / 共22页
单片机C篮球计计分器.docx_第7页
第7页 / 共22页
单片机C篮球计计分器.docx_第8页
第8页 / 共22页
单片机C篮球计计分器.docx_第9页
第9页 / 共22页
单片机C篮球计计分器.docx_第10页
第10页 / 共22页
单片机C篮球计计分器.docx_第11页
第11页 / 共22页
单片机C篮球计计分器.docx_第12页
第12页 / 共22页
单片机C篮球计计分器.docx_第13页
第13页 / 共22页
单片机C篮球计计分器.docx_第14页
第14页 / 共22页
单片机C篮球计计分器.docx_第15页
第15页 / 共22页
单片机C篮球计计分器.docx_第16页
第16页 / 共22页
单片机C篮球计计分器.docx_第17页
第17页 / 共22页
单片机C篮球计计分器.docx_第18页
第18页 / 共22页
单片机C篮球计计分器.docx_第19页
第19页 / 共22页
单片机C篮球计计分器.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机C篮球计计分器.docx

《单片机C篮球计计分器.docx》由会员分享,可在线阅读,更多相关《单片机C篮球计计分器.docx(22页珍藏版)》请在冰点文库上搜索。

单片机C篮球计计分器.docx

单片机C篮球计计分器

单片机微机原理及应用

课目:

篮球记分牌的设计

学院:

电气工程学院

班级:

自动化08-2

姓名:

库万古丽(20082102427)

麦地楠木(20082102426)

指导教师:

帕子来提

完成时间:

2011年12月11日

 

篮球赛计时计分器

一设计目的

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

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

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

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

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

二设计意义

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

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

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

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

三具体设计内容

1系统框图构成

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

2硬件电路改进:

由于原来的电路比较复杂,用了很多芯片,浪费成本,而且给后期调试的调试会带来较多麻烦,故对原来的硬件电路进行了改动。

改动方面主要关于数码管显示的驱动和位选的,前期的电路设计采用了大量的CD4511和CD4094来进行数码管显示的驱动和位选,而这次的电路设计只用了8个三极管就实现了这项功能。

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

后期改进的整体原理图:

 

(3)软件调试及组装

软件的编程调试首先要抓住计分和计时两大模块,在这两大模块成功的基础上再进行其他细小模块的组装和完善。

主要编程的问题,所以就概述就举例子概述一下

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

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

 

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

代码如下:

K1BITP1.0

K2BITP1.1

K3BITP1.2

K4BITP1.3

K5BITP1.4

K6BITP1.5

K7BITP1.6

K8BITP1.7

MINEQU30H

SECEQU31H

SEC100EQU32H

DIS_BUFEQU33H

BUF_MIN_HEQUDIS_BUF

BUF_MIN_LEQUDIS_BUF+1

BUF_SEC_HEQUDIS_BUF+2

BUF_SEC_LEQUDIS_BUF+3

K_OLDEQU41H

K_NEWEQU42H

DIS_DIGITEQU43H

DIS_INDEXEQU44H

K_OLD1EQU45H

K_NEW1EQU46H

FLAGEQU47H

CONVERTEQU48H

ORG0000H

JMPMAIN

ORG0003H

LJMPINT_0

ORG0000BH

LJMPTIMER0

ORG0001BH

LJMPTIMER1

ORG0030H

MAIN:

MOVSP,#60H

MOVP0,#0FFH

MOVP2,#0FFH

MOVTMOD,#011H

MOVTH0,#0FCH

MOVTL0,#017H

MOVTH1,#0DCH

CLRA

MOVTL1,A

MOVCONVERT,#00H

MOVCONVERT+1,#00H

MOVCONVERT+2,#00H

MOVCONVERT+3,#00H

CLRA

MOVMIN,#20

MOVSEC,A

MOVSEC100,A

MOVBUF_MIN_H,#0A4H

MOVBUF_MIN_L,#0C0H

MOVBUF_SEC_H,#0C0H

MOVBUF_SEC_L,#0C0H

MOVDIS_BUF+4,#0C0H

MOVDIS_BUF+5,#0C0H

MOVDIS_BUF+6,#0C0H

MOVDIS_BUF+7,#0C0H

MOVFLAG,#00H

MOVK_OLD,#00H

BEEP_BL00:

MOVR3,#10

MOVR2,#200

MAIN1100:

CPLp3.7

LCALLDELAY500

LCALLDELAY500

DJNZR2,MAIN1100

CPLp3.6

LCALLDELAY500

LCALLDELAY500

LCALLDELAY500

MOVR2,#200

MAIN2100:

CPLp3.7

LCALLDELAY500

DJNZR2,MAIN2100

DJNZR3,MAIN1100

LJMPSTART

DELAY500:

MOVR7,#230

LOOP1:

DJNZR7,LOOP1

RET

START:

MOVDIS_DIGIT,#0FEH

CLRA

MOVDIS_INDEX,A

SETBEA

SETBET0

SETBTR0

SETBIT0

SETBEX0

SETBPT0

MAIN_LP:

CALLKEY_PROG

SJMPMAIN_LP

KEY_PROG:

CALLK_SCAN

MOVA,K_NEW

CJNEA,K_OLD,KEY_P1

JMPEND_PROC_KEY

KEY_P1:

MOVR4,#15

KEY_P2:

MOVR7,#10

CALLDELAYMS

DJNZR4,KEY_P2

CALLK_SCAN

MOVA,K_NEW

CJNEA,K_OLD,KEY_P3

JMPEND_PROC_KEY

KEY_P3:

JBACC.0,PROC_K1

JBACC.1,PROC_K2

JBACC.2,PROC_K3

JBACC.3,PROC_K4

LJMPEND_PROC_KEY

PROC_K1:

LCALLBEEP_BL001

INCMIN

MOVA,MIN;

CJNEA,#100,UPDATE_MIN21

MOVMIN,#00H

UPDATE_MIN21:

MOVA,MIN

MOVB,#10

DIVAB;A=MIN/10

MOVDPTR,#DIS_CODE

MOVCA,@A+DPTR

MOVBUF_MIN_H,A

MOVA,MIN

MOVB,#10

DIVAB

MOVA,B

MOVCA,@A+DPTR

MOVBUF_MIN_L,A

SJMPEND_PROC_KEY

PROC_K2:

LCALLBEEP_BL001

DECMIN

MOVA,MIN

CJNEA,#255,UPDATE_MIN1

MOVMIN,#99

UPDATE_MIN1:

MOVA,MIN

MOVB,#10

DIVAB

MOVDPTR,#DIS_CODE

MOVCA,@A+DPTR

MOVBUF_MIN_H,A

MOVA,MINL

MOVB,#10

DIVAB

MOVA,B

MOVCA,@A+DPTR

MOVBUF_MIN_L,A

SJMPEND_PROC_KEY

PROC_K3:

LCALLBEEP_BL001

PUSHPSW

INCFLAG

MOVA,FLAG

RRCA

JNCSTOP

CLRP3.6

SETBET1

SETBTR1

POPPSW

SJMPEND_PROC_KEY

STOP:

SETBP3.6

CLRET1

CLRTR1

POPPSW

SJMPEND_PROC_KEY

PROC_K4:

LCALLBEEP_BL001

MOVR3,CONVERT+1

MOVCONVERT+1,CONVERT+3

MOVCONVERT+3,R3

MOVR3,CONVERT

MOVCONVERT,CONVERT+2

MOVCONVERT+2,R3

LCALLCONVETER

END_PROC_KEY:

RET

;键扫描子程序

K_SCAN:

MOVP1,#0FFH

MOVK_NEW,#00H

MOVA,P1

CPLA

ANLA,#0F0H

SWAPA

MOVK_NEW,A

RET

USING0

TIMER0:

;定时器0中断服程序,用于数码管的动态扫描

PUSHACC

PUSHPSW

PUSHAR0

MOVTH0,#0FCH

MOVTL0,#017H

MOVP2,#0FFH

MOVA,#DIS_BUF

ADDA,DIS_INDEX

MOVR0,A

MOVA,@R0

MOVP0,A

MOVP2,DIS_DIGIT

MOVA,DIS_DIGIT

RLA

MOVDIS_DIGIT,A

INCDIS_INDEX

MOVR5,DIS_INDEX

CJNER5,#08H,TT

MOVDIS_INDEX,#00H

MOVDIS_DIGIT,#0FEH

TT:

POPAR0

POPPSW

POPACC

RETI

TIMER1:

;定时器1中断服务程序,产生时基信号10ms

PUSHPSW

PUSHACC

PUSHB

PUSHDPH

PUSHDPL

MOVTH1,#0DCH

MOVTL1,#00H

INCSEC100

MOVA,SEC100

CJNEA,#100,END_TIMER1

MOVSEC100,#00H

LCALLDEC_SEC

END_TIMER1:

POPDPL

POPDPH

POPB

POPACC

POPPSW

RETI;

DEC_SEC:

DECSEC

MOVA,MIN

JNZOBTAIN

CPLP3.6

MOVA,SEC

JNZOBTAIN

MOVBUF_SEC_L,#0C0H

CLRTR1

CLRET1

BEEP_BL:

MOVR3,#10

MOVR2,#200

MAIN11:

CPLp3.7

LCALLDELAY500

LCALLDELAY500

DJNZR2,MAIN11

CPLp3.6

LCALLDELAY500

LCALLDELAY500

LCALLDELAY500

MOVR2,#200

MAIN21:

CPLp3.7

LCALLDELAY500

DJNZR2,MAIN21

DJNZR3,MAIN11

LJMPOBTAIN

OBTAIN:

MOVA,SEC

CJNEA,#255,UPDATE_SEC

MOVSEC,#59

LCALLDEC_MIN

UPDATE_SEC:

MOVA,SEC

MOVB,#10

DIVAB

MOVDPTR,#DIS_CODE

MOVCA,@A+DPTR

MOVBUF_SEC_H,A

MOVA,SEC

MOVB,#10

DIVAB

MOVA,B

MOVCA,@A+DPTR

MOVBUF_SEC_L,A

RET

DEC_MIN:

DECMIN

MOVA,MIN

CJNEA,#255,UPDATE_MIN

MOVMIN,#00H

UPDATE_MIN:

MOVA,MIN

MOVB,#10

DIVAB;A=MIN/10

MOVDPTR,#DIS_CODE

MOVCA,@A+DPTR

MOVBUF_MIN_H,A

MOVA,MIN

MOVB,#10

DIVAB

MOVA,B

MOVCA,@A+DPTR

MOVBUF_MIN_L,A

RET

RET

;中断INT0服务程序

INT_0:

PUSHPSW

PUSHACC

PUSHB

PUSHDPH

PUSHDPL

JBk1,RKEY1

MOVR7,#30

LCALLDELAYMS

JBk1,RKEY1

LJMPKP1

RKEY1:

JBk2,RKEY2

MOVR7,#30

LCALLDELAYMS

JBk2,RKEY2

LJMPKP2

RKEY2:

JBk3,RKEY3

MOVR7,#30

LCALLDELAYMS

JBk3,RKEY3

LJMPKP3

RKEY3:

JBk4,RKEY4

MOVR7,#30

LCALLDELAYMS

JBk4,RKEY4

LJMPKP4

RKEY4:

LJMPKP5

KP1:

LCALLBEEP_BL001

INCCONVERT

MOVA,CONVERT

CJNEA,#0AH,KP5

MOVCONVERT,#00H

INCCONVERT+1

MOVA,CONVERT+1

CJNEA,#0AH,KP5

MOVCONVERT+1,#00H

LJMPKP5

KP2:

LCALLBEEP_BL001

DECCONVERT

MOVA,CONVERT

CJNEA,#255,KP5

MOVCONVERT,#09H

DECCONVERT+1

MOVA,CONVERT+1

CJNEA,#255,KP5

MOVCONVERT+1,#09H

LJMPKP5

KP3:

LCALLBEEP_BL001

INCCONVERT+2

MOVA,CONVERT+2

CJNEA,#0AH,KP5

MOVCONVERT+2,#00H

INCCONVERT+3

MOVA,CONVERT+3

CJNEA,#0AH,KP5

MOVCONVERT+3,#00H

LJMPKP5

KP4:

LCALLBEEP_BL001

DECCONVERT+2

MOVA,CONVERT+2

CJNEA,#255,KP5

MOVCONVERT+2,#09H

DECCONVERT+3

MOVA,CONVERT+3

CJNEA,#255,KP5

MOVCONVERT+3,#09H

LJMPKP5

KP5:

LCALLCONVETER

POPDPL

POPDPH

POPB

POPACC

POPPSW

RETI

DELAYMS:

;延时子程序

DLY_LP1:

MOVR6,#185

DLY_LP2:

NOP

NOP

NOP

DJNZR6,DLY_LP2

DJNZR7,DLY_LP1

END_DLYMS:

RET

;蜂鸣器响一声子程序

BEEP_BL001:

MOVR3,#1

PUTOFF:

;

MOVR2,#30

MAIN11001:

CPLp3.7

LCALLDELAY500

LCALLDELAY500

DJNZR2,MAIN11001

DJNZR3,PUTOFF

RET

;显示缓冲区代码转码子程序

CONVETER:

MOVA,CONVERT

MOVDPTR,#DIS_CODE

MOVCA,@A+DPTR

MOVDIS_BUF+7,A

MOVA,CONVERT+1

MOVDPTR,#DIS_CODE

MOVCA,@A+DPTR

MOVDIS_BUF+6,A

MOVA,CONVERT+2

MOVDPTR,#DIS_CODE

MOVCA,@A+DPTR

MOVDIS_BUF+5,A

MOVA,CONVERT+3

MOVDPTR,#DIS_CODE

MOVCA,@A+DPTR

MOVDIS_BUF+4,A

RET

 

查表指令

DIS_CODE:

DB0C0H

DB0F9H

DB0A4H

DB0B0H

DB099H

DB092H

DB082H

DB0F8H

DB080H

DB090H

DB0FFH

END

 

总结

这次课程设计虽然只有短短的两周时间,但我们受益匪浅。

刚开始时觉得自己的课题无处入手,但通过老师的讲解和查询资料,开始有了自己的思路,整理出了总体方案,然后设计出硬件原理图,源程序等。

在这次设计中困难最大的就是调试,收获最多的也是调试,因为调试的时候你必须对程序相当的熟悉,对每一条指令相当了解,并且硬件的连接也要清晰的印在脑海里,只有这样你才能让软件和硬件结合在一起,实现预期功能。

在编程结束时需要编写END指令,这也是初学者编程时经常忘记的。

总之,在课程设计中遇到了不少的困难,在老师的细心讲解和辅导下,最终完成了本次设计。

在此,由衷感谢老师的指导和帮助。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2