篮球计时计分器系统设计报告.docx

上传人:b****7 文档编号:10149984 上传时间:2023-02-08 格式:DOCX 页数:18 大小:556.17KB
下载 相关 举报
篮球计时计分器系统设计报告.docx_第1页
第1页 / 共18页
篮球计时计分器系统设计报告.docx_第2页
第2页 / 共18页
篮球计时计分器系统设计报告.docx_第3页
第3页 / 共18页
篮球计时计分器系统设计报告.docx_第4页
第4页 / 共18页
篮球计时计分器系统设计报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

篮球计时计分器系统设计报告.docx

《篮球计时计分器系统设计报告.docx》由会员分享,可在线阅读,更多相关《篮球计时计分器系统设计报告.docx(18页珍藏版)》请在冰豆网上搜索。

篮球计时计分器系统设计报告.docx

篮球计时计分器系统设计报告

 

篮球计时计分系统

设计报告

 

电信131魏荣根

电信132李卓壮郑浩

1.系统设计要求及设计思路

2.硬件电路设计

2.1主控电路

2.2按键控制模块

2.3显示模块

2.4定时报警模块

3.软件开发流程及代码分析

4.实验总结

引言

•篮球计时计分器硬件电路设计

 

•篮球计时计分器软件设计

篮球计时计分器系统以AT89C51单片机为核心,系统显示部分包括

计时显示和计分显示两部分,均采用共阳极LED动态扫描方式显

示。

系统采用单片机定时器TO中断计时,计时范围宽,可进行定

时设定,也可以调整小时、分钟、秒等值;计分部分调整灵活,显

示范围宽,足以满足各种规糢赛程需要。

1.系统设计要求及设计思路

1.系统设计要求

为实现篮球计时计分器系统的设计,本系统应该满足以下几点要求:

•能设置整个赛程的比赛时间,在比赛过程中能根据需要暂停和开始计时。

•能根据比赛情况刷新比赛双方的比分。

•中场交换比赛场地时,能交换甲、乙两队比分的位置。

•比赛结束时,能发出报警声。

2.系统设计思路

根据设计任务与要求,设计思路如下:

系统主要功能包括记分和计时两部分,能实现两队比分的加分、减分、汁时以及其他多种显示效果;系统控制模块有:

2位动态显示记分模块、4位动态显示计时模块、两队加分减分模块、按键查询模块、分秒控制模块等。

具体实现过程:

釆用7段LED数码管动态显示整个赛程的比赛时间和两队的比分情况。

通过4个按键和外部中断0实现输入功能,用于赛前时间调整、比赛过程比分纪录、时间启停以及比赛结束以后的声音报警等功能。

2.硬件电路设计

根据设计要求与设计思路,确定该系统的设计方案,图6-1为该系统设计方案的硬件电路设计框图。

硬件电路主要由4部分组成:

主控电路、按键控制电路、显示模块和定时报警模块。

面对其进行一一介绍。

2.1主控电路

系统的主控电路即为单片机最小系统,前丨M几章已经介绍过,其电气原理图如图6-2所示,这串.不再赘述。

2.2按键控制模块

系统共涉及9个按键,采用查询方式进行键盘扫描,具体电气原理图如图所示:

2.3显示模块

系统采用共阳极数码管显示,前面也已作详细介绍,在此不再赘述。

本系统显示分为三部分时间计时显示、A队分数显示以及B队分数显示。

显示模块如图所示:

2.4定时报警模块

定时报警模块采用蜂鸣器声音报警。

比赛结束后,P3.7输出一低电平,此时,发射结正向偏置且集电结反向偏置,满足三极管放大的外部条件,使信号放大从而驱动扬声器产生报警。

电气原理图如图6-5所示。

3.软件开发流程及代码分析

本系统软件部分主要包含定时中断函数、延时函数、显示函数、蜂鸣器启动函数、外部中断o函数、按键函数等。

下面一一进行介绍。

1..软件开发流程

篮球比赛中,得分可分为1分、2分、3分三种情况,系统在这设置加1分功能和加2分功能,得2分可按一下加2分功能键,得3分可先后按一下加2分功能键和加1分功能键。

主函数中调用显示函数,可显示时间、比分。

中断函数及按键扫描函数配合实现篮球比分和时间显示及修改功能。

其中,用1片4位数码管显示时间,2片2位数码管显示比分,均采用动态扫描方式显示;时间启停、分数累加,均通

过接入键盘电路实现。

2..代码分析

(1)函数声明及变景定义

为方便程序的编写,把部分常用的变量进行伪定义。

#include

#include

#defineuintunsignedint#defineucharunsignedchar

ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uchardisbuffer[8]={0};

ucharminute=0,second=0;//定义全局变量

ucharAscore=03score=0,temp=0;//

ucharflagel=0;//定义标志位

ucharflage=0;//

uintcounty,z;//

sbitbizz=P3A7;//蜂鸣器

sbitadd1=PlA0;//加一分

sbitadd2=PlAl;//加两分

sbitminus1=P1A2;//减一分

sbitexchange=PlA3;//上下半场换场时加分

sbitbstop=PlA4;//全场结束关闭蜂鸣器

sbitstart=PlA5;//开始

sbitstopagain=PlA6;//暂停开始

sbittum=PlA7;//切换加分

sbittimeadd=P3A2;//加时间设定时间

 

(2)定时中断函数

产生一个Is的计时单元

VoidininterruptOinterrupt1

{

TH0=(65536-50000y256;

TLO=(65536-50000)%256;

count++;

if(count==20)

{

Count=0;

If(second==0&&minute==0;

{

Et0=0;

}

elseif(second==0&&minute!

=0)

{

second=59;

minute--;

}

elseif(second!

=0)

{

second--;

}

}

(3)延时函数

voiddelay()函数用于显示延时,voiddelayl()函数用于延时消抖。

voiddelay()//显不延时函数

uintx,y;

for(x=10;x>0;x-)

for(y=10;y>0;y-);

//延时消抖函数16ms

voiddelay1()

{

uintx,y;

foi0pc-)

for(y=360;y>0;y-);

}

(4)显示函数

//显示函数

功能是将数码管的码值进行处理送到端口,使得数码管显示时间和分数。

VoiddinplayQ

ucharij;uchartemp;

disbuffer[3]=second%10;

disbuffer[2]=second/l0;

disbuffer[1]=minute%10;

disbufifer[0]=minute/10;

disbuflfer[5]=Ascore%10;

disbuffer[4]=Ascore/10;

disbufFer[7]=Bscore%10;

disbuffer[6]=Bscore/l0;

temp=Oxfe;

P2=temp;

for(i=0;i<8;i++)

{

j=disbuffer[i];

P0=tableD];

delayO;

temp=_crol_(temp,1);

P2=temp;}

}

(5)蜂鸣器启动函数

功能是等比赛结束后,启动蜂鸣器提示比赛结束

voidbizzerQ"蜂鸣器函数

while(minute=0&&sec(md=0)判断时间结

 

(6)外部中断0函数

voidexinterrupt()interrupt0//中断

{

delay1();

if(!

timeadd)//按键设置比赛时间

{

while(!

timeadd);

minute++;

}

}

 

(7)按键函数

功能有实现A队加1分、加2分,A队减1分,B队加1分、加2分,B队减1分,下半场切换比分,暂停继续等

voidbutton()//按键函数

{

if(!

turn)

{

delay1();//延时消抖以下用delay1的都是延时消抖

if(!

turn)

{

while(!

turn);

flage+=1;//标志位

}

}

if(flage%2==0)

{

if(!

add1)

{

delay1();

if(!

add1)

{

while(!

add1);//按键时松手检测

Ascore+=1;//A加1分

}

}

if(!

add2)

{

delay1();

if(!

add2)

{

while(!

add2);

Ascore+=2;

}

}

if(!

minus1)

{

delay1();

if(!

minus1)

{

while(!

minus1);

Ascore-=1;

}

}

}

else

{

if(!

add1)

{

delay1();

if(!

add1)

{

while(!

add1);

Bscore+=1;

}

}

if(!

add2)

{

delay1();

if(!

add2)

{

while(!

add2);

Bscore+=2;

}

}

if(!

minus1)

{

delay1();

if(!

minus1)

{

while(!

minus1);

Bscore-=1;

}

}

}

if(!

exchange)//下半场换场切换比分按键

{

delay1();

if(!

exchange)

{

while(!

exchange);

temp=Ascore;

Ascore=Bscore;

Bscore=temp;

}

}

if(!

stopagain)//暂停继续按键

{

delay1();

if(!

stopagain)

{

while(!

stopagain);

flage1+=1;

}

}

if(flage1%2==1)

{

TR0=0;

}

else

TR0=1;

if(!

bstop==1)

{

delay1();

if(!

bstop==1)

{

while(!

bstop==1);

bizz=0;

}

}

(8)主程序

voidmain()

{

while

(1)

{

display();

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TMOD=0x01;

EA=1;

ET0=1;

EX0=1;

IT0=1;

if(!

start)

{

delay1();

if(!

start)

{

while(!

start);

TR0=1;

while(minute!

=0||second!

=0)

{

display();

button();

bizzer();

}

}

}

}

}

4.本章小结

本例中系统电路简单,重点介绍了篮球计时计分器的硬件设计和软件编程方法。

本设计最大的特点是对设定时间的记忆功能。

基于篮球比赛是分节进行的,每节有固定的时间。

本设计可事先设定一节比赛的时间,一节比赛结束后,比分保持不变,再次开始后,是从上次设定的时间开始计时。

本设计采用AT89C51单片机作为核心部件,整个系统结构简单、实用性强、操作简便,具有低功耗、可靠性、安全性以及低成本等特点。

 

WelcomeTo

Download

 

欢迎您的下载,资料仅供参考!

 

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

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1