篮球比赛计时计分89C52Word文件下载.docx
《篮球比赛计时计分89C52Word文件下载.docx》由会员分享,可在线阅读,更多相关《篮球比赛计时计分89C52Word文件下载.docx(30页珍藏版)》请在冰豆网上搜索。
2、上下半场各20分钟,要求能随时暂停,启动后继续计时,一场比赛结束后应可清零重新开始比赛;
3、能按照篮球计分规则计分并显示。
通过本次基于STC89C52系列篮球计时记分器的设计,可以了解、熟悉有关单片机开发设计的过程,并加深对单片机的理解和应用以及掌握单片机与外围接口的一些方法和技巧,这主要表现在以下一些方面:
(1)篮球赛计时计分系统包含了8051系列单片机的最小应用系统的构成,同时在此基础上扩展了一些使用性强的外围接口。
(2)可以了解到LED显示器的结构、工作原理以及这种显示器的接口实例与具体连接与编程方法。
(3)怎样利用串行口来扩展显示接口等。
篮球赛计时计分器相对于人工计时计分的优点在于:
(1)高亮度性:
由LED数码管显示,具有高亮度性,便于比赛队员和观众了解比赛状况。
(2)方便性:
单片机系统开发的倒计时系统可以方便比赛的暂停和继续开始。
(3)公平性:
能够保证比赛的公平性,比如时间,是绝对公平的。
通过此次基于单片机设计的篮球计时计分系统,我们可以更清楚详细的了解单片机程序设计的基本指令功能、编程步骤和技巧来讲述单片机编程,并对MCS-51单片机的结构和原理进行讲述,以及基于单片机开发应用的相关芯片的工作原理,并且可以在将来的工作和学习中加以应用。
1.3球赛计时计分系统的发展和现状
伴随着球赛的诞生计时计分系统也就相应诞生,最开始有人工的统计时间和分数,随着科技的发展,球赛的计时计分系统的得到了很好的完善。
奥运会,NBA都是大屏幕的LCD显示时间和分数。
然而,现在的小型比赛的计时计分系统还不够完善,原始的方法还在使用中,
因此,开发一种便于携带的廉价计时加分系统有着广泛的应用,对小团体比赛会有很大帮助。
1.4本文的主要研究内容
本系统可分为两个子系统:
计时系统和计分系统。
主要研究以下几个方面:
单片机驱动数码管显示,单片机的串口通信,单片机的定时/计数功能,单片机汇编语言的软件开关去抖动,汇编语言的延时程序,Proteus软件的调试。
第2章系统硬件介绍
2.1MCS-51单片机简述
(1)单片机STC89C52简介
MCS51[1]是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了很多品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。
本课题中用到的芯片就是AT系列中的STC89C52单片机芯片。
STC89C52是一个低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的Flash只读程序存储器和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,内置功能强大的微型计算机的STC89C52提供了高性价比的解决方案。
STC89C52具有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。
它是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,STC89C52可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
下图所示为STC89C52引脚图:
(2)主要特性:
STC89C52的主要特性如下表所示:
兼容MCS—51指令系统
4k可反复擦写(>
1000次)FlashROM
32个双向I/O口
可编程UARL通道
两个16位可编程定时/计数器
全静态操作0-24MHz
1个串行中断
128x8bit内部RAM
两个外部中断源
共6个中断源
可直接驱动LED
3级加密位
低功耗空闲和掉电模式
软件设置睡眠和唤醒功能
(3)管脚说明
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够作为外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
因此作为输入时,P2口的管脚被外部拉低,输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
(4)STC89C52的极限参数
表2-2极限参数表
工作温度
-55℃to+125℃
储藏温度
-65℃to+165℃
任意引脚对地电压
-1.0vto+7.0v
最高工作电压
6.6v
直流输出电流
15.0mA
2.2显示器及其接口
(1)显示器介绍
显示器是最常用的输出设备,其种类繁多,但在单片机系统设计中最常用的是发光二极管显示器(LED)和液晶显示器(LCD)两种。
下面介绍发光二极管显示器(LED)的结构、工作原理及其接口电路。
(2)结构与原理
如上图,LED显示器又称为数码管,LED显示器由8个发光二极管组成。
其中7个长条形的发光管排列成“日”字形,另一个贺点形的发光管在显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。
LED显示器有两种不同的形式:
一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED显示器;
另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED显示器。
(3)LED显示器显示方式
点亮LED显示器有两种方式:
一是静态显示;
二是动态显示。
在本次设计中,采用的是静态显示。
所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。
这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种方法单片机中CPU的开销小。
这种电路的优点在于:
在同一时间可以显示不同的字符;
但缺点就是占用端口资源较多。
每位LED显示器需要单独占用8根端口线。
2.3CD4511芯片
CD4511是常用的硬件译码显示芯片它的引脚分布如下图
其中,
为试灯脚,
为消隐;
都接高电平。
LE为选通脚,接低电平可以计时输出A,B,C,D的输入信号。
LE接高电平锁存住原来的信号。
2.474LS21芯片介绍
本次设计中的比分校正电路采用四输入与门74LS21来实现。
74LS21是双4输入与门。
在一个芯片里有两个相同的单元,其中任何一个都是1/2断口。
同型号的74系列、74HC系列、74LS系列芯片,逻辑功能上是一样的。
第3章硬件电路设计
3.1系统硬件组成和器件选择
(1)系统硬件组成:
单片机STC89C52
计时电路
计分电路
按键开关
说明:
整个系统只用一片STC89C52;
在图中将计时电路与计分电路分开画,只是为了能够更好的更清晰的说明问题;
只有两个电路同时连接才可以正常工作。
(2)主要器件选择:
单片机:
STC89C52
四一七段BCD译码芯片:
CD4511
并行/串行转换芯片:
CD4094
四输入与门:
74LS21
显示器件:
7段共阴LED显示器
(3)器件列表
序号
名称
型号
数量
1
单片机
2
译码芯片
4
3
串并转化芯片
显示屏
七段共阴单数码管
8
5
晶振
12M
6
指示灯
发光二极管
7
四输入与门
芯片座
16芯和40芯活动芯片座
10
9
电容
30p
22u(50V)
11
电阻
1k电阻
12
万用板
9*16
13
电源
5号三节电池盒
14
导线
若干
(4)系统构成框图
本系统采用单片机STC89C52作为本设计的核心元件。
利用七段共阴LED作为显示器件。
在本次设计中,共接入八个七段共阴LED显示器,其中4个用于计录甲、乙两队的分数,每队2个LED显示器分数范围可达到0—99分。
另外4个LED显示器则用于计录赛程的时间,其中两个用于显示分钟;
另外2个用于显示秒钟。
赛程计时采用倒计时方式。
即比赛前将时间设置好,比赛开始时启动计时,直至计时到零为止。
根据设计,计时范围可达0—99分钟,完全满足赛程的需要。
其次,为了配合计时器和计分器校正、调整时间和比分,特定在本设计中设立了7个按键。
其中4个用于输入甲、乙两队的分数;
另外3个则用于完成设置、调整、启动和暂停赛程时间等功能。
基于单片机系统的篮球赛计时计分器的系统构成框图如图所视。
3.2基本功能介绍
(1)赛程时间设置
在3-2所示的计时电路中。
按键开关K5、K6用来设置赛程时间。
比如:
比赛时间上半场时间20分钟,则通过按键K5键,使数码管1显示“2”即可;
再按K6键,设置比赛时间的个位数,使数码管2显示“0”即可。
一般比赛时间为40分钟,所以只需要按K5键使数码管1显示“4”,按K6使数码管2显示“0”即可。
时间设置好后,等待比赛开始。
当比赛结束时,如果由于一些特殊原因需要增加比赛时间,这时增加比赛时间同样由按键K5、K6来设置,并且设置方法与上面所述一眼,但一般情况下只需要按K6键来设置即可,因为加时比赛一般只有几分钟而已。
(2)赛程时间启动/暂停设置
当时间设置完后,比如设置赛程时间为45分钟,则在图2-2所示的LED显示器上显示为4500,45表示分钟,00表示秒钟。
这时,如果裁判吹响开始的哨声时,则应立即按下按键K7,表示赛程开始,计时显示则由4500变成4459,4458……一直计时直到计为0000时表示赛程结束。
按键K7为赛程启动和暂停控制。
(3)比分交换控制
比分交换控制由K7键完成。
我们知道,因为比分交换是在上半场赛程结束后进行的,也就是说比分交换受赛程时间控制,只有当上半场计时器指示为0000时,按K7键,则会自动交换甲、乙两队的比分。
如果上半场赛程时间没有到0000时,则此时按下K7键,只会暂停比赛,不能交换分数。
如果要继续比赛,再按一次K7即可。
因此,K7键完成三重功能,即:
启动,暂停,比分交换。
(4)比分刷新控制
由于在比赛中,甲、乙两队的比分是不断在变化的,所以需要设置比分刷新控制装置;
此部分功能由图所示的计分电路中的按键开关K1~~K4来完成的:
K1键:
完成甲队加1分操作
K2键:
完成甲队减1分操作
K3键:
完成乙队加1分操作
K4键:
完成乙队减1分操作
(5)计时计分显示
计时计分显示器是采用七段共阴LED显示器来显示的。
其中计分是用4个LED显示器。
计时采用4个LED显示器;
显示格式为0000和0000。
(6)赛程中计时有指示灯显示
3.3计时电路和计分电路
(1)计时电路的工作原理
计时电路如图3-2所示,主要由开关K5~~K7,单片机STC89C52,译码器以及LED显示器构成。
其工作过程如下:
当比赛准备开始的时候,当调时(十位)开关K5按下时,产生一个低电平;
立即数00H取出,同时对应调分(十位)控制端P2.0的LE输出高电平,表示此时可以向调分(十位)的CD4511发送数据,但CD4511的输出端不会有输出,因为LE=1时,CD4511锁存。
这时,只要将要显示数据的代码经过P1口的P1.0送到CD4511的输入端A~~D端,送完后,将LE清零。
这时便可以将要显示数据的代码经过CD4511译码后,从输出端a~~g输出,送LED显示器显示即可。
调时按键开关每按一次,数字自动加1,直到调到需要设置的时间即可。
调时(个位)的操作方法与上面一样。
时间设置完成后,启动定时器T0开始定时计数。
计时采用倒计时,比如:
设置的时间为45分钟,则在LED上显示4500四位数。
定时T0计数60秒后中断返回,继续定时计数下一个60秒;
同时则在4位LED显示器上显示4459四位数,表示时间已过去1秒钟,即为44分59秒。
这样一直持续下去,直到变为“0000”时表示赛程结束。
如果比赛中,裁判叫暂停,则只要按一下K7键,即可暂停计时。
(2)计分电路的工作原理
计分电路主要由单片机STC89C52,串行/并行转换器(CD4094),LED显示器,74LS21以及按键开关组成。
按键开关K1~~K4组成甲、乙两队加减分控制。
按键K1~~K4一端接地,另一端输入与门74LS21的9脚,10脚,12脚,13脚,以及单片机STC89C52的P3.5,P3.4,P0.2,P0.1,8脚接STC89C52的P3.2脚。
当按键开关K1~~K4四个按键的任何一个一位按下时,与门的8脚输出都会产生低电平使单片机中断,从而使相应LED显示。
因为按键开关按下时为低电平。
计分电路如下图所示:
例如:
现在先在以甲队加分为例,来说明整个过程。
假设比赛刚开始,双方比分为0000,当某一时刻之后,当甲队加分时,则按下K1键,这时K1=0(低电平),其余K2K3K4=111(为高电平)K1K2K3K4相与之后的结果为低电平,这时与门8脚输出低电平到STC89C52的P3.2脚,使其外部中断INT0发生中断,从而调用中断服务程序,将要显示的数据从程序中定义的LED显示常数表TAB中取出数据06H,经串行发送端RXD/P3.0送至串行/并行转换器CD4094的第二个输入引脚,即数据输入DATA脚。
在RXD/P3.0引脚输出数据的过程中,连续使单片机RD/P3.7引脚输出6次高电平6,这样便使6片CD4094中得到不同的显示代码,然后使单片机RD/P3.7引脚输出低电平,将6片CD4094中显示代码送LED显示器显示,便得到结果,显示0100其对应的程序原理如下阐述:
因为,在程序中定义了33H,34H,35H,36H,4地址单元分别对应乙队、甲队3个LED显示器在程序中定义的LED显示常数表TAB[4]的偏移首地址。
单片机的RXD每次发送6个数据,分别对应以33H,34H,35H,36H为偏移首地址单元里的数据。
甲队加分表示以35H为偏移首地址的单元加1,指向第二个数据06H,其他以33H,34H,36H为偏移首地址单元的数据仍然指向第一个数据3FH,这样将这六个数据:
3FH,3FH,3FH,06H,3FH,3FH,经单片机的RXD发送出去,再在单片机RD/P3.7输出的6次高电平作用下产生4次移位,便在6片CD4094中得到显示代码:
3FH,06H,3FH,3FH。
然后在RD/P3.7输出时显示为0100。
3.4串行接口工作原理
MCS-51系列单片机片内有一个串行I/O端口,通过引脚RXD(P3.0)和TXD(P3.1)可与外设电路进行全双工的串行异步通信。
8051单片机的串行端口有4种基本工作方式,通过编程设置,可以使其工作在任一方式,以满足不同应用场合的需要。
其中,方式0主要用于外接移位寄存器,以扩展单片机的I/O电路;
方式1多用于双机之间或与外设电路的通信;
方式2,3除有方式l的功能外,还可用作多机通信,以构成分布式多微机系统。
串行端口有两个控制寄存器(SCON和PCON),用来设置工作方式、发送或接收的状态、特征位、数据传送的波特率(每秒传送的位数)以及作为中断标志等。
串行端口有一个数据寄存器SBUF(在特殊功能寄存器中的字节地址为99H),该寄存器为发送和接收所共同。
发送时,只写不读;
接收时,只读不写。
在一定条件下,向SBUF写入数据就启动了发送过程;
读SBUF就启动了接收过程。
串行通信的波特率可以程控设定。
在不同工作方式中,由时钟振荡频率的分频值或由定时器T1的溢出率确定,使用十分方便灵活。
本次设计的计分电路中,我们使用集成电路CD4094。
CD4094是8位移位寄存器,它主要完成串行输入,并行输出8位数据的功能,是典型的串行/并行转换芯片。
其中引脚分布图如第二章总图2-9所示。
其中2脚DATA为串行数据输入脚;
3脚CLOCK为时钟脉冲输入;
4、5、6、7、14、1、3、12、11脚为并行8位数据输出,前7脚与LED显示器a~~g引脚相连,11脚置空;
8脚接地;
16脚接电源5V。
3.5比分校正控制电路
本次设计中的比分校正控制电路由四输入与门74LS21和4个按键组成,其中K1、K2键接74LS21的9、10脚,完成甲队加、减分控制;
K3、K4键接74LS21的12、13脚,完成乙队加、减分控制。
有关74LS21集成电路的引脚分布及内部原理构造如下图所示:
74LS21芯片的主要引脚说明:
14脚为电源脚
7脚接地
1、2、4、5、9、10、12、13为与门输入脚
6、8脚为与门输出脚
3.6球赛计时计分器的工作过程
首先在比赛之前,接通电源,系统自动复位,此时计时电路与计分电路中的共阴极数码管全部显示为0000和0000;
然后我们按照计时电路中的K5键来设置比赛时间的十位数,例如比赛时间上半场为20分钟,则通过K5键,使数码管1显示“2”即可;
再按下K6键,设置比赛时间的个位数,使数码管2显示“0”即可。
一般比赛时间为40分钟,所示只需要按下K5键显示“4”,按下K6键显示“0”即可。
时间设置好时,等待赛程开始,当裁判吹响哨声时,启动计时,这时计时电路便开始工作,计时采用倒计时方式,即从20分钟减为0分钟表示上半场结束。
上半场结束时,指示灯由亮变灭,通知上半场结束,这时按下K7键,便完成了甲、乙两队的分数交换。
在整个赛程中,我们还要对两队比分进行及时刷新,这时我们通过计分电路中的K1~~K4键完成此功能,K1和K2键完成甲队加分、减分,K3和K4键完成乙队加分、减分。
按键每按一下,表示加上或者减去1分。
由于加分、减分我们采用中断完成,且加、减分的中断优先权小于计时电路中的中断优先权,所以不会对计时电路造成影响。
如果在赛程过程中,一方的教练申请暂停时,经裁判批准,我们立即按下K7键,即可以暂停计时,暂停时间到时,再按下K7键继续计时,直至上半场赛程结束,指示灯灭。
下半场的流程和上半场基本上是一样的。
第4章系统软件设计和Proteus仿真
4.1电路总体设计
(1)系统流程图
(2)系统总电路图
(3)系统总程序
ORG0000H
AJMPMAIN
ORG0003H
AJMPCXT
ORG000BH
AJMPCTCO
ORG200H
MAIN:
MOV33H,#00H
MOV34H,#00H
MOV35H,#00H
MOV36H,#00H
MP1:
MOV