毕业设计论文基于AT89C51单片机的篮球赛计时计分器设计文档格式.docx
《毕业设计论文基于AT89C51单片机的篮球赛计时计分器设计文档格式.docx》由会员分享,可在线阅读,更多相关《毕业设计论文基于AT89C51单片机的篮球赛计时计分器设计文档格式.docx(32页珍藏版)》请在冰豆网上搜索。
![毕业设计论文基于AT89C51单片机的篮球赛计时计分器设计文档格式.docx](https://file1.bdocx.com/fileroot1/2022-11/24/70c3fa5e-3813-4e70-ac59-a988e28cfe61/70c3fa5e-3813-4e70-ac59-a988e28cfe611.gif)
采用这种方法可提升学生对单片机接口电路的综合运用能力。
电路采用单片机作为核心元件,利用10个7段共阴极LED数码管[2]作为显示器件。
6个用于记录甲、乙两队的分数,每队3个,显示分数范围可达0~999分,足够赛程计分的需要。
4个用于记录赛程时间,2个用于显示分钟,2个用于显示秒钟。
比赛前,将时间设置好,比赛开始时启动计时,直至倒计时到零为止。
计时范围达到0~99分钟,能满足实际赛程计时的需要。
为了配合计时器调整时间和计分器校正比分,设计了7个按键,4个用于输入甲、乙两队的分数,另3个用于启动和暂停赛程时间。
另外,还设计了定时报警系统,即比赛时间到时,扬声器发出报警声提示赛程结束。
该系统具有赛程定时设置,赛程时间暂停,及时刷新甲、乙双方的成绩以及赛后成绩暂存等功能。
设计分为软件设计和硬件设计两部分。
主控芯片采用AT89C51,使用汇编语言编写软件程序,主体分为计时显示模块、计分显示模块、定时报警、按键控制模块。
编程后利用KeilC51[3]软件来进行编译,再将生成的HEX文件装入芯片中,采用Proteus软件来仿真,检验功能是否能够正常实现,随后可用Protel99画出硬件电路图。
通过本次基于单片机的篮球赛计时计分器的设计,可以了解、熟悉有关单片机开发设计实例的过程,并加深对单片机的理解和应用以及掌握单片机与外围接口的一些方法和技巧。
1系统方案说明
1.1方案选择
1.1.1篮球赛计时计分器设计的现状
体育比赛计时计分系统是对体育比赛过程中所产生的时间,比分等数据信息进行快速采集记录、加工处理、传递和利用的系统。
根据运动项目的不同,比赛规则要求也不同,体育比赛的计时计分系统包括测量类、评分类、命中类、制胜类和得分类等多种类型。
篮球比赛是根据运动队员在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统。
篮球比赛的计时计分系统由计时器、计分器等多种电子设备组成的,同时,根据目前高水平篮球比赛要求,完善的篮球比赛计时计分系统设备应能与现场成绩处理、现场大屏幕、电视转播车等多种设备相联,以便实现激烈的比赛现场感和表演娱乐等功能目标。
现在,根据设计要求,介绍一下设计方案。
1.1.2系统总体设计方案
根据课题要求,介绍以下两种设计方法。
一种是单片机带外围扩展,驱动数码管工作的电路,可提升学生对单片机接口电路的综合运用能力;
另一种是单片机直接驱动数码管工作的电路,该电路成本相对较低。
两种电路都以单片机作为核心元件,利用10个7段共阴极LED数码管作为显示器件。
二者的不同之处在于计时电路。
前一种计时电路主要由按键开关、单片机AT89C51[4]、译码器及LED显示器构成。
当调时开关(十位)按下时产生一个低电平,对应调分(十位)控制端P2.0的LE输出高电平,表示可以向CD45ll的调分位(十位)发送数据,将要显示数据的代码经P1.0送到CD4511的A另—端,送完后将LE清零。
调时按键开关每按一次,数字自动加1。
直到调到需要设置的时间即可。
调时(个位)的操作方法与之相同。
时间设置完后,启动定时器。
如果比赛中暂停,按一下暂停键即可暂停计时。
后一种计时电路主要由按键开关、单片机AT89C51及LED显示器构成,采用双电源供电。
单片机采用+5V,数码管采用+15V采用单片机直接驱动数码管显示。
当按下秒钟加1按键时,秒计时显示加1;
当按下秒钟减1按键时,秒计时显示减1;
当按下分钟加1按键时,分钟显示加1,当按下分钟减1按键时,分钟显示减1。
时间设置完后,启动定时器开始倒计时。
如果比赛中裁判叫暂停,则只要按一下暂停键,即可暂停计时。
根据此次设计的实验条件及设计目的,我采用前一种方案,即单片机带外围扩展驱动数码管工作的电路系统。
球赛计时计分器系统图如1-1图所示。
图1-1系统构成图
1.2系统基本功能介绍
本设计要实现的基本功能有:
赛程时间设置,赛程时间启/停设置,比分交换控制,比分刷新控制,计时计分显示,赛程结束报警。
以下对个功能进行介绍。
1、赛程时间设置
在计时电路中,按键开关K5、K6用来设置赛程时间。
比如:
比赛时间上半场时间20分钟,则通过按键K5键,使数码管1显示“2”即可;
再按K6键,设置比赛时间的个位数,使数码管2显示“0”即可。
一般比赛时间为40分钟,所以只需要按K5键使数码管1显示“4”,按K6使数码管2显示“0”即可。
时间设置好后,等待比赛开始。
当比赛结束时,如果由于一些特殊原因需要增加比赛时间,这时增加比赛时间同样由按键K5、K6来设置,并且设置方法与上面所述一眼,但一般情况下只需要按K6键来设置即可,因为加时比赛一般只有几分钟而已。
2、赛程时间启动/暂停设置
当时间设置完成后,比如设置赛程时间为45分钟,则在LED显示器上显示为4500,45表示分钟,00表示秒钟。
这时,如果裁判吹响开始的哨声时,则应立即按下按键K7,表示赛程开始,计时显示则由4500变成4459,4458……一直计时直到计为0000时表示赛程结束。
按键K7为赛程启动和暂停控制。
3、比分交换控制
比分交换控制由计时电路图2-5中所示的K7键完成。
我们知道,因为比分交换是在上半场赛程结束后进行的,也就是说比分交换要受赛程时间控制,只有当上半场计时器指示为0000时,按K7键,则会自动交换甲、乙两队的比分。
如果上半场赛程时间没有到0000时,则此时按下K7键,只会暂停比赛,不能交换分数。
如果要继续比赛,再按一次K7即可。
因此,K7键完成三重功能,即:
启动,暂停,比分交换。
4、比分刷新控制
由于在比赛中,甲、乙两队的比分是不断在变化的,所以需要设置比分刷新控制装置;
此部分功能由计分电路图2-9中的所示的按键开关K1~~K4来完成的:
K1键:
完成甲队加1分操作
K2键:
完成甲队减1分操作
K3键:
完成乙队加1分操作
K4键:
完成乙队减1分操作
5、计时计分显示
计时计分显示器是采用七段共阴极LED显示器来显示的。
其中计分是用6个LED显示器。
计时采用4个LED显示器;
显示格式为000000和0000。
6、赛程结束报警
当比赛结束时,系统会自动发出10秒钟报警声,提示赛程结束。
2系统硬件电路设计
2.1篮球赛计时计分电路原理图
用Protel99SE设计的电路原理图见附录3,PCB版图见附录1。
2.2篮球赛计时计分器电路工作过程
整个篮球计时计分器的工作过程如下:
首先在比赛之前,接通电源,系统自动复位,此时计时电路与计分电路中的共阴极数码管分别显示为0000和000000;
然后我们按照计时电路图2-5中的K5键来设置比赛时间的十位数,再按下K6键,设置比赛时间的个位数字,使数码管2显示“0”即可。
一般比赛时间为40分钟,所示只需要按下K5键显示“4”,按下K6键显示“0”即可。
时间设置好时,等待赛程开始,当裁判吹响哨声时,启动计时,这时计时电路便开始工作,计时采用倒计时方式,即从20分钟减为0分钟表示上半场结束。
上半场结束时,蜂鸣器会发出10秒钟响声,通知上半场结束,这时按下K7键,便完成了甲、乙两队的分数交换。
在整个赛程中,我们还要对两队比分进行及时刷新,这时我们通过计分电路图2-9中的K1~K4键完成此功能,K1和K2键完成甲队加分、减分,K3和K4键完成乙队加分、减分。
按键每按一下,表示加上或者减去1分。
由于加分、减分我们采用中断完成,且加、减分的中断优先权小于计时电路中的中断优先权,所以不会对计时电路造成影响。
如果在赛程过程中,一方的教练申请暂停时,经裁判批准,我们立即按下K7键,即可以暂停计时,暂停时间到时,再按下K7键继续计时,直至上半场赛程结束,蜂鸣器会发出10秒的响声。
下半场的流程和上半场基本上是一样的。
2.3系统硬件电路组成
2.3.1计时电路
1.显示器及其接口
显示器是最常用的输出设备,其种类繁多,但在单片机系统设计中最常用的是发光二极管显示器(LED)和液晶显示器(LCD)两种。
由于这两种显示器结构简单,价格便宜,接口容易实现,因而得到广泛的应用。
下面介绍发光二极管显示器(LED)的结构、工作原理及其接口电路。
(1)LED结构与原理
图2-1为典型的数码管。
图2-17段LED数码管
图2-2共阴极与共阳极LED显示器
如图2-1,LED显示器又称为数码管,LED显示器由8个发光二极管组成。
中7个长条形的发光管排列成“日”字形,另一个点形的发光管在显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。
LED显示器有两种不同的形式:
一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED显示器;
另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED显示器。
如图2-2所示。
本设计采用的是共阴极数码管显示。
(2)LED显示器显示方式
点亮LED显示器有两种方式:
一是静态显示;
二是动态显示。
在本次设计中,采用的是静态显示。
所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的I/O接口[5]用于笔划段字形代码。
这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种方法单片机中CPU的开销小。
这种电路的优点在于:
在同一时间可以显示不同的字符;
但缺点就是占用端口资源较多。
从图2-3可以看出,每位LED显示器需要单独占用8根端口线,因此,在数据较多的时候,往往不采用这种设计,而是采用动态显示方式。
本设计采用的便是此种显示方式。
所谓动态显示,就是将要显示的多位LED显示器采用一个8位的段选端口,然后采用动态扫描一位一位地轮流点亮各位显示器。
下图2-4为4位LED显示器动态显示电路。
在此电路中,单片机的P1口用于控制4位LED的段选码:
P2口的P2.0~~P2.3用于控制4位LED位选码,单片机的P1口用于控制4位LED的段选码:
P2口的P2.0~~P2.3用于控制4位LED位选码。
图2-3静态显示图
图2-4动态显示图
由于所有的段选码连在一起,所以同一瞬间只能显示同一种字符。
但如果要显示不同字符,则要由位选码来控制。
(如果LED为共阴极则P2.0~~P2.3输出为高电平,如果LED为共阳极则P2.0~~P2.3输出为低电平。
)
例如,现在要显示“5678”四个数字,则首先应该将“5”的显示代码(共阴LED显示器的显示代码为6DH,共阳LED显示器的显示代码为92H)由P1.0送出,然后P2.0~~P2.3输出相应位码(LED为共阴则P2.0~~P2.3输出1000,LED为共阳则P2.0~~P2.3输出0111)时,则可以看到在数码管1上显示的数字为“5”。
再将显示的数字“5”延时5~10ms,以造成视觉暂留效果;
同时代码由P1.0送出。
用同样的方法将其余3个数字“678”送数码管2,3,4显示,于是最后则可以在4位LED显示器上看到“5678”四个数字。
为了使显示效果更加稳定,可以使每个数码管所显示的数字不断的重复,但其中重复频率达到了一定的程度的时候,加之人眼睛本身的视觉暂留效果的作用,便可以看到相当稳定的“5678”四个数字。
如表2-2,即为模拟以上的过程表(以共阴LED设置显示代码,共阳型与此相反)。
表2-2模拟过程表
2.报警器
(1)报警器的分类
蜂鸣器有两类3大品种。
一类是压电式,一类是电磁式,电磁式又有两大品种,铁振膜式和动圈式,二者原理一样只是结构不同。
所有蜂鸣器都有两种类型:
纯蜂鸣器和带驱动的蜂鸣器,蜂鸣器都是用音频信号驱动的,都是交流驱动。
(2)报警器的工作原理
报警器的种类很多,比如:
扬声器,蜂鸣器等,本次设计采用的是电磁式蜂鸣器作为报警器。
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、震动膜片以及外壳等组成。
接通电源后,振荡器产生的音频信号通过电磁线圈,使得电磁线圈产生了一个磁场。
振动膜片在电磁线圈和磁铁的相互作用下,周期性的振动发声。
3.计时电路的工作原理图
如图2-5所示。
图2-5计时电路原理图
4.计时电路的工作原理
计时电路主要由开关K5~~K7,单片机AT89C51,译码器以及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键,即可暂停计时。
5.振荡电路
本次设计要使用到AT89C51单片机的时钟振荡功能。
AT89C51中有一个用于构成内部震荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入和输出端。
这个放大器与作为反馈元件的片外石英晶体[6]或者陶瓷谐振器一同构成自激振荡器。
振荡电路如图2-6所示。
如图2-6,外接石英晶体或者陶瓷谐振器以及电容C1,C2接在放大器的反馈电路中构成并联谐振电路。
谐振器本身对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度以及温度的稳定性,如果使用石英晶体,推荐使用30pF,而建议若使用陶瓷谐振器选择40pF。
我们也可以使用外部时钟[7],采用外部时钟电路如图2-7所示。
在外接时钟的情况下,外部时钟脉冲接到XTAL1端,即内部时钟脉冲的输入端,XTAL2则悬空。
由于外部时钟信号是通过一个两分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比[8]没有特殊要求,但最小的高电平持续时间和最大的低电平持续时间应符合技术条件以及本次设计所采用硬件的要求。
图2-6时钟振荡电路
图2-7外部时钟电路
本次设计使用的是石英晶体谐振器,因此采用30pF的电容,频率大小采用12MHZ与6MHZ均可,这里采用的是12MHZ晶振。
2.3.2计分电路
8051系列单片机除了有4个8位并行口外,还有一个能同时进行串行发送和接收的全双工串行通信口。
它能同时发送和接收数据,还能作为同步移位寄存器使用。
球赛计分电路正是利用了8051单片机串行口可以外接串行输入并行输出移位寄存作用为输出口来实现球赛比分刷新显示的。
1.串行接口工作原理
MCS-51[9]系列单片机片内有一个串行I/O端口,通过引脚RXD(P3.0)和TXD(P3.1)可与外设电路进行全双工的串行异步通信。
8051的串行端口有4种基本工作方式,通过编程设置,可以使其工作在任一种方式。
其中,方式0主要用于外接移位寄存器,以扩展单片机的I/O电路;
方式1多用于双机之间或者与外设电路的通信;
方式2,3除有方式l的功能外,还可用作多机通信,以构成分布式多微机系统[10]。
串行端口有两个控制寄存器(SCON[11]和PCON[12]),用来设置工作方式、发送或接收的状态、特征位、数据传送的波特率(每秒传送的位数)以及作为中断标志等。
串行端口有一个数据寄存器SBUF[13](在特殊功能寄存器中的字节地址为99H),该寄存器为发送和接收所共同。
发送时,只写不读;
接收时,只读不写。
在一定条件下,向SBUF写入数据就启动了发送过程;
读SBUF就启动了接收过程。
串行通信的波特率可以程控设定。
在不同工作方式中,由时钟振荡频率的分频可由定时器T1的溢出率[14]确定,使用十分方便灵活。
本次设计的计分电路中,我们使用集成电路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。
2.比分校正控制电路
本次设计中的比分校正控制电路由四输入与门74LS21和4个按键组成,其中K1、K2键接74LS21的9、10脚,完成甲队加、减分控制;
K3、K4键接74LS21的12、13脚,完成乙队加、减分控制。
有关74LS21集成电路的引脚分布及内部原理构造如图2-8所示。
图2-874LS21引脚图
74LS21芯片的主要引脚说明:
14脚为电源脚
7脚接地
1、2、4、5、9、10、12、13为与门输入脚
6、8脚为与门输出脚
3.计分电路原理图
计分电路原理图如图2-9所示。
图2-9计分电路原理图
4.计分电路的工作原理
计分电路主要由单片机AT89C51,串行/并行转换器[15](CD4094),LED显示器,74LS21以及按键开关组成。
按键开关K1~~K4组成甲、乙两队加减分控制。
按键K1~K4一端接地,另一端输入与门74LS21的9脚,10脚,12脚,13脚,以及单片机AT89C51的P3.5,P3.4,P0.2,P0.1,8脚接AT89C51的P3.2脚。
当按键开关K1~K4这四个按键的任何一个一位按下时,与门的8脚输出都会产生低电平使单片机中断,从而使相应LED显示。
因为按键开关按下时为低电平。
例如:
现在先在以甲队加分为例,来说明整个过程。
假设比赛刚开始,双方比分为000:
000,当某一时刻之后,当甲队加分时,则按下K1键,这时K1=0(低电平),其余K2K3K4=111(为高电平)K1K2K3K4相与之后的结果为低电平,这时与门8脚输出的低电平到AT89C51的P3.2脚,使其外部中断INT0[16]发生中断,从而调用中断服务程序,将要显示的数据从程序中定义的LED显示常数表TAB中取出数据06H(因为LED显示常数表TAB的偏移地址为36H,36H首先是指向LED显示常数表TAB中第一个数据3FH的,当K1按下时,相当于将33H地址加1,这时便指向第二数据06H,即对应字母代码关系表中的加1)。
经串行发送端RXD/P3.0送至串行/并行转换器CD4094的第二个输入引脚,即数据输入DATA脚。
由于串行口的工作方式设置为方式0。
所以在串行数据通过RXD/P3.0引脚输出时,则TDX/P3.1引脚会输出多位时钟作为移位脉冲。
将8位数据顺利送到串行/并行转换器CD4094中。
另外,在RXD/P3.0引脚输出数据的同时,单片机AT89C51的P3.7引脚输出高电平给串行/并行转换器CD4094的第1个引脚STR(使能端控制),使前一片CD4094中的8位数据从QS移位至下一片CD4094输入端的第2引脚,即DATA引脚。
在RXD/P3.0引脚输出数据的过程中,连续使单片机RD/P3.7引脚输出6次高电平6,这样便使6片CD4094中得到不同的显示代码,然后使单片机RD/P3.7引脚输出为低电平,将6片CD4094中显示代码送LED显示器显示,便得到结果,显示为001000。
其对应的程序原理如下阐述:
因为,在程序中定义了33H,34H,35H,36H,37H,38H,6地址单元分别对应乙队、甲队3个LED显示器在程序中定义的LED显示常数表TAB的偏移首地址。
单片机的RXD每次发送6个数据,分别对应以33H,34H,35H,36H,37H,38H为偏移首地址单元里的数据。
甲队加分表示以36H为偏移首地址的单元加1,指向第二个数据06H,其他以33H,34H,35H,37H,38H为偏移首地址单元的数据仍然指向第一个数据3FH,这样将这六个数据:
3FH,3FH,3FH,06H,3FH,3FH,经单片机的RXD发送出去,再在单片机RD/P3.7输出的6次高电平作用下产生6次移位,便在6片CD4094中得到显示代码:
3FH,3FH,06H,3FH,3FH,3FH。
然后在RD/P3.7输出时显示为001000。
2.4器件选择及介绍
本系统在设计的过程中主要选取了以下一些器件:
单片机:
AT89C51
四一七段BCD译码芯片:
CD4511
并行/串行转换芯片:
CD4094
四输入与门:
74LS21
显示器件:
7段共阴极LED显示器
按键:
欧姆龙按键
2.4.1AT89C51
AT89C51是一个低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的Flash[17]只读程序存储器和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,