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

更新时间:2024-01-20 15:27:14 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

I

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

摘 要

球赛计时计分器是为了解决球类比赛中的计分与计时准确性的问题。单片机自20世纪70年代问世以来,以极高的性价比受到人们的重视和关注,许多基于单片机的球赛计时计分器也应运而生,如用单片机控制LCD液晶显示器的计时计分器,用单片机控制的LED七段显示器的计时计分器等等。然而目前计时计分器的设计大都比较的复杂所用芯片太多,造成整体的价格较高,而且软件设计比较的复杂,导致性价比不是很高,很难得到广泛的推广。

本设计是基于AT89C51单片机的球赛计时计分器,能够记录整个赛程的比赛时间,并能修改比赛时间;能随时刷新甲、乙两队在整个过程中的比分;中场交换比赛场地时,能交换甲、乙两队比分的位置;比赛结束时,能发出报警声。本设计详细地介绍了球赛计时计分系统软件的设计过程,设计中可根据实际情况进行比分修改和时间的准确显示,操作灵活,低功耗,可靠性,安全性以及低成本等优点。 关键词:单片机,球赛,计时计分,Proteus

The Software Design of Ball Game Timing and Scoring Based on

MCU

ABSTRACT

The ball game timing and scoring is to solve the ball games with the accuracy of the timing and scoring. Since the MCU advent in 1970s, with it’s extremely high cost performance by the people's attention and concern, many of the ball game timing and scoring based on MCU have emerged, Such as using MCU control LCD monitor timing and scoring, MCU control Seven-Segment LED display of the timing and scoring and so on. But now the timing and scoring designed too complex and used too much chip, cause the whole price is higher, and the software design is complex, and lead to cost performance is not very high, it is difficult to get a wide range of promotion.

The design is based on AT89C51 ball game timing and scoring, can record the time at the whole race; Can refresh scores of party a and party b in the whole process at any time; Midfielder exchange, can exchange A and B the position of the two teams score; End of the match, can sound alarm. This design is introduced in detail the timing and scoring system software design process, design according to actual situation to modify the score and the time of the show, flexible operation, low power consumption, reliability, security and the low cost, etc.

KEY WORDS:MCU,ball game,timing and scoring,Proteus

III

目 录

摘 要 ........................................................................................................................................... I ABSTRACT ............................................................................................................................. II 1 绪论 ........................................................................................................................................ 1

1.1背景知识介绍 ............................................................................................................... 1 1.2设计目的 ....................................................................................................................... 2 1.3设计任务和要求 ........................................................................................................... 2 1.4设计意义 ....................................................................................................................... 2 2系统总体方案 ......................................................................................................................... 3

2.1系统构成框图 ............................................................................................................... 3 2.2基本功能介绍 ............................................................................................................... 3

2.2.1赛程时间调整 ..................................................................................................... 3 2.2.2比赛时间开始/暂停设置 .................................................................................... 3 2.2.3比分交换控制 ..................................................................................................... 4 2.2.4比分刷新控制 ..................................................................................................... 4 2.2.5计时计分显示 ..................................................................................................... 4 2.2.6赛程结束报警 ..................................................................................................... 4

3软件编程及调试 ..................................................................................................................... 5

3.1开发环境介绍 ............................................................................................................... 5 3.2开发软件介绍 ............................................................................................................... 5 3.3软件总体设计方案 ....................................................................................................... 7 3.4软件设计具体过程 ....................................................................................................... 7

3.4.1主程序 ................................................................................................................. 7 3.4.2数码管动态刷新显示程序 ................................................................................. 9 3.4.3 T0中断程序 ...................................................................................................... 12 3.4.4加分子程序 ....................................................................................................... 13 3.4.5减分子程序 ....................................................................................................... 14 3.4.6调整时间子程序 ............................................................................................... 16 3.4.7半场交换比分子程序 ....................................................................................... 19 3.4.8比赛暂停子程序 ............................................................................................... 21 3.4.9延时模块子程序 ............................................................................................... 23 3.4.10中场指示灯程序 ............................................................................................. 24

4 Proteus仿真 .......................................................................................................................... 27

4.1 Proteus简介 ................................................................................................................ 27 4.2仿真过程 ..................................................................................................................... 28 5总结 ....................................................................................................................................... 32 致谢 .......................................................................................................................................... 33 参考文献 .................................................................................................................................. 34

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

1 绪论

1.1背景知识介绍

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择[1]。

单片机自20世纪70年代问世以来,以极其高的性价比受到人们的重视和关注,所以应用很广,发展很快。单片机的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。例如,80C51系列单片机已有十多年的生命期,如今仍保持着上升的趋势,就充分证明了这一点。单片机以其一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统,数据采集系统、智能化仪器仪表,及通讯设备、日常消费类产品、玩具等。并且已经深入到工业生产的各个环节以及人民生活的各层次中,如车间流水线控制、自动化系统等、智能型家用电器等。而美国ATMEL公司开发生产了新型的8位单片机——AT89系列单片机。他不但具有一般MCS-51单片机的所有特性,而且还拥有一些独特的优点,此次设计中所用到的AT89C51单片机就是其中典型的代表。

单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机,排烟罩VCD等等的家电里面都可以看到它的身影。

单片机是靠程序实现功能的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件的话,电路一定是一块大PCB板。但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别。只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性[2]。

体育比赛计时计分系统是对体育比赛过程中所产生的时间,比分等数据进行快速采集记录,加工处理,传递利用的信息系统。根据不同运动项目的不同比赛规则要求,体育比赛的计时计分系统包括测量类,评分类,命中类,制胜类得分类等多种类型。

球类比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,球赛的计时计分系统是一种得分类型的系统。球赛计时计分系统由计时器,计分器等多种电子设备组成,同时,根据目前高水平球赛要求,完善的球赛计时计分系统设备应能够与现场成绩处理,现场大屏幕,电视转播车等多种设备相联,以便实现高比赛现场感,表演娱乐观众等功能目标。

陕西科技大学毕业论文(设计说明书) 2

由于单片机的集成度高,功能强,通用性好,特别是它具有体积小,重量轻,能耗低,价格便宜,可靠性高,抗干扰能力强和使用方便等独特的优点,使单片机迅速得到了推广应用,目前已经成为测量控制应用系统中的优选机种和新电子产品的关键部位。世界各大电气厂家,测控技术企业,机电行业,竞相把单片机应用于产品更新,作为实现数字化,智能化的核心部件。球赛计时计分器就是以单片机为核心的计时计分系统,由计时器,计分器,综合控制器等组成[3]。

1.2设计目的

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

本次设计是由AT89C51编程控制LED七段数码管作显示的球赛计时计分系统。该系统能够记录赛程比赛时间,并能修改比赛时间,及时刷新甲、乙双方的比分以及比赛结束能发出报警声等功能。具有价格低廉,性能稳定,操作方便并且易于携带等特点。广泛适合各类学校或者小型团体作为赛程计时计分[4]。

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

1.3设计任务和要求

任务: 球赛计时计分器的软件设计。

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

(b)能随时刷新甲、乙两队在整个过程中的比分。 (d)比赛结束时,能发出报警声。

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

1.4设计意义

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

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

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表示秒钟。

陕西科技大学毕业论文(设计说明书) 4

这时,如果裁判吹响开始的哨声时,则应立即按下按键暂停/开始键,表示赛程开始,计时显示则由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和00 00。 2.2.6赛程结束报警

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

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

3软件编程及调试

软件的编程设计是单片机系统设计的核心部分,也是能否实现预定功能的关键。单片机编程常用的语言是C语言和汇编语言,最终都要转为Intel HEX格式或二进制格式(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语言开发工具是Keil Software公司的μVision集成开发环境,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。一般将其中的C语言成为C51。C51对于ANSI(标准) C做了扩展,使得C51和汇编语言一样可直接访问单片机的硬件资源。对绝大多数51单片机应用系统可只用C语言,不适用汇编就可以完成软件开发任务;但即使是用C语言编写程序,也必须理解单片机的内部结构,特别是内存、中断、串行通信口等资源的使用方法,否则很难实现一个实际的应用系统。

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

陕西科技大学毕业论文(设计说明书) 6

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

许多厂商都能生产符合Keil C公司Mon51标准、能在Keil C集成开发环境中使用的Mon51仿真器,如周立功公司的TKS系列仿真器。当采用Keil C配合Mon51仿真器作为开发工具时,Keil C既是软件编程工具,也是程序调试工具,可避免在各种开发工具间反复切换,方便软件开发。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境 (μVision)将这些部分组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20MB以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍[9]。

以下为Keil C51开发系统基本知识Keil C51开发系统介绍。 (a)系统概述

Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。 (b)Keil C51单片机软件开发系统的整体结构

C51工具包的整体结构,μVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中[10]。图3-1是其工作界面。

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

图 3-1 Keil C工作界面

3.3软件总体设计方案

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

3.4软件设计具体过程

软件设计部分采用模块化程序设计,用C语言编写。Keil是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势[11]。 3.4.1主程序

通过主程序对以上子程序的调用,最终可以实现球赛计时计分器的功能。主程序流程图如图3-2所示。

陕西科技大学毕业论文(设计说明书) 8

开始系统初始化加分按键按下Y对应加分N减分按键按下Y对应减分NY半场暂停暂停并报警NY暂停键按下NY半场暂停暂停NYN比赛结束暂停键按下NY报警器报警结束

图3-2 主程序流程图

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

程序如下: void main()

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

TH0=0xb1; 定时器送计数初值,EA=1,开中断,P3口电平拉高 TL0=0x10; P1=0x7f, 上半场指示灯点亮 TR0=1; TR0=1启动定时器 P3=0xff; P1=0x7f;

while(1) 主程序通过 while(1),反复调用循环体内的子程序 { 来执行相应的功能 keyjianfen1();

T1=0;

keyjiafen1(); key2();

if(zidong==1) zidong==1为key3()执行条件 key3(); key3()半场交换场地时自动交换双方 if(n==18&&bujin==0) 比赛分数子程序,所以仅当中场时调用 {

bujin=2; 修改变量bujin的值,目的是设定over() } 中第二个if语句的执行条件 key4(); } }

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

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

shijian();

over();

陕西科技大学毕业论文(设计说明书) 10

进入数码管动态显示子程序N数码管置低位发送数据调用延时子程序发送“熄灭”返回主程序

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

程序如下:

void display(int i,int j,int x,int y) 变量i,j,x,y分别为分,秒,A分数,B分数 {

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

P1=0xbf; 使P1=0xbf, 即P1=1011 1111B,上半场指示灯对应点亮 P2=0xfe;

数码管动态刷新显示程序 P2=1111 1110, i为分钟

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

delay(1); 延时数码管的点亮 P2=0xff; P0=0;

P2=0xfd; 同理,动态刷新时分钟个位并延时点亮 P0=seg[i]; delay(1);

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

P2=0xff; P0=0;

P2=0xfb; 同理,动态刷新时秒钟十位并延时点亮 P0=seg[j0/10]; delay(1); P0=0; P2=0xff;

P2=0xf7; P0=seg[j]; delay(1); P0=0; P2=0xff;

P2=0xef; P0=seg[x0/10];

delay(1); P2=0xff; P0=0;

P2=0xdf; P0=seg[x]; delay(1); P2=0xff; P0=0;

P2=0xbf;

P0=seg[y0/10]; delay(1); P0=0; P2=0xff;

P2=0x7f; P0=seg[y]; delay(1); P0=0;

同理,动态刷新时秒钟个位并延时点亮 同理,动态刷新A分数十位并延时点亮

A分数个位并延时点亮 B分数十位并延时点亮 同理,动态刷新B分数十位并延时点亮 同理,动态刷新 同理,动态刷新

陕西科技大学毕业论文(设计说明书) 12

P2=0xff; }

3.4.3 T0中断程序

使用T0中断,能够对LED进行20ms一次的动态扫描[13]。程序流程图如图3-4所示。

程序如下: void t0(void) interrupt 1 {

TH0=0xb1; TL0=0x10; if(n==0) { n=60; m--; }

进入定时中断子程序保护现场20ms到否NY调用中断子程序恢复中断中断返回 图3-4 T0中断程序流程图

本设计调用定时器T0,计时单位为一秒

对定时器T0送入计数初值,由于TH0=0xb; TL0=0x10 故定时器定时为20毫秒,即每 20毫秒调用一次void t0(void) interrupt 1 球赛计时计分器的软件设计 13

i++; if(i==50)

{ 令i值为50 50*20毫秒=1秒,来实现计时 n--; 单位为一秒 i=0; }

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

} 次数码管 3.4.4加分子程序

通过按键可对比分进行加分处理实现对两球队比赛分数的调整和控制。程序流程图如图3-5所示。

进入加分子程序检测所有键有键按下否NY调用延时程序消抖扫描键盘N是加分键否Y进行加分操作返回主程序

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

陕西科技大学毕业论文(设计说明书) 14

程序如下: void keyjiafen1()

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

{ 检测到按键按下时候,延时,按键仍按下,说明 if(RXD==0) 按键确实按下,非抖动,A对应加分 {

while(RXD==0); x++; }

}

if(TXD==0) 检测TXD加分按键时候按下,B加分 { delay(1); if(TXD==0) }

3.4.5减分子程序

通过按键可对比分进行减分处理实现对两球队比赛分数的调整和控制。程序流程图如图3-6所示。

{

while(TXD==0); y++; }

}

程序如下: void keyjianfen1()

{ if(WR==0) { delay(1); if(WR==0) {

while(WR==0); 球赛计时计分器的软件设计 15

进入减分子程序检测所有键有键按下否NY调用延时程序消抖扫描键盘N是减分键否Y进行减分操作返回主程序

图3-6 减分子程序流程图

减分按键检测子程序,其基本算法及功能与加分

相同

陕西科技大学毕业论文(设计说明书) x--;

}

} if(RD==0) { delay(1); if(RD==0) {

while(RD==0); y--; }

}

}

3.4.6调整时间子程序

调整时间子程序,使时间快速倒退或快进,实现回表功能,同时回表之后能自动暂停。程序流程图如图3-7所示。

16

程序如下:void key2()

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

进入调整时间子程序检测所有键有无键N按下否Y调用延时程序消抖扫描键盘是调整时N间键否Y键值计算回表键按下快表键按下进行回进行快表操作表操作调用暂停子程序返回主程序

如图3-7 调整时间子程序流程图

陕西科技大学毕业论文(设计说明书) 18

{

if(INT0==0)

{

delay(10);

if(INT0==0) 回表子程序,检测到INT0按下时,使时间回倒 chuzanting==0; chuzanting==0; zanting=1;为附加变量,当回表按键 zanting=1; 松开时,表暂停,这两个变量用来调用暂停

if(n==60) m++; n=1; }

{

n++;

{

} }

if(INT1==0) 快表子程序,检测到INT1按下时,使倒计加快, { 通常情况下与回表子程序配合使用,即当回表 回过的时候,按此键调整时间 delay(10); chuzanting==0; zanting=1;作用同上 if(INT1==0) }

void shijian() 该程序使回表和快表按键松开时候能自动暂停 {

if(zanting==1&&INT0==1&&INT1==1&&chuzanting==0 ) {

EA=0; zanting==1&&INT0==1&&INT1==1&&chuzanting==0作用为 zanting=0; 当按键松开的时候,调用暂停程序条件 {

chuzanting==0; zanting=1; n--; }

}

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

huzanting=0; zanting=0;chuzanting=0,初始化,以便下次回表和快表 {

while(1) 按键松开时候仍能调用暂停程序 display(m,n,x,y);

if(P1_0==0) 当检测暂停键按下,开中断,跳出暂停 {

delay(1); if(P1_0==0) {

while(P1_0==0); EA=1;

break; } } } } }

3.4.7半场交换比分子程序

进入下半场,通过调用半场交换比分子程序实现两队比分的调换。程序流程图如图3-8所示。

程序如下:void key3() {

int temp; 陕西科技大学毕业论文(设计说明书) 20

进入交换比分子程序检测所有键有键按下否NY调用延时程序消抖扫描键盘N半场到否Y交换比分刷新数码管返回主程序

3-8 半场交换比分子程序流程图

定义中间变量temp,检测到有按键按下时候

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

if(zidong==1&&jie==1) 通过temp交换甲队,乙队两队比赛分数 {

temp=x; zidong==1&&jie==1是判断半场的条件 y=temp;

display(m,n,x,y); 刷新数码管 zidong=0; }

3.4.8比赛暂停子程序

调用比赛暂停子程序,在比赛正在进行时按下暂停键可以使比赛暂时停止,此期间比赛计时暂停;再次按下暂停键,比赛继续进行。程序流程图如图3-9所示。

bujin=0;

}

程序如下:void key4() {

陕西科技大学毕业论文(设计说明书) 22

进入比赛暂停子程序检测所有键有键按下否NY调用延时程序消抖扫描键盘暂停键N按下否Y比赛暂停/开始刷新数码管返回主程序

图3-9比赛暂停子程序流程图

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

if(P1_0==0) 检测到暂停按键按下时候,令EA=0关闭中断 {

delay(1); 同通过死循环程序while(1),不断刷新数码管 if(P1_0==0) 当暂停键再次按下时候,开中断,以使比赛时间 { 继续倒计时,由于在暂停的时候,程序处于死循 while(P1_0==0);

EA=0; 无法回到主程序,暂停时,除了暂停键 while(1) 其他按键按下均无效

{ display(m,n,x,y); if(P1_0==0)

{ 当暂停键再次按下时候,EA=1开中断,计时数码管 delay(1); 继续倒计时,同时通过break语句,跳出死循环 if(P1_0==0) {

while(P1_0==0); EA=1; break; } } } } } }

3.4.9延时模块子程序

通过调用延时子程序来保证数码管的显示亮度和静态效果。程序流程图如图3-10所示。

陕西科技大学毕业论文(设计说明书) 24

进入延时子程序N定时时间到否Y各位计时加一各位等于10否NY各位清零,十位加一再进行判断返回主程序

图3-10延时模块子程序流程图

程序如下:

void delay(int t) 调用该子程序能实现延时功能

{ 通过参数t,可以调成延时时间 while(t--) {

unsigned int i; 设置变量i的变化范围,能调整延时的单位时间 for(i=0;i<200;i++); 长度,i越小,延时的单位时间越短,精度越高 } }

3.4.10中场指示灯程序

通过上下半场指示灯的明暗来表示上半场和下半场,比赛结束时上下半场指示灯均点亮。程序流程图如图3-11所示。

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

进入中场指示灯子程序上半场指示灯点亮半场到否NY下半场指示灯点亮N比赛结束否Y上下半场指示灯均点亮返回主程序

图3-11 中场指示灯程序流程图

程序如下: void over() {

if((m==0)&&(n==0)) 当m,n均为0的时候,通过变量jie的值判断比赛 { 是否结束 if(jie>1)

如果jie>1,说明半场到了,比赛没有结束,

{ 令m=45,n=0,关中断,再次按下暂停键时候继续倒计时

m=45; 同是T1=1;delay(400) ; delay(400);,是蜂鸣器 n=0; 发声报警 EA=0;

T1=1; delay(400);

陕西科技大学毕业论文(设计说明书) 26

T1=0;

while(1)

{

display(m,n,x,y); 刷新数码管,等待暂停减再次按下,跳出暂停

if(P1_0==0)

{ delay(1); if(P1_0==0) {

while(P1_0==0); EA=1; break; } } } jie--;

}

if(jie==1&&bujin==2) 如果jie==1&&bujin==2,说明比赛结束了,

{ 关闭中断,比赛秒表不再走动,同时不短刷新数码管, EA=0; m=0;

n=0;

T1=1; 全场比赛结束蜂鸣器开始报警 delay(400); T1=0; }

P1=0x3f; P1=0x3f上下半场指示灯同时点亮,比赛结束

while(1)

display(m,n,x,y); 同时应当不断刷新数码管 } }

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

4 Proteus仿真

4.1 Proteus简介

随着软件技术的发展,在实际的软件开发工程中,程序调试的绝大多数工作可不依赖硬仿真器,也不必非等到目标板完成制作后才开始软件测试。与目标板外围电路无关的部分,可利用Keil C的软仿真器来完成程序调试;与目标板外围电路相关的部分,可利用Proteus软件与Keil C联合仿真的方法来进行软件测试[14]。

Proteus是英国Labcenter公司开发的嵌入式系统仿真软件,组合了高级原理图设计工具ISIS、混合模式SPICE仿真、PCB设计以及自动布线而形成了一个完整的电子设计系统。它运行于Windows操作系统上,可以仿真、分析各种模拟和数字电路系统,并且对PC机的硬件配置要求不高。该软件具有以下主要特点:

(a)实现了单片机仿真和SPICE(Simulation Program with Integrated Circuit Emphasis)电路仿真相结合,具有模拟电路仿真、数字电路仿真、单片机以及外围电路仿真、RS232动态仿真、SPI调试器、键盘和LCD系统仿真功能。

(b)提供了大量的元器件,涉及电阻、电容、二极管、三极管、MOS管、变压器、继电器、各种放大器、各种激励源、各种微控制器、各种门电路和各种终端等;同时提供了许多虚拟测试仪器,如电流表、电压表、示波器、逻辑分析仪、信号发生器、定时、计时器等。

(c)支持主流单片机系列的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。

(d)提供软硬件调试功能。同时支持第三方的软件编译和调试环境,如Keil C51 μVision2等软件。

(e)具有强大的原理图编辑以及原理图后处理能力。

(f)Proteus VSM虚拟系统模型组合了混合模式的SPICE电路仿真、动态器件和微控制器模型,实现了完整的基于微控制器设计的协同仿真,真正使在物理原型出来之前对这类设计的开发和测试成为可能。

总之,该软件是一款集单片机和SPICE分析与一身的仿真软件,功能极其强大。Proteus电路设计是在Proteus ISIS集成环境中完成的[15]。图4-1是其工作界面。

陕西科技大学毕业论文(设计说明书) 28

图4-1 Proteus工作界面

4.2仿真过程

我们以足球比赛为例,计时初始设计为45分钟,接通电源,计时显示即开始倒计时工作,上半场指示灯亮[16]。如图4-2所示。

图4-2 上半场开始

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

按下A+1键实现对A的加分,每按下一次加1分。如图4-3所示。

图4-3 实现对A队加分

同样可实现B的加减分,按下暂停/开始键可实现暂停和开始。如图4-4所示。

图4-4 实现对B队加分

上半场结束后,停止计时,蜂鸣器报警。如图4-5所示。

陕西科技大学毕业论文(设计说明书) 30

图4-5 上半场结束

按下暂停\\开始按键开始下半场计时,同时可以实现甲队和乙队交换分数,下半场指示灯亮。如图4-6所示。

图4-6 下半场开始

全场比赛结束,上下半场指示灯均点亮,显示最终比分。如图4-7所示。

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

图4-7 比赛结束

陕西科技大学毕业论文(设计说明书) 32

5总结

在本次毕业设计,我通过基于典型单片机AT89C51的设计和应用,对于单片机工作原理,功能有了宏观的了解,最主要的收获在于对单片机系统开发中的C程序的应用有了新的、进一步的认识。让我更熟悉掌握了Keil μVision3,proteus ISIS这些应用程序的运用,让我懂得了如何编写一些简单的程序,如何设计一个单片机系统的程序开发。

在本次设计的过程中,我发现很多的问题,这些问题的发现,有助于提高我在以后的工作和学习中对此类问题的认识,确保不在同一问题上再次犯错。严谨求实、踏实务实,是我本次毕业设计的深刻总结。

通过本次毕业设计,提高了我对单片机系统开发的能力,学回了怎样将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的不畏困难的挑战精神,从而不断地战胜自己,超越自己,在本次设计过程中,学会了坚持不懈,不轻易言弃。设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。

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

致 谢

毕业设计是对我们知识运用能力的一次全面考核,也是对我们进行工程设计能力的训练,培养我们综合运用所学知识独立的分析思考问题和解决问题的能力,为以后工程设计和专业学术论文的撰写打下了良好的基础。

本次毕业设计能够顺利完成,首先要感谢我的指导老师——杨萍老师。在老师的细心指导下,每次设计遇到问题时老师不辞辛苦的讲解才使得我的设计能够顺利的进行。从设计的选题到资料的搜集直至最后设计的修改的整个过程中,花费了老师很多的宝贵时间和精力,在此向我的导师表示衷心地感谢!其次要感谢帮助到我的同学们,他们的热心帮助和支持使我感受到同窗之间的友谊;最后还要感谢相关资料的编著者们间接给予我的帮助,感谢你们为我们提供一个良好的环境,是本次设计顺利完成。

陕西科技大学毕业论文(设计说明书) 34

参 考 文 献

[1]彭为,黄科,雷道仲.单片机典型系统设计[M].北京:电子工业出版社,2006.12:246-273.

[2]何立民.MCS-51系列单片机应用系统设计[M].北京:北京航空航天大学出版社,1990:15-28.

[3]李正浩,姜宝钧.51单片机在LED数码管显示中的应用[J].实验科学与技术,2006(B12): 43-45.

[4]刁成嘉.UML系统建模与分析设计[M].北京:机械工业出版社,2007.6:59-109. [5]梅丽凤,王艳秋,汪毓铎,任国臣.单片机原理及接口技术[M].北京:清华大学出版社;北京交通大学大学出版社,2009.2:106-116.

[6]金仁贵.单片机应用系统的开发方法[J].电脑知识与技术,2006(12): 5-7. [7]赵亮,侯国锐.单片机C语言编著与实例[M].北京:人民邮电出版社,2007.9:23-35.

[8]丁明亮,唐前辉.51单片机应用设计与仿真[M].北京:北京航空航天大学出版社,2009.2.56-78.

[9]周慈航.单片机应用程序设计技术[M].北京:北京航空航天大学出版社,2002:1-7.

[10]谢宜仁.单片机使用技术问答[M].北京:人民邮电出版社,2002:17-33 [11]梁家海.基于MCS 51系列单片机的并发式显示系统的设计[J].钦州学院学报,2006(6): 45-48.

[12]孟建华,郝晋霞.AT89S系列单片机及在线编程技术[J].西安工程科技学院学报,2006(6): 22-23.

[13]张莉娟.MCS——51单片机典型程序设计的教学研究[J].职业技术,2006(24): 48.

[14]李海鲲.Proteus在单片机课程设计中的应用[J].电脑知识与技术,2006(12): 167-170.

[15]马刚,李向仓.用Proteus与Keil整合构建单片机虚拟仿真平台[J].现代电子技术,2006(24): 13-25.

[16]唐前辉,丁明亮.Proteus ISIS和Keil在单片机教学中的应用[J].重庆电力高等专科学校学报,2006(4): 11-34.

本文来源:https://www.bwwdw.com/article/53bo.html

Top