数电实验报告乒乓球游戏机

合集下载

数字电子技术实验报告-双人2维乒乓球游戏机

数字电子技术实验报告-双人2维乒乓球游戏机

一、实验目的为了让EDA实验更加具有趣味性,在实验要求中一维乒乓球游戏机的启发下,本实验设计了一个二维乒乓球游戏机。

以两排灯模拟乒乓球桌的两方,以两排按键模拟不同的击球位置,同时可以将得分显示在数码管上以判定胜负。

二、设计思路1.由计数器的不停计数实现随机数(接高频时钟信号)2.一方按下发球待对方的提示灯亮后抬起3.对方灯亮一小段时间后灭4.在灯灭之前对方按下相应位置则判定击球成功并在发球方随机位置亮灯5.直至一方未击中球或者犯规则给对方加一分整个电路的设计分为以上3大部分。

防颤抖部分消除按键抖动;两个击球器件反馈连接构成击球部分,击球部分又分为四个小部分;计分部分接受击球部分产生的得分信号来为双方计分并显示在数码管上。

三、设计方案1.防颤抖:按键会产生不必要的抖动,即在一个时钟周期内产生多个脉冲信号导致计分错误。

消除抖动的方案就是接收到脉冲后先不直接输出,而是等过了一小段时间后判断是否与这段时间前的状态相同,如果相同则说明是确实是按键输入,否则就说明是抖动。

根据这个原理,用一个D触发器和一个与门就可得到这种效果。

2.击球部分:(1)击球判定用对方将球击回的位置信号与当前输入的击球位置用与门连接则可判断是否击中来球。

为了保持信号状态防止意外发生,在击球后的信号用D 触发器储存起来。

(2)对方得分信号产生此部分是将击球信号与发球信号用逻辑连接起来发球键不能与击球键同时按下,开始设计的时候是直接将发球与击球键用或门连接。

但是这样会出现一发球便使对方得分的情况出现,因此改为这种设计,可以有效的避免出现上述情况。

此部分是判定得分的主要部分。

由于多个击球键同时按下的犯规使对方得分和按错击球键使对方得分其实是同一种情况,即击球位置与亮灯位置不同导致的。

因此将所有的击球信号与接球信号用异或门连接即输出了使对方得分的信号。

此信号在接球灯灭时产生,因此是时钟下降沿信号。

将上述信号与时钟下降沿用与门连接即得。

(3)伪随机位置产生由于需要七个灯来显示不同的击球位置,因此采用一个模7的计数器接高频时钟信号后连接译码器。

数电课设-乒乓球游戏机

数电课设-乒乓球游戏机

数电课设-乒乓球游戏机乒乓球游戏机数电课设一、课设目的本课设的目的是通过设计并实现一个乒乓球游戏机的电子电路模型,来巩固和应用学生在数字电路实验课上所学习到的知识,提高他们的电子电路设计与实现能力。

二、设计思路乒乓球游戏机是一种非常经典的游戏机,它的原理很简单,就是通过两个滑块控制球的移动方向,利用球拍击球来达到得分的目的。

基于这个原理,我们可以设计一个乒乓球游戏机的电子电路模型。

具体的设计思路如下:1、显示系统:使用LED点阵来显示游戏界面。

设计一个4*4的LED 点阵,通过控制LED点阵的亮灭来显示游戏界面的各个元素,如球、滑块等。

2、控制系统:使用两个按键来控制滑块的上下移动。

通过按键的触发来改变滑块的位置,从而实现对球的控制。

3、碰撞检测:使用逻辑门电路来判断球与滑块之间是否发生碰撞。

当球与滑块相碰时,逻辑门输出高电平信号,触发得分操作。

4、计分系统:使用计数器电路来实现游戏的计分功能。

当球与滑块相碰时,计数器加一,同时更新LED点阵上的分数显示。

三、电路实现1、显示系统:设计一个4*4的LED点阵电路模型,使用74HC595移位寄存器来驱动LED点阵。

将74HC595的输出接入到LED点阵的行线上,通过移位寄存器的控制信号来控制LED点阵的亮灭。

通过连续地改变LED 点阵的亮灭状态,可以显示游戏界面上的各个元素。

2、控制系统:使用两个按键作为滑块的上下移动控制信号。

当按键按下时,滑块的位置向相应方向移动。

可以使用74HC165移位寄存器来实现按键输入的检测和转换。

3、碰撞检测:使用逻辑门电路来判断球与滑块之间是否发生碰撞。

可以使用与门和反相器来实现碰撞检测。

当球与滑块相碰时,逻辑门输出高电平信号。

4、计分系统:使用计数器电路来实现游戏的计分功能。

可以使用74HC191或74HC163等计数器芯片来实现,通过设置计数器的初始值和计数模式,来实现游戏的计分功能。

四、功能实现乒乓球游戏机的基本功能有:1、选择游戏模式功能:可以通过添加一个模式选择开关,来实现选择不同的游戏难度。

乒乓球比赛游戏机设计报告

乒乓球比赛游戏机设计报告

乒乓球比赛游戏机姓名:___***____学号:___************__ 班级: ___11表二____一、设计题目及要求:题目:乒乓球比赛游戏机。

要求:(1)设计一个甲乙双方参赛,裁判参与的乒乓球比赛游戏机用8个发光二极管排成一条直线,以中点为界,两边各代表参赛双方的位置,其中点亮的发光二极管代表“乒乓球”的当前位置,点亮的发光二极管依次由左向右或由右向左移动。

(2)当球运动到某方的最后一位时,参赛者应立即按下自己一方的按钮表示击球,若击中,则“球”向相反方向运动,若未击中,对方得一分。

(3)设置自动计分电路,双方各用两位数码管来显示计分,每局10分,到达10分时,产生报警信号,铃响三秒。

二、设计思路及总体方案两人乒乓球游戏机是由发光二极管代替球的运动,并按照一定的规则进行对垒比赛。

甲乙双方击球用开关表示。

当甲乙按动开关时,球向前运动,当球运动到某方的最后一位时,参赛者应立即按下自己一方的按钮,即表示击球。

若未击中则表示对方得分,利用计数器连接成十进制计数器记分每局十分。

当二者任意一方得分为十分时发生警信号,并且自动停止球的运动,三秒的报警后,自动停止。

图1:乒乓球比赛游戏结构框图三、元器件选型及依据:四、电路的设计:(1)总体设计思路如下:1.用两个74LS194四位双向移位寄存器来模拟乒乓球台,其中第一个74LS194的DL输出端QD接第二个的右移串行输入端SR,这样当乒乓球往右准备移出第一个寄存器的时候就会在时钟脉冲的作用下被移入第二个寄存器。

同样道理,第二个74LS194的QA输出端接第一个的左移串行输入端。

2.用JK触发器7473、继电器及逻辑门电路构成驱动控制电路。

3.用十进制计数器74LS160D、逻辑门电路和集成的4管脚的数码管组成计分电路。

4.用十进制计数器74LS160D改装3进制计数器、逻辑门电路和蜂鸣器组成3秒报警电路。

(2)单元电路设计:2.1、球台电路设计:球台电路设计如下图所示:图2:球台电路上图中,两片4位74LS194双向移位寄存器接成8位双向移位寄存器。

数电课程设计—乒乓球游戏机

数电课程设计—乒乓球游戏机

数电课程设计—乒乓球游戏机【摘要】本文设计了一款基于数电原理的乒乓球游戏机。

该游戏机通过使用FPGA芯片实现硬件设计和程序控制,具有两种游戏模式:单人模式和双人模式。

游戏机的底座上有两个按钮,分别用于控制乒乓球的发射和移动。

游戏机通过显示器显示游戏界面和得分情况。

本设计可以帮助学生加深对数电原理的理解,同时提供娱乐和学习的双重功能。

【关键词】数电;FPGA;游戏机;乒乓球【引言】乒乓球是一项非常受欢迎的体育活动,它可以锻炼身体,增强反应能力。

为了让更多的人能够享受到乒乓球的乐趣,本文设计了一款乒乓球游戏机。

该游戏机采用FPGA芯片作为硬件逻辑核心,通过程序控制实现乒乓球的发射、移动和碰撞检测。

游戏机通过显示器显示游戏界面和得分情况,通过按钮进行游戏控制。

【设计思想】游戏机的设计核心是FPGA芯片,它将乒乓球游戏逻辑实现为硬件电路,并通过程序控制进行游戏过程的控制。

游戏机主要包括乒乓球发射、移动和碰撞检测、分数计算、游戏界面显示等功能。

乒乓球发射:通过按钮控制乒乓球的发射,按钮通过电平信号转换为数字信号输入到FPGA芯片。

FPGA芯片接收到数字信号后,通过电路逻辑实现乒乓球的发射。

乒乓球移动和碰撞检测:乒乓球的移动和碰撞检测是游戏机的核心部分。

乒乓球的移动由程序控制,程序将乒乓球的当前位置信息输出到FPGA芯片,FPGA芯片接收到位置信息后,通过电路逻辑实现乒乓球的移动。

乒乓球与板子的碰撞通过碰撞检测器实现,碰撞检测器通过电路逻辑判断乒乓球是否与板子相碰撞。

分数计算:分数是游戏机的一个重要指标。

游戏机通过碰撞检测器检测到乒乓球与板子相碰撞后,自动增加得分。

分数的计算由程序控制,程序将得分信息输出到FPGA芯片,FPGA芯片接收到得分信息后通过电路逻辑实现分数的计算。

游戏界面显示:游戏界面的显示通过显示器实现。

显示器接收到FPGA芯片输出的游戏界面信息,并根据信息显示游戏界面。

【结论】本文设计了一款基于数电原理的乒乓球游戏机。

数字电子技术实习报告——乒乓球游戏控制器的设计

数字电子技术实习报告——乒乓球游戏控制器的设计

数字电子实习实习题目:乒乓球游戏控制器的设计目录一、设计任务 (1)二、设计过程 (1)三、安装调试 (7)四、实习心得 (8)五、元器件清单 (9)六、参考文献 (10)乒乓球游戏控制器的设计一、设计任务1.简要说明乒乓球游戏控制器使用8~16个发光二极管组成乒乓球台,用点亮的发光二极管按一定方向的位移表示球的运动位置。

游戏控制器有A、B两个人来操作,每方各设置一个开关SA和SB,用于比赛中的击球和发球。

A、B两人按比赛规则来操作开关。

当A方按下开关SA时,靠近A方的第一个灯亮,然后发光二极管从A方向B方依次点亮,代表球的移动。

当球移动到靠近B方的第一个灯时,为B方的击球时间,B方应及时击球,发光二极管向反方向依次点亮,表示球以击出。

若B方提前击球或未击球,则判B方失分,A方的积分牌自动加1分。

然后重新发球,比赛继续进行。

2.设计任务与要求设计一台乒乓球游戏控制器,该控制器能模拟乒乓球比赛的基本过程,并能按照比赛规则自动裁判和计分。

设计要求如下:1)A、B双方各有一个击、发球按键,既可用来发球,又可用来击球。

2)球的移动速度为0.1~0.5s移动一位。

3)设有自动计分牌,并能显示每局的得分和胜出局的得分。

任何一方先计满11分,表示该方此局胜出,并在胜出局数加1分。

然后重新开始新的一局,任何一方胜出4时比赛结束。

4)设有发球权显示信号。

按照比赛规则,每方两次发球后,需要交换球权。

二、设计过程1.设计分析从上边总体框图和设计要求分析,对于控制部分主要是实现发球和击球的两个动作由于移动方向的控制要在球移动的过程中保持,采用7474触发器实现。

对于小灯的一移动即球的移动,我们采用八个LED显示,由于需要左右移动和移动的切换我们采用两片四位双向移位寄存器并且可以并行存取的74194来做LED显示部分。

对于计分电路我们对于一个控制端采用三个数码管显示,用三片四位十进制同步计数器可以异步清零的74160作为计分电路。

数电设计乒乓球游戏机

数电设计乒乓球游戏机

数字电路课程设计报告设计二乒乓球游戏机姓名:陈元专业:信息工程年级:2015班级:信工二班学号:201532010161. 设计题目及要求1.1题目:乒乓球游戏机1.2要求:1)用8个发光二极管表示球;用两个按钮分别表示甲乙两个球员的球拍;2)一方发球后,球以固定速度向另一方运动(发光二极管依次点亮),当球达到最后一个发光二极管时,对方击球(按下按钮)球将向相反方向运动,在其他时候击球视为犯规,给对方加1分;都犯规,各自加1分;3)甲、乙各有一数码管计分;4)裁判有一个按钮,是系统初始化,每次得分后,按下一次。

2. 设计过程及软件仿真2.1设计方案:1)球台电路:用8个发光二极管表示球,采用双向移位寄存器控制灯的流向;2)控制电路:用双D触发器及逻辑门电路组成,通过此电路控制球台电路的左右移位;3)计分电路:用十进制计数器,逻辑门,译码器,数码管组成;4)时钟电路:用555定时器构建多谐振荡器产生时钟脉冲;5)电源电路:用usb串口与5v移动电源向电路板供电,并在电路板设置电源指示灯指示供电情况。

2.2.总电路设计:2.3单元电路设计1)球台电路设计球台电路是整个乒乓球游戏机的终端,是最终打乒乓球的球台。

上图中,两片4位74LS194双向移位寄存器接成8位双向移位寄存器。

74LS194功能表如表1所示:2)开关电路开关电路是整个乒乓球游戏机的灵魂,是使乒乓球游戏能进行的核心。

开关电路由两片74ls74(D触发器)、两个与非门,两个与门和一个或门组成。

图中74LS74为上升沿触发的D触发器,~PR为置1端(低有效),~CLR为置0端(低有效)。

当J1=0时,两片D触发器输出端均为1即S1=S0=1,通过接入74LS194,此时实现的是并行输入功能。

当J1=1时,Qa=J3=1,J2=Qd=0,通过各门电路和D触发器输出端分别为0,1即S1=0,S0=1。

相反情况时,当J1=1时,Qa=J3=0,J2=Qd=1,D触发器输出端分别为1,0即S1=1,S0=0。

数字电子技术课程设计乒乓球游戏器

数字电子技术课程设计乒乓球游戏器

一、设计目的:本电子设计主要为实现以下目的:1、增强对数字电子技术的了解与掌握;2、学习相关软件的使用方法;3、具备简单电路的设计能力。

二、设计任务1、乒乓球游戏电路主要功能:(1)设计游戏电路由甲、乙双方参赛,裁判参与的乒乓球比赛游戏模拟机。

(2)用六只排成长串的指示灯(发光二极管)用来代表球的轨迹,其中一个亮的指示灯用来显示球的当前位置,指示灯依次从左向右,或从右向左移动来表示乒乓球被击打的轨迹。

(3)用两个按钮开关作为球拍,甲乙两人参加比赛。

当球到达甲方时,应立即按动开关(电路应只能响应按钮信号的前沿,若重复按动或持续按下去,将不起作用),表示回球,球到达乙时,同样也应立即按动乙方的开关,将球回击到对方去(游戏规定只有在1号灯、6号灯亮时击球才有效)。

若击中,则乒乓球向相反方向移动,若未击中,则对方得一分。

(4)一方得分时,计时器计时3s,电路自动响铃3s,此时发球无效,3s后,由裁判清零,方能继续比赛。

(5)自动计分电路,双方各用一个七段数码显示管进行计分显示,每计满9分为一局。

(6)甲、乙双方各设一个发光二极管,表示拥有发球权,每隔5次自动交换发球权,二极管亮代表拥有发球权,拥有发球权的一方发球有效。

(7)游戏时间为20分钟,当第一次发球的同时,倒计时器开始计时,当时间走完之后,自动切断电路,不能再进行游戏,若此时还没有人达到9分,那么分高的人赢得比赛,若比分相同,那么视为平局。

三、设计电路的实现(1)乒乓球游戏机控制电路组成框图如图1所示。

它由秒信号发生器、时序控制电路、计分显示电路、响铃提醒电路和20分钟倒计时电路、双向移位寄存器(74LS194)、LED发光管和甲、乙双方、裁判开关等组成。

图1 乒乓球游戏机控制电路结构组成框图(2)用双向移位寄存器的输出端控制LED显示已达到模拟乒乓球运动的轨迹,先点亮位于某一方第一个LED,由击球者通过按钮输入开关信号,实现以为方向的控制。

(3)用时序控制电路来控制实现只有当最后一个LED灯亮的时候,甲或乙选手去按动“球拍”按钮,“球”的运动方向才会发生改变,而没有达到最后一个LED灯亮的任何时候按动按钮都是无效的。

乒乓球游戏机报告书

乒乓球游戏机报告书

广西交通职业技术学院信息工程系期考作品报告书课程名称:数字电子技术题目:乒乓球游戏机班级:电信09学号: 2009405035姓名:庞瑞坚组名:第八组成员:刘任翼、庞瑞坚指导老师:宋春胜二O一O 年十二月乒乓球游戏机摘要:该乒乓球游戏机电路主要是由记分模块、移位寄存器模块和脉冲产生模块组成,其中记分模块采用异步十进制计数器74ls160实现,并可记分到两位数,移位寄存器模块采用两块74ls194级连实现,而脉冲产生模块则采用了555定时器构成的多谐振荡器实现。

本电路根据乒乓球一般的比赛规则来工作,用发光二极管LED灯的亮灭来模拟乒乓球的运动轨迹,从而模拟一场具有真实性、可观赏性和妙趣横生的比赛。

关键词:74ls160、移位寄存器、多谐振荡器Ping Pong GameAbstract: The table tennis game circuit mainly by scoring module, the shift register module and the pulse generator module, which points the module implementation using asynchronous decade counter 74ls160, and points to the double-digit shift register module uses two 74ls194 Cascade realization, the pulse generator module is composed by a 555 timer multivibrator realized. The circuit according to the general rules of the competition table tennis to work with light emitting diode LED lights off to simulate the trajectory of table tennis, which has the authenticity of a simulation can be entertaining and fun game.Key words: 74ls160, shift register, multivibrator目录1系统方案选择和论证 (1)1.1设计要求 (1)1.2设计目标 (1)1.3系统基本方案 (1)1.3.1各模块方案选择和论证 (1)1.3.2模拟乒乓球模块的选择 (1)2系统的硬件设计与实现 (2)2.1系统硬件概述 (2)2.2主要单元电路的设计 (2)2.2.1 模拟乒乓球电路、控制电路、清零电路的设计 (2)2.2.2 计数产生模块电路的设计 (3)3 系统测试 (5)3.1多谐振荡器测试 (5)3.2移位寄存器测试 (5)3.3产生记分功能电路测试 (5)4 设计制作总结 (5)4.1设计过程的体会 (5)4.2未来的目标 (6)5 致谢词 (6)6 参考资料 (6)附录一:系统电路图 (7)附录二:系统主要元件清单 (8)附录三:系统使用说明书 (9)1系统方案选择和论证1.1设计要求要求:①用8个发光二极管表示球;用两个按钮分别表示甲乙两个球员的球拍②一方发球后,球以固定速度向另一方运动(发光二极管依次点亮),当球达到最后一个发光二极管时,对方击球(按下按钮)球将向相反方向运动,未及时击球或在其他时候击球视为犯规,则给对方加1分③甲、乙各有一数码管计分,裁判有一个初始化按钮,可控制比赛的开或停止1.2设计目标利用两个开头按钮来模拟甲乙两球员的击球情况,一方发球后,球以固定速度向另一方运动(发光二极管依次点亮),当球达到最后一个发光二极管时,对方击球(按下按钮)球将向相反方向运动,未及时击球或在其他时候击球视为犯规,则给对方加1分,且当决出胜负后,裁判可将游戏终止(即电路清零)。

数电课程设计乒乓球游戏机

数电课程设计乒乓球游戏机

数电课程设计乒乓球游戏机
乒乓球游戏机设计
一、项目背景
乒乓球游戏机是一款可供大众参与的游戏机类产品,加之普及的家用
游戏机,乒乓球游戏机受到越来越多的关注,且多有青少年及休闲人群作
为客群,希望有更好的体验,此则为此次设计的初衷。

二、产品和用户分析
基于用户对于乒乓球游戏机的期望,本次设计的乒乓球游戏机将主要
针对喜欢乒乓球比赛的青少年及成人,提供一种新的体验方式,让游戏更
加有趣。

乒乓球游戏机将采用简单的控制方式,采用3D立体显示屏,可以实
现3D视角的操作,令游戏更加刺激且容易把握游戏操作,最重要的是确
保游戏的稳定性和安全性,使乒乓球游戏机成为安全、有趣的游戏工具。

三、产品功能
1、游戏模式:乒乓球游戏机可以设置5种游戏模式,单人比赛模式,双人比赛模式,团队比赛模式,技术训练模式,自由模式。

2、控制方式:采用简单的控制方式,使用户更加容易掌握,并在操
作中更加顺畅。

3、立体显示:采用3D立体显示屏,能够实现效果更加清晰、刺激的
3D视角游戏,让操作更加有趣。

数电课程设计报告--乒乓球游戏设计

数电课程设计报告--乒乓球游戏设计

电子线路综合设计乒乓球比赛模拟及计分器设计2023年6月在信息社会高速发展旳今天,数字电路芯片已经实现高度集成化,并逐渐渗透到医学、计算机等各个领域,对人类旳生活有着深远旳影响。

本设计采用基本门电路以及74LS系列芯片旳搭建,以multisim 12.0软件为平台进行仿真,实现了对乒乓球游戏旳模拟。

重要处理旳问题有:(1)模拟乒乓球旳轨迹:用双向移位4位寄存器74194以及基本门电路实现;(2)球速旳调整:运用555电路实现;(3)球被击中、犯规旳判断;(4)计数器旳使用:采用74LS90和74LS161旳组合,给玩家计分;(5)有关比分旳显示:通过CD4511译码芯片将计数器旳输出状态显示到2位共阴极数码管上。

关键词:双向移位4位寄存器、555电路、译码电路、计数器系统1 设计任务 (1)2 电路整体设计 (2)2.1 译码显示电路设计 (4)2.2 555定期器构成脉冲发生器 (5)2.3模拟乒乓球电路旳设计 (6)3 电路整体性能旳检测 (7)3.1 译码显示电路旳检测 (7)3.2 脉冲发生器电路旳检测·····························································3.3模拟乒乓球电路旳检测······························································4试验结论 ·······················································································5课程设计心得体会以及提议 ·······························································6 Abstract ·························································································7附录(包括元器件清单以及各元器件功能表) ·········································8参照文献 ·······················································································1.设计任务本次我们小组选择旳设计是乒乓球比赛模拟及计分器设计,重要任务是用数字电路模拟乒乓球比赛并能给比赛计分。

数电实验 乒乓游戏机

数电实验 乒乓游戏机

乒乓游戏机1.简要说明两人乒乓游戏机是用8~16只发光二极管代表乒乓球台,中间两个发光二极管兼作乒乓球网,用点亮的发光二极管按一定的方向移动来表示球的运动。

在游戏机的两侧各设置两个开关,一个是发球开关(sla,slb),另一个是击球开关(s2a,s2b)。

甲乙二人按乒乓球比赛的规则来操作开关。

当甲方按动发球开关sla时,靠近甲方的第一盏灯亮,然后发光二极管由甲向乙依次点亮,代表乒乓球在移动。

当球过网后,按设计者规定的球位乙方就可以击球。

若乙方提前击球或没击着球,则判乙方失分,甲方记分牌自动加分。

然后重新发球,比赛继续进行。

比赛一直进行到一方记分到11分,该局结束,记分牌清零,可以开始新的一局比赛。

2.任务和要求设计一个乒乓球游戏机,该机模拟乒乓球比赛的基本过程和规则,并能自动裁判和记分。

要求如下:(1)使用乒乓球游戏机的甲乙双方各在不同的位置发球和击球。

(2)乒乓球的位置和移动方向由灯亮及依次点燃的方向决定,球移动的速度为0.1~0.5s移动一位。

使用者根据球的位置发出相应的动作,提前击球或出界均判失分。

设计者可按过网击球来设计,也可按乒乓球移动到对方第二盏灯亮后方可击球来设计。

(3)比赛用11分为一局来进行,甲乙双方都应设置各自的记分牌,任何一方先记满11分,该方就算获胜了此局。

当记分牌清零后,又可以开始新的一局比赛。

总体框图如图9-35所示。

图9-35 总体框图3.模块及模块功能模块CORNA如图9-36所示。

此模块为整个程序的核心,它实现了题目的全部逻辑功能。

模块分两个进程,第一个实现逻辑功能,第二个将整数的记分转换为十进制数,便于译码显示。

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity corna isport(clr,af,aj,bf,bj,clk:in std_logic; --af,aj,bf,bj:分别为A方发球键、键,B方发球键、接关球键,均接按键开关shift:out std_logic_vector(7 downto 0);ah,al,bh,bl:out std_logic_vector(3 downto 0));end corna;architecture corn_arc of corna issignal amark,bmark:integer;beginprocess(clr,clk)variable a,b:std_logic;variable she:std_logic_vector(7 downto 0);beginif clr='0' thena:='0';b:='0';she:="00000000";amark<=0;bmark<=0; 图9-36elsif clk'event and clk='1' thenif a='0'and b='0'and af='0' then --A方发球a:='1';she:="10000000";elsif a='0'and b='0' and bf='0' then --B方发球b:='1';she:="00000001";elsif a='1'and b='0' then --A方发出球后if she>8 thenif bj='0' then --B方过网击球amark<=amark+1;a:='0';b:='0';she:="00000000";elseshe:='0' & she(7 downto 1); --B方没有击球end if;elsif she=0 then --球从B方出界amark<=amark+1;a:='0';b:='0';elseif bj='0' then --B方正常击球a:='0';b:='1';elseshe:='0' & she(7 downto 1); --B方没有击球end if;end if;elsif a='0'and b='1' then --B方发球,情况同前if she<16 and she/=0 thenif aj='0' thenbmark<=bmark+1;a:='0';b:='0';she:="00000000";elseshe:=she(6 downto 0) & '0';end if;elsif she= 0 thenbmark<=bmark+1;a:='0';b:='0';elseif aj='0'thena:='1';b:='0';elseshe:=she(6 downto 0)&'0';end if;end if;end if;end if;shift<=she;end process;process(clk,clr,amark,bmark)variable aha,ala,bha,bla:std_logic_vector(3 downto 0);variable tmp1,tmp2:integer;beginif clr='0' thenaha:="0000";ala:="0000";bha:="0000";bla:="0000";tmp1:=0;tmp2:=0;elsif clk'event and clk='1' thenif amark>tmp1 thenif ala="1001" thenala:="0000";aha:=aha+1;tmp1:=tmp1+1;elseala:=ala+1;tmp1:=tmp1+1;end if;end if;if bmark>tmp2 thenif bla="1001" thenbla:="0000";bha:=bha+1;tmp2:=tmp2+1;elsebla:=bla+1;tmp2:=tmp2+1;end if;end if;end if;al<=ala;bl<=bla;ah<=aha;bh<=bha;end process;end corn_arc;模块CH41A如图9-37所示。

数电实验报告乒乓球游戏机

数电实验报告乒乓球游戏机

数字系统与逻辑设计综合实验——10秒倒计时+简易乒乓球游戏机设计课题的任务要求课题任务:1.设计实现一个10 秒倒计时电路,使用8×8 点阵显示计时结果。

2.自拟功能:简易乒乓球游戏机,倒计时至0 后开始执行该功能。

两人乒乓游戏机是以8个发光二极管代表乒乓球台,中间两个发光管兼作球网,用发光管按一定的方向依次闪亮来表示球的运动。

在游戏机两侧各设一个发球/击球开关,当甲方发球时,靠近甲方的第一个发光管亮,然后依次点亮第二个……球向乙方移动,球过网后到达设计者的规定的球位乙方即可击球,若乙方提前击球或未击到球,则甲方得分。

然后重新发球进行比赛,直到某一方记分达到规定分,比赛结束。

1.以8个发光二极管代表乒乓球台,中间两个是球网,乒乓球的位置和移动方向由灯亮及依次点亮的方向决定;2.球移动的速度0.5s;3.用4个数码管分别显示双方的得分;4.发3个球后换发球,最边上的发光二极管亮表示发球方;5.设置复位键,按下后比分清零,重新10秒倒计时,双方重新开始比赛;6.当某一方比分达到11分时,比赛结束。

设计思路及总体框图总体电路外部框图:总体电路外部接口说明:框图中左边部分为输入信号,右边为输出信号。

输入信号中,clk 为全局时钟信号,由实验板的晶振产生,频率为1MHz ;h1、h2为双方的发球、击球按键,分别锁定到实验板的BTN4及BTN1上;reset 为全局复位,当reset 为高电平时,比分全部清零,重新倒计时,然后比赛重新开始,reset 锁定到BTN2上。

输出信号中,row[7..0]为点阵行选择信号,col[7..0]为列选择信号,table[7..0]控制7个发光二极管(表示球的移动)、catch[3..0] 为数码管选通信号,score[6..0] 控制七段数码管(用来显示比分)。

总体框图:各模块间电路连接图:(详见电子版)设计思路:1. 考虑到系统的功能比较多且复杂,故采用分块设计的方式,先设计好底层各模块,再到顶层进行综合。

eda课程设计乒乓球游戏机报告

eda课程设计乒乓球游戏机报告

燕山大学EDA课程设计报告书题目:乒乓球游戏机姓名:曹冉王亚楠贾亚贤班级:通信工程二班学号:120104030042 120104030043 120104030044成绩:(注:此文件应以同学学号为文件名)一、设计题目及要求1.用8个发光二极管表示球;用两个按钮分别表示甲乙两个球员的球拍;2.一方发球后,球以固定速度向另一方运动(发光二极管依次点亮),当球达到最后一个发光二极管时,对方击球(按下按钮)球将向相反方向运动。

过早或过晚击球视为犯规,系统自动给对手加1分;3.甲、乙各有两个数码管计分(11分制),每两球换发一次发球方。

4.裁判有一个按钮,系统初始化和每次得分后按下一次,发球方的第一个LED会被点亮。

二、设计过程及内容(包括○1总体设计的文字描述,即由哪几个部分构成的,各个部分的功能及如何实现方法;○2主要模块比较详尽的文字描述,并配以必要的图片加以说明,但图片数量无需太多)1总体设计(1)发球权控制模块[referee]:实现由裁判员按钮控制发球且每两球换一次发球方。

本模块是由两个JK触发器设计的四进制计数器组成(2)状态控制模块[stacon]:实现根据不同情况,改变table模块中S1 S0的值,从而控制发球时的并行输入,和击球后球的移动方向。

由两个D触发器和一些组合逻辑门构成。

(3)球台模块[table]:实现发球时的并行输入,击球后发光二极管依次点亮。

由两个74194双向移位寄存器组成。

(4)计分模块[score]:实现一方犯规后给对方计一分。

由两个74160设计的12进制计数器和组合逻辑门构成(5)分频模块[division]:实现击球后球以固定速度移动,实验箱采用的是366HZ的时钟信号,故设计183进制计数器进行分频得到2HZ的时钟信号,使球以0.5S的速度移动。

(6)扫描模块[ulti]:实现计分模块成绩的扫描,在实验箱上的七段数码管上显示分数。

由一个74160,四个74151八选一数据选择器,,一个7449七段译码器及组合门电路组成。

数电课程设计—乒乓球游戏机

数电课程设计—乒乓球游戏机

数电课程设计—乒乓球游戏机
真实
乒乓球游戏机设计
一、定义
二、目的
乒乓球游戏机的设计目标是:
1.提供给玩家更加逼真的乒乓球游戏体验;
2.通过集成更多元化的乒乓球游戏模式,让乒乓球游戏的乐趣更加丰富;
3.提高乒乓球游戏的操控精准性,让乒乓球游戏可以更加实时反馈;
4.社会实践教育,让用户在游戏过程中更加关注体育事业的发展。

三、技术要求
1.乒乓球游戏机应当拥有较高的操控精度,实现球拍抓取乒乓球的精准度达到90%以上;
2.乒乓球游戏机应当兼容两款最新乒乓球游戏:普通乒乓球、精英乒乓球;
3.乒乓球游戏机功能界面要求友好、简洁,给玩家切换游戏模式的操作及时响应;
4.运行时能够实时反馈给玩家,准确表现陪打模式设置及游戏模式进行状态;
5.通过游戏设计让玩家关注社会现实,提高玩家的社会责任意识。

四、硬件设计
1.乒乓球游戏机的外壳采用标准的板材成型,外形美观,且拥有防滑矩形纹路;
2.内部主板采用标准的多芯片架构,包含:CPU、控制IC、传感器、电子场景模拟电路,且拥有精密的热键夹板;。

数电设计乒乓球游戏机

数电设计乒乓球游戏机

数字电路综合设计---------乒乓球游戏机目录一、设计题目与要求………………………………P2二、设计过程………………………………P2三、设计图示………………………………P6四、设计心得与改进方案………………………………P9 一、设计题目与要求1.用8个发光二极管表示球;用两个按钮分别表示甲乙两个球员的球拍;2.一方发球后,球以固定速度向另一方运动(发光二极管依次点亮),当球达到最后一个发光二极管时,对方击球(按下按钮)球将向相反方向运动,在其他时候击球视为犯规,给对方加1分;都犯规,各自加1分;3.甲、乙各有一数码管计分;4.裁判有一个按钮,是系统初始化,每次得分后,按下一次。

考虑到制板的限制等情况,讲题目的要求一简化只用一个按钮,用要下的不同顺序表示两个球拍,则连带的要求二的“都犯规,各自加1分”不能实现。

其他重要主体功能不变。

二、设计过程1、计分模块对于本模块,采用两个74161计数器,74161计数后通过译码器4511再通过共阴极数码管5161AS进行显示,当双方在左右端的灯按下按钮时,说明运动员正常击球,不予以计分。

当在中途击球时,则给相应的运动员记一分,说明运动员失误。

对于本模块功能的实现,采用的方法是控制74161的使能端,当球达到最后一个发光二极管时显示模块击球,通过一个非门使其不工作,则此时按下按钮不计分。

灯在其他位置时74161计数器工作,则能按下按钮计分。

此模块的原理图示如下:2、复位模块对于裁判端的复位功能,采用一个开关对74161清零端进行控制即可实现。

如题目要求,当运动员得分后即可按下此按钮。

同时,在系统初次上电时,也需要按下此按钮进行初始化。

该功能原理图示如下:3、乒乓球速度模块对于乒乓球的运行速度控制,采用555定时器构成的多谐振荡器完成。

通过多谐振荡器的计算公式:即可选取适当的电阻电容以完成此功能。

该系统的原理图示如下:4、乒乓球显示模块在本次设计中,按题目要求,采用8个发光二极管表示球。

数电课程设计乒乓球游戏机

数电课程设计乒乓球游戏机

数电课程设计乒乓球游戏机
本次数电课程设计的主题是乒乓球游戏机。

乒乓球是一项广受欢迎的体育运动,这个游戏机可以让用户在家中轻松享受乒乓球的乐趣。

设计的目标是实现一个简单且易于使用的乒乓球游戏机,用户可以通过控制器操控球拍并与计算机进行比赛。

游戏机的硬件主要由以下几个部分组成:主控制器、显示器、音频设备和输入设备。

主控制器负责控制游戏的逻辑和处理用户的输入。

显示器用于显示游戏界面和乒乓球的运动轨迹。

音频设备用于播放游戏音效和背景音乐。

输入设备包括乒乓球拍控制器和选择按键,用户可以通过乒乓球拍控制器来控制球拍的移动方向和击球。

游戏机的软件设计需要实现以下几个功能:游戏界面的显示、乒乓球的运动轨迹计算、乒乓球拍的控制、计分和游戏逻辑。

游戏界面的显示需要利用显示器来实现,可以使用适当的图形和文字来显示游戏界面。

乒乓球的运动轨迹计算需要根据球拍的位置、速度和方向来计算球的下一次运动位置。

乒乓球拍的控制需要根据用户通过控制器的输入来控制球拍的移动。

计分需要根据球的落点和游戏规则来判断得分和游戏结束。

游戏逻辑需要处理游戏的开始、暂停、继续和重置等操作。

在实现游戏机的设计过程中,需要考虑以下几个方面的问题:硬件电路的设计和连接、主控制器的程序设计和逻辑控制、显示器和音频设备的数据传输和控制、输入设备的信号检测和处理、游戏软件的编写和调试。

总之,这个乒乓球游戏机设计可以提供给用户一个实现室内乒乓球的机会,让用户在家中享受乒乓球的乐趣。

通过设计和实现游戏机的硬件和
软件,可以锻炼学生的动手能力和编程能力,并增加对电子电路的理解和掌握。

数字电路与逻辑设计-简易乒乓游戏机

数字电路与逻辑设计-简易乒乓游戏机

一实验名称:简易乒乓游戏机二任务要求:基本任务:两人乒乓游戏机是以 8 个发光二极管代表乒乓球台,中间两个发光管兼作球网,用发光管按一定的方向依次闪亮来表示球的运动。

在游戏机两侧各设一个发球/击球开关,当甲方发球时,靠近甲方的第一个发光管亮,然后依次点亮第二个⋯⋯球向乙方移动,球过网后到达设计者的规定的球位乙方即可击球,若乙方提前击球或未击到球,则甲方得分。

然后重新发球进行比赛,直到某一方记分达到规定分,比赛结束。

1.以8 个发光二极管代表乒乓球台,中间两个发光管兼作球网,乒乓球的位置和移动方向由灯亮及依次点亮的方向决定,击球规则可自行设定;2.球移动的速度:0.1-0.5s 均可;3.用数码管分别显示双方的得分;4.当某一方比分达到11 分时,比赛结束,此时发球/击球开关无效;5.设置复位键,按下后比分清零,双方重新开始比赛;提高要求:1.7 局4 胜制,能记录和显示双方赢得的局数;2.选做:发球权,双方按乒乓球比赛规则获得发球权,没有发球权的一方,发球开关无效;3.自拟其它功能。

三设计思路、总体框图以8个发光二极管代表乒乓球台,用发光管按一定的方向依次闪亮来表示球的移动,在游戏机两侧各设发球,击球开关KA,KB,当A方发球时,靠近A方的第一个发光管亮,然后依次点亮第二个。

球向B移动,球过网后到达第七个球的球位时,B方即可击球,若B方提前击球或未击到球,则A方得分,同时在数码管上显示,当前双方的分数。

然后重新发球进行比赛,直到某一方记分达到规定分,记分清零,重开一局比赛。

结构图如下:逻辑划分方块图图中C代表球到位可以击球的标志信号;m代表记分器已记满一局的信号;CNT为记分器时钟信号,Cr为记分器清零信号;S为决定乒乓球位置及移动方向的信号;STOP为球台清除信号。

流程图根据流程图到MDS图的转换规则从上图出发,并设定等待状态为WAITING,A方发球的状态为STARTA,B方发球的状态为STARTB,A发球后向B移动的状态为MOVEB,B发球后向A移动的状态为MOVEA,B方失误A方加1分状态为SCOREA,A方失误B方加1分的状态为SCOREB,加分后判断是否一局结束的状态为JUDGE,是否有一方的分数为2分,游戏结束的状态为GAMEOVERMDS图:四,分块设计1状态机,有9个状态,WAITING,STARTA,STARTB,MOVEA,MOVEB,SCOREA,SCOREB,JUDGE,GAMEOVER当有RESET时,对系统进行复位,即当前的分数,熄灭正在运动的球,否则进入游戏。

数电课设乒乓球游戏机电路设计

数电课设乒乓球游戏机电路设计

数电课设乒乓球游戏机电路设计引言乒乓球游戏机是一种非常受欢迎的电子游戏设备,通过模拟真实的乒乓球游戏,带给玩家极佳的游戏体验。

本文将详细介绍乒乓球游戏机的电路设计方案,包括硬件电路和软件设计,并对电路的工作原理进行了详细的分析与解释。

一、硬件电路设计1.中央处理器(CPU):采用单片机AT89S52来实现游戏机的计算和控制功能。

AT89S52是一款8051系列的单片机,具有丰富的外设接口和强大的计算能力,非常适合用于游戏机的控制处理。

2.显示屏:采用1602液晶显示屏进行游戏画面的显示。

液晶显示屏具有功耗低、分辨率高等优点,非常适合用于游戏机的显示。

3.输入设备:包括2个操纵杆和4个按钮。

操纵杆用于控制球拍的移动,按钮用于控制游戏的开始和重置等功能。

4.声音输出:采用蜂鸣器进行游戏音效的输出。

通过控制蜂鸣器的频率和占空比,可以实现不同的音效效果。

5.电源供应:采用直流电源供应电路,将市电的交流电转换为游戏机所需的直流电。

同时还需要设计适当的保护电路,以确保游戏机的正常工作和安全使用。

二、软件设计1.游戏控制:通过编程实现游戏逻辑的控制。

主要包括乒乓球的运动轨迹、球拍的移动控制和判定游戏胜负等。

2.输入处理:通过编程读取操纵杆和按钮的输入信号,实时更新球拍的位置和游戏开始、重置等状态。

3.显示处理:通过编程实现游戏画面的实时显示。

包括乒乓球的位置、球拍的位置、分数和时间等信息的显示。

4.音效控制:通过编程控制蜂鸣器的频率和占空比,实现游戏音效的输出。

根据游戏状态不同,可以播放不同的音效,增加游戏的乐趣和真实感。

三、电路工作原理在乒乓球游戏机的电路设计中,中央处理器(CPU)起着核心的作用,负责处理游戏的逻辑、控制输入输出和保护电路等。

具体工作原理如下:1.CPU通过与输入设备的接口连接,实时读取操纵杆和按钮的输入信号。

根据不同的输入信号,CPU更新球拍的位置和游戏状态。

2.CPU通过与液晶显示屏和蜂鸣器的接口连接,实时控制液晶显示屏和蜂鸣器的输出。

二维乒乓球——数字电路与逻辑设计实验报告(VHDL)

二维乒乓球——数字电路与逻辑设计实验报告(VHDL)

(此文档为word格式,下载后您可任意编辑修改!).数字电路与逻辑设计实验实验报告姓名:XXX班级:xxxxxxxx学号:xxxxxxxx一、设计课题的任务要求两人乒乓球游戏机是以8*8点阵作为场地,中间的6*6共36个点作为球台,最外围的一圈点作为球拍移动的轨道,并通过数码管显示双方的局数和比分。

双方个通过3个按钮控制球拍的上下移动及发球(场上无球时)。

球接触到球拍后会自动改变方向和速度(在一定范围内)。

当球在甲方的半场移动出球台范围后,乙方得分,然后重新发球。

直到达到规定比分后,比赛结束。

(1)以8*8点阵作为场地,中间的6*6共36个点作为球台,最外围的一圈点作为球拍移动的轨道,通过两个按键控制球拍的移动;(2)球的移动速度:在x,y方向上均为0.2s点~0.6s点(可为0),会在击球时按一定规则自动改变;(3)通过按钮移动球拍,球拍不能移出自己的半场(8*4);(4)球出界后,自动判定得分,球从球场中消失,等待下一次发球;(5)用数码管显示局数和比分,参考正式比赛规则,采用7局4胜制:当一方得分超过11分,并超过对方两分时,本局比赛结束,当一方率先赢得4局时,比赛结束,此时数码管保持最终比分。

(6)按下复位键,比分清零,双方重新开始比赛;(7)双方按乒乓球比赛规则获得发球权,没有发球权的一方,发球开关无效。

二、系统设计1、设计思路用x,y两坐标表示8*8点的每个点。

分别用一组信号表示球和两球拍的坐标,以及球的移动速度。

以一定周期(0.1s),改变球的坐标,以达到移动球的目的,用一组信号(xm、ym)记录球经过几个周期(0.1s)在想x或y方向上移动一个点,通过改变这两个信号的大小,即可控制球移动的速度和方向。

球拍的移动由按钮控制,鉴于球拍只在最外圈移动,只需要上下两个按钮即可。

当球拍在y方向上移动到边缘时,会自动转为在x方向上移动。

球拍长度为3个点,只需记录中间点的位置即可。

当球与球拍接触时(球的坐标与球拍中心的坐标在x,y两个方向的差均不大于1),根据球与球拍中心的相对位置,改变xm、ym,从而将球击回。

乒乓球游戏机

乒乓球游戏机

实验二十二乒乓球游戏机一、目的•熟悉与使用移位寄存器芯片 74 LS 194 。

•巩固已经掌握的数字电路设计与实验技能。

二、实验说明1•74 LS 194 的功能74 LS 194 为四位双向移位寄存器,它具有左移、右移、保持、串行和并行输入等多种功能。

它的管脚排列见附录。

表 1 是它的功能表。

功能说明:(1)•当 S 1 = S 0 =1 时,不管各输入端原来是什么状态,在下一个时脉冲到来时,其输出分别是预先输入到并行输入端的 abcd ,这种方式叫送数。

)•当 S 1 =0 , S 0 =1 时,其工作方式叫右移,这时,每来一个时钟脉冲,输出端的数各向右移一位,而 Q A 端的输出则由加到 R 端的数来补充。

(3)•当 S 1 =1 , S 0 =0 时,其工作方式叫左移,情况正好与右移相反; Q D 端的输出由加到 L 端的数来补充。

(4)•当 S 1 = S 0 =0 时,不管是否有 CP 脉冲作用,输出保持不变,这叫保持方式。

CP=0 时也是保持方式。

将 74LS194 接成图 3-22-1 所示实验电路时,可以检验其各种功能2•乒乓球游戏机以八个发光二极管做为球,每次点亮一个发光二极管,做为乒乓球运行的当前位置。

以两个防抖开关作为球拍,由游戏者(甲、乙)各控制一个,按下开关表示击球。

甲乙双方各有一个记分牌,由一个数码管显示双方的得分,胜一球累加一分, 15 分为一局。

球的运行速度可以在赛前预置。

进行比赛的过程和记分规则可以用图 3-22-2 所示流程图描述。

三、预习要求按图 3-22-2 所示流程图,用移位寄存器、 J-K 触发器、与非门、或非门、防抖开关、计数器等设计一个乒乓球游戏机,希望把电路设计成独立的两部分:甲(乙)发球及球向乙(甲)方移动的部分及甲(乙)方加分的部分,以便安装及单独调整。

建议如下:1•用两个 74LS194 双向移位寄存器的八个输出各控制一个 LED 发光二极管,用高电平的左移和右移,依次点亮八个发光二极管之一,以表示乒乓球的移动。

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

数字系统与逻辑设计综合实验——10秒倒计时+简易乒乓球游戏机设计课题的任务要求课题任务:1.设计实现一个10 秒倒计时电路,使用8×8 点阵显示计时结果。

2.自拟功能:简易乒乓球游戏机,倒计时至0 后开始执行该功能。

两人乒乓游戏机是以8个发光二极管代表乒乓球台,中间两个发光管兼作球网,用发光管按一定的方向依次闪亮来表示球的运动。

在游戏机两侧各设一个发球/击球开关,当甲方发球时,靠近甲方的第一个发光管亮,然后依次点亮第二个……球向乙方移动,球过网后到达设计者的规定的球位乙方即可击球,若乙方提前击球或未击到球,则甲方得分。

然后重新发球进行比赛,直到某一方记分达到规定分,比赛结束。

1.以8个发光二极管代表乒乓球台,中间两个是球网,乒乓球的位置和移动方向由灯亮及依次点亮的方向决定;2.球移动的速度0.5s;3.用4个数码管分别显示双方的得分;4.发3个球后换发球,最边上的发光二极管亮表示发球方;5.设置复位键,按下后比分清零,重新10秒倒计时,双方重新开始比赛;6.当某一方比分达到11分时,比赛结束。

设计思路及总体框图总体电路外部框图:总体电路外部接口说明:框图中左边部分为输入信号,右边为输出信号。

输入信号中,clk 为全局时钟信号,由实验板的晶振产生,频率为1MHz ;h1、h2为双方的发球、击球按键,分别锁定到实验板的BTN4及BTN1上;reset 为全局复位,当reset 为高电平时,比分全部清零,重新倒计时,然后比赛重新开始,reset 锁定到BTN2上。

输出信号中,row[7..0]为点阵行选择信号,col[7..0]为列选择信号,table[7..0]控制7个发光二极管(表示球的移动)、catch[3..0] 为数码管选通信号,score[6..0] 控制七段数码管(用来显示比分)。

总体框图:各模块间电路连接图:(详见电子版)设计思路:1. 考虑到系统的功能比较多且复杂,故采用分块设计的方式,先设计好底层各模块,再到顶层进行综合。

根据功能,将系统分为六个底层模块:①分频模块,将高频时钟(1Mhz)分频,输出两个低频时钟clk1(2hz )和clk2(1hz ),供倒计时模块和乒乓球控制模块使用;②10秒倒计时模块,从9秒开始倒计时,一直到0,利用逐列扫描的方式,对行像素分别编码,利用人眼视觉暂留效应,以1MHZ 的频率扫描列,点阵上就会出现稳定的数字。

若按下”reset” 后,重新开始计时,然后开始兵乓球游戏。

球台控制 电路倒计时 模块 分频 电路 时钟输入 译码 显示当计时结束后输出一个控制信号,点阵熄灭,开始兵乓球游戏;③兵乓球控制模块,完成控制球的移动、判断击球、复位、计分等功能,其中包括两个译码显示模块,实现在七段数码管上显示双方的比分;④数码管扫描显示控制模块,实现4个数码管动态扫描显示功能。

分块电路设计分频器模块分频器模块由高频时钟输入和两个低频时钟输出组成,输出时钟clk1(2hz)在乒乓球模块中控制球的移动,clk2(1hz)在倒计时模块中控制计数器的变化。

倒计时模块用变量count记录输入时钟(1hz)的个数,每来一个时钟,修改一次变量count 的值,用count控制8x8点阵显示的数字,从而实现10秒倒计时。

当计时结束后,把sw信号置高,点阵熄灭,开始兵乓球游戏。

并且设有复位键”reset”,按下后比分清零,重新开始计时,然后开始兵乓球游戏。

计时流程图如下:点阵行管脚信号译码:乒乓球控制模块主控模块主要控制击球和状态的转移,模块的接口主要有时钟、倒计时结束信号、双方击球信号,球台显示及计分部分,同时将双方比分送至译码显示模块,将其译成数码管的显示信号。

流程图:状态转移图:NYYY Y NYYYNh2准备发球h1准备发球 h2发球?h1发球?NY球向h2移球向h1移h2击球?h1击球?Y球到达击球位置?球到达击球位置?Y球 出 界 否?球 出 界 否?Nh1获胜 h2获胜Y Y一局结束?N比分清零发球权计时结束?10秒倒计时在这个模块中,采用了状态机,共设七个状态,分别为waitfor、begin1、begin2、to1、to2、allow1、allow2,这七个状态所代表的含义及相关状态转移时的设计思路如下:●waitfor状态: 等待开始状态,当一局比赛结束时便处于这个状态,此状态下根据发球权信号(当发球计数器计数到3,则交换发球)决定转移到begin1或begin2状态,并且点亮靠近发球方的发光二极管。

●begin1/begin2: 准备发球状态,等待具有发球权一方按下发球/击球键,发球后若对方立即击球,则一球结束,进行加分,并转移到waitfor状态;否则,转移到to2/to1状态。

●to2/to1: 球从一方向另一方移动,发光二极管以0.5秒的速度依次点亮,此状态下若对方击球,则一球结束,进行加分,发球计数器加1,并转移到waitfor 状态;否则,当靠近接球方的第2个灯点亮时转移到allow1或allow2状态。

allow1/allow2:等待接球方击球,若接球方按下击球按,转移到球向相反方向移动的状态to2/to1。

否则,一球结束,进行加分,发球计数器加1,并转移到waitfor状态。

数码管扫描控制模块利用人眼视觉暂留效应,让一个高频时钟(1Mhz)对4个七段数码管不断进行选通扫描,使其稳定的显示双方的比分仿真波形1.倒计时电路的仿真:由于实际clk1为1Mhz,clk2为1hz,不易仿真。

以下的仿真假设高频时钟clk1周期为0.5us,用来控制列扫描信号,低频时钟clk2周期为16us,每来一个clk2改变一次显示的数字。

从9开始倒计时,点阵列管脚从高到低进行扫描,依次赋值为低电平。

同时对该列的行管脚进行编码赋值,以较高的频率进行重复扫描,便可以稳定显示相应的数字。

从以上的仿真波形中,可以比较明显的看出显示的数字。

若按下复位键”st”,则重新开始计时。

倒计时到0后,点阵熄灭,sw被置高,控制乒乓球游戏开始。

2.乒乓球控制模块仿真波形1:clkp为分频后的低频时钟,sA发球后,控制球移动的二极管依次被点亮,当靠近sB的最后一个灯点亮时,sB成功击球,之后球向sA移动,sA没有击球,球出界,sB得分。

波形2:sB成功击球后,球向sA移动,当靠近sA的最后一个灯点亮时,sA 击球,球向sB移动,之后sB提前击球,sA得分。

波形3:若按下复位键,则sw被清零,比分也被清零。

直到倒计时结束,sw 被置高,乒乓球游戏重新开始。

源程序分频器模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity divide isport(clk0:in std_logic; --clk0为1MHz高频时钟输入clk1,clk2:out std_logic --clk1为2Hz时钟输出,clk2为1Hz时钟输出);end divide;architecture a of divide issignal clk_b:std_logic;--产生2hz信号的中间信号signal tmp:std_logic; --产生1hz信号的中间信号beginp1:process(clk0) --500000分频,产生2hz信号variable tmp2:integer range 0 to 249999; ;--产生2hz信号的计数器beginif clk0'event and clk0='1' thenif tmp2=249999 thentmp2:=0;clk_b<=not clk_b;elsetmp2:=tmp2+1;end if;end if;end process p1;p2:process(clk_b) --2分频,产生1hz信号beginif clk_b'event and clk_b='1' thentmp<=not tmp;end if;end process p2;clk1<=clk_b;clk2<=tmp;end a;倒计时模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity bcount isport(clk1:in std_logic;--1Mhzclk2:in std_logic;--1hzsw:out std_logic;st:in std_logic;col,row:out std_logic_vector(7 downto 0));end bcount;architecture a of bcount issignal count:integer range 0 to 9;signal f:std_logic;signal c:std_logic_vector(7 downto 0);signal r:std_logic_vector(7 downto 0);signal tmp3:integer range 0 to 7;beginp1:process(clk2)beginif clk2'event and clk2='1' thenif st='0' thenif count=9 thencount<=9;f<='1';elsecount<=count+1;f<='0';end if;elsecount<=0;f<='0';end if;end if;end process p1;p2:process(clk1,count)beginif clk1'event and clk1='1' thenif tmp3=7 thentmp3<=0;elsetmp3<=tmp3+1;end if;case tmp3 iswhen 0 =>c<="01111111";when 1 =>c<="10111111";when 2 =>c<="11011111";when 3 =>c<="11101111";when 4 =>c<="11110111";when 5 =>c<="11111011";when 6 =>c<="11111101";when 7 =>c<="11111110";when others =>c<="00000000";end case;if f='0' thencase count iswhen 0=>case tmp3 iswhen 2 =>r<="11110010";when 5 =>r<="11111110";when 3|4 =>r<="10010010";when others =>r<="00000000";end case;when 1=>case tmp3 iswhen 2|5 =>r<="11111110";when 3|4 =>r<="10010010";when others =>r<="00000000";end case;when 2=>case tmp3 iswhen 2|3|4 =>r<="10000000";when 5 =>r<="11111110";when others =>r<="00000000";end case;when 3=>case tmp3 iswhen 2 =>r<="11111110";when 5 =>r<="10011110";when 3|4 =>r<="10010010";when others =>r<="00000000";end case;when 4=>case tmp3 iswhen 2 =>r<="11110010";when 5 =>r<="10011110";when 3|4 =>r<="10010010";when others =>r<="00000000";end case;when 5=>case tmp3 iswhen 2 =>r<="11110000";when 3|5 =>r<="00010000";when 4 =>r<="01111110";when others =>r<="00000000";end case;when 6=>case tmp3 iswhen 5 =>r<="11111110";when 2|3|4 =>r<="10010010";when others =>r<="00000000";end case;when 7=>case tmp3 iswhen 2 =>r<="10011110";when 5 =>r<="11110010";when 3|4 =>r<="10010010";when others =>r<="00000000";end case;when 8=>case tmp3 iswhen 4 =>r<="11111110";when others =>r<="00000000";end case;when others=>case tmp3 iswhen 2|5 =>r<="11111110";when 3|4 =>r<="10000010";when others =>r<="00000000";end case;end case;elser<="00000000";end if;end if;end process p2;col<=c;row<=r;sw<=f;end a;乒乓球控制模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity tennis isport(clkp:in std_logic;--2hz时钟信号sw:in std_logic;--计时结束信号sA,sB:in std_logic;--双方击球,score11:out std_logic_vector(6 downto 0);--甲得分(个位)score12:out std_logic_vector(6 downto 0);--甲得分(十位)score21:out std_logic_vector(6 downto 0);--乙得分(个位)score22:out std_logic_vector(6 downto 0);--乙得分(十位)light:out std_logic_vector(7 downto 0) --发光二极管的显示);end tennis;architecture a of tennis iscomponent led--七段数码管译码显示模块port(cn:in std_logic_vector(3 downto 0);--输入分数ag1:out std_logic_vector(6 downto 0);--译码输出(十位)ag2:out std_logic_vector(6 downto 0)--译码输出(个位));end component;signal score1,score2:std_logic_vector(3 downto 0);--双方的得分signal lit:integer range 0 to 8;--7个二极管的控制信号signal m:integer range 0 to 2;--发球计数器signal send:std_logic;--发球权信号type ss is (waitfor,begin1,to2,begin2,to1,allow1,allow2);--设置7个状态signal state:ss;beginp1:process(clkp,sA,sB)beginif clkp'event and clkp='1' thenif sw='1' then --倒计时结束,游戏开始if m=3 thenm<=0;send<=not send; --发3个球后,交换发球end if;if (score1="1011" or score2="1011") then --比分达到11分时,一局结束lit<=0; --灯全灭m<=0; --发球计数器清零send<='0'; --sA先发球score1<="0000";score2<="0000"; --双方比分清零state<=waitfor; --进入等待状态,开始新的一局elsecase state iswhen waitfor=> --等待状态case send iswhen '0' =>lit<=1;state<=begin1;--若sA发球,则L1亮when '1' =>lit<=8;state<=begin2; --若sB发球,则L8亮when others =>lit<=0; --灯全灭end case;when begin1 =>if sA='1' then --甲发球lit<=2; --L2亮if sB='1' thenlit<=0;score1<=score1+1;state<=waitfor;--乙接球判负elsestate<=to2;end if;else state<=waitfor;end if;when begin2 =>if sB='1' then --乙发球lit<=7; --L7亮if sA ='1' thenlit<=0;score2<=score2+1;state<=waitfor; --甲接球判负elsestate<=to1;end if;else state<=waitfor;end if;when to1 => --乙接球后的状态if sA='1' thenlit<=0;score2<=score2+1;m<=m+1;state<=waitfor; --甲接球判负elsif lit=2 thenlit<=1;state<=allow1; --进入甲接球状态else lit<=lit-1; --控制灯的走向end if;when to2=> --甲接球后的状态if sB='1' thenlit<=0;score1<=score1+1;m<=m+1;state<=waitfor; --乙接球判负elsif lit=7 thenlit<=8;state<=allow2; --进入乙接球状态else lit<=lit+1; --控制灯的走向end if;when allow1=> --甲接球状态if sA='1' thenstate<=to2; --甲接球进入向乙移动的状态elsescore2<=score2+1;m<=m+1;lit<=0;state<=waitfor;--甲未接球乙加分end if;when allow2=> --乙接球状态if sB='1' thenstate<=to1; --乙接球进入向甲移动的状态elsescore1<=score1+1;m<=m+1;lit<=0;state<=waitfor;--甲未接球乙加分end if;end case;end if;else --倒计时没有结束,比分清零,游戏终止lit<=0;score1<="0000";score2<="0000";m<=0;send<='0';end if;end if;end process p1;with lit select --控制亮灯的顺序light<="00000000"when 0,"00000001"when 1,"00000010"when 2,"00000100"when 3,"00001000"when 4,"00010000"when 5,"00100000"when 6,"01000000"when 7,"10000000"when 8,"00000000"when others;q1:led port map(cn=>score1,ag2=>score11,ag1=>score12);--译码模块,显示甲得分q2:led port map(cn=>score2,ag2=>score21,ag1=>score22); --译码模块,显示乙得分end a;译码显示模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity led isport(cn:in std_logic_vector(3 downto 0); --输入的分数信号ag1:out std_logic_vector(6 downto 0); --译码输出(十位)ag2:out std_logic_vector(6 downto 0) --译码输出(个位));end led;architecture a of led isbeginprocess(cn)begincase cn iswhen "0000" =>ag1<="1111110";ag2<="1111110";--显示0when "0001" =>ag1<="1111110";ag2<="0110000";when "0010" =>ag1<="1111110";ag2<="1101101";when "0011" =>ag1<="1111110";ag2<="1111001";when "0100" =>ag1<="1111110";ag2<="0110011";when "0101" =>ag1<="1111110";ag2<="1011011";when "0110" =>ag1<="1111110";ag2<="1011111";when "0111" =>ag1<="1111110";ag2<="1110000";when "1000" =>ag1<="1111110";ag2<="1111111";when "1001" =>ag1<="1111110";ag2<="1111011";when "1010" =>ag1<="0110000";ag2<="1111110";when "1011" =>ag1<="0110000";ag2<="0110000";when others =>ag1<="1111110";ag2<="1111110";end case;end process;end a;数码管扫描控制模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sweep isport(clkq:in std_logic;--1Mhz时钟信号score_a1:in std_logic_vector(6 downto 0);--甲得分(个位)score_a2:in std_logic_vector(6 downto 0); --甲得分(十位)score_b1:in std_logic_vector(6 downto 0); --乙得分(个位)score_b2:in std_logic_vector(6 downto 0); --乙得分(十位)cn:out std_logic_vector(6 downto 0);--最终输出的得分sel:out std_logic_vector(3 downto 0)--数码管片选信号);end sweep;architecture a of sweep issignal tmp:integer range 0 to 3;--产生片选信号的计数器beginprocess(clkq)beginif clkq'event and clkq='1' thenif tmp=3 thentmp<=0;elsetmp<=tmp+1;end if;case tmp iswhen 0 =>sel<="1110";cn<=score_a1;--数码管的4种状态when 1 =>sel<="1101";cn<=score_a2;when 2 =>sel<="1011";cn<=score_b1;when 3 =>sel<="0111";cn<=score_b2;when others =>sel<="1111";end case;end if;end process;end a;顶层模块的代码见源文件。

相关文档
最新文档