篮球计时计分器的设计


时钟电路
单 片 机
复位电路
驱 动 电 路
显示屏
按键输入
声 光 显 示
图1
篮球比赛计时计分器的功能模块
时钟电路:给单片机提供单片机低量的时钟信号。 复位电路:给单片机提供复位信号,使单片机复位到初始状态。 按键输入: 是在一定的要求下,采取何种形式的控制方式来实现篮球比赛计时器 不同器件的运行方式。 驱动电路:给数码管提供足够的电源,并保证数码管正常显示。 显示模块:将单片机输出的信号以数字形式输出。 声光显示:当每节比赛时间结束-24 秒计时减为零时,蜂鸣器要响,发光二极 管要亮。 2.3 主要内容及技术指标 设计内容:一场篮球比赛共分四节,每节 12 分钟,每次进攻完为 24 秒,计时器 的显示均为倒计时方式。
VCC 1 2 3 4 5 6 7 8 13 12 15 14 31 19 18 9 17 16 U1 P10 P11 P12 P13 P14 P15 P16 P17 INT1 INT0 T1 T0 EA/VP X1 X2 RESET RD WR 8051 P00 P01 P02 P03 P04 P05 P06 P07 P20 P21 P22 P23 P24 P25 P26 P27 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28
1
怀化职业技术学院 2009 届毕业设计
了基本的单片机系统和外围电路外,还需要外部的控制和显示装置。 我设计的这个篮球比赛计时器主要特点表现在以下 3 个方面: 篮球比赛计时器结构简单, 并且具备最小单片机系统的基本构成。 通过这个实例, 可以明白构成一个最简单, 同时也具备实用性的单片机系统需要哪些外围的设备的基 本电路。 篮球比赛计时器电路中使用了最为常用的输入输出设备:按键开关和数码管。 通 过对本设计的说明,可以使大家明白单片机系统的最简单的用途和控制方式。 篮球比赛计时器程序最能体现单片机系统中定时器和中断用法, 单片机系统中的 定时和中断是单片机种最重要的资源。 篮球比赛计时器程序就是利用定时器和中断系统实现延时和显示功能。
3
怀化职业技术学院 2009 届毕业设计
尽量用单片机方向设计硬件系统,系统器件越多器件之间相互干扰就越强, 功耗 愈增大,愈不可能允许降低系统的稳定性 3.2 AT89C51 的简介 AT89C51 是美国 ATMEL 公司生产的低电压,高性能 CMOS8 位单片机,片内含 4K bytes 的可反复擦写的只读程序存储器(PEROM)和 128bytes 的随机存取数据存 储器(RAM) ,器件采用 ATMEL 公司的高密度,非易失性存储技术生产,兼容标准 MCS-51 指令系统,片内置通用 8 位中央处理器(CPU)和 Flash 存储单元,功能强 大 AT89C51 单片机可为你提供许多高性价比的应用场合,可灵活应用于各种控制领 域。 AT89C51 主要性能参数: ·与 MCS-51 产品指令系统完全兼容 ·4K 字节可编程闪速存储器 ·1000 次擦写周期 ·全静态操作:0Hz—24MHz ·三级加密程序存储器 ·128×8 字节内部 RAM ·32 个可编程 I/O 口线 ·2 个 16 位定时/计数器 ·6 个中断源 ·可编程串行 UARt 通道 ·低功耗空闲和掉电模式 ·片内振荡器和时钟电路 3.3 时钟电路的设计 XTAL1 和 XTAL2 分别做晶体振荡电路的反相器和输出端。 在使用内部振荡电路 时,这两个端子用来外接石英晶体,振荡频率为晶体振荡频率,振荡信号送至内部时 钟电路产生时钟脉冲信号。这个部分给单片机提供工作节拍,是单片机的主频。如图 所示。
2
怀化职业技术学院 2009 届毕业设计
计时器每节时间用四位(两位分,两位秒)24 秒计时用两位数码管显示。 所以计时都要具有暂停.、继续、清零和时间调整功能。 当每节比赛时间结束,12 秒计时减为零时要用声光显示。 2.4 主要技术指标 计时器精度 ±0.5 秒 暂停、继续、清零功能按键灵敏、准确。 关键技术: 基于单片机的篮球比赛计时器在设计时要解决 3 个方面的问题。 一是 LED 显示模块的驱动和编程。二是有关单片机中定时器的使用。三是如何利用单片 机内外来实现计时器功能和运行模式的转化。
关键词:篮球计时计分器 设计 1.前言
近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入。 单片 机技术在自动控制领域有着十分广泛的应用,如汽车、航空、电话、传真、视频等。 很多行业涉及到自动控制的情况下涉及到单片机技术。 我看到现在好多篮球比赛还在用秒表计时,这样既不准确也不直观。 为了使比赛 计时更加准确、方便,我特用单片机设计了一个篮球比赛计时器。基于单片机的定时 和控制装置在许多行业有着广泛的应用,而计时器也是其中最基本的, 也是最具代表 性的例子。在基于单片机系统的计时器中,除了基本的单片机系统和外围电路外,还 需要外部控制和显示装置。在本设计中,输入是按键开关,用于控制计时器的运行模 式,显示是 LED 八段数码管。一个基于单片机定时器和中断使用的计时器,可以实现 倒计时的启动、暂停、继续和复位;计时用六位数码管显示;可以调整比赛时间;当 比赛结束、24 秒倒计时减为零时要用声光提示。我的这个设计将可以用于普通的篮 球比赛计时,价廉且实用。
BP-WS
C4 22μF
S1
D1
R1 2K
R2 100
E D OI D
RXD TXD ALE/P PSEN
10 11 30 29
图3
复位电路
3.5 中断系统介绍 (1)中断概念: 当中央处理器 CPU 正在执行某程序时,由于某种原因,外界向 CPU 发出了暂停 目前工作去处理更重要事件的请求,程序被打断,CPU 响应该请求并转入相应的处 理程序,处理程序完成以后,再返回到原来程序被打断的位置,继续原来的工作,这 一过程称为中断。实现中断功能的部件称为中断系统。
怀化职业技术学院 高职生毕业论文(设计)
题目: 篮球计时计分器的设计
学生姓名: 专 班 级:
杨贞云 06 应用电子高职 钟卫连
业: 应用电子技术
指导教师:
完成日期: 2008 年 12 月 30 日
教务处印制
怀化职业技术学院 2009 届毕业设计
目 录
摘要……………………………………………………………………………………1 关键词…………………………………………………………………………………1 1.前言…………………………………………………………………………………1 2.系统分析……………………………………………………………………………1 2.1 篮球比赛计时器设计的成就……………………………………………………1 2.2 系统分析…………………………………………………………………………2 2.3 主要内容及技术指标……………………………………………………………3 2.4 主要技术…………………………………………………………………………3 3.硬件设计……………………………………………………………………………3 3.1 单片机硬件系统设计原则………………………………………………………3 3.2 AT89C51 简介……………………………………………………………………4 3.3 时钟电路的设计…………………………………………………………………4 3.4 复位电路的设计…………………………………………………………………5 3.5 中断系统介绍……………………………………………………………………5 3.6 定时器/计数器……………………………………………………………………6 4. 软件设计…………………………………………………………………… 7 4.1 计时器设计………………………………………………………………………8 4.2 计分器设计………………………………………………………………………9 4.3 24 秒程序设计……………………………………………………………………11 5 系统调试…………………………………………………………………………17 6. 致谢…………………………………………………………………………… 18 参考文献……………………………………………………………………………18 附录:原理图…………………………………………………………………… 19
怀化职业技术学院 2009 届毕业设计
篮球计时计分器的设计
摘要:本文介绍了一个基于单片机的篮球比赛计时器硬件设计,包括 AT89C51、显
示驱动 SN7407、 6 个八段显示 LED、 上电复位电路、 时钟发生电路等基本模块的设计。 其功能主要有:一场篮球比赛共分四节,每节 12 分;每次进攻为 24 秒,计时器的显 示均为倒计时方式;计时器每节得时间用四位(两位分、两位秒) ,24 秒计时用两位 数码管显示;所有得计时都要具有暂停、继续、清零和时间调整功能;当每节比赛时 间结束、24 秒倒计时减为零有声光提示。
2.系统分析
2.1 篮球比赛计时器设计的成就 现在篮球比赛计时器的设计大都比较的复杂,所用芯片太多,造成整体的价格 提高,而且软件设计比较的复杂。导致性价比不是很高,很难得到广泛的推广。我所 设计的这个篮球比赛计时器一改他们的缺点,硬件比较简单,软件也很容易,因此, 实用性比较大。 2.2 系统分析 基于单片机系统的篮球比赛计时器的基本功能模块如图 1 所示。从图中可以看 出,对于一个篮球比赛计时器而言,是一个比较典型的单片机产品设计。系统中,除
4
怀化职业技术学院 2009 届毕业设计
1 2 3 4 5 6 7 8 13 12 15 14 31 Y1 12MHZ 19 18 9 17 16 U1 P10 P11 P12 P13 P14 P15 P16 P17 INT1 INT0 T1 T0 EA/VP X1 X2 RESET RD WR P00 P01 P02 P03 P04 P05 P06 P07 P20 P21 P22 P23 P24 P25 P26 P27 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28
合集下载

基于单片机的篮球计时计分器设计设计

基于单片机的篮球计时计分器设计设计

基于单片机的篮球计时计分器设计设计篮球计时计分器是一种用于篮球比赛计时和计分的设备。

基于单片机的篮球计时计分器设计可以实现自动计时、计分、显示比分等功能,使得篮球比赛更加准确和便捷。

本文将介绍基于单片机的篮球计时计分器的设计和实现。

设计思路:基于单片机的篮球计时计分器主要由显示模块、计时模块、计分模块、控制模块等组成。

其中,显示模块用于实时显示比赛时间和比分情况;计时模块用于计时并显示剩余时间;计分模块用于记录比赛双方的得分情况;控制模块用于整合各个模块的功能和控制比赛的进行。

首先,我们需要选择一款适合的单片机来实现篮球计时计分器。

一般情况下,AT89S52是比较常用的单片机,它具有较强的计算和控制能力,可以满足篮球计时计分器的需求。

接下来,我们需要确定显示模块的类型。

一种常见的显示模块是七段数码管,用于显示比赛时间和比分情况。

七段数码管可以通过单片机的IO口进行控制,显示时间和比分的变化。

计时模块可以通过在单片机中设置定时器来实现。

定时器可以定期产生一个中断信号,通过处理中断信号来实现计时功能。

可以设置定时器的初值和中断次数来实现精确的计时。

计分模块可以通过增加加减分按钮和设置相关的IO口来实现。

当按下加分按钮时,计分模块将调用相应的函数来增加得分;当按下减分按钮时,计分模块将调用相应的函数来减少得分。

计分模块还可以实现显示当前比分的功能。

控制模块是整个篮球计时计分器的核心模块。

通过对各个模块的控制和操作,实现比赛的正常进行。

控制模块还可以增加暂停和继续比赛的功能,通过设置相应的标志位来实现。

接下来,我们需要根据设计思路进行硬件电路的连接和单片机程序的编写。

硬件电路的连接包括七段数码管的连接、计时器连接、按钮连接等。

单片机程序的编写需要包括显示模块的控制程序、计时模块的中断处理程序、计分模块的加减分函数等。

最后,我们需要进行测试和优化。

测试可以通过模拟篮球比赛的环境,模拟时间和比分的变化,检查计时计分器的功能是否正常。

篮球比赛计分器单片机课程设计报告

篮球比赛计分器单片机课程设计报告

1.1设计的内容与要求设计一个单片机系统用于篮球比赛计时计分,满足以下功能要求:(1)能记录整个赛程的比赛时间,并能暂停。

(2)能随时刷新甲、乙两队在整个比赛过程中的比分。

(4)比赛结束时,能发出报警声。

在篮球比赛过程中需要对参赛双方的比分进行快速的采集记录和加工处理,需要一个快捷方便的计分系统。

该计分系统是一种得分类型的系统,即根据不同球队的不同得分,进行相应的处理,并且能够实时的显示出来。

又因为篮球比赛是分节进行的,所以还需要有倒计时功能的计时器,以便于观众实时了解赛况。

由于单片机的集成度高,功能强,通用性好,特别是它具有体积小,功耗低,价格便宜,可靠性高和使用方便等独特的优点,目前已经成为测量控制应用系统中的优选元器件。

篮球计时计分器就是以单片机为核心的计时计分系统,有计时器、计分器、直流电源、时钟电路、按键等组成,完全能够实现上述的功能。

1.2设计的目的及意义随着科学技术发展的日新月异,单片机已经成为当今计算机应用中空前活跃的领域,因此掌握单片机的一些基本功能就显的十分重要。

本次设计是采用AT89S52来编程控制LED七段数码管,使其能够显示篮球比赛的时间和计分,该系统具有赛程时间实时显示、时间暂停以及刷新A/B球队的成绩等功能。

通过本次设计可以了解、熟悉有关单片机的开发设计过程,并更进一步加深对单片机的了解和应用,掌握单片机与外围接口的一些方法与技巧,以及AT89S52单片机的最小应用系统的构成。

还可以了解LED数码管的结构、工作原理、编程方法以及相关的接口实例与具体连接。

通过本次设计可以很好的把课本的理论知识和实践有机的联系起来,是我们对理论知识有更深一步的掌握,为以后的学习打下坚实的基础。

2.1任务分析充分了解本设计要求,明确设计的全部功能、要求及技术指标;熟悉AT89S52单片机与控制对象的各种参数、关系和特点。

按题目要求能记录整个赛程的比赛时间,并能暂停,则需要暂停按键和7段共阴极LED数码管,其中时间显示按每节10分钟倒计时显示分和秒;能随时刷新A/B两队在整个比赛过程中的比分,加分有误时可通过按键实现减分调整,则需要有加减分按键、切换按键等。

plc控制的篮球比赛计时计分器毕业设计

plc控制的篮球比赛计时计分器毕业设计

PLC控制的篮球比赛计时计分器毕业设计1. 介绍作为一种常见的体育比赛计时计分设备,篮球比赛计时计分器在提高比赛效率、记录比赛成绩、保障比赛公正方面发挥着重要作用。

本篇文章将围绕PLC控制的篮球比赛计时计分器毕业设计展开深入探讨,旨在从设计原理、实现方法、技术难点等方面全面解读该毕业设计的价值和意义。

2. 设计原理PLC(Programmable Logic Controller,可编程逻辑控制器)作为一种工业自动化控制系统,其具有可编程、灵活性强、可靠性高等特点,是控制篮球比赛计时计分器的理想选择。

设计中,借助PLC的输入/输出模块,可实现对比赛时间和比分的准确控制,提高计分器的稳定性和精准度。

3. 实现方法在PLC控制的篮球比赛计时计分器毕业设计中,需要考虑到计时和计分的同步性、实时性以及人性化的操作界面。

通过设计合理的程序逻辑,结合触摸屏等先进的人机界面技术,可以实现对比赛进程的全面监控和控制,确保比赛计时计分过程的准确无误。

4. 技术难点在该毕业设计中,存在着一些技术难点需要克服。

如何实现计时和计分的精准同步、如何应对突发情况下的异常处理、如何确保设备在长时间运行中的稳定性等。

这些都需要设计者具备扎实的PLC编程和控制技术,深入理解篮球比赛规则和实际比赛场景,以及对计时计分器硬件电路和结构设计的全面考量。

5. 总结回顾通过对PLC控制的篮球比赛计时计分器毕业设计的探讨,我们可以看到,其设计不仅仅是对技术的考验,更是对设计者对篮球比赛规则的理解和对工程实践能力的挑战。

设计者需要综合考虑技术、实用性和可靠性,为比赛的公正进行提供有力保障。

6. 个人观点对于这样的毕业设计,我认为设计者需要有扎实的技术功底,同时要善于思考和总结,关注实际应用中的细节和问题。

只有站在使用者的角度,深入了解比赛需求,才能设计出符合实际情况的篮球比赛计时计分器。

我对这样的毕业设计充满期待,并期待看到更多的优秀作品问世。

毕业设计:篮球赛计时计分器设计

毕业设计:篮球赛计时计分器设计

篮球赛计时计分器摘要单片机自20世纪70年代问世以来,以极为高的性价比受到人们的重视和关注,因此应用很广,进展专门快。

由于单片机的集成度高,功能强,通用性好,专门是它具有体积小、重量轻、能耗低、价钱廉价、靠得住性高、抗干扰能力强和利用方便等独特的优势,使单片机迅速取得了推行应用。

目前已经成为测量操纵应用系统中的优选机种和新电子产品的关键部位,许多用单片机做操纵的球赛计时计分系统也应运而生,如:用单片机操纵液晶显示(LCD)计时计分器,用单片机操纵LED七段显示器计时计分器等。

篮球计时计分器以单片机为核心,由计时器、计分器、综合操纵器等组成。

系统采纳模块化设计,主体分为计时显示模块、计分显示模块、按时报警、按键操纵键盘模块。

每一个模块的程序结构简单、任务明确,易于编写、调试和修改。

程序可读性好,对程序的修改可局部进行,其他部份可维持不变。

编程后利用Keil C51软件来进行编译,再将生成的HEX文件装入芯片中,采纳Proteus软件仿真,查验功能是不是能够正常实现,随后可用Protel99画出硬件电路图。

本设计中系统硬件电路要紧由以下几个部份组成:单片机AT89C51、计时电路、计分电路、报警电路和按键开关。

本次设计用由AT89C51编程操纵LED七段数码管作显示的球赛计时计分系统。

该系统具有赛程按时设置、赛程时刻暂停、及时刷新甲乙两边的成绩和赛后成绩暂存等功能。

它具有价钱低廉、性能稳固、操作方便而且易于携带等特点,普遍适合各类学校或小型集体作为赛程计时计分。

关键词:单片机,计时,计分,显示器,接口TIME BASKETBALL SCORING DEVICEABSTRACTSince the inception the 20th century 70 years, single-chip microcomputer (SCM) causes people’s attention and concern because of extremely cost-effective, so its application is very broad and rapid developing. SCM has many advantages, such as small size, light weight, anti-interference ability, less demanding on the environment, low cost, high reliability, good flexibility, developing more easily and so on. Now, it has become the preferred model in measurement control system and a key component of new electronic products. Many time scoring matches using SCM has also come into being, such as the timer with liquid crystal display (LCD), the timer with LED seven-segment display ,etc. Time basketball scoring device as the core of SCM includes the timer, scoring devices, integrated controller and other components.This system is used of the modular design, in which the main display module is divided into time display module, scoring display module, timing alarm module, and key control keyboard module. Program structure of each module is simple and clear. So it is easy to write, debug and modify. Because the program is readable, part of program can be modified and other parts may remain unchanged. After programming, firstly we can use Keil C51 software to compile and then generate the HEX file into the chip. Secondly we use the Proteus software simulation to test whether the normal function to achieve. Finally we draw the hardware circuit diagram with Protel99. The design of hardware circuit mainly consists of the five components, including AT89C51, timing circuit, scoring circuit, alarm circuit and key switch circuit.The design uses AT89C51 to program and to control LED digital tube for seven-segment display of match time scoring. The system has many features, such as setting the schedule time, scheduling time to pause, refreshing result ofboth parties timely, storing temporarily results after the match and so on. Because this system has low price, stable performance, and easy to operate and carry, it is widely suitable for all types of schools and small groups as the calendar time points.KEY WORDS:Microcontroller, Timing, Scoring, Display, Interface前言 (1)第1章系统方案说明 (1)方案选择 (2)篮球赛计时计分器设计的现状 (2)系统整体设计方案 (2)系统大体功能介绍 (3)第2章系统硬件电路设计 (6)篮球赛计时计分电路原理图 (6)篮球赛计时计分器电路工作进程 (6)系统硬件电路组成 (6)计时电路 (6)计分电路 (13)器件选择及介绍 (17)§2.4.1 AT89C51 (18)§2.4.2 CD4511芯片介绍 (21)§2.4.3 CD4094芯片的介绍 (22)§2.4.4 74LS21芯片介绍 (23)第3章软件编程及调试 (24)整体程序设计 (24)初始化程序设计 (25)计时系统程序设计 (26)计分系统程序设计 (27)系统调试 (28)软件调试 (28)仿真调试 (29)结论 (29)参考文献 (31)致谢 (32)附录 (33)随着单片机在各个领域的普遍应用,许多用单片机做操纵的球赛计时计分系统也应运而生,如用单片机操纵LCD液晶显示器[1]计时计分器,用单片机操纵LED七段显示器计时计分器等。

单片机课程设计篮球计时计分器正文精选全文完整版

单片机课程设计篮球计时计分器正文精选全文完整版

可编辑修改精选全文完整版基于单片机的篮球赛计时计分器的设计一系统设计方案1.1 设计题目篮球计时计分器1.2 系统功能要求本系统可实现功能如下:(1)主控部分:选择单片机为核心元件构成系统。

(2)计时部分:能记录整个赛程的比赛时间,并能修改时间、暂停时间。

(3)计分部分:能随时刷新甲、乙两队在整个赛程中的比分。

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

(5)比赛时间结束时,能发出报警指令。

1.3 系统总体方案设计本设计由AT89C51编程控制LED七段数码管作球赛计时计分系统具有赛程定时设置、赛程时间暂停、性能稳定、操作方便且易携带等特点。

1.3.1系统设计方案论证本设计是基于89C52单片机的键盘控制及显示电路设计,从系统的设计功能上看,系统可分为两大部分,即键盘输入控制部分和显示部分,对于每一个部分都有不同的设计方案,起初我拟订了下面两种方案:第一种方案:键盘控制采用矩阵扫描键盘,可以用普通按键构成4×4矩阵键盘,直接接到89C51单片机的P0口,高四位作为行,低四位作为列,通过软件完成键盘的扫描和定位。

显示部分采用动态显示,采用移位寄存器74LS164和译码器74LS138通过显示驱动程序驱动七段数码管显示。

此方案成本低,所用到的两个外围芯片价格都很低廉,而且单片机的I/O口占用较少,可以节约单片机接口资源。

第二种方案:键盘控制采用独立是式键盘,每个按键的"接零端"均接地,每个按键的"测试端"各接一条输入线,通过检测输入线的电平状态就可以很容易地判断哪个键被按下了,这种方法操作速度高而且软件结构很简单。

这种方法比较适合按键较少或操作速度较高的场合。

显示部分采用静态显示方法,所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的接口用于笔划段字形代码。

这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种方法单片机中CPU 的开销小。

篮球比赛计分器的设计原理

篮球比赛计分器的设计原理

篮球比赛计分器的设计原理
篮球比赛计分器的设计原理是基于计分规则和比赛规则来实现的。

设计原理如下:
1. 确定比赛规则:首先需要明确比赛规则,包括比赛时间、进球得分规则、罚球规则、犯规规则等。

2. 确定计分方式:根据比赛规则确定计分方式,通常包括两支队伍的得分和罚球数。

计分器需要能够根据比赛情况及时更新并显示得分。

3. 实时更新得分:根据比赛过程中的得分情况,计分器需要能够实时更新双方队伍的得分。

通常,计分器会设置按钮或触摸屏来记录各种得分情况,包括投篮得分、罚球得分以及技术犯规等。

4. 管控比赛时间:篮球比赛有固定的时间限制,计分器需要能够计时并显示比赛的进行时间。

同时,计分器也需要提供暂停和继续功能,以便于比赛管理。

5. 显示比赛结果:当比赛结束时,计分器需要能够显示比赛的最终得分和胜负结果。

部分计分器还会提供比赛统计数据,如得分最高球员、篮板球数量等。

综上所述,篮球比赛计分器的设计原理是基于比赛规则和计分方式来实时更新并显示比赛的得分情况,同时还需要提供计时、暂停和继续功能等。

篮球计时计分器

3.12 篮球计时计分器设计(8学时)一、设计原理该篮球计时计分器,由九个功能模块组成: 时钟产生模块、按键输入模块、系统的计时模块、24秒计时模块、数码管输出模块、led输出模块、计分模块、lcd输出模块、比分交换模块实现的主要功能:S1、S2分别用于两队比分的减1,S3、S4分别用于两队比分的加1,S5用于控制比赛的开始和暂停,S6用于24秒的重新置位,和进入下一节的显示切换,S7用于系统的复位,S8用于对比赛总时间减一分(调试时用,实际中不需要这个按键)。

液晶屏显示比分,数码管显示一节时间和24秒倒计时;当按下S7时,系统复位,液晶屏显示000:000 1st,数码管显示12 00 24;当按下S5时系统开始计时,若再按下S5则处于暂停状态;当24秒倒计时剩余时间小于一秒时,则显示为秒表计时方式;当24秒时间到了,则8个led灯全亮,比赛暂停,此时先按下S5再按S6则重新从24秒开始倒计时;当一节比赛结束时,8个led灯全亮,比赛暂停,此时先按下S5再按S6则进入下一节;当比赛进行到第三节时,则比分交换显示。

二、设计1、顶层图:2、各子模块及对应程序:(1)数码管输出模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity shumaguan isport( clk : in std_logic;ledag : out std_logic_vector(7 downto 0);del : out std_logic_vector(2 downto 0);m10 : in std_logic_vector(3 downto 0);m : in std_logic_vector(3 downto 0);s10 : in std_logic_vector(3 downto 0);s : in std_logic_vector(3 downto 0);s24_10 : in std_logic_vector(3 downto 0);s24 : in std_logic_vector(3 downto 0)); end shumaguan;architecture rtl of shumaguan issignal cq: std_logic_vector(3 downto 0);signal dount : std_logic_vector(2 downto 0);beginprocess(clk) --数码管动态扫描beginif(clk'event and clk='1' )thendount<=dount+1;end if;del<=dount;end process;process(dount,s24,s24_10,s,s10,m,m10)beginif(dount=0)thencq<=m10;elsif(dount=1)thencq<=m;elsif(dount=2)thencq<=s10;elsif(dount=3)thencq<=s;elsif(dount=4)thencq<="1111";elsif(dount=5)thencq<="1111";elsif(dount=6)thencq<=s24_10;elsif(dount=7)thencq<=s24;end if;end process;process(cq)--数码管显示begincase cq iswhen "0000" => ledag <="11000000";when "0001" => ledag <="11111001";when "0010" => ledag <="10100100";when "0011" => ledag <="10110000";when "0100" => ledag <="10011001";when "0101" => ledag <="10010010";when "0110" => ledag <="10000010";when "0111" => ledag <="11111000";when "1000" => ledag <="10000000";when "1001" => ledag <="10010000";when "1010" => ledag <="11111111";when "1011" => ledag <="11111111";when "1100" => ledag <="11111111";when "1101" => ledag <="11111111";when "1110" => ledag <="11111111";when "1111" => ledag <="11111111";when others => null;end case;end process;end rtl;(2)时钟产生模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity shizhong isport(clk:in std_logic;beep:out bit;clk_25hz,clk_100hz,clk_1khz:out std_logic); end shizhong;architecture rtl of shizhong issignal clk_100hz_s:std_logic;beginprocess(clk_100hz_s)variable q2:integer range 0 to 9;beginif(clk_100hz_s='1'and clk_100hz_s'event)then if(q2=3)thenclk_25hz<='1';q2:=q2+1;elsif(q2=4)thenclk_25hz<='0';q2:=0;else clk_25hz<='0';q2:=q2+1;end if;end if;end process;process(clk)variable q3:integer range 0 to 499999; beginif(clk='1'and clk'event)thenif(q3=499999)thenq3:=0;elseif(q3<250000)thenclk_100hz<='0';clk_100hz_s<='0';else clk_100hz<='1';clk_100hz_s<='1';end if;q3:=q3+1;end if;end if;end process;process(clk)variable q4:integer range 0 to 49999;beginif(clk='1'and clk'event)thenif(q4=49999)thenq4:=0;elseif(q4<25000)thenclk_1khz<='0';else clk_1khz<='1';end if;q4:=q4+1;end if;end if;end process;beep<='1';end rtl;(3)led输出模块library ieee;use ieee.std_logic_1164.all;entity led isport(ledin:in std_logic;ledout:out std_logic_vector(7 downto 0));end led;architecture rtl of led isbeginprocess(ledin)beginif(ledin='0')thenledout<="00000000";else ledout<="11111111";end if;end process;end rtl;(4)lcd输出模块library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity lcd isPort ( Clk : in std_logic; --状态机时钟信号,同时也是液晶时钟信号,其周期应该满足液晶数据的建立时间Aout_100,Aout_10,Aout,Bout_100,Bout_10,Bout: in std_logic_vector(3 downto 0);period:in std_logic_vector(2 downto 0);LCD_RS : out std_logic; --寄存器选择信号LCD_RW : out std_logic; --液晶读写信号LCD_EN : out std_logic; --液晶时钟信号LCD_Data : out std_logic_vector(7 downto 0)); --液晶数据信号end lcd;architecture Behav of lcd istype STATE_TYPE is (START,write_C,write_D,WRITE_BYTE_C,WRITE_BYTE_D,wait_3m1,wait_3m2,wa it_5m1,wait_5m2,wait_100m); --12个状态,START:初始化各信号量,write_C(write_D):判断初始化指令(显示数据)是否输出完毕,WRITE_BYTE_C (WRITE_BYTE_D):输出一个指令(数据),wait_3m1,wait_3m2,wait_5m1,wait_5m2,wait_100m:延时type MY_ARRAY_C is array(0 to 4) of std_logic_vector(7 downto 0); --初始化的数据(控制指令)type MY_ARRAY_D is array(0 to 11) of std_logic_vector(7 downto 0);constant c_d: MY_ARRAY_C:=(x"38",x"0c",x"06",x"01",x"C3");signal d_d: MY_ARRAY_D;signal STATE: STATE_TYPE:=START;signal w_c_flag : integer range 0 to 2:=0; --写指令时用到的标志 signal w_d_flag : integer range 0 to 2:=0; --写数据时用到的标志signal write_c_cnt : integer range 0 to 5:=0; --指令的指针signal write_d_cnt : integer range 0 to 12:=0; --数据的指针signal cnt : integer range 0 to 100:=0; --延时用到的计数器beginLCD_RW <= '0' ; --写数据d_d(0)<="0000"&Aout_100+x"30";d_d(1)<="0000"&Aout_10+x"30";d_d(2)<="0000"&Aout+x"30";d_d(3)<="00111010";d_d(4)<="0000"&Bout_100+x"30";d_d(5)<="0000"&Bout_10+x"30";d_d(6)<="0000"&Bout+x"30";d_d(7)<="00100000";d_d(8)<="00100000";d_d(9)<="00000"&period+x"31";d_d(10)<="01110011";d_d(11)<="01110100";process(Clk,STATE) --液晶驱动控制器beginif rising_edge(Clk) thencase STATE iswhen START=>LCD_EN<='0';w_c_flag<=0;w_d_flag<=0;write_c_cnt<=0;write_d_cnt<=0;STATE<=WRITE_C; --下一个状态(即要执行的)是WRITE_C(相当于跳转)when WRITE_C=>case write_c_cnt iswhen 0 to 4=> --小于5,五个初始化指令未输出完,则要输出STATE<=WRITE_BYTE_C;when 5=>write_c_cnt<=0; --等于5,五个初始化指令已输出完,转入数据输出STATE<=WRITE_D; --转入数据输出end case;when WRITE_BYTE_C=>if(w_c_flag=0) then --w_c_flag=0,通道选择,数据输出LCD_RS<='0';LCD_Data<=c_d(write_c_cnt);w_c_flag<=1;STATE<=wait_3m1; --延时elsif(w_c_flag=1) then --w_c_flag=1,使能en='1' LCD_EN<='1';w_c_flag<=2;STATE<=wait_5m1; --延时elsif(w_c_flag=2) then --w_c_flag=2,使能en='0' LCD_EN<='0';w_c_flag<=0;write_c_cnt<=write_c_cnt+1; --当前数据已输出完,write_c_cnt加一指向下一个数据,并转入下一个数据输出WRITE_CSTATE<=WRITE_C;end if;when WRITE_D=>case write_d_cnt iswhen 0 to 11=>STATE<=WRITE_BYTE_D;when 12=>write_d_cnt<=0;STATE<=wait_100m; --所有数据输出完毕 end case;when WRITE_BYTE_D=>if(w_d_flag=0) thenLCD_RS<='1';LCD_Data<=d_d(write_d_cnt);w_d_flag<=1;STATE<=wait_3m2;elsif(w_d_flag=1) thenLCD_EN<='1';w_d_flag<=2;STATE<=wait_5m2;elsif(w_d_flag=2) thenLCD_EN<='0';w_d_flag<=0;write_d_cnt<=write_d_cnt+1;STATE<=WRITE_D;end if;when wait_3m1=>if (cnt>=3) thenSTATE<=WRITE_BYTE_C;cnt<=0;elsecnt<=cnt+1;STATE<=wait_3m1;end if;when wait_5m1=>if (cnt>=5) thenSTATE<=WRITE_BYTE_C;cnt<=0;elsecnt<=cnt+1;STATE<=wait_5m1;end if;when wait_3m2=>if (cnt>=3) thenSTATE<=WRITE_BYTE_D;cnt<=0;elsecnt<=cnt+1;STATE<=wait_3m2;end if;when wait_5m2=>if (cnt>=5) thenSTATE<=WRITE_BYTE_D;cnt<=0;elsecnt<=cnt+1;STATE<=wait_5m2;end if;when wait_100m=>if (cnt>=100) thenSTATE<=START; --该轮次的所有数据(指令,显示)都已输出,回到START,开始新一轮的输出cnt<=0;elsecnt<=cnt+1;STATE<=wait_100m;end if;end case;end if;end process;end Behav;(5)24秒计时模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY jishi24_cnt10 ISPORT(res,en,clk: IN STD_LOGIC;reset:IN STD_LOGIC;borrow:OUT STD_LOGIC;dataout:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END jishi24_cnt10;ARCHITECTURE rtl OF jishi24_cnt10 ISBEGINPROCESS(res,en,clk)VARIABLE q:INTEGER RANGE 0 TO 9;BEGINIF(res='1')THENq:=0;borrow<='0';ELSIF(reset='1'AND en='0')THENq:=0;borrow<='0';ELSIF(en='1')THENIF(clk='1'AND clk'EVENT)THENIF(q=0)THENq:=9;borrow<='1';ELSEq:=q-1;borrow<='0';END IF;END IF;END IF;dataout<=CONV_STD_LOGIC_VECTOR(q,4);END PROCESS;END rtl;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY cnt1_10 ISPORT(res,en,clk: IN STD_LOGIC;reset:IN STD_LOGIC;borrow:OUT STD_LOGIC;dataout:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END cnt1_10;ARCHITECTURE rtl OF cnt1_10 ISBEGINPROCESS(res,en,clk)VARIABLE q:INTEGER RANGE 0 TO 9;BEGINIF(res='1')THENq:=4;borrow<='0';ELSIF(reset='1'AND en='0')THENq:=4;borrow<='0';ELSIF(en='1')THENIF(clk='1'AND clk'EVENT)THENIF(q=0)THENq:=9;borrow<='1';ELSEq:=q-1;borrow<='0';END IF;END IF;END IF;dataout<=CONV_STD_LOGIC_VECTOR(q,4);END PROCESS;END rtl;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY cnt_2 ISPORT(res,en,clk: IN STD_LOGIC;reset:IN STD_LOGIC;borrow:OUT STD_LOGIC;dataout:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END cnt_2;ARCHITECTURE rtl OF cnt_2 ISBEGINPROCESS(res,en,clk)VARIABLE q:INTEGER RANGE 0 TO 2;BEGINIF(res='1')THENq:=2;borrow<='0';ELSIF(reset='1'AND en='0')THENq:=2;borrow<='0';ELSIF(en='1')THENIF(clk='1'AND clk'EVENT)THENIF(q=0)THENq:=2;borrow<='1';ELSEq:=q-1;borrow<='0';END IF;END IF;END IF;dataout<=CONV_STD_LOGIC_VECTOR(q,4);END PROCESS;END rtl;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mux1 isport(s1_10,s1,sec1_10,sec1,s10,s,sec10,sec:in std_logic_vector(3 downto 0);s10_out:out std_logic_vector(3 downto 0);s_out:out std_logic_vector(3 downto 0);ctrl_1,ctrl_2:in std_logic;pause:out std_logic;res:in std_logic);end mux1;architecture rtl of mux1 isbeginprocess(s1_10,s1,sec1_10,sec1,s10,s,sec10,sec,ctrl_1,ctrl_2)beginif(ctrl_1='1')thenif((s1_10<s10)or(s1_10=s10 and s1<=s))thens10_out<=s1_10;s_out<=s1;elses10_out<=s10;s_out<=s;end if;elsif(ctrl_2='1') thens10_out<=sec10;s_out<=sec;elseif(s1_10=0 and s1=0)thens10_out<=sec1_10;s_out<=sec1;elses10_out<=s1_10;s_out<=s1;end if;end if;end process;process(s1_10,s1,sec1_10,sec1,s10,s,sec10,sec,ctrl_1,ctrl_2)beginif(res='1')thenpause<='1';elsif((s1_10=0 and s1=0 and sec1_10=0 and sec1=0)or((ctrl_1='1'orctrl_2='1')and s10=0 and s=0 and sec10=0 and sec=0))then pause<='0';else pause<='1';end if;end process;end rtl;(6)计分模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jifen_cnt10 isport(res,decA,decB,incA,incB:in std_logic;Aout,Bout:buffer std_logic_vector(3 downto 0);b_decA,b_incA,b_incB,b_decB:out std_logic);end jifen_cnt10;architecture rtl of jifen_cnt10 issignal alter_A,alter_B:std_logic;beginalter_A<=decA or incA;alter_B<=decB or incB;process(res,decA,incA)beginif(res='1')thenAout<="0000";b_decA<='0';elsif(alter_A='1'and alter_A'event)thenif(decA='1')thenif(Aout="0000")thenAout<="1001";b_decA<='1';elseAout<=Aout-1;b_decA<='0';end if;elsif(incA='1')thenif(Aout="1001")thenAout<="0000";b_incA<='1';elseAout<=Aout+1;b_incA<='0';end if;end if;end if;end process;process(res,decB,incB)beginif(res='1')thenBout<="0000";b_decB<='0';elsif(alter_B='1'and alter_B'event)thenif(decB='1')thenif(Bout="0000")thenBout<="1001";b_decB<='1';elseBout<=Bout-1;b_decB<='0';end if;elsif(incB='1')thenif(Bout="1001")thenBout<="0000";b_incB<='1';elseBout<=Bout+1;b_incB<='0';end if;end if;end if;end process;end rtl;(7)系统计时模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dectect isport(datain_m10:IN STD_LOGIC_VECTOR(3 DOWNTO 0); datain_m:IN STD_LOGIC_VECTOR(3 DOWNTO 0);datain_s10:IN STD_LOGIC_VECTOR(3 DOWNTO 0);datain_s:IN STD_LOGIC_VECTOR(3 DOWNTO 0);datain_sec10:IN STD_LOGIC_VECTOR(3 DOWNTO 0);datain_sec:IN STD_LOGIC_VECTOR(3 DOWNTO 0);discon:out std_logic;resetin:in std_logic;res:in std_logic;resetout:out std_logic;extra:out std_logic);end dectect;architecture rtl of dectect isbeginprocess(datain_m10,datain_m,datain_s10,datain_s,datain_sec10,datain_s ec,resetin)beginif(res='1')thenresetout<='0';elsif(datain_m10="0000" and datain_m="0000" and datain_s10="0000" and datain_s="0000" and datain_sec10="0000" and datain_sec="0000")then resetout<=resetin;else resetout<='0';end if;end process;process(datain_m10,datain_m,datain_s10,datain_s,datain_sec10,datain_s ec,resetin)beginif(res='1')thenextra<='0';elsif(datain_m10="0000" and datain_m="0000" and datain_s10="0000" and datain_s="0000" and datain_sec10="0000" and datain_sec="0000")then if(resetin='1'and resetin'event)thenextra<='1';end if;end if;end process;process(datain_m10,datain_m,datain_s10,datain_s,datain_sec10,datain_s ec,resetin)beginif(res='1')thendiscon<='0';elsif(((datain_m10="0010" ANDdatain_m="0100")or(datain_m10="0011" AND datain_m="0110")or(datain_m10="0001" AND datain_m="0010")) and datain_s10="0000" and datain_s="0000" and datain_sec10="0000" and datain_sec="0000")thenif(resetin='1' and resetin'event)thendiscon<='1';end if;elsif(((datain_m10="0010" AND datain_m="0011")or(datain_m10="0011" AND datain_m="0101")or(datain_m10="0001" AND datain_m="0001")) and datain_s10="0000" and datain_s="0000" and datain_sec10="0000" and datain_sec="0000")thendiscon<='0';end if;end process;end rtl;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY cnt4 ISPORT(res,en,clk: IN STD_LOGIC;reset:IN STD_LOGIC;borrow:OUT STD_LOGIC;dataout:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END cnt4;ARCHITECTURE rtl OF cnt4 ISBEGINPROCESS(res,en,clk)VARIABLE q:INTEGER RANGE 0 TO 4;BEGINIF(res='1')THENq:=4;borrow<='0';ELSIF(reset='1')THENq:=0;borrow<='0';ELSIF(en='1')THENIF(clk='1'AND clk'EVENT)THENIF(q=0)THENq:=4;borrow<='1';ELSEq:=q-1;borrow<='0';END IF;END IF;END IF;dataout<=CONV_STD_LOGIC_VECTOR(q,4);END PROCESS;END rtl;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY cnt6 ISPORT(res,en,clk: IN STD_LOGIC;borrow:OUT STD_LOGIC;dataout:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END cnt6;ARCHITECTURE rtl OF cnt6 ISBEGINPROCESS(res,en,clk)VARIABLE q:INTEGER RANGE 0 TO 5;BEGINIF(res='1')THENq:=0;borrow<='0';ELSIF(en='1')THENIF(clk='1'AND clk'EVENT)THENIF(q=0)THENq:=5;borrow<='1';ELSEq:=q-1;borrow<='0';END IF;END IF;END IF;dataout<=CONV_STD_LOGIC_VECTOR(q,4);END PROCESS;END rtl;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY cnt10 ISPORT(res,en,clk: IN STD_LOGIC;borrow:OUT STD_LOGIC;dataout:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END cnt10;ARCHITECTURE rtl OF cnt10 ISBEGINPROCESS(res,en,clk)VARIABLE q:INTEGER RANGE 0 TO 9;BEGINIF(res='1')THENq:=0;borrow<='0';ELSIF(en='1')THENIF(clk='1'AND clk'EVENT)THENIF(q=0)THENq:=9;borrow<='1';ELSEq:=q-1;borrow<='0';END IF;END IF;END IF;dataout<=CONV_STD_LOGIC_VECTOR(q,4);END PROCESS;END rtl;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY conv ISPORT( discon:IN STD_LOGIC;datain_m10:IN STD_LOGIC_VECTOR(3 DOWNTO 0);datain_m:IN STD_LOGIC_VECTOR(3 DOWNTO 0);dataout_m10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);dataout_m:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);extra:IN STD_LOGIC);END conv;ARCHITECTURE rtl OF conv ISBEGINPROCESS(datain_m10,datain_m)BEGINIF(extra='1')THENdataout_m10<=datain_m10;dataout_m<=datain_m;ELSIF((datain_m10="0001" AND datain_m<2)OR(datain_m10="0000")OR(datain_m10="0001" AND datain_m=2 AND discon='1'))THENdataout_m10<=datain_m10;dataout_m<=datain_m;ELSIF((datain_m10="0010" AND datain_m<4 AND datain_m>=2)OR(datain_m10="0001" AND datain_m>=2)OR(datain_m10="0010" AND datain_m=4 AND discon='1'))THENdataout_m10<=datain_m10-1;dataout_m<=datain_m-2;ELSIF(datain_m10="0010" AND datain_m<2)THENdataout_m10<="0000";dataout_m<=10+datain_m-2;ELSIF((datain_m10="0011" AND datain_m<6 AND datain_m>=4)OR(datain_m10="0010" AND datain_m>=4)OR(datain_m10="0011" AND datain_m=6 AND discon='1'))THENdataout_m10<=datain_m10-2;dataout_m<=datain_m-4;ELSIF(datain_m10="0011" AND datain_m<4)THENdataout_m10<="0000";dataout_m<=10+datain_m-4;ELSIF((datain_m10="0100" AND datain_m<=8 AND datain_m>=6)OR(datain_m10="0011" AND datain_m>=6))THENdataout_m10<=datain_m10-3;dataout_m<=datain_m-6;ELSIF(datain_m10="0100" AND datain_m<6)THENdataout_m10<="0000";dataout_m<=10+datain_m-6;END IF;END PROCESS;END rtl;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ctrl ISPORT(res:IN STD_LOGIC;datain_m10:IN STD_LOGIC_VECTOR(3 DOWNTO 0);datain_m:IN STD_LOGIC_VECTOR(3 DOWNTO 0);datain_s10:IN STD_LOGIC_VECTOR(3 DOWNTO 0);datain_s:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ctrl_1:OUT STD_LOGIC;ctrl_2:OUT STD_LOGIC);END ctrl;ARCHITECTURE rtl OF ctrl ISBEGINPROCESS(res,datain_m10,datain_m,datain_s10,datain_s)BEGINIF(res='1')THENctrl_1<='0';ctrl_2<='0';ELSIF((datain_m10="0000" AND datain_m="0000" )AND ((datain_s10="0010" AND datain_s<=4)OR(datain_s10="0001")OR(datain_s10="0000" AND datain_s>=1)))THENctrl_1<='1';ctrl_2<='0';ELSIF((datain_m10="0000" AND datain_m="0000" )AND (datain_s10="0000" AND datain_s="0000"))THENctrl_1<='0';ctrl_2<='1';ELSEctrl_1<='0';ctrl_2<='0';END IF;END PROCESS;END rtl;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY period ISPORT(res:IN STD_LOGIC;reset:IN STD_LOGIC;discon:IN STD_LOGIC;datain_m10:IN STD_LOGIC_VECTOR(3 DOWNTO 0);datain_m:IN STD_LOGIC_VECTOR(3 DOWNTO 0);period:out std_logic_vector(2 downto 0);extra:IN STD_LOGIC);END period;ARCHITECTURE rtl OF period ISSIGNAL period_s:STD_LOGIC_VECTOR(2 downto 0);BEGINPROCESS(res,datain_m10,datain_m,extra,discon,RESET)BEGINIF(res='1')THENperiod_s<="000";ELSIF(extra='0')THENIF((datain_m10=1 AND datain_m<2)OR(datain_m10=0)OR(datain_m10=1 AND datain_m=2 AND discon='1'))THENperiod_s<="011";ELSIF((datain_m10=2 AND datain_m<4)OR(datain_m10=1 AND datain_m>=2)OR(datain_m10=2 AND datain_m=4 AND discon='1'))THENperiod_s<="010";ELSIF((datain_m10=3 AND datain_m<6)OR(datain_m10=2 AND datain_m>=4)OR(datain_m10=3 AND datain_m=6 AND discon='1'))THENperiod_s<="001";ELSIF((datain_m10=4 AND datain_m<=8)OR(datain_m10=3 AND datain_m>=6))THENperiod_s<="000";END IF;ELSIF(reset='0'AND reset'EVENT)THENperiod_s<=period_s+1;END IF;period<=period_s;END PROCESS;END rtl;(8)交换模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity jiaohuan isport(Ain_100:in std_logic_vector(3 downto 0); Ain_10:in std_logic_vector(3 downto 0);Ain:in std_logic_vector(3 downto 0);Bin_100:in std_logic_vector(3 downto 0); Bin_10:in std_logic_vector(3 downto 0);Bin:in std_logic_vector(3 downto 0);period:in std_logic_vector(2 downto 0);Aout_100:out std_logic_vector(3 downto 0); Aout_10:out std_logic_vector(3 downto 0); Aout:out std_logic_vector(3 downto 0);Bout_100:out std_logic_vector(3 downto 0); Bout_10:out std_logic_vector(3 downto 0); Bout:out std_logic_vector(3 downto 0));end jiaohuan;architecture behav of jiaohuan isbeginprocess(Ain_100,Ain_10,Ain,Bin_100,Bin_10,Bin,period)beginif(period<=1)thenAout_100<=Ain_100;Aout_10<=Ain_10;Aout<=Ain;Bout_100<=Bin_100;Bout_10<=Bin_10;Bout<=Bin;elseAout_100<=Bin_100;Aout_10<=Bin_10;Aout<=Bin;Bout_100<=Ain_100;Bout_10<=Ain_10;Bout<=Ain;end if;end process;end behav;(9)按键输入模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY anjian ISPORT(S1,S2,S3,S4,S5,S6,S7,S8,clk2: IN STD_LOGIC;dec,pause,res,reset,decA,decB,incA,incB: OUT STD_LOGIC); END anjian;ARCHITECTURE behav OF anjian ISSIGNALres2,res1,re,incA2,incA1,incB2,incB1,decA2,decA1,decB2,decB1,pause2,p ause1,pause_s,pause_s1,reset2,reset1,dec1,dec2:STD_LOGIC;BEGINPROCESS(S7,clk2)BEGINIF(clk2='1' AND clk2'EVENT) THENres2<=res1;res1<=S7;END IF;re<=res1 AND (NOT res2) AND clk2;END PROCESS;PROCESS(S1,clk2)BEGINIF(clk2='1' AND clk2'EVENT) THENincA2<=incA1;incA1<=S1;END IF;incA<=incA1 AND (NOT incA2) AND clk2; END PROCESS;PROCESS(S2,clk2)BEGINIF(clk2='1' AND clk2'EVENT) THENincB2<=incB1;incB1<=S2;END IF;incB<=incB1 AND (NOT incB2) AND clk2; END PROCESS;PROCESS(S3,clk2)BEGINIF(clk2='1' AND clk2'EVENT) THENdecA2<=decA1;decA1<=S3;END IF;decA<=decA1 AND (NOT decA2) AND clk2; END PROCESS;PROCESS(S4,clk2)BEGINIF(clk2='1' AND clk2'EVENT) THENdecB2<=decB1;decB1<=S4;END IF;decB<=decB1 AND (NOT decB2) AND clk2; END PROCESS;PROCESS(S5,clk2)BEGINIF(clk2='0' AND clk2'EVENT) THENpause2<=pause1;pause1<=S5;pause_s<=pause1 AND (NOT pause2) AND clk2; END PROCESS;PROCESS(pause_s)BEGINIF(re='1')THENpause_s1<='0';ELSIF(pause_s='1'AND pause_s'EVENT) THEN pause_s1<=NOT pause_s1;END IF;pause<=pause_s1;END PROCESS;PROCESS(S6,clk2)BEGINIF(clk2='1' AND clk2'EVENT) THENreset2<=reset1;reset1<=S6;END IF;reset<=reset1 AND (NOT reset2) AND clk2; END PROCESS;PROCESS(S8,clk2)BEGINIF(clk2='1' AND clk2'EVENT) THENdec2<=dec1;dec1<=S8;END IF;dec<=dec1 AND (NOT dec2) AND clk2;END PROCESS;END behav;三、引脚分配表四、设计结果当按下S7时,系统复位,液晶屏显示000:000 1st,数码管显示12 00 24当24秒时间到了,则16个led灯全亮,比赛暂停:。

篮球计分器毕业设计

毕业设计设计题目:单片机篮球计分器设计要求:1.本次设计的篮球计时计分器,电路简单,而且易懂,使操作利用者利用超级方便,本钱较低,灵敏靠得住,记录准确,程序简单,具有超级高的有效价值。

2.竞赛时加减分,加分按键有1分、2分、三分。

在加错的情形下要求能够减分,按键一次减1分。

3.设计内容包括计分器、,能够使参加竞赛的成员、裁判和观众一目了然的看到所有参加者的成绩,以最快的速度评出结果,该篮球计时计分还鞥普遍应用于各类只是竞赛。

设计进度要求:第一周:选定论文题目第二周:查找相关资料第三周:整理资料第周围:把握单片机硬件、软件的组成和应用第五周:完成论文,编程调试第六周:经教师检查后进行修改毕业论文第七周:打印论文,完成毕业论文第八周:答辩目录1概述 (4)2系统设计方案 (5)大体功能介绍 (5)系统组成框图 (5)3系统硬件设计 (6)3.1 A T89C51简介 (6)3.2 单片机的工作条件 (9)3.2.1 时钟电路 (10)3.2.2 复位电路 (12)4软件设计 (14)软件的设计 (14)总的程序设计代码 (17)致谢 (19)参考文献 (21)总结 (22)附录1 硬件原理图 (23)1概述单片机把咱们带入了智能化的电子领域,许多繁琐的系统假设由单片机进行设计,便能收到电路更简单、功能更齐全的良好成效。

假设把更经典的点子系统看成一个僵死的点子系统,那么智能化的现代电子系统那么是一个具有"生命"的电子系统。

而随着技术的进步,单片机与串口通信的结合更多地应用到各个电子系统中已成一种趋势。

单片机具有体积笑、功能强、应用面广等优势,目前正以前所未见的速度取代着传统电子线路组成的经典系统,蚕食着传统数字电路与模拟电路固有的领域。

同时,一个学习与应用单片机的新高潮正在大规模地兴起。

可是,单片机并非像传统数字电路或模拟电路那样直观,缘故是除“硬件”之外,还存在一个“软件”的因素。

单片机课程设计—篮球计时计分器

单片机课程设计—篮球计时计分器篮球作为一项广受欢迎的运动,其比赛的公平性和准确性至关重要。

而在篮球比赛中,计时计分器是不可或缺的设备,它能够为比赛提供准确的时间和比分信息,保障比赛的顺利进行。

本次单片机课程设计的任务就是设计一款篮球计时计分器,通过运用单片机的知识和技能,实现篮球比赛计时和计分的功能。

一、设计要求1、能够实现比赛时间的计时功能,包括 24 秒进攻时间、每节 10分钟的比赛时间以及加时赛时间。

2、能够实时显示比分,包括主队和客队的得分。

3、具备暂停、复位等功能,以应对比赛中的各种情况。

4、能够通过按键进行操作,简单易用。

二、系统方案设计1、硬件设计单片机选型:选择一款性能稳定、资源丰富的单片机,如STC89C52 单片机。

显示模块:采用数码管显示时间和比分,数码管具有亮度高、显示清晰、成本低等优点。

按键模块:使用独立按键实现计时、计分、暂停、复位等操作。

时钟模块:采用外部时钟芯片,为系统提供准确的时钟信号。

2、软件设计编程语言:选择 C 语言进行编程,C 语言具有语法简洁、可移植性好等优点。

程序流程:主程序负责系统的初始化、按键扫描、时间和比分的更新以及显示。

中断服务程序负责处理时钟中断,实现计时功能。

三、硬件电路设计1、单片机最小系统包括单片机芯片、晶振电路和复位电路。

晶振电路为单片机提供时钟信号,复位电路用于系统的初始化。

2、显示电路采用共阳极数码管,通过三极管驱动数码管的段选和位选信号,实现时间和比分的显示。

3、按键电路独立按键分别连接到单片机的 I/O 口,通过检测按键的状态来执行相应的操作。

4、时钟电路采用 DS1302 时钟芯片,通过单片机的 I/O 口与时钟芯片进行通信,获取准确的时间信息。

四、软件程序设计1、主程序首先进行系统初始化,包括单片机端口设置、数码管显示初始化、时钟芯片初始化等。

然后进入主循环,不断扫描按键状态,根据按键执行相应的操作,同时更新时间和比分,并将其显示在数码管上。

篮球计时计分器设计

篮球计时计分器设计摘要单⽚机发展极为迅速,⾃从问世以来就以极⾼的性价⽐受到⼈们的关注,由于它体积⼩,环境适应性好,价格低,易开发,所以在各个领域都得到了推⼴。

⼴泛应⽤于智能仪器仪表、⼯业控制、家⽤电器、计算机⽹络、医疗设备、汽车设备等领域中。

当前世界上各⼤芯⽚公司都推出了⾃⼰的单⽚机,从8位、16位到32位等,但它们各具特⾊,互成互补,为单⽚机的应⽤提供了⼴阔的天地。

本次设计就是采⽤单⽚机AT89C51编程控制 7段共阴LED数码管作显⽰的篮球⽐赛计时计分系统。

在体育⽐赛的计时计分系统中包括测量类、评分类、命中类、制胜类、得分类等多种类型。

⽽篮球⽐赛时根据运动队在规定时间内得分多少来决定胜负的,因此篮球⽐赛的计时计分器是⼀种得分类型的系统。

本系统采⽤模块化设计,主体部分可分为计时显⽰模块、计分显⽰模块、定时报警模块、按键控制模块。

利⽤Keil C51软件进⾏编程,程序编写完成后通过编译⽣成HEX⽂件装⼊AT89C51芯⽚中,采⽤仿真软件Proteus检验功能是否能够正常实现。

最后采⽤Protel DXP画出电路原理图并⽣成印刷电路板图。

本系统由计时电路、计分电路、报警电路和控制电路四个电路组成。

篮球⽐赛计时计分器的主要功能有赛程时间设置、赛程时间启动/停⽌设置、⽐分交换控制和⽐分刷新控制等。

它具有很⾼的灵活性,同时操作步骤也很简单且具有低功耗,可靠性,安全性以及低成本等特点。

关键词:单⽚机;篮球⽐赛计时计分器;AT89C51AbstractSCM develops rapidly since its inception to the high price people pay attention, because of its small size, adaptability to environment, low price, easy to develop, so in all fields have been promoted. Widely used in smart instrumentation, industrial control, home appliances, computer networks, medical equipment, automotive equipment, and other areas. Currently the world's major chip companies have launched their own microcontroller, from the 8-bit, 16-32, etc., but they are distinctive, each into a complementary application for the microcontroller provide a vast world。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档