球赛计时计分器的软件设计.docx

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

球赛计时计分器的软件设计.docx

《球赛计时计分器的软件设计.docx》由会员分享,可在线阅读,更多相关《球赛计时计分器的软件设计.docx(36页珍藏版)》请在冰点文库上搜索。

球赛计时计分器的软件设计.docx

球赛计时计分器的软件设计

球赛计时计分器的软件设计

摘要

球赛计时计分器是为了解决球类比赛中的计分与计时准确性的问题。

单片机自20世纪70年代问世以来,以极高的性价比受到人们的重视和关注,许多基于单片机的球赛计时计分器也应运而生,如用单片机控制LCD液晶显示器的计时计分器,用单片机控制的LED七段显示器的计时计分器等等。

然而目前计时计分器的设计大都比较的复杂所用芯片太多,造成整体的价格较高,而且软件设计比较的复杂,导致性价比不是很高,很难得到广泛的推广。

本设计是基于AT89C51单片机的球赛计时计分器,能够记录整个赛程的比赛时间,并能修改比赛时间;能随时刷新甲、乙两队在整个过程中的比分;中场交换比赛场地时,能交换甲、乙两队比分的位置;比赛结束时,能发出报警声。

本设计详细地介绍了球赛计时计分系统软件的设计过程,设计中可根据实际情况进行比分修改和时间的准确显示,操作灵活,低功耗,可靠性,安全性以及低成本等优点。

关键词:

单片机,球赛,计时计分,Proteus

TheSoftwareDesignofBallGameTimingandScoringBasedonMCU

ABSTRACT

Theballgametimingandscoringistosolvetheballgameswiththeaccuracyofthetimingandscoring.SincetheMCUadventin1970s,withit’sextremelyhighcostperformancebythepeople'sattentionandconcern,manyoftheballgametimingandscoringbasedonMCUhaveemerged,SuchasusingMCUcontrolLCDmonitortimingandscoring,MCUcontrolSeven-SegmentLEDdisplayofthetimingandscoringandsoon.Butnowthetimingandscoringdesignedtoocomplexandusedtoomuchchip,causethewholepriceishigher,andthesoftwaredesigniscomplex,andleadtocostperformanceisnotveryhigh,itisdifficulttogetawiderangeofpromotion.

ThedesignisbasedonAT89C51ballgametimingandscoring,canrecordthetimeatthewholerace;Canrefreshscoresofpartyaandpartybinthewholeprocessatanytime;Midfielderexchange,canexchangeAandBthepositionofthetwoteamsscore;Endofthematch,cansoundalarm.Thisdesignisintroducedindetailthetimingandscoringsystemsoftwaredesignprocess,designaccordingtoactualsituationtomodifythescoreandthetimeoftheshow,flexibleoperation,lowpowerconsumption,reliability,securityandthelowcost,etc.

Keywords:

MCU,ballgame,timingandscoring,Proteus

1绪论

1.1背景知识介绍

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

概括的讲:

一块芯片就成了一台计算机。

它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。

同时,学习使用单片机是了解计算机原理与结构的最佳选择[1]。

单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。

单片机的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。

例如,80C51系列单片机已有十多年的生命期,如今仍保持着上升的趋势,就充分证明了这一点。

单片机以其一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统,数据采集系统、智能化仪器仪表,及通讯设备、日常消费类产品、玩具等。

并且已经深入到工业生产的各个环节以及人民生活的各层次中,如车间流水线控制、自动化系统等、智能型家用电器等。

而美国ATMEL公司开发生产了新型的8位单片机——AT89系列单片机。

他不但具有一般MCS-51单片机的所有特性,而且还拥有一些独特的优点,此次设计中所用到的AT89C51单片机就是其中典型的代表。

单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,用它来做一些控制电器一类不是很复杂的工作足矣了。

我们现在用的全自动滚筒洗衣机,排烟罩VCD等等的家电里面都可以看到它的身影。

单片机是靠程序实现功能的,并且可以修改。

通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能。

一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件的话,电路一定是一块大PCB板。

但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别。

只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性[2]。

体育比赛计时计分系统是对体育比赛过程中所产生的时间,比分等数据进行快速采集记录,加工处理,传递利用的信息系统。

根据不同运动项目的不同比赛规则要求,体育比赛的计时计分系统包括测量类,评分类,命中类,制胜类得分类等多种类型。

球类比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,球赛的计时计分系统是一种得分类型的系统。

球赛计时计分系统由计时器,计分器等多种电子设备组成,同时,根据目前高水平球赛要求,完善的球赛计时计分系统设备应能够与现场成绩处理,现场大屏幕,电视转播车等多种设备相联,以便实现高比赛现场感,表演娱乐观众等功能目标。

由于单片机的集成度高,功能强,通用性好,特别是它具有体积小,重量轻,能耗低,价格便宜,可靠性高,抗干扰能力强和使用方便等独特的优点,使单片机迅速得到了推广应用,目前已经成为测量控制应用系统中的优选机种和新电子产品的关键部位。

世界各大电气厂家,测控技术企业,机电行业,竞相把单片机应用于产品更新,作为实现数字化,智能化的核心部件。

球赛计时计分器就是以单片机为核心的计时计分系统,由计时器,计分器,综合控制器等组成[3]。

1.2设计目的

随着单片机在各个领域的广泛应用,许多用单片机做控制的球赛计时计分系统也应运而产生,如用单片机控制LCD液晶显示器计时计分器,用单片机控制LED七段显示器计时计分器等。

本次设计是由AT89C51编程控制LED七段数码管作显示的球赛计时计分系统。

该系统能够记录赛程比赛时间,并能修改比赛时间,及时刷新甲、乙双方的比分以及比赛结束能发出报警声等功能。

具有价格低廉,性能稳定,操作方便并且易于携带等特点。

广泛适合各类学校或者小型团体作为赛程计时计分[4]。

通过本次基于C51系列球赛计时计分器软件的设计,可以了解、熟悉有关单片机软件开发设计的过程,并加深对单片机开发语言的理解和应用。

1.3设计任务和要求

任务:

球赛计时计分器的软件设计。

要求:

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

(b)能随时刷新甲、乙两队在整个过程中的比分。

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

(d)比赛结束时,能发出报警声。

1.4设计意义

通过本次设计能够有效提高工程设计能力,提高分析问题,解决问题以及专业知识综合运用能力,为将来从事研究和设计及开发工作奠定一定的基础。

2系统总体方案

2.1系统构成框图

球赛计时计分器主要包括单片机控制系统、计时显示模块、计分显示模块、定时报警,按键控制键盘模块。

通过这几个模块的协调工作就可以完成相应的计时计分控制和显示功能。

[3]系统框图如图2-1所示[5]。

图2-1系统框图

本系统是基于AT89C51单片机的球赛计时计分器,利用7段共阴LED作为显示器件。

在此设计中共接入了1个四位一体7段共阴LED显示器,2个两位一体7段共阴LED显示器,前者用来记录赛程时间,其中前2位用于显示分钟,后2位用于显示秒钟,根据设计,计时范围可达0—99分钟,也完全满足赛程的需要。

后者用于记录甲乙队的分数,每队2个LED显示器显示范围可达到0~99分。

比赛采用倒计时方式,比赛开始时启动计时,直至计时到零为止[6]。

其次,为了配合计时器和计分器校正、调整时间和比分,特定在本设计中设立了7个按键。

其中4个用于输入甲、乙两队的分数;另外3个则用于完成设置、调整、启动和暂停赛程时间等功能[7]。

2.2基本功能介绍

2.2.1赛程时间调整

设置回表键和快表键用来调整赛程时间。

比如:

比赛时间上半场时间20分钟,则通过回表键和快表键,使显示时间数码管显示需要的比赛时间。

时间设置好后,等待比赛开始。

当比赛结束时,如果由于一些特殊原因需要增加比赛时间,这时增加比赛时间同样由按键回表键和快表键来设置,并且设置方法与上面所述相同。

2.2.2比赛时间开始/暂停设置

设置暂停/开始键控制比赛的启动和暂停。

以足球比赛为例比,设置半场赛程时间为45分钟,则在时间显示的LED显示器上显示为4500,45表示分钟,00表示秒钟。

这时,如果裁判吹响开始的哨声时,则应立即按下按键暂停/开始键,表示赛程开始,计时显示则由4500变成4459,4458……一直计时直到计为0000时表示赛程结束。

2.2.3比分交换控制

比分交换控制由暂停/开始键完成。

我们知道,因为比分交换是在上半场赛程结束后进行的,也就是说比分交换受赛程时间控制,只有当上半场计时器指示为0000时,按暂停/开始键,则会自动交换甲、乙两队的比分。

如果上半场赛程时间没有到0000时,则此时按下暂停/开始键,只会暂停比赛,不能交换分数。

如果要继续比赛,再按一次暂停/开始键即可。

因此,暂停/开始键完成三重功能,即:

启动,暂停,比分交换。

2.2.4比分刷新控制

设置A+1、B+1、A-1、B-1键。

由于在比赛中,甲、乙两队的比分是不断在变化的,所以需要设置比分刷新控制装置。

A+1键:

完成A队加1分操作

B+1键:

完成B队加1分操作

A-1键:

完成A队减1分操作

B-1键:

完成B队减1分操作

2.2.5计时计分显示

计时计分显示器是采用七段共阴LED显示器来显示的。

其中计时是用1个4位一体的7段共阴LED显示器。

计时采用2个2位一体的7段共阴LED显示器;显示格式分别为0000和0000。

2.2.6赛程结束报警

当比赛结束时,系统会自动发出报警声,提示赛程结束。

3软件编程及调试

软件的编程设计是单片机系统设计的核心部分,也是能否实现预定功能的关键。

单片机编程常用的语言是C语言和汇编语言,最终都要转为IntelHEX格式或二进制格式(Binary)文件拷入单片机芯片内。

这里我们使用的是C语言进行编程设计[8]。

3.1开发环境介绍

常用的单片机应用系统的软件编写语言有汇编、C、BASIC、C++等,对51单片机而言,使用最为广泛的还是汇编语言和C语言。

有经验的程序员用汇编语言可编写出高效率的程序,但用汇编语言不便于表达人们日常解决问题的思路和方法,还有编程工作量大、容易出现错误、编写的程序不容易移植等缺点,故汇编语言一般只用于小型程序的编写或整个软件中对执行效率要求较高的部分。

单片机开发中除必要的硬件外,同样离不开软件,常用的单片机应用系统的软件编写语言有汇编、C、BASIC、C++等,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。

机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,对于51单片机而言,使用最为广泛的还是汇编和C语言。

有经验的程序员用汇编语言可编写出高效率的程序,但用汇编语言不便于人们日常解决问题的思路和方法,还有编程工作量大、容易出现Bug(程序中的错误)、编写的程序不容易移植等特点,故汇编语言一般只用于小型程序的编写或整个软件中对执行效率要求较高的关键部分。

用C语言编写程序比汇编语言更符合人们的思维习惯,开发者可以更专心考虑算法。

3.2开发软件介绍

对于51单片机而言,最著名的C语言开发工具是KeilSoftware公司的μVision集成开发环境,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。

一般将其中的C语言成为C51。

C51对于ANSI(标准)C做了扩展,使得C51和汇编语言一样可直接访问单片机的硬件资源。

对绝大多数51单片机应用系统可只用C语言,不适用汇编就可以完成软件开发任务;但即使是用C语言编写程序,也必须理解单片机的内部结构,特别是内存、中断、串行通信口等资源的使用方法,否则很难实现一个实际的应用系统。

C51是专门为51系列单片机设计的,根据51单片机自身的特点进行了若干扩展,与ANSIC在语法和库函数方面存在稍许差别,但绝大部分是兼容的。

μVision集成开发环境(IDE)包括项目(project)管理器、程序编辑器、Cx51编译器、Ax51宏汇编器、BL51/Lx51连接定位器RTX51实时操作系统Simulator软件模拟器以及Monitor51硬件目标调试器,所有这些功能均可在μVision提供的单一而灵活的开发环境中极为简便的进行操作。

μVision提供了强大的项目管理功能,可以十分方便地进行结构化多模块设计。

许多厂商都能生产符合KeilC公司Mon51标准、能在KeilC集成开发环境中使用的Mon51仿真器,如周立功公司的TKS系列仿真器。

当采用KeilC配合Mon51仿真器作为开发工具时,KeilC既是软件编程工具,也是程序调试工具,可避免在各种开发工具间反复切换,方便软件开发。

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境

(μVision)将这些部分组合在一起。

运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20MB以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。

掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

在开发大型软件时更能体现高级语言的优势,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍[9]。

以下为KeilC51开发系统基本知识KeilC51开发系统介绍。

  (a)系统概述

  KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。

另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

在开发大型软件时更能体现高级语言的优势。

下面详细介绍KeilC51开发系统各部分功能和使用。

  (b)KeilC51单片机软件开发系统的整体结构

  C51工具包的整体结构,μVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。

开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。

然后分别由C51及C51编译器编译生成目标文件(.OBJ)。

目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。

ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中[10]。

图3-1是其工作界面。

图3-1KeilC工作界面

3.3软件总体设计方案

本次软件设计采用模块化程序设计,程序部分由主程序、T0中断程序、扫描显示子程序、计时加(减)1秒的子程序、暂停子程序、快表和回表子程序、延时子程序等组成,通过主程序对各个子程序的调用最终完成任务需求。

3.4软件设计具体过程

软件设计部分采用模块化程序设计,用C语言编写。

Keil是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。

另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率之高,多数语句生成的汇编代码很紧凑,容易理解。

在开发大型软件时更能体现高级语言的优势[11]。

3.4.1主程序

通过主程序对以上子程序的调用,最终可以实现球赛计时计分器的功能。

主程序流程图如图3-2所示。

图3-2主程序流程图

程序如下:

voidmain()

{TMOD=0x01;首先设置定时器工作方式

EA=1;

ET0=1;

TH0=0xb1;定时器送计数初值,EA=1,开中断,P3口电平拉高

TL0=0x10;P1=0x7f,上半场指示灯点亮

TR0=1;TR0=1启动定时器

P3=0xff;

P1=0x7f;

T1=0;

while

(1)主程序通过while

(1),反复调用循环体内的子程序

{来执行相应的功能

keyjiafen1();

keyjianfen1();

key2();

if(zidong==1)zidong==1为key3()执行条件

key3();key3()半场交换场地时自动交换双方

if(n==18&&bujin==0)比赛分数子程序,所以仅当中场时调用

{

bujin=2;修改变量bujin的值,目的是设定over()

}中第二个if语句的执行条件

shijian();

key4();

over();

}

}

3.4.2数码管动态刷新显示程序

本设计中各个数码管采用动态驱动,使各位数码管逐个轮流受控显示,由于扫描速度极快(本实验中大约每20毫秒刷新一次),所以显示效果与静态驱动相同[12]。

程序流程图如图3-3所示。

图3-3数码管动态刷新显示流程图

程序如下:

voiddisplay(inti,intj,intx,inty)变量i,j,x,y分别为分,秒,A分数,B分数

{

if(jie==1&&bujin!

=2)当中间变量jie==1时,为上半场,此时对P1赋值

P1=0xbf;使P1=0xbf,即P1=10111111B,上半场指示灯对应点亮

P2=0xfe;数码管动态刷新显示程序P2=11111110,i为分钟

P0=seg[i%100/10];P2=0xfe,所以刷新显示时间的分钟十位,调用延时程序,

delay

(1);延时数码管的点亮

P2=0xff;

P0=0;

P2=0xfd;同理,动态刷新时分钟个位并延时点亮

P0=seg[i%10];

delay

(1);

P2=0xff;

P0=0;

P2=0xfb;同理,动态刷新时秒钟十位并延时点亮

P0=seg[j%100/10];

delay

(1);

P0=0;

P2=0xff;

P2=0xf7;同理,动态刷新时秒钟个位并延时点亮

P0=seg[j%10];

delay

(1);

P0=0;

P2=0xff;

P2=0xef;同理,动态刷新A分数十位并延时点亮

P0=seg[x%100/10];

delay

(1);

P2=0xff;

P0=0;

P2=0xdf;同理,动态刷新A分数个位并延时点亮

P0=seg[x%10];

delay

(1);

P2=0xff;

P0=0;

P2=0xbf;同理,动态刷新B分数十位并延时点亮

P0=seg[y%100/10];

delay

(1);

P0=0;

P2=0xff;

P2=0x7f;同理,动态刷新B分数十位并延时点亮

P0=seg[y%10];

delay

(1);

P0=0;

P2=0xff;

}

3.4.3T0中断程序

使用T0中断,能够对LED进行20ms一次的动态扫描[13]。

程序流程图如图3-4所示。

图3-4T0中断程序流程图

程序如下:

voidt0(void)interrupt1本设计调用定时器T0,计时单位为一秒

{

TH0=0xb1;对定时器T0送入计数初值,由于TH0=0xb;

TL0=0x10;TL0=0x10故定时器定时为20毫秒,即每

if(n==0)20毫秒调用一次voidt0(void)interrupt1

{

n=60;

m--;

}

i++;

if(i==50)

{令i值为5050*20毫秒=1秒,来实现计时

n--;单位为一秒

i=0;

}

display(m,n-1,x,y);调用动态刷新显示程序,即每20毫秒刷新一

}次数码管

3.4.4加分子程序

通过按键可对比分进行加分处理实现对两球队比赛分数的调整和控制。

程序流程图如图3-5所示。

图3-5加分子程序流程图

程序如下:

voidkeyjiafen1()

{当检测到RXD按键按下时,调用延时子程序if(RXD==0)实现消除按键抖动功能,即,当

delay

(1);,

{检测到按键按下时候,延时,按键仍按下,说明

if(RXD==0)按键确实按下,非抖动,A对应加分

{

while(RXD==0);

x++;

}

}

if(TXD==0)检测TXD加分按键时候按下,B加分

{

delay

(1);

if(TXD==0)

{

while(TXD==0);

y++;

}

}

}

3.4.5减分子程序

通过按键可对比分进行减分处理实现对两球队比赛分数的调整和控制。

程序流程图如图3-6所示

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

当前位置:首页 > 小学教育 > 语文

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

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