篮球计时计分系统.docx

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

篮球计时计分系统.docx

《篮球计时计分系统.docx》由会员分享,可在线阅读,更多相关《篮球计时计分系统.docx(35页珍藏版)》请在冰点文库上搜索。

篮球计时计分系统.docx

篮球计时计分系统

篮球计时计分系统

 

摘要:

本系统根据篮球比赛过程中计时计分等基本功能设计而成。

在以AT89S52单片机为核心实现计时计分基本功能之外,还增加了比赛过程中常见的双方犯规、失误、篮板等记录,从而使系统更具有高度的应用价值和实用功能。

关键词:

AT89S52、LCD1602、计时、计分、倒计时、复用

一、方案设计思路

1、实现最基本的篮球计分功能,在此功能基础上扩展一个中场分数切换功能。

2、计时——全场计时或者分节计时、进攻24秒、3秒禁区功能。

3、矩阵键盘功能,利用键盘控制分数的加减(+1、+2、+3、-1、中场分数切换),系统的启动、暂停、复位,等等。

并应用键盘中各键的复用进行比赛过程中犯规、失误、篮板等的记录。

4、发光二极管的使用,进行倒计时的报警。

二、设计系统框图

 

系统框图如上图所示,整个系统采用AT89S52作为中央处理芯片,用于提供时钟、数据处理、显示控制等。

矩阵键盘起到控制倒计时、分数加减、系统的启动、暂停、复位等等。

 

三、电路实现仿真图及其主要器件性能分析

图表1硬件设计电路

图表1为实现篮球计时计分系统所使用的电子元件芯片及具体的连接电路。

AT89S52单片机内带有程序寄存器,无须外扩程序存储器,外接12MHz晶振电路和复位电路。

按键电路由矩阵键盘组成,由P1口控制,通过按键可进行各种功能的实现。

LCD1602是一款很常用,也很易用的字符液晶显示器。

可以显示2行每行16个字符。

电源范围4.5V-5.5V,数据总线4/8线均可。

四、参考文献

1代启化基于Protues的电路设计与仿真现代电子技术2006

2沈德金单片机实验与实践教程北京航空航天大学出版社2001

3耿长青单片机应用技术北京化工出版社2002

4周立功单片机实验与实践教程2006

5马忠梅单片机C语言Windows环境编程宝典2003

附件:

(程序)

//*************************主程序****************************//

#include"reg52.h"

#include"LCD1602.h"

#include"intrins.h"

unsignedintCount=0;

unsignedchart;

unsignedinta=0;

unsignedintb=0;

intmsec1=0;

intmsec2=0;

intmsec3=0;

intsec=0;

intdao=3;

intmin=12;

intsecond=24;

unsignedintJgeiwei=0;

unsignedintYgeiwei=0;

unsignedintm,m1=0;

unsignedintn,n1=0;

unsignedintx1=0,y1=0,z1=0,s1=0,p1=0;

unsignedintx2=0,y2=0,z2=0,s2=0,p2=0;

unsignedchara1,b1,c1,d1;

unsignedcharTempBuffer[16];

unsignedcharScore[16]={'A','-','0','0','0',':

','0','0','0','-','B','','3',':

','0','0'};

unsignedcharkey;

unsignedchartemp;

unsignedchark;

sbitp20=P2^0;

voidkeyscan();

voiddelay();

voidt0_init();

voidt1_init();

voiduart_init();

 

voidSdisplay();

voiddisplay1();

voiddisplay2();

voiddisplay3();

voiddisplay4();

voiddisplay5();

voiddisplay6();

voiddisplay7();

voiddisplay8();

voiddisplay9();

voiddisplay10();

voiddisplay11();

voiddisplay12();

voiddisplay13();

voiddisplay14();

voiddisplay15();

voiddisplay16();

voidDelay1ms(unsignedcharcount);

voidDispaly(unsignedchark);

 

timer0()interrupt1using1

{

TH0=0X0D8;

TL0=0X0F0;

p20=1;

Count++;

if(Count!

=1)

return;

else

{

if(min==12&&sec==0&&msec1==0)

{

min=11;

sec=59;

msec1=99;

}

Count=0;

msec1--;

if(msec1<0)

{

msec1=99;

sec--;

if(sec<0)

{

sec=59;

min--;

if(msec1==99&&sec==60)

{

sec=59;

}

}

}

}

}

 

timer1()interrupt3using2

{

TH1=0X0D8;

TL1=0X0F0;

p20=1;

Count++;

if(Count!

=1)

return;

else

{

if(msec2==0&&dao==3)

{

dao=2;

msec2=99;

}

Count=0;

msec2--;

if(msec2<0)

{

msec2=99;

dao--;

}

}

}

timer2()interrupt5using3

{

TF2=0;

TH2=0xD8;

TL2=0xF0;

p20=1;

Count++;

if(Count!

=1)

return;

else

{

if(msec3==0&&second==24)

{

second=23;

msec3=99;

}

Count=0;

msec3--;

if(msec3<0)

{

msec3--;

msec3=99;

second--;

}

}

}

voidSdisplay()

{

 

TempBuffer[15]=(msec3%10)+'0';

TempBuffer[14]=(msec3/10)+'0';

TempBuffer[13]=':

';

TempBuffer[12]=(second%10)+'0';

TempBuffer[11]=(second/10)+'0';

TempBuffer[10]='';

TempBuffer[9]='';

TempBuffer[8]='';

TempBuffer[7]=(msec1%10)+'0';

TempBuffer[6]=(msec1/10)+'0';

TempBuffer[5]=':

';

TempBuffer[4]=(sec%10)+'0';

TempBuffer[3]=(sec/10)+'0';

TempBuffer[2]=':

';

TempBuffer[1]=(min%10)+'0';

TempBuffer[0]=(min/10)+'0';

 

Score[0]=Score[0];

Score[1]=Score[1];

Score[2]=(Jgeiwei/100)+'0';

m=Jgeiwei%100;

Score[3]=(m/10)+'0';

n=m%10;

Score[4]=(n%10)+'0';

Score[5]=':

';

Score[6]=(Ygeiwei/100)+'0';

m=Ygeiwei%100;

Score[7]=(m/10)+'0';;

n=m%10;

Score[8]=(n%10)+'0';

Score[9]=Score[9];

Score[10]=Score[10];

Score[11]='';

Score[12]=(dao%10)+'0';

Score[13]=':

';

Score[14]=(msec2/10)+'0';

Score[15]=(msec2%10)+'0';

GotoXY(0,0);

Print(&TempBuffer[0]);

GotoXY(0,1);

Print(&Score[0]);

}

 

voidS1display()

{

TempBuffer[15]='';

TempBuffer[14]='l';

TempBuffer[13]='u';

TempBuffer[12]='o';

TempBuffer[11]='F';

TempBuffer[10]=(m1%10)+'0';

TempBuffer[9]=(m1/10)+'0';

TempBuffer[8]=':

';

TempBuffer[7]='S';

TempBuffer[6]='C';

TempBuffer[5]='I';

TempBuffer[4]='T';

TempBuffer[3]='L';

TempBuffer[2]='E';

TempBuffer[1]='C';

TempBuffer[0]='';

GotoXY(0,0);

Print(&TempBuffer[0]);

Score[0]='';

Score[1]='L';

Score[2]='A';

Score[3]='K';

Score[4]='E';

Score[5]='R';

Score[6]='S';

Score[7]=':

';

Score[8]='';

Score[10]=(n1%10)+'0';

Score[9]=(n1/10)+'0';

Score[11]='F';

Score[12]='o';

Score[13]='u';

Score[14]='l';

Score[15]='';

GotoXY(0,1);

Print(&Score[0]);

}

 

voidS2display()

{

TempBuffer[15]='S';

TempBuffer[14]='B';

TempBuffer[13]='E';

TempBuffer[12]='R';

TempBuffer[11]=(z1%10)+'0';

TempBuffer[10]=(z1/10)+'0';

TempBuffer[9]=')';

TempBuffer[8]='3';

TempBuffer[7]='(';

TempBuffer[6]=(y1%10)+'0';

TempBuffer[5]=(y1/10)+'0';

TempBuffer[4]='/';

TempBuffer[3]=(x1%10)+'0';

TempBuffer[2]=(x1/10)+'0';

TempBuffer[1]=':

';

TempBuffer[0]='A';

GotoXY(0,0);

Print(&TempBuffer[0]);

Score[15]='';

Score[14]='S';

Score[13]='I';

Score[12]='M';

Score[11]=(p1%10)+'0';

Score[10]=(p1/10)+'0';

Score[9]='';

Score[8]='S';

Score[7]='T';

Score[6]='S';

Score[5]='I';

Score[4]='S';

Score[3]='S';

Score[2]='A';

Score[1]=(s1%10)+'0';

Score[0]=(s1/10)+'0';

GotoXY(0,1);

Print(&Score[0]);

}

voidS3display()

{

TempBuffer[15]='S';

TempBuffer[14]='B';

TempBuffer[13]='E';

TempBuffer[12]='R';

TempBuffer[11]=(z2%10)+'0';

TempBuffer[10]=(z2/10)+'0';

TempBuffer[9]=')';

TempBuffer[8]='3';

TempBuffer[7]='(';

TempBuffer[6]=(y2%10)+'0';

TempBuffer[5]=(y2/10)+'0';

TempBuffer[4]='/';

TempBuffer[3]=(x2%10)+'0';

TempBuffer[2]=(x2/10)+'0';

TempBuffer[1]=':

';

TempBuffer[0]='B';

GotoXY(0,0);

Print(&TempBuffer[0]);

Score[15]='';

Score[14]='S';

Score[13]='I';

Score[12]='M';

Score[11]=(p2%10)+'0';

Score[10]=(p2/10)+'0';

Score[9]='';

Score[8]='S';

Score[7]='T';

Score[6]='S';

Score[5]='I';

Score[4]='S';

Score[3]='S';

Score[2]='A';

Score[1]=(s2%10)+'0';

Score[0]=(s2/10)+'0';

GotoXY(0,1);

Print(&Score[0]);

}

 

voidclose()

{

if(min==0&&sec==0&&msec1==0)

{

p20=0;

min=12;

sec=0;

msec1=0;

second=24;

msec3=0;

dao=3;

msec2=0;

Sdisplay();

EA=0;

}

if(second==0&&msec3==0||dao==0&&msec2==0)

{

p20=0;

second=24;

msec3=0;

dao=3;

msec2=0;

Sdisplay();

EA=0;

}

}

voidt2_init(void)

{

RCAP2H=0xD8;

RCAP2L=0xF0;

}

main()

{

EA=1;

t0_init();

t1_init();

t2_init();

uart_init();

TR0=0;

ET0=0;

TR1=0;

ET1=0;

TR2=0;

ET2=0;

 

LCD_Initial();

 

while

(1)

{

keyscan();

while(a==1)

{

unsignedcharcodeTempBuffer[16]={"NBAFINALS"};

unsignedcharcodeScore[16]={"CELTICS:

LAKERS"};

GotoXY(0,0);

Print(&TempBuffer[0]);

GotoXY(0,1);

Print(&Score[0]);

keyscan();

}

while(a==2)

{

S2display();

keyscan();

}

while(a==3)

{

S3display();

keyscan();

}

while(b==1||b==2)

{

S1display();

keyscan();

}

Sdisplay();

close();

}

 

}

 

voiduart_init(void)

{

SCON=0;/*串口工作方式0输出(不允许接收)*/

}

voidt0_init(void)

{

TMOD=0x11;/*T0定时方式1*/

TH0=0xD8;

TL0=0xF0;

}

 

voidt1_init(void)

{

TMOD=0x11;/*T1定时方式1*/

TH1=0xD8;

TL1=0xF0;

}

 

voidkeyscan()

{

unsignedcharn;

P1=0xfe;

n=P1;

n&=0xf0;

if(n!

=0xf0){

delay();

P1=0xfe;

n=P1;

n&=0xf0;

if(n!

=0xf0){

switch(n){

case(0xe0):

key=1;break;

case(0xd0):

key=2;break;

case(0xb0):

key=3;break;

case(0x70):

key=4;break;

}

}

}

P1=0xfd;

n=P1;

n&=0xf0;

if(n!

=0xf0){

delay();

P1=0xfd;

n=P1;

n&=0xf0;

if(n!

=0xf0){

switch(n){

case(0xe0):

key=5;break;

case(0xd0):

key=6;break;

case(0xb0):

key=7;break;

case(0x70):

key=8;break;

}

}

}

P1=0xfb;

n=P1;

n&=0xf0;

if(n!

=0xf0){

delay();

P1=0xfb;

n=P1;

n&=0xf0;

if(n!

=0xf0){

switch(n){

case(0xe0):

key=9;break;

case(0xd0):

key=10;break;

case(0xb0):

key=11;break;

case(0x70):

key=12;break;

}

}

}

P1=0xf7;

n=P1;

n&=0xf0;

if(n!

=0xf0){

delay();

P1=0xf7;

n=P1;

n&=0xf0;

if(n!

=0xf0){

switch(n){

case(0xe0):

key=13;break;

case(0xd0):

key=14;break;

case(0xb0):

key=15;break;

case(0x70):

key=16;break;

}

}

}

Dispaly(key);

}

voidDispaly(unsignedchark)

{

if(k==1)

{display1();key=0;}

elseif(k==2)

{display2();key=0;}

elseif(k==3)

{display3();key=0;}

elseif(k==4)

{display4();key=0;}

elseif(k==5)

{display5();key=0;}

elseif(k==6)

{display6();key=0;}

elseif(k==7)

{display7();key=0;}

elseif(k==8)

{display8();key=0;}

elseif(k==9)

{display9();key=0;}

elseif(k==10)

{display10();key=0;}

elseif(k==11)

{display11();key=0;}

elseif(k==12)

{display12();key=0;}

elseif(k==13)

{display13();key=0;}

elseif(k==14)

{display14();key=0;}

elseif(k==15)

{display15();key=0;}

elseif(k==16)

{display16();key=0;}

 

}

 

voiddisplay1()

{

EA=1;

ET0=1;

TR0=1;

ET2=1;

TR2=1;

}

voiddisplay2()

{

if(a==0)

{

second=24;

msec3=0;

dao=3;

msec2=0;

Sdisplay();

}

if(a==2)p1++;

Delay1ms(100);

}

voiddisplay3()

{

if(a==0)

{

Jgeiwei++;

second=24;

msec3=0;

dao=3;

msec2=0;

EA=0;

Delay1ms(100);

}

if(a==2)x1++;

Delay1ms(100);

}

voiddisplay4()

{

if(a==0)

{Ygeiwei++;

second=24;

msec3=0;

dao=3;

msec2=0;

EA=0;

Delay1ms(100);

}

if(a==3)x2++;

Delay1ms(100);

}

voiddisplay5()

{

EA=0;

ET0=0;

TR0=0;

ET1=0;

TR1=0;

ET2=0;

TR2=0;

if(b==1)

{

m1++;

Delay1ms(100);

}

if(b==2)

{

n1++;

Delay1ms(100);

}

}

voiddisplay6()

{

if(a==0)

{

a1=Score[0];

b1=Score[1];

c1=Score[9];

d1=Score[10];

}

a++;

if(a==4)

{a=0;

Score[0]=a1;

Score[1]=b1;

Score[9]=c1;

Score[10]=d1;

}

Delay1ms(100);

}

voiddisplay7()

{

if(a==0)

{

Jgeiwei=Jgeiwei+2;

second=24;

msec3=0;

dao=3;

msec2=0;

EA=0;

Delay1ms(100);

}

if(a==2)y1++;

Delay1ms(100);

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

当前位置:首页 > 考试认证 > 交规考试

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

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