原创基于单片机的篮球计时计分器的设计.docx
《原创基于单片机的篮球计时计分器的设计.docx》由会员分享,可在线阅读,更多相关《原创基于单片机的篮球计时计分器的设计.docx(31页珍藏版)》请在冰豆网上搜索。
![原创基于单片机的篮球计时计分器的设计.docx](https://file1.bdocx.com/fileroot1/2023-1/30/b7395b66-30ee-4766-9e95-66d9a6772b35/b7395b66-30ee-4766-9e95-66d9a6772b351.gif)
原创基于单片机的篮球计时计分器的设计
基于单片机的篮球计时计分器的设计
前言
随着社会以及经济的进步,简单的衣食住行已经不能满足人们的物质精神生活需要。
于是体育运动也得到了空前的发展,篮球是体育运动中的热门项目,也越来越受到人们的关注与喜爱。
裁判、教练、球员、以及观众四者关系的协调,已经成为国际篮联急需解决的问题之一。
篮球计时计分系统用于比赛实时数据的监控,它在现代篮球计时计分系统中发挥着重要的作用。
传统的篮球计时计分过程都是有人工完成,计时精度不能达到要求,而计分完全有人工通过翻计分薄的方法来计分,不但浪费大量的人力。
还导致计分的实时性差,不能把比赛的最新动态呈现给观众。
由于比赛用的计分薄多以纸或者塑料薄膜制成,对环境造成巨大的压力。
为了避免以上的现象发生,而研制的基于AT89单片机的篮球计时计分器,可对NBA等多国篮球联赛实行计时计分。
一、AT89单片机介绍
(一)AT89单片机总体介绍
AT89C52ATMEL公司生产的低电压,高性能CMOS8位单片机.片内含8K的可反复擦写的只读程序存储器(EEPROM)和256b。
的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器CPU和FLASH存储单元,功能强大AT89C52单片适用于许多较为复杂控制应用场合。
(二)AT89C52单片机的基本性能参数
与Mcs-51产品指令和引脚完全兼容。
8字节可重擦写FLASH闪速存储器、1000次擦写周期、全静态操作:
0HZ-24MHZ、三级加密程序存储器、256字节内部RAM、32个可编程I/0口线、3个16位定时/计数器、8个中断源、可编程串行UART通道、低功耗空闲和掉电模式。
AT89C52的内部框图及引脚图如图1和图2。
图1AT89C52内部框图
图2AT89C52引脚图
(三)AT89C52单片机的基本功能模块
1.功能引脚说明
★Vcc:
电源电压
★GND:
地
★P0:
P0口是一组8位漏极开路型双向1/O口,也即地址/数据总线复用口。
作为输出口用时.每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在FLASH由编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
★P1口:
PI是一个带内部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻某个引脚被外部信号拉低时会输出一个电流IIL与AT89C51不同之处是,Pl.0和P1.1还可分别作为定时/计数器2的外部计数输入(Pl.0/T2)和输入(P1.1/T2EX)。
★P2口:
是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑电路。
对端口P2写“l",通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(llt)。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOvx@DPTR指令)时,P2送出高8位地址数据。
在访问8位地址的外部数据存储器、如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。
FLASH编程或校验时,P2亦接收高位地址和一些控制信号。
★P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3口将用上拉电阻输出电流IIL。
P3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,如下表所示:
表1AT89C52P3口第二功能
端口引脚
第二功能名称
基本功能
P3.0
RXD
串行输入口
P3.1
TXD
串行输出口
P3.2
INTO
外中断0
P3.3
INTO
外中断l
P3.4
TO
定时/计数器0
P3.5
Tl
定时/计数器l
P3.6
WR
外部数据存储器写选通
P3.7
RD
外部数据存储器读选通
此外,P3口还接收一些用于FLASH闪速存储器编程和程序校验的控制信号。
★RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
★ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节.一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位.可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活,此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
★PSEN:
程序储存允许PSEN输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
★EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地).需注意的是:
如果加密位LBI被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。
flash存储器编程时,该引脚加上+12V的编程允许电源VPP,当然这必须是该器件是使用12V编程电压VPP。
★XTAL1:
振荡器反相放大器的及内部时钟发生器的输入端。
★XTAL1:
振荡器反相放大器的输出端。
2.定时器/计数器
定时器/计数器是单片机中的重要功能模块之一,在检测、控制和智能仪器等设备中经常用来定时。
另外还可以用来对外部事件计数。
(1)定时器/计数器的主要特性
①MCS-51的52系列有三个定时器,即T0、T1、T2定时器/计数器。
②每个定时器/计数器及可以对系统时钟计数实现定时,也可以对外部信号计数实现计数功能,通过编程设定来实现。
③每个定时器/计数器都有多种工作方式,其中T0有四种工作方式;T1有三种工作方式;T2有三种工作方式。
通过编程可以设定工作在那种工作方式。
④每一个定时器/计数器定时计数时间到时产生溢出,是相应的溢出位置位,溢出可通过查询或中断方式处理。
(2)定时器/计数器T0、T1的结构及工作原理
定时器/计数器T0、T1的结构如图3所示,它由计数器、方式寄存器TMOD、控制器TCON等组成。
图3定时器/计数器T0.T1的结构框图
定时器/计数器,其作用主要包括产生各种时标间隔、记录外部事件的数量等,是微机中最常用、最基本的部件之一。
8051有2个16位的定时器/计数器:
定时器0(T0)和定时器1(T1)。
T0由2个定时寄存器TH0和TL0构成,T1则由TH1和TL1构成,它们都分别映射在特殊功能寄存器中,从而可以通过对特殊功能寄存器中这些寄存器的读写来实现对这两个定时器的操作。
作定时器时,每一个机器周期定时寄存器自动加l,所以定时器也可看作是计量机器周期的计数器。
由于每个机器周期为12个时钟振荡周期,所以定时的分辨率是时钟振荡频率的1/12。
计数器时,只要在单片机外部引脚T0(或T1)有从1到0电平的负跳变,计数器就自动加1。
计数的最高频率一般为振荡频率的l/24。
(3)定时器/计数器的控制寄存器
定时器/计数器T0和T1有2个控制寄存器-TMOD和TCON,它们分别用来设置各个定时器/计数器的工作方式,选择定时或计数功能,控制启动运行,以及作为运行状态的标志等。
其中,TCON寄存器中另有4位用于中断系统。
★定时器方式控制寄存器TMOD
TMOD在特殊功能寄存器中,字节地址为89H,无位地址。
TMOD的格式如图4所示。
GATE
C/T
M1
M0
GATE
C/T
M1
M0
TMOD
定时器1定时器0
图4定时器/计数器的方式寄存器TMOD
由图可见,TMOD的高4位用于T1,低4使用于T0,4种符号的含义如下:
GATE:
门控制位。
其作用见图1.6。
GATE和软件控制位TR、外部引脚信号INT的状态,共同控制定时器/计数器的打开或关闭。
C/T:
定时器/计数器选择位。
C/T=1,为计数器方式;C/T=0,为定时器方式。
M1M0:
工作方式选择位,定时器/计数器的4种工作方式由M1M0设定。
M1M0=00:
工作方式0(13位方式)。
M1M0=01:
工作方式1(16位方式)。
M1M0=10:
工作方式2(8位自动装入时间常数方式)。
MlM0=11:
工作方式3(2个8位方式--仅对T0)。
★定时器控制寄存器TCON
TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)为88H一8FH,由于有位地址,十分便于进行位操作。
TCON的格式如图5示。
其中,TFl,TRl,TF0和TR0位用于定时器/计数器;IEl,ITl,IEo和IT0位用于中断系统。
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
TCON
图5定时器/计数器的控制寄存器TCON
TFl,TRl用于定时器T1;TF0,TR0用于定时器T0。
两组符号有相同的含义。
TF:
定时器/计数器中断请求标志位。
当定时器计满回零时,TF=1,并可申请中断;当CPU响应中断并进入中断服务程序后,TF自动清零。
如对TF查询,定时器回零后,要用指令将TF清零。
TR:
定时器/计数器开闭控制位。
IEl,ITl用于外部中断1(1NTl);IE0,IT0用于外部中断0(1NT0)。
两组符号的含义相同。
IT:
下跳沿/低电平引起外部中断请求的选择位。
IT=1,由下跳沿引起;IT=0,由低电平引起。
IE:
外部中断的中断申请标志。
IE=0,表明无外部中断请求;IE=1,表明有外部中断请求。
当有外部中断请求时,IE自动为1,单片机CPU响应此中断后,IE自动清零。
(4)定时器/计数器的工作方式
T0或T1无论用作定时器或计数器都有4种工作方式:
方式0、方式1、方式2和方式3。
除方式3外,T0和T1有完全相同的工作状态。
下面以T1为例,分述各种工作方式的特点和用法。
①工作方式0
13位方式由TL1的低5位和TH1的8位构成13位计数器(TL1的高3位无效)。
工作方式0的结构见图6。
图6T0、T1方式0的结构
图中,C/T为定时/计数选择:
C/T=0,T1为定时器,定时信号为振荡周期12分频后的脉冲;C/T=l,T1为计数器,计数信号来自引脚T1的外部信号。
定时器T1能否启动工作,还受到了R1、GATE和引脚信号INT1的控制。
由图中的逻辑电路可知,当GATE=0时,只要TR1=1就可打开控制门,使定时器工作;当GATE=1时,只有TR1=1且INT1=1,才可打开控制门。
GATE,TR1,C/T的状态选择由定时器的控制寄存器TMOD,TCON中相应位状态确定,INT1则是外部引脚上的信号。
在一般的应用中,通常使GATE=0,从而由TRl的状态控制Tl的开闭:
TRl=1,打开T1;TRl=0,关闭T1。
在特殊的应用场合,例如利用定时器测量接于INT1引脚上的外部脉冲高电平的宽度时,可使GATE=1,TRl=1。
当外部脉冲出现上升沿,亦即INT1由0变1电平时,启动T1定时,测量开始;一旦外部脉冲出现下降沿,亦即INT1由l变O时就关闭了T1。
定时器启动后,定时或计数脉冲加到TLl的低5位,从预先设置的初值(时间常数)开始不断增1。
TL1计满后,向THl进位。
当TL1和THl都计满之后,置位T1的定时器回零标志TFl,以此表明定时时间或计数次数已到,以供查询或在打开中断的条件下,可向CPU请求中断。
如需进一步定时/计数,需用指令重置时间常数。
②工作方式1
16位方式。
与工作方式0基本相同,区别仅在于工作方式1的计数器TL1和TH1组成16位计数器,从而比工作方式0有更宽的定时/计数范围。
工作方式1的结构见图7。
图7T0、T1方式1的结构
③工作方式2
8位自动装入时间常数方式。
由TLl构成8位计数器,THl仅用来存放时间常数。
启动T1前,TLl和THl装入相同的时间常数,当TL1计满后,除定时器回零标志TFl置位,具有向CPU请求中断的条件外,THl中的时间常数还会自动地装入TLl,并重新开始定时或计数。
所以,工作方式2是一种自动装入时间常数的8位计数器方式。
由于这种方式不需要指令重装时间常数,因而操作方便,在允许的条件下,应尽量使用这种工作方式。
当然,这种方式的定时/计数范围要小于方式0和方式1。
工作方式2的结构见图8。
图8T0、T1方式2的结构
④工作方式3
2个8位方式。
工作方式3只适用于定时器0。
如果使定时器1为工作方式3则定时器1将处于关闭状态。
当T0为工作方式3时,THo和TL0分成2个独立的8位计数器。
其中,TL0既可用作定时器,又可用作计数器,并使用原T0的所有控制位及其定时器回零标志和中断源。
TH0只能用作定时器,并使用T1的控制位TRl、回零标志TFl和中断源,见下图。
通常情况下,T0不运行于工作方式3,只有在T1处于工作方式2,并不要求中断的条件下才可能使用。
这时,T1往往用作串行口波特率发生器(见1.4),TH0用作定时器,TL0作为定时器或计数器。
所以,方式3是为了使单片机有1个独立的定时器/计数器、1个定时器以及1个串行口波特率发生器的应用场合而特地提供的。
这时,可把定时器l用于工作方式2,把定时器0用于工作方式3。
工作方式2的结构见图9。
图9T0方式3的结构
在方式3下,计数器的最大计数值、初值的计算与方式2的完全相同。
3.中断系统
(1)中断的基本概念
在CPU与外设交换信息时,存在着一个快速的CPU与慢速的外设之间的矛盾。
为解决这个问题,发展了中断的概念。
单片机在某一时刻只能处理一个任务,当多个任务同时要求单片机处理时,这一要求应该怎么实现呢?
通过中断可以实现多个任务的资源共享。
中断现象在现实生活中也会经常遇到,例如,你在看书——手机响了——你在书上作个记号——你接通电话和对方聊天——谈话结束——从书上的记号处继续看书。
这就是一个中断过程。
通过中断,你一个人在一特定的时刻,同时完成了看书和打电话两件事情。
用计算机语言来描述,所谓的中断就是,当CPU正在处理某项事务的时候,如果外界或者内部发生了紧急事件,要求CPU暂停正在处理工作而去处理这个紧急事件,待处理完后,再回到原来中断的地方,继续执行原来被中断的程序,这个过程称作中断。
从中断的定义我们可以看到中断应具备中断源、中断响应、中断返回这样三个要素。
中断源发出中断请求,单片机对中断请求进行响应,当中断响应完成后应进行中断返回,返回被中断的地方继续执行原来被中断的程序。
(2)MCS-51单片机的中断系统
MCS-51单片机的中断源共有两类,它们分别是:
外部中断和内部中断
①外部中断源
外部中断0(
):
来自P3.2引脚,采集到低电平或者下降沿时,产生中断请求。
外部中断1(
):
来自P3.3引脚,采集到低电平或者下降沿时,产生中断请求。
②内部中断源
定时器∕计数器0:
定时功能时,计数脉冲来自片内;计数功能时,计数脉冲来自片外P3.4引脚。
发生溢出时,产生中断请求。
定时器∕计数器1:
定时功能时,计数脉冲来自片内;计数功能时,计数脉冲来自片外P3.5引脚。
发生溢出时,产生中断请求。
串行口:
为完成串行数据传送而设置。
单片机完成接受或发送一组数据时,产生中断请求。
③中断控制的专用寄存器
MCS-51单片机为用户提供了四个专用寄存器,来控制单片机的中断系统。
★定时器控制寄存器(TCON)
该寄存器用于保存外部中断请求以及定时器的计数溢出。
进行字节操作时,寄存器地址为88H。
按位操作时,各位的地址为88H~8FH。
寄存器的内容及位地址表示如下:
表2寄存器的内容
位地址
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H
位符号
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
IT0和IT1——外部中断请求触发方式控制位
IT0(IT1)=1脉冲触发方式,下降沿有效
IT0(IT1)=0电平触发方式,低电平有效
IE0和IE1——外中断请求标志位
当CPU采样到
(或
)端出现有效中断请求时,IE0(IE1)位由硬件置“1”。
当中断响应完成转向中断服务程序时,由硬件把IE
(或IE
)清零。
TR0和TR1——定时器运行控制位
TR0(TR1)=0定时器/计数器不工作
TR0(TR1)=1定时器/计数器开始工作
TF0和TF1——计数溢出标志位
当计数器产生计数溢出时,相应的溢出标志位由硬件置“1”。
当转向中断服务时,再由硬件自动清“0”。
计数溢出标志位的使用有两种情况:
采用中断方式时,作中断请求标志位来使用;采用查询方式时,作查询状态位来使用。
★串行口控制寄存器(SCON)
进行字节操作时,寄存器地址为98H。
按位操作时,各位的地址为98H~9FH。
寄存器的内容及位地址表示如下:
表3SCON寄存器内容
位地址
9FH
9EH
9DH
9CH
9BH
9AH
99H
98H
位符号
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
其中与中断有关的控制位共2位:
TI——串行口发送中断请求标志位
当发送完一帧串行数据后,由硬件置“1”;在转向中断服务程序后,用软件清“0”。
RI——串行口接收中断请求标志位
当接收完一帧串行数据后,由硬件置“1”;在转向中断服务程序后,用软件清“0”。
串行中断请求由TI和RI的逻辑或得到。
就是说,无论是发送标志还是接收标志,都会产生串行中断请求。
★中断允许控制寄存器(IE)
进行字节操作时,寄存器地址为0A8H。
按位操作时,各位的地址为0A8H~0AFH。
寄存器的内容及位地址表示如下:
表4IE寄存器内容
位地址
0AFH
0AEH
0ADH
0ACH
0ABH
0AAH
0A9H
0A8H
位符号
EA
/
/
ES
ET1
EX1
ET0
EX0
其中与中断有关的控制位共6位:
EA——中断允许总控制位
EA=0中断总禁止,禁止所有中断
EA=1 中断总允许,总允许后中断的禁止或允许由各中断源的中断允许控制位进行设置。
EX0和EX1——外部中断允许控制位
EX0(EX1)=0禁止外部中断
EX0(EX1)=1允许外部中断
ET0和ET1——定时器/计数器中断允许控制位
ET0(ET1)=0禁止定时器/计数器中断
ET0(ET1)=0允许定时器/计数器中断
ES——串行中断允许控制位
ES=0禁止串行中断
ES=1允许串行中断
可见,MCS-51单片机通过中断允许控制寄存器对中断的允许(开放)实行两级控制。
即以EA位作为总控制位,以各中断源的中断允许位作为分控制位。
当总控制位为禁止时,关闭整个中断系统,不管分控制为状态如何,整个中断系统为禁止状态;当总控制位为允许时,开放中断系统,这时才能由各分控制位设置各自中断的允许与禁止。
MCS-51单片机复位后(IE)=00H,因此中断系统处于禁止状态。
单片机在中断响应后不会自动关闭中断。
因此在转中断服务程序后,应根据需要使用有关指令禁止中断,即以软件方式关闭中断。
★中断优先级控制寄存器IP
MCS-51单片机的中断优先级控制比较简单,因为系统只定义了高、低2个优先级。
高优先级用“1”表示,低优先级用“0”表示。
各中断源的优先级由中断优先级寄存器(IP)进行设定。
IP寄存器地址0B8H,位地址为0BFH~0B8H。
寄存器的内容及位地址表示如下:
表5IP寄存器内容
位地址
0BFH
0BEH
0BDH
0BCH
0BBH
0BAH
0B9H
0B8H
位符号
/
/
/
PS
PT1
PX1
PT0
PX0
其中:
PX0——外部中断0优先级设定位;
PT0——定时中断0优先级设定位;
PX1——外部中断1优先级设定位;
PT1——定时中断1优先级设定位;
PS——串行中断优先级设定位。
以上各位设置为“0”时,则相应的中断源为低优先级;设置为“1”时,则相应的中断源为高优先级。
优先级的控制原则是:
低优先级中断请求不能打断高优先级的中断服务;但高优先级中断请求可以打断低优先级的中断服务,从而实现中断嵌套。
如果一个中断请求已被响应,则同级的其它中断服务将被禁止。
即同级不能嵌套。
如果同级的多个中断同时出现,则按CPU查询次序确定哪个中断请求被响应。
其查询次序为:
外部中断0→定时中断→外部中断→定时中断→串行中断。
中断优先级控制,除了中断优先级控制寄存器之外,还有两个不可寻址的优先级状态触发器。
其中一个用于指示某一高优先级中断正在进行服务,从而屏蔽其它高优先级中断;另一个用于指示某一低优先级中断正在进行服务,从而屏蔽其它低优先级中断,但不能屏蔽高优先级的中断。
此外,对于同级的多个中断请求查询的次序安排,也是通过专门的内部逻辑实现的。
上述四个专用寄存器的用途可以用图10说明。
图10MCS-51中断系统
二、本篮球计时计分器功能及实现过程
(一)系统总体设计
1.系统总体设计思路
作为一个基于单片机的篮球计时计分器,本设计所采用的美国ATMEL公司的AT89C52单片机是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
由于AT89C52单片机的上述优点,所以在本系统中采用此单片机可以尽可能地降低成本。
本设计是一个基于美国ATMEL公司的AT89系列的单片机的篮球计时计分器,整
个系统可分为中央处理器及美国ATMEL公司的AT89C52单片机,关于AT89C52单片机的一些参数