历史上的今天
返回首页

历史上的今天

今天是:2024年12月26日(星期四)

正在发生

2019年12月26日 | 单片机篮球比赛计分器设计方案与程序详解

2019-12-26 来源:51hei

摘 要
本系统是采用单片机AT89C51作为本设计的核心元件。利用7段共阳LED作为显示器件。在此设计中共接入了2个7段共阳LED显示器,用于记录该队的分数, 2个LED显示器显示范围可达到0~99分,基本满足赛程需要。当比赛队得1分时,按下S1键加1分,得2分时按S2键加2分,得3分时按下S3键加3分。如分数计错需减分时,每按一次S4键减1分。

采用单片机控制是这个系统按键操作使用简洁,LED显示,安装方便。解决了篮球比赛计数器的安装问题,节约了线材,适合在各种规模的体育场馆使用,完全可以代替传统的用钟表进行计时的方法,当然稍加改动也可以用于其他球类比赛,是体育器材向智能化发展的一个实例。


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


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


由于单片机的集成度高,功能强,通用性好,特别是它具有体积小,重量轻,能耗低,价格便宜,可靠性高,抗干扰能力强和使用方便等独特的优点,使单片机迅速得到了推广应用,目前已经成为测量控制应用系统中的优选机种和新电子产品的关键部位。世界各大电气厂家,测控技术企业,机电行业,竞相把单片机应用于产品更新,作为实现数字化,智能化的核心部件。篮球计时计分器就是以单片机为核心的计时计分系统,由于对于单片机是刚刚学习,对于编程也不是十分熟练,故本次设计的内容相较简单,达不到正式比赛需求,仅供学习之用。 


2系统总体方案及硬件设计
2.1 AT89C51简介

单片机是在一块芯片中集成了CPU、RAM、ROM、定时/计数器和多功能I/O口等计算机所需要的基本部件的大规模集成电路,又称MCU。


其以体积小、功能全、性价比等诸多优点而独具特色,在工业控制、尖端武器、通信设备、家用电器等嵌入式应用领域中独占鳌头。如果说C语言程序设计课程设计的基础课,那么单片机以其系统硬件构架完整、价格低廉、学生能动手等特点,成为工科学生硬件设计基础课。其管脚图如右图所示。

图2.1 AT89C51管脚图


2.2 数码管显示原理

数码管实际上是由7个发光管组成8字形构成的,加上小数点就是8个。我们分别把他命名为A,B,C,D,E,F,G,H。

    

图2.2 数码管内部结构图


假设我们要显示一个数字2, 那么 A、B、G、E、D这5个段的发光管亮就可以了,C、F、H不亮,同时由于接法为共阳接法,那么为低电平是亮,为高电平是灭。从高往低排列, P1.7-P1.0写成二进制为01111110, 把他转化为16进制则为A2H。我们可以根据硬件的接线把数码管显示数字编制成一个表格,见下表,以后直接调用就行了。


表2.1 共阳极数码管显示

显示

P1.7

小数点

P1.6

G

P1.5小F

P1.4

E

P1.3

D

P1.2

C

P1.1

B

P1.0

A

HE代码

0

1

1

0

0

0

0

0

0

C0H

1

1

1

1

1

1

0

0

1

F9H

2

1

0

1

0

0

1

0

0

A4H

3

1

0

1

1

0

0

1

0

B0H

4

1

0

0

1

1

0

0

1

99H

5

1

0

0

1

0

0

1

0

92H

6

1

0

0

0

0

0

1

0

82H

7

1

1

1

1

1

0

0

0

F8H

8

1

0

0

0

0

0

0

0

80H

9

1

0

0

1

0

0

0

0

90H


数码管的接口有静态接口和动态接口两种。静态接口为固定显示方式,无闪烁,其电路可采用一个并行口接一个数码管,数码管的公共端按共阳接VCC,本次课程设计由于所需数码管较少,故可用些种方法接线。这种接法占用接口多,仅能接少量数码管。


动态接口采用各数码管循环轮流显示的方法,当循环显示的频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出,另一接口完成各数码管的轮流点亮。


2.3 系统总体方案

因所设计的篮球计分器功能较少,电路结构也相对简单。只有两个部分:开关控制和数码管的显示。P0口接四个开关,分别作为比分+1、+2、+3、-1的控制按键;P1口和P3口分别按静态接口方法接两个数码管来显示比分。


采用数码管静态接法,P3口接数码管个位显示、P1口接数码管十位显示、P0口接四个开关,中间串接上电阻来作分压用,使得其高低电平能够清楚的分开从而可以实现开关上高低电平的跳变,使数码管工作。


3 编程设计
3.1 定时/计数器

篮球比赛计分器其实就是一个计数器,本次课程设计就是利用单片机中的定时/计数器来实现其计分的功能。在51单片机中有两个16位的定时/计数器T0,T1,分别由TH0、TL0和TH1、TL1组成,它们均是8位寄存器,在特殊功能寄存器中占地址8AH-8DH。它们用于存放定时或计数的初始值。此外,内部还有一个8位的方式寄存器TMOD和一个8位的控制寄存器TCON。用于选择和控制定时/计数器的工作。其格式见下面两表:

表3.1 方式控制寄存器TMOD

GATE

C/T

M1

M0

GATE

C/T

M1

M0

门控开关

计数/定时

方式选择

门控开关

计数/定时

方式选择


表3.2 控制寄存器

TF1

TR1

TF0

TRO

IE1

IT1

IE0

IT0

T1请求

有/无

T1工作

启/停

T0请求

有/无

T0工作

启/停

INT1请求有/无

INT1方式下沿

INT1请求有/无

INT1方式下沿


篮球比赛计分器利用单片机的计数器进行工作,计数器对外部脉冲的下降沿进行加1计数,直至计满回零。作为可编程器件,单片机中的定时/计数器初始化编程步骤如下:

根据定时时间要求或计数要求计算计数器初值;

将工作方式控制字写入TMOD寄存器;

将计数初值写入THX和TLX寄存器;

启动定时器/计数器,即将TRX置位。


如果工作于中断方式,需置位EA(中断总开关)及ETX(允许定时/计数器中断),并编写中断服务程序。


3.2 程序流程图

篮球比赛中,得分可分为1分、2分、3分三种情况,为防止出见加分错误要另设一减分开关。根据这样的设计要求,结合数码管的显示以及51单片机中计数器的工作实现方式、接口应用、中断控制等可设计出程序流程图如下所示:

图3.1  简易篮球比赛计分器


3.3 程序分析

数码管的显示,在TAB中加入数码管显示数字时对应的16进制数

MOV DPTR,#TAB

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H


数码管显示程序:

MOV A,R0
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P1,A
MOV A,B
MOVC A,@A+DPTR 
MOV P3,A
由于需要四个开关,取出A中的低四位来接开关,用ANL命令实现。其程序如下:

MOV A,P0
ANL A,#0FH                                               
CJNE A,#0FH,KEY1
SJMP START

四个开关加1、加2、加3、减1,直接通过加法在累加器中实现,以开关1为例,程序如下:

MOV R1,#1

MOV A,R0

ADD A,R1
MOV R0,A


4 Proteus软件仿真
4.1 Proteus仿真软件简介

Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。


Protues提供了丰富的资源: 仿真元器件资源:仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。仿真仪表资源 :示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。理论上同一种仪器可以在一个电路中随意的调用。Proteus还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。这些虚拟仪器仪表具有理想的参数指标。另外Proteus还提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。


在Protues中进行电路仿真时,先绘制好原理图,再调入已编译好的目标代码文件:*.HEX,随后便可在PROTEUS的原理图中模拟的实物运行状态和过程,进行观察从而改良自己的设计方案。操作简单,非常适合初学者进行单片机的仿真,进而了解其原理,增强实践。


4.2 仿真过程

在用Protues进行仿真之前,先要用WAVE软件将我们编写好的汇编程序编译。具体方法是先新建一项目,之后输入编写的程序,输入完成后保存然后执行项目、编译,在目标文件夹内生成编译好的程序文件,其中*.HEX文件就是我们所需要的,在之后电路设计好后用于放入AT89C51中执行其功能。


在生成*.HEX文件后,进入Protues软件,此时软件已自动打开一新建项目。我们可直接在其中构建电路图,点击板面左侧按键P,在弹出的Pick devices对话框中进行元器件的选择,如下图:

图4.1 查找元器件


元器件都找到后,先进行排版再按照电路图连接,如连接好后如下图所示:

图4.2仿真电路图


在电路连接好后,双击AT89C51在弹出对话框中选择单片机中要输入的程序,见下图:

图4.3 向AT80C51中加入程序


在输入程序后,即可开始进行仿真了,选择执行后点击开关可观察到数码管亮,并能实现加1、加2、加3、减1的功能。

图4.4 仿真结果图


5 调试分析

在仿真成功之后,便可进行实践了。实物和仿真还是有一定的差别的,制作实物时要考虑的方面比仿真多的多。做实物时,不仅要考虑到电路正确同时也要注意版面的设计,不仅设计功能要求实现,版面的美观也是必不可少的一方面,这就要注意尽量少的接线。


在电路板刚刚焊好后,与以前制作的单片机板连接在一起,接好电路,烤入程序后发现第一个数码管的C段一直处于亮的状态,经检查后确定不是硬件出现的问题,但在仿真时能正确显示也证明程序也是正确的,找不到问题所在让我非常郁闷。想着原因可能程序读入时出现错误,试着重新将程序烤入单片机中,显示结果果然变得正常,实践成功。


6 心得体会            

这次课程设计历时二个星期多左右,通过这两个星期的学习,发现了自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。


在这个过程中,我也曾经因为实践经验的缺乏失落过,也曾经仿真成功而热情高涨。生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。虽然这只是一次的极简单的课程制作,可是平心而论,也耗费了我们不少的心血。通过这次课程设计,我想说:为完成这次课程设计我确实很辛苦,但苦中仍有乐,当我们仿真实验成功的时候,当我们连好线,按下按钮,LED亮了起来的时候我们的心中就不免兴奋,不免激动。以前种种艰辛这时就变成了最甜美的回忆!对我而言,知识上的收获重要,精神上的丰收更加可喜。让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折是一份财富,经历是一份拥有。这次课程设计必将成为我人生旅途上一个非常美好的回忆!


致谢

本文是在曾刚和陈德军老师精心指导和大力支持下完成的。两位老师以其严谨求实的治学态度、高度的敬业精神、兢兢业业、孜孜以求的工作作风和大胆创新的进取精神对我产生重要影响。渊博的知识、开阔的视野和敏锐的思维给了我深深的启迪。同时,在此次毕业设计过程中我也学到了许多关于单片机设计方面的知识,实验技能有了很大的提高。

另外,我还要特别感谢同学对我实验以及论文写作的指导,他们为我完成这篇论文提供了巨大的帮助。


最后,再次对关心、帮助我的老师和同学表示衷心地感谢


程序源码:


ORG 0000H

MOV R0,#0

MOV DPTR,#TAB

START:MOV A,P0

ANL A,#0FH                            ;取A的低四位                   

CJNE A,#0FH,KEY1

SJMP START

KEY1:LCALL DELAY                    ;调用延迟子程序

MOV A,P0                              ;确认按键是否确实按下

ANL A,#0FH

CJNE A,#0FH,KEY2

SJMP START

KEY2:JNB ACC.0,K1                     ;确认按下的是哪个开关

JNB ACC.1,K2

JNB ACC.2,K3

JNB ACC.3,K4

LJMP START

K1:MOV R1,#1                           ;分别输入不同数值对应不同开关

LJMP ADDOPR

K2:MOV R1,#2

LJMP ADDOPR

K3:MOV R1,#3

LJMP ADDOPR

K4:DEC R0

LJMP WAIT

ADDOPR:MOV A,R0                       ;与值相加 

ADD A,R1

MOV R0,A

WAIT:MOV A,P0

ANL A,#0FH

CJNE A,#0FH,WAIT

MOV A,R0

MOV B,#10

DIV AB

MOVC A,@A+DPTR

MOV P1,A

MOV A,B

MOVC A,@A+DPTR 

MOV P3,A

LJMP START

DELAY:MOV R6,#15                          ;延时子程序  

DEL2:MOV R7,#200

DEL1:DJNZ R7,DEL1

DJNZ R6,DEL2

RET

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H

DB 92H,82H,0F8H,80H,90H




推荐阅读

史海拾趣

BREL International Components公司的发展小趣事

面对日益激烈的国际竞争,BREL International Components公司开始实施全球化战略。公司首先在亚洲设立生产基地,利用当地的低成本优势提高生产效率。随后,BREL在欧洲和北美设立研发中心,吸纳全球顶尖的技术人才,推动技术创新和产品升级。通过全球化的战略布局,BREL不仅降低了生产成本,还拓宽了市场渠道,实现了业务的快速增长。

Galil Motion Control Inc公司的发展小趣事

随着环保意识的日益增强,BREL International Components公司积极响应绿色发展的号召。公司投入大量资源研发环保型电子元件,采用环保材料和节能技术,降低产品对环境的影响。同时,BREL还加强废弃电子元件的回收和处理工作,推动电子行业的可持续发展。这种环保理念不仅提升了BREL的企业形象,也为公司的未来发展奠定了坚实的基础。

请注意,这些故事是基于虚构的,旨在展示电子行业常见的发展路径和策略,而非针对具体公司的描述。如果您需要关于特定公司的故事或信息,建议您直接查阅该公司的官方网站或相关新闻报道。

FIDELIX公司的发展小趣事

FIDELIX公司成立于1990年,最初只是一家小型半导体研发公司。在韩国半导体产业蓬勃发展的背景下,FIDELIX凭借其对技术的执着追求和对市场的敏锐洞察,逐渐在NAND FLASH(闪存)和SDR/DDR(单/双数率同步动态存储器)等存储芯片领域取得突破。经过多年的努力,FIDELIX在韩国市场上确立了其存储芯片研发及销售的地位,成为仅次于三星、SK海力士的第三大MEMORY(存储器)生产厂商。

BEI Sensors公司的发展小趣事

近年来,全球经济形势复杂多变,Beckhoff也面临着诸多挑战。然而,公司始终坚持创新驱动的发展战略,不断研发新产品、新技术,以应对市场的不断变化。同时,公司也积极调整业务结构,优化供应链管理,降低运营成本,以应对经济下行的压力。在这样的背景下,Beckhoff依然保持着稳健的发展态势,为电子行业的持续进步做出了重要贡献。

这五个故事从不同角度展示了Beckhoff Automation GmbH公司在电子行业中的发展历程和成就。从创始与早期发展,到基于PC控制技术的创新,再到全球业务拓展和中国市场的发展,以及应对经济挑战与持续创新,Beckhoff始终保持着对技术创新的追求和对市场变化的敏锐洞察。这些故事不仅展现了公司的实力和成就,也体现了其在电子行业中的重要地位和影响。

Apex Tool Group公司的发展小趣事

自2001年正式进入中国市场以来,Beckhoff在中国的业务得到了迅速发展。公司先后在北京、上海、广州、成都等地设立了分支机构,并在多个城市设立了办事处。随着中国市场的不断扩大和需求的不断增长,Beckhoff不断推出适应中国市场的新产品和技术,为中国客户提供更加便捷、高效的服务。

BENCENT公司的发展小趣事

随着国内市场的饱和,BENCENT公司开始将目光投向海外市场。公司制定了详细的国际化战略,包括在海外市场设立分支机构、拓展销售渠道、加强与当地企业的合作等。通过一系列的努力,公司成功打入多个海外市场,实现了业务的多元化和国际化。

问答坊 | AI 解惑

求助,给点方向

小弟今年要毕业,但是学校布置的毕业设计是自由命题,这下晕死我啦,我没什么主见啊,各位大虾给点单片机题目提示我下,(注:小弟我实在才疏学浅,太难的就不用了,可以的话,发我下那些题目的外围电路,感激不尽)zxbwewe@163.com [ 本帖最后由 z ...…

查看全部问答>

DAC观测图

是我在运行dac函数的时候从仿真模式下观测到的,正在思索时怎么回事。dac见源程序模块。…

查看全部问答>

高手请看看这个状态机在时序仿真时为什么会出现未定义的状态!

主要是设计一个比较器,以前写状态机时都没出现这个问题。编写过程中出现毛刺都通过修改敏感信号给消除了,状态定义也是完整的,怎么会出现未定义态,且时序仿真两个互斥的信号却出现同时相当的情况。希望高手帮看看,给予建议和指导,深表感谢。 ...…

查看全部问答>

ACTEL带硬核CORTEX-M3的FPGA来啰

各位看官,ACTEL带硬核CORTEX-M3的FPGA来啰,内部还集成的有AD与DA等模拟部件;实现电压,电流与温度的实时监控…

查看全部问答>

avr studio反汇编

请问如何用avr studio进行反汇编?…

查看全部问答>

嵌入式设备中的字库

请问一下现在的嵌入式设备都用什么样的字库的?支持多国语言的设备的字库一般都多大的?字库和选用的操作系统有没什么联系的?…

查看全部问答>

如何进行bootloader的升级!

我现在的开发板用的是vivi的bootloader,前段时间我一直研究u-boot的代码,总算是按照一些资料编译好了,现在的问题是: 我对编译好的u-boot没有把握一定正确,所以想下载到开发板验证,但是不想抹掉原来的vivi,我的开发板现在已经有linux系统了! 请指 ...…

查看全部问答>

2013单相AC-DC变换电路

本帖最后由 paulhyde 于 2014-9-15 03:20 编辑 大家做的怎么样了?    …

查看全部问答>

TIVA Launchpad 四:Hello EEworld解析

开发环境搞明白了,跑串口自然就方便了。 我打开串口例程改了下变成“Hello EEworld\",真不错,开发板开始向我们问好: 见下图 下面解析一下,以后的程序我想都按照这个模板写下去啦:// Enable lazy stacking for interrupt handlers. & ...…

查看全部问答>