搜档网
当前位置:搜档网 › 实例6--打地鼠(主体部分)

实例6--打地鼠(主体部分)

实例6--打地鼠(主体部分)
实例6--打地鼠(主体部分)

实例六打地鼠(主体部分)

【程序说明】

在实例五中,只给出了几段用于素材加载和界面显示的代码。在本例中将继续给出打地鼠的主体部分代码。程序运行后,鼠标单击左上角的老鼠图标,会弹出一个控制菜单。按下右上角的倒三角图标就会退出程序。本例的程序运行结果如图6-1所示。

图6-1 打地鼠(主体部分)

【编程思路】

在实例五中,已经比较详细地说明了界面的实现过程。在本例中,则主要介绍程序的具体实现过程。在程序的实现过程中,主要可以分为下面几个部分:

1、用定时器实现老鼠的出现和隐没

在本例中,首先构造一些函数用于实现存放老鼠出现和隐没位置,然后通过定时器来加载这些数据。

2、锤子不同状态的变化

在本例中,锤子有三种不同的状态:松开、敲击和击中。这三种状态与鼠标的OnMouseDown事件和OnMouseDown事件对应着。

3、菜单以及相应图标事件的处理

主要用于实现游戏的重新开始、暂停、恢复或退出等事件,而图标对应的事件则除了实现一定的游戏功能外,还要对图标自身的更换处理。

游戏的主体部分详细代码和说明见【编程步骤】部分。由于篇幅有限,完整的代码可以参考光中的内容。这里只给出代码的主要部分。

【编程步骤】.

1.用定时器实现老鼠的出现和隐没

在实现这个功能时,首先要构造一些函数LoadRatSpr、LoadRat、InitData、DrawRats、PopupRats和UpdateRats等,用于存放鼠标位置和绘制鼠标。

procedure LoadRatSpr(i, ox, oy, x, y, w, h : integer);

begin

{老鼠变换的坐标值}

RatSpr[i].ox :=ox;

RatSpr[i].oy :=oy;

RatSpr[i].x :=x;

RatSpr[i].y :=y;

RatSpr[i].w :=w;

RatSpr[i].h :=h;

end;

procedure LoadRat(row, col, x, y : integer);

begin

{老鼠出现的坐标值}

Rat[row, col].x := x;

Rat[row, col].y := y;

Rat[row, col].pos := 0;

Rat[row, col].speed := 0;

end;

procedure InitData;

begin

{老鼠出现的位置}

LoadRat(0, 0, 187, 48);

LoadRat(1, 0, 127, 79);

LoadRat(2, 0, 75, 116);

LoadRat(0, 1, 247, 58);

LoadRat(1, 1, 189, 90);

LoadRat(2, 1, 146, 126);

LoadRat(0, 2, 304, 66);

LoadRat(1, 2, 262, 98);

LoadRat(2, 2, 222, 134);

LoadRatSpr(1, $00, $00, $5E, $36, $3C, $39);

LoadRatSpr(2, $01, $02, $61, $02, $38, $36);

LoadRatSpr(3, $01, $0a, $D8, $4E, $38, $2E);

LoadRatSpr(4, $02, $0E, $D7, $24, $38, $2A);

LoadRatSpr(5, $02, $16, $D8, $00, $38, $22);

LoadRatSpr(6, $02, $1A, $D7, $82, $35, $1E);

LoadRatSpr(7, $02, $1A, $A0, $85, $35, $1E);

LoadRatSpr(8, $02, $1A, $9F, $68, $35, $1E);

LoadRatSpr(9, $02, $1A, $9F, $4B, $35, $1E);

LoadRatSpr(10, $02, $1A, $9E, $2D, $35, $1E);

LoadRatSpr(11, $02, $1D, $9E, $12, $35, $1B);

LoadRatSpr(12, $02, $2A, $9E, $01, $35, $0E);

LoadRatSpr(13, $01, $21, $5E, $70, $3D, $25);

LoadRatSpr(14, $01, $21, $5D, $94, $3D, $1A);

LoadRatSpr(15, $00, $00, $00, $00, $00, $00);

end;

procedure DrawRats(x, y, c : integer);

begin

{绘制老鼠}

if c > 0 then

begin

BitBlt(BufferBitmap.Canvas.Handle, x+RatSpr[c].ox, y+RatSpr[c].oy, RatS pr[c].w, RatSpr[c].h, MaskBitmap.Canvas.Handle, RatSpr[c].x, RatSpr[c].y, SRCAND);

BitBlt(BufferBitmap.Canvas.Handle, x+RatSpr[c].ox, y+RatSpr[c].oy, RatS pr[c].w, RatSpr[c].h, SpriteBitmap.Canvas.Handle, RatSpr[c].x, RatSpr[c].y, SRCINVERT);

end;

end;

procedure PopupRats;

var i, j : integer;

begin

{老鼠随机出现}

if Frames mod 5 = 0 then

begin

i := random(3);

j := random(3);

if Rat[i,j].pos = 0 then

begin

Rat[i,j].pos := 12;

Rat[i,j].speed := random(1)+1;

end;

end;

end;

procedure UpdateRats(row, col : integer);

begin

{老鼠位置的更新}

if (Rat[row, col].pos <= 12) and (Rat[row, col].pos > 0) then

begin

if (Frames mod Rat[row, col].speed = 0) then

Rat[row, col].pos := Rat[row, col].pos - 1;

end

else

if Rat[row,col].pos >12 then

begin

if (Frames mod Rat[row, col].speed = 0) then Rat[row, col].pos := Rat[row, col].pos + 1;

if Rat[row, col].pos >= 15 then Rat[row, col].pos := 0;

end;

end;

在构造了这些函数之后,就可以在定时器RatTimer的OnTimer事件中加入下列代码,实现鼠标的显示和隐没。

procedure TMainForm.RatTimerTimer(Sender: TObject);

var row, col : integer;

begin

{老鼠的显示和隐没}

Frames := Frames + 1;

FormPaint(Self);

PopupRats;

for row := 0 to 2 do

begin

for col := 0 to 2 do

begin

UpdateRats(row, col);

end;

end;

if LeftTime <= 0 then

begin

RatTimer.Enabled := FALSE;

Cursor := 0;

GameRunning := FALSE;

GamePause := FALSE;

MainForm.Canvas.Draw(0, 0, BackgroundBitmap);

end;

end;

2、锤子不同状态的变化

同样地,首先构造一个锤子绘制函数,然后在窗口的OnMouseDown和OnMouseUp中实现锤子的状态变化。下面是这些功能代码。

procedure TMainForm.DrawHand;

begin

{处理敲击老鼠的锤子的一些事件}

case HandStatus of

Hand_Up : begin //锤子松开

BitBlt(BufferBitmap.Canvas.Handle, HandXPos, HandYPos, 97, 54,

MaskBitmap.Canvas.Handle, 0, 0, SRCAND);

BitBlt(BufferBitmap.Canvas.Handle, HandXPos, HandYPos, 97, 54,

SpriteBitmap.Canvas.Handle, 0, 0, SRCINVERT);

end;

Hand_Down : begin //锤子敲下

BitBlt(BufferBitmap.Canvas.Handle, HandXPos, HandYPos - 6, 90, 64,

MaskBitmap.Canvas.Handle, 0, 54, SRCAND);

BitBlt(BufferBitmap.Canvas.Handle, HandXPos, HandYPos - 6, 90, 64,

SpriteBitmap.Canvas.Handle, 0, 54, SRCINVERT);

end;

Hand_Hit : begin //锤子击中老鼠

BitBlt(BufferBitmap.Canvas.Handle, HandXPos, HandYPos, 90, 64,

MaskBitmap.Canvas.Handle, 0, 118, SRCAND);

BitBlt(BufferBitmap.Canvas.Handle, HandXPos, HandYPos, 90, 64,

SpriteBitmap.Canvas.Handle, 0, 118, SRCINVERT);

end;

end;

end;

procedure TMainForm.FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var

row, col : integer;

sp, d : integer;

begin

{窗口OnMouseUp事件}

if (GameRunning = FALSE) or (GamePause = TRUE) then

exit;

d := 10;

if Button = mbLeft then

HandStatus := Hand_Down; //锤子敲下

for row := 0 to 2 do

begin

for col :=0 to 2 do

begin

sp := Rat[row, col].pos;

if (sp > 0) and (sp <= 12) then

begin

if (X > Rat[row, col].x + RatSpr[sp].ox + d) and

(X < Rat[row, col].x + RatSpr[sp].ox + RatSpr[sp].w - d) and

(Y > Rat[row, col].y + RatS pr[sp].oy ) and

(Y < Rat[row, col].y + RatS pr[sp].oy + RatS pr[sp].h ) then

begin

Rat[row, col].pos := 13;

Rat[row, col].speed := 5;

if Button = mbLeft then

begin

HandStatus := Hand_Hit; //锤子击中老鼠

PlaySound('HIT', hInstance, SND_RESOURCE or SND_ASYNC);

end;

end;

end;

end;

FormPaint(self);

end;

end;

procedure TMainForm.FormMouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

{窗口OnMouseUp事件}

if (GameRunning = FALSE) or (GamePause = TRUE) then

exit;

if Button = mbLeft then

HandStatus := Hand_Up; //锤子松开

FormPaint(self);

end;

3、弹出式菜单的功能主要是用来控制游戏的,下面只给出“开始新游戏”的代码。其余的可以参考光盘内容。

procedure TMainForm.NewClick(Sender: TObject);

begin

{开始游戏的一些必要设置}

LeftTime := 59;

RatTimer.Enabled := TRUE;

ScoreTimer.Enabled := TRUE;

GameRunning := TRUE;

GamePause := FALSE;

Cursor := -1;

Frames := 0;

InitData;

Randomize;

FormPaint(self);

end;

4.由于篇幅原因,这里给出的代码只是本例的一部分,完整的代码还请参考光盘内容。这里就不详细列出了。

【程序小结】

本例是打地鼠的主体部分的主要代码,这个部分可以分为【编程思路】中的三个模块来实现。

每个模块的实现代码都比较长,从这里也可以看出,一个游戏的规划和设计是非常重要的,最好

能有一个书面的游戏设计书或设计规划之类的参考对象。否则,到了游戏的后期代码编制阶段,

常常会出现顾此失彼的想象。在参考对象中,要对各个模块有比较详细的部署。这样编制出来的

游戏才不会虎头蛇尾。

数字电路课程设计打地鼠资料整理

xx科技大学 数电课程设计报告 仿真设计课程名称:数字电子实验仿真仿真设计项目名称:打地鼠游戏 院系:计算机与通信工程 专业班级: 组长: 组员:

打地鼠游戏 一、实验仿真目的: 1、掌握时序逻辑电路的一般设计办法。 2、掌握计数器的设计原理和应用。 3、掌握组合逻辑电路的一般设计办法。 4、掌握定时电路的设计和使用。 5、掌握译码显示电路的原理和应用。 6、通过打地鼠游戏的设计,锻炼对数字单元电路的灵活应用和综合设计能力,提高学生综合应用知识的能力和创新能力。 二、实验所用的主要元器件: 双D触发器74LS74脉冲源计数器2to4译码器

以及若干基础数电元器件 4to16译码器 三、实验仿真电路原理 总实现图: 各模块实现的原理及步骤: A.产生四个指示灯的随机点亮: 1.使用四个计数器并行运行

10进制计数器偶数循环0-2-4-6-8 奇数循环1-3-5-7-9七进制循环 2.通过一个四进制循环来选择这四个计数器的当时时刻的数字, ,如图,四进制循环接上74HC139N。 3.选择数字 使用D触发器做了一个并入并处的移位寄存器,将四个计数器产生的数字的二进制送入寄存器中,

上图即使实现选择四个计数器数字 4.实现灯的随机点亮 将上图选择的二进制数字接入74HC154W4to10的译码器中,将使输出端1到10管脚有效,使(210)、(39)、(48)、(57)分别使能一个灯。 B.打地鼠开关的设计 使用的是可复位的开关,把开关和灯同接一个与门,同时有效则输出高电平。 C.实现打地鼠记分功能

把开关的有效电位产生的脉冲接入计数器的CLK端,则实现每次开关和灯同时有效产生的脉冲能被记录。 D.实现每10次暂停电路 将四盏灯或接入10进制计数器的CLK端,十次满之后RCO输出高电平,使用其使能四进制计数器的CLR端,实现功能。 E.时钟模块电路的设计 电路接通电源的瞬间,由于电容C1来不及充电,Vc=0v,所以555定时器状态为1,输出Vo为高电平。同时,集电极输出端(DIS)对地断开,电源Vcc对电容C1充电,电路进入暂稳 态I,此后,电路周而复始地产生周期性的输出脉冲。多谐振荡器两个暂稳态的维持时间取决于RC充、放电回路的参数。震荡频率公式

北京邮电大学数电实验一实验报告

北京邮电大学数字电路与逻辑 设计实验 学院: 班级: 作者: 学号:

实验一 Quartus II原理图输入法设计 一、实验目的: (1)熟悉Quartus II原理图输入法进行电路设计和仿真 (2)掌握Quartus II 图形模块单元的生成与调 (3)熟悉实验板的使用 二、实验所用器材: (1)计算机 (2)直流稳压电源 (3)数字系统与逻辑设计实验开发板 三、实验任务要求 (1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模 块单元。 (2)用(1)中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能, 并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。 (3)用3线-8线译码器(74LS138)和逻辑门设计实现函数 ,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 四、设计思路和过程 (1)半加器的设计 半加器电路是指对两个输入数据位进行加法,输出一个结果位和进位,不产生进位输入的加法器电路。是实现两个一位二进制数的加法运算电路。数据输入AI被加数、BI加数,数据输出SO和数(半加和)、进位C0。 在数字电路设计中,最基本的方法是不管半加器是一个什么样的电路,按组合数字电路的分析方法和步骤进行。 1.列出真值表 半加器的真值表见下表。表中两个输入是加数A0和B0,输出有一个是和S0,另一个是进位C0。

2 该电路有两个输出端,属于多输出组合数字电路,电路的逻辑表达式如下函数的逻辑表达式为:SO=AI⊕BI CO=AB 所以,可以用一个两输入异或门和一个两输入与门实现。

VB课程设计 打地鼠论文

武汉工业学院 VB程序设计 课程设计报告 打地鼠—VB课程设计 学号 姓名: 学院: 专业班级: 指导教师: 日期:

目录 第一章课程设计概述 (3) 第一节课程设计名称 (3) 第二节任务要求 (3) 第三节开发环境 (3) 第二章总体设计 ................. 错误!未定义书签。 第一节系统功能需求分析 (4) 第二节系统总体设计框架....... 错误!未定义书签。第三章界面设计 . (5) 第四章源程序代码及解释 (6) 第五章程序运行效果及出错处理 (13) 第六章课程设计体会 (17) 参考文献 (18)

第1章课程设计概述 第一节课程设计名称 课程设计目的:本课程的课程设计实际是学生学习完《可视化编程技术》课程后,进行的一次全面的综合训练,其目的在于加深对可视化编程技术基本知识的理解,掌握运用VB开发应用程序的基本方法及基本技巧。 程序名称:打地鼠游戏 游戏简介:打地鼠是一种非常有趣的益智游戏,老少皆宜。游戏进行时,地鼠不断从洞中探出头再缩回去,当地鼠头在洞外时,可以通过按键的方式打击地鼠,时间到时游戏结束,打中地鼠次数越多得分越高,击错、逃跑数越多得分越低。人们在游戏的同时还能锻炼自己的反映能力,不同的难度选项适用于不同的打地鼠选手。在英雄榜中保留前五名最高得分信息。 第二节任务要求 1.课程设计的预备知识:熟悉Visual Basic 6.0程序设计的基本语法知识及常用技巧。 2.按照课程设计指导书提供的课题,每人设计一个完整的应用程序,要求根据根据规定设计程序的具体要求,按照应用程序的设计步骤,和VB的基本能知识完成应用程序的分析和实现。 第三节开发环境 硬件要求能运行Windows 9.X操作系统的微机系统。 软件:Microsoft Visual Basic 6.0 VB是由美国微软公司于1991年开发出来的一种可视化的,面向不同对象和驱动环境的各类应用程序。它简单易学,效率高,功能大。在VB环境下,利用事件驱动的编程程序机制,可视化设计工具,使用Windows内部的广泛应用程序接口(API)函数,动态链接库(DLL),对象的链接与嵌入(OLE),开发式数据连接(ODBC)等技术,可以高效,快速的开发Windows 环境下功能强大的,图形界面丰富的应用软件。

北邮打地鼠的游戏设计与实现

数电实验报告 题目:打地鼠的游戏设计与实现 姓名: 学号: 班级: 学院: 电子工程学院 2015年 11 月 8日

一、 任务要求 基本要求 1、设计一个挑战反应速度的“打地鼠”游戏,采用用 8×8双色点阵显示游戏界面,其中游戏边界采用绿色 LED 显示,随机出现的地鼠采用红色 LED 显示,游戏有 16个洞穴,如图 1所示。 2、游戏洞穴 每次随机出现一个地鼠, 每个地鼠的最长保持时间为 2 秒,2 秒后随机出现下一个地鼠。以 4×4键盘的按键代表锤子,16个洞穴与 16个按键一一对应,一旦锤子在 2秒内击中地鼠,地鼠消失,数码管计分器分数加 1分;若锤子一直没有击中地鼠,2秒后该地鼠消失。用两个数码管显示游戏成绩,当游戏成绩达到 10分时游戏结束,点阵显示字符“V”。 3、用两个数码管对整个游戏进行倒计时,当游戏时间超过 59秒而成绩未达到 10分时,游戏失败,点阵显示字符“X”。 4、按复位键重新开始游戏,并开始倒计时。 提高要求: 1、增加游戏难关,在边界内每次随机出现两个地鼠,两个地鼠的最长保持时间均为2秒,2 秒后随机出现下两个地鼠,锤子击中一个地

鼠加1分,当游戏成绩达到20分而且游戏时间未超过59秒时,游戏结束,显示字符“V”,否则显示字符“X”。 2、自拟其他功能。 二、系统设计 设计思路: 1、将该程序进行分模块设计。可以将程序分为:分频模块、随机数产生模块、比较模块、键盘电路、显示模块、计时模块、游戏结束模块。 2、分模块进行相应模块的编写。 3、对编好的模块进行测试。 4、编写主程序并进行调试。 总体框图: 分块设计:

中一班户外游戏打地鼠

中一班户外游戏打地鼠 Document number:WTWYT-WYWY-BTGTT-YTTYU-2018GT

中一班户外游戏《打地鼠》 设计意图: 《纲要》中指出,在健康领域幼儿园应该“开展以多种有趣的体育活动,特别是户外的、大自然的活动,培养幼儿积极参加体育锻炼的积极性,并提高其对环境的适应能力”,因此,本活动主要采用户外活动的形式来加强幼儿的体育锻炼,以期达到锻炼幼儿身体,增强其对体育活动兴趣的目的。《3—6岁儿童学习与发展指南》指出中班幼儿动作发展的目标“具有一定的力量和耐力”,因此,本次活动采用《打地鼠》的游戏,通过下蹲动作等来训练幼儿的下肢耐力和力量。整个活动在游戏的氛围中开展,能够培养幼儿对体育活动的兴趣。 目标: 1、积极主动地参与游戏,体验体育游戏的乐趣。 2、初步树立自我保护意识。 3、通过爬、跳和打地鼠游戏中连续的下蹲运动,锻炼孩子的腿部肌肉,增加幼儿的下肢力量,发展幼儿动作的协调性和灵敏性。 准备:报纸棒四根,扫帚两把,空气锤子两把。 过程: 1、热身带领幼儿慢跑两圈, 2、引导幼儿站军姿,站得好的教师给予鼓励,训练幼儿的反应能力。教师:请宝贝站线面对面站好(教师示范站姿)。

3、游戏(一)出示魔法棒(报纸棒)引发幼儿游戏的兴趣。 教师:现在夏老师要给宝贝们带来一样东西,你们看看是什么 教师:这个纸棒现在变成一根魔法棒!(教师示范打自己手一下,做出疼的动作。) 教师:现在老师要用魔法棒碰你的小手,谁想试一试 教师:这是快的还是慢的,接下来老师要加快速度啦! 教师:看谁能战胜老师的魔法棒。 教师:现在请宝贝们坐着,把脚放在线上做好。(教师反复用纸棒碰宝贝脚三次,鼓励勇敢的幼儿) 4、游戏(二)出示扫帚,激发幼儿游戏的兴趣。 教师:现在我要请出第二件法宝,我们围成一个圈,你们数一下老师走几步拿到法宝。 教师:看,老师带来了什么 教师:请宝贝们退后一步,看谁能接住神树。(反复退后三次,接神树三次) 教师:现在请宝贝们围成一个小一点的圆圈。 教师:接下来神树要扫你的脚,先试一下。(用神树扫幼儿的脚,反复三次,由慢到快) 教师:掌声鼓励一下自己。 5、游戏(三)出示空气锤,引导幼儿玩游戏《打地鼠》 教师:现在老师要请出第三件法宝,谁能帮老师拿。它是一个空气锤,谁能假装拿这个锤子很重的样子。

北京邮电大学数字电路实验报告

北京邮电大学 数字电路与逻辑设计实验 实验报告 实验名称:QuartusII原理图输入 法设计与实现 学院:北京邮电大学 班级: 姓名: 学号:

一.实验名称和实验任务要求 实验名称:QuartusII原理图输入法设计与实现 实验目的:⑴熟悉用QuartusII原理图输入法进行电路设计和仿真。 ⑵掌握QuartusII图形模块单元的生成与调用; ⑶熟悉实验板的使用。 实验任务要求:⑴掌握QuartusII的基础上,利用QuartusII用逻辑 门设计实现一个半加器,生成新的半加器图像模 块。 ⑵用实验内容(1)中生成的半加器模块以及逻辑门 实现一个全加器,仿真验证其功能,并能下载到实 验板上进行测试,要求用拨码开关设定输入信号, 发光二级管显示输出信号。 ⑶用3线—8线译码器(74L138)和逻辑门实现要求 的函数:CBA F+ C + =,仿真验证其 + B C B A A A B C 功能,,并能下载到实验板上进行测试,要求用拨 码开关设定输入信号,发光二级管显示输出信号。二.设计思路和过程 半加器的设计实现过程:⑴半加器的应有两个输入值,两个输出值。 a表示加数,b表示被加数,s表示半加和, co表示向高位的进位。

⑵由数字电路与逻辑设计理论知识可知 b a s ⊕=;b a co ?= 选择两个逻辑门:异或门和与门。a,b 为异 或门和与门的输入,S 为异或门的输出,C 为与门的输出。 (3)利用QuartusII 仿真实现其逻辑功能, 并生成新的半加器图形模块单元。 (4)下载到电路板,并检验是否正确。 全加器的设计实现过程:⑴全加器可以由两个半加器和一个或门构 成。全加器有三个输入值a,b,ci ,两个输 出值s,co :a 为被加数,b 为加数,ci 为低 位向高位的进位。 ⑵全加器的逻辑表达式为: c b a s ⊕⊕= b a ci b a co ?+?⊕=)( ⑶利用全加器的逻辑表达式和半加器的逻 辑功能,实现全加器。 用3线—8线译码器(74L138)和逻辑门设计实现函数 CBA A B C A B C A B C F +++= 设计实现过程:⑴利用QuartusII 选择译码器(74L138)的图形模块

北邮数电实验VHDL源代码完整2013年

北邮数电实验VHDL源代码完整版 注:北邮信通院数电实验,大二下共四次实验,以下为四次实验的完整代码,仅供参考,希望学弟学妹在抄代码的时候了解每一行代码的含义。知识是自己的。别忘了,北邮的未来靠你们。 注意事项:1学校部分电脑打不开07版word文件(后缀docx),建议大家准备一份TXT以防万一 2运行出错时可能是你输入有误,比如中文和英文符号弄错了 3数电实验很简单,但要心细,一定要按老师说的做 4数电实验报告千万不要抄袭,老师判断力很强 实验一: 半加器老师会给出,全加器是画图,怎么画书上有,不用源代码。 实验二: (1)3位二进制数比较器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY comp3 IS PORT(A:IN STD_LOGIC_VECTOR(2 DOWNTO 0); B:IN STD_LOGIC_VECTOR(2 DOWNTO 0); YA,YB,YC:OUT STD_LOGIC); END comp3; ARCHITECTURE behave OF comp3 IS BEGIN PROCESS(A,B) BEGIN IF(A>B)THEN Y A<='1';YB<='0';YC<='0'; ELSIF(A

END IF; END PROCESS; END behave; (2)4选1数据选择器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY mux4 IS PORT(A:IN STD_LOGIC_VECTOR(1 DOWNTO 0); D0,D1,D2,D3:IN STD_LOGIC; Y,YB:OUT STD_LOGIC); END mux4; ARCHITECTURE behave OF mux4 IS BEGIN PROCESS(A,D0,D1,D2,D3) BEGIN CASE A IS WHEN"00"=> Y<=D0;YB <= NOT D0; WHEN"01"=> Y<=D1;YB <= NOT D1; WHEN"10"=> Y<=D2;YB <= NOT D2; WHEN"11"=> Y<=D3;YB <= NOT D3; WHEN OTHERS=> Y<='Z';YB<='Z'; END CASE; END PROCESS; END behave; (3)8421码转换为格雷码 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY trans1 IS PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); B:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END trans1; ARCHITECTURE trans_gray OF trans1 IS BEGIN B(0)<=A(0)XOR A(1); B(1)<=A(1)XOR A(2); B(2)<=A(2)XOR A(3);

基于51单片机的模拟打地鼠游戏设计

. 《现代通信技术》课程设计基于51单片机的模拟打地鼠游戏设计 院系:工学院 专业班级:通信工程10秋2班 姓名:钟丽薇 学号:10032202 小组成员:陆韵 指导教师:徐振、赵兰 完成日期2013年10月

目录 1 设计任务 (1) 1.1设计题目及材料 (1) 1.2设计要求 (1) 1.3设计进度安排 (2) 2 总体方案 (3) 2.1硬件设计 (3) 2.1.1 主控芯片 (3) 2.1.2 数码管模块 (4) 2.1.3 LED模块 (5) 2.1.4 独立按键模块 (5) 2.2软件设计 (6) 3 功能调试 (7) 3.1调试过程 (7) 3.2调试中遇到的问题 (7) 4 设计总结 (8) 5 致谢 (9)

1 设计任务 通过本次课程设计,运用已学的课程知识,自主设定题目及要求,进行软硬件系统的设计和调试,对《现代通信技术》课程中涉及的芯片结构、控制原理、硬件和编程等方面有一定的感性认识和实践操作能力,从而加深对本课程知识点的理解,使应用知识能力、设计能力、调试能力以及报告撰写能力等方面有显著提高。 1.1 设计题目及材料 我们的课程设计选题定为《基于51单片机的模拟打地鼠游戏设计》。 将所掌握的的元器件组合在一起,设计出具有可玩性的实用小制作,不仅巩固了已学习的知识,更能拓展自己的思维能力。 所用到的材料: 表1.1 材料列表 STC89C52单片机开发板1块 4位8段数码管(共阳)1个 LED灯5个 轻触按键5个 100Ω电阻5个 0.5kΩ电阻4个 9013三极管4个 杜邦线若干 1.2 设计要求 要求作品完成后,可以实现简易打地鼠游戏的功能。 具体如下:接通电源后,游戏开始,数码管显示“0”,同时随意点亮一个LED,在2秒时间内按下对应的按键,则数码管示数加一,游戏继续;

北邮数电实验报告

北京邮电大学实验报告 实验名称:数字电路与逻辑设计实验报告 学院:信息与通信工程学院 班级: 姓名: 学号: 序号: 日期:

实验三:用VHDL语言设计与实现逻辑电路 一、实验内容 1. 用VHDL语言设计实现一个带异步复位的8421码十进制计数器,仿真验证其功能,并下载到实验版测试。要求用按键设定输入信号,发光二极管显示输出信号; 2.用VHDL语言设计实现一个分频系数为12,分频输出信号占空比为50%的分频器,仿真验证其功能; 3.将(1),(2)和数码管译码器3个电路进行连接,并下载到实验板显示计数结果。 二、模块端口说明及连接图 1.分频器 2. 计数器 clk: 时钟输入信号 clk: 时钟信号输入 clear: 复位信号输入 clear: 复位信号输入 clk_out: 时钟分频后的信号输出 q: 计数器的输出 3.数码管显示 b: 数码管的输入信号 seg: 译码显示输出 onoff: 数码管的输出控制

4.连接图 三、实验分析 1.设计思路 本实验将之前的分频器和计数器以及数码管显示模块组合起来,实现了单个数码管现显示0~9,每隔0.5s切换一次显示内容。 COMPONENT div_12实现了时钟分频,将50MHz的单片机晶振时钟进行分频,输出频率2HZ占空比50%的方波时钟,以此时钟作为内部时钟驱动计数器。 COMPONENT jishuqi是一个十进制计数器,NUM从“0000”到“1001”循环变化,模为10。计数器的输出传递给数码管译码显示电路。 COMPONENT seg7_1是数码管译码显示电路,将收到的信号NUM译码并控制数码管的段锁存来控制数码管的显示。 整体来看,div-12提供了分频后2Hz的时钟,驱动计数器计数,计数的结果作为数码管译码显示模块的输入,根据计数器实时的数进行数码管的显示。综合起来就实现了设计的功能。 在进行电路的连接时,可直接在代码中分成三个进程来实现,也可通过为每个模块建立符号,连接电路图来实现。 2. 具体代码如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fenpinjishu IS PORT( clear2 :IN STD_LOGIC; clk1:IN STD_LOGIC; b1:OUT STD_LOGIC_VECTOR(6 downto 0); CAT:OUT STD_LOGIC_VECTOR(7 downto 0) );

北邮数电实验报告

北京邮电大学 实验报告实验名称:数电电路与逻辑设计实验 学院:信息与通信工程学院 班级: 姓名: 学号: 班内序号: 日期:

一. 实验一:Quartus II 原理图输入法设计 1. 实验名称和实验任务要求 (1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块 元。 (2)用(1)中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号入信号。 (3)用3线-8线译码器(74LS138)和逻辑门设计实现函数 F=A B C +A B C +A B C + A B C 。 2. 实验原理图及波形图 (1)半加器 (2)全加器

(3)74LS38 3.仿真波形图分析 (1)半加器: 输入为a,b,输出S,CO(进位)。 当ab都为0时,半加和s=0,进位端co=0。 当ab都为1时,半加和s=0,进位端co=1。 当a=1,b=0 或a=0,b=1时,半加和s=1,进位端co=0。 (2)全加器:

输入a,b,输出S,CO(进位),ci(低进位)。 当a=0,b=0,ci=0,输出s=0,co=0。 当a=0,b=1或a=1,b=0又 ci=0,输出s=1,co=0。 当a=0,b=0,ci=1,输出s=1,co=0。 (3)74LS138 输入A,B,C,输出为3。 四个输出对应F中的四个最小项,Y0、Y2、Y4、Y7,以实现函数功能。 二.实验二:用 VHDL 设计与实现组合逻辑电路 1.实验名称和实验任务要求 (1)用VHDL语言设计实现一个共阴极7段数码管译码器,仿真验证其功能。要求用拨码开关设定输入信号,7段数码管显示输出信号。 (2) 用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能。要求用拨码开关设定输入信号,发光二极管显示输出信号。 (3) 用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个’1’时,输出为’1’,否则输出’0’,仿真验证其功能。要求用拨码开关设定输入信号,发光二极管显示输出信号。 2.实验代码及波形图 (1)共阴极7段数码管译码器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY GUAN IS PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); B:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); C:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)); END GUAN; ARCHITECTURE encoder_arch OF GUAN IS BEGIN PROCESS(A) BEGIN C<="011111"; CASE A IS WHEN"0000"=> B<="1111110";--0 WHEN"0001"=> B<="0110000";--1 WHEN"0010"=> B<="1101101";--2 WHEN"0011"=> B<="1111001";--3 WHEN"0100"=> B<="0110011";--4 WHEN"0101"=> B<="1011011";--5 WHEN"0110"=> B<="1011111";--6 WHEN"0111"=> B<="1110000";--7 WHEN"1000"=> B<="1111111";--8 WHEN"1001"=> B<="1111011";--9

基于PLC的打地鼠游戏设计

一、绪论 1.1课程设计的意义 电气控制技术是电气工程及其自动化专业的一门重要的专业课,该课程 不但有较高的理论基础要求,而且工程实践性很强,因此除安排上完理论课时外,还安排了三周的课程设计 1.2课程设计的目的 (1)综合运用PLC课程和其它选修课程的理论和知识,掌握PLC设计的一 般方法,树立正确的设计思想,培养分析问题和解决实际问题的能力; (2)学会从控制系统功能的要求出发,合理的选择外围设备,制定设计方 案,编写控制程序。 (3)学习使用技术手册,掌握查阅专业资料的相关方法。 1.3PLC可编程逻辑控制器的定义 PLC是一种专门为在工业环境下应用而设计的数字运算操作的电子装置。 它采用可以编制程序的存储器,用来在其内部存储执行逻辑运算、顺序运算、计时、计数和算术运算等操作的指令,并能通过数字式或模拟式的输入和输出,控制各种类型的机械或生产过程。PLC及其有关的外围设备都应该按易 于与工业控制系统形成一个整体,易于扩展其功能的原则而设计。 1.4PLC的基本结构 PLC种类繁多,但其组成结构和工作原理基本相同。用可编程序控制器 实施控制,其实质是按一定算法进行输入输出变换,并将这个变换予以物理实现,应用于工业现场。PLC专为工业现场应用而设计,采用了典型的计算 机结构,它主要是由CPU、电源、存储器和专门设计的输入输出接口电路等 组成。PLC的结构框图如图 1.1所示。

图1.1PLC的基本结构 如图1.1,PLC的基本结构有电源、中央处理单元、存储器、输入输出接口电路,此外还有功能模块、通信模块。 a、电源 PLC的电源在整个系统中起着十分重要的作用。如果没有一个良好的、可靠的电源系统是无法正常工作的,因此PLC的制造商对电源的设计和制 造也十分重视。一般交流电压波动在+10%(+15%)范围内。 b、中央处理单元(CPU) 中央处理单元(CPU)是PLC的控制中枢。它按照PLC系统程序赋予的功能接收并存储从编程器键入的用户程序和数据;检查电源、存储器、I/O 以及警戒定时器的状态,并能诊断用户程序中的语法错误。 c、存储器 PLC的存储器包括系统存储器和用户存储器两部分。系统存储器用来存放由PLC生产厂家编写的系统程序,系统程序固化在ROM内,用户不能直接更改,它使PLC具有基本的功能,能够完成PLC设计者规定的各项工作。系统程序质量的好坏,很大程度上决定了PLC的性能,其内容主要包括三部分。第一部分为系统管理程序,它主要控制PLC的运行,使整个PLC按部就班地工作。第二部分为用户指令解释程序,通过用户指令解释程序,将PLC的编程语言变为机器语言指令,再由CPU执行这些指令。第三部分为标准程序模块与系统调用。PLC的具体工作都是由这部分程序来完成

北邮-数电实验报告

北邮-数电实验报告

数字电路实验报告 学院:信息与通信工程 专业:信息工程 班级:2013211125 学号:2013210681 姓名:袁普

②:仿真波形图以及分析 波形图: 波形分析:通过分析ab ci三个输入在8中不同组合下的输出,发现与全加器的真值表吻合,说明实现了全加器的逻辑功能。同时看见波形中出现了毛刺(冒险),这也与事实一致。 ③:故障及问题分析 第一次在做全加器的时候发现找不到已经生成的半加器模块,后来发现是因为在建立工程时这两个项目没有建在同一个文件夹里,在调用的时候就找不到。后来我将全加器工程建在同一个文件夹里解决了此问题。

实验二:用VHDL设计和实现组合逻辑电路 一:实验要求 ①:用VHDL设计一个8421码转换为格雷码的代码转换器,仿真验证其功能。 ②:用VHDL设计一个4位二进制奇校验器,要求在为奇数个1时输出为1,偶数个1时输出为0,仿真验证其功能。 ③:用VHDL设计一个数码管译码器,仿真验证其功能,下载到实验板测试,要求用拨码开关设定输入信号,数码管显示输出信号,并且只使一个数码管有显示,其余为熄灭状态。 二:故障及问题分析 在刚开始实现让一个数码管显示的时候,我本来准备再设置6个输入和输出,通过实验板上的拨码来输入信息分别控制不同的数码管的的开闭状态,但是后来发现这样效率很低而且实验板上的拨码开关数量根本不够。在老师的提醒下,我最终在VHDL里直接增加了一个向量输出”011111”来直接控制cat0~5六个管脚,从而达到了实验的要求。

实验三:用VHDL设计和实现时序逻辑电路 一:实验要求 ①:用VHDL语言设计实现一个8421十进制计数器,要求有高电平复位功能,仿真验证其功能。 ②:用VHDL语言设计实现一个分频系数为12,输出为占空比50%方波的分频器,有高电平复位功能,仿真验证其功能。 ③:将(1),(2)和数码管译码器三个电路进行连接,仿真验证其功能,并下载到实验板进行测试,要求第三个数码管显示数字。二:报告内容 ①实验三(3)模块端口说明及模块代码 模块一:div12为一个有高电平复位功能的分频系数为12的分屏器,其输出是一个占空比50%的方波。此模块输入连接一个时钟输入,即可在输出端得到一个周期更大的方波输出。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity div12 is port( clear,clk:in std_logic; clk_out:out std_logic ); end div12; architecture struct of div12 is signal temp:integer range 0 to 5; signal clktmp:std_logic; begin process(clk,clear) begin if(clear='1') then

中班体育游戏《打地鼠》

中班体育游戏《打地鼠》 设计意图:幼儿园教育指导纲要(试行)指出,在健康领域幼儿园应该“开展以多种有趣的体育活动,特别是户外的、大自然的活动,培养幼儿积极参加体育锻炼的积极性,并提高其对环境的适应能力”因此,本活动主要采用户外活动的形式来加强幼儿的体育锻炼,以期达到锻炼幼儿身体,增强其对体育活动兴趣的目的。《3—6岁儿童学习与发展指南》指出中班幼儿动作发展的目标“具有一定的力量和耐力”,因此,本次活动采用《打地鼠》的游戏,通过幼儿模仿地鼠走路、摘玉米以及躲避农民击打时的下蹲动作等来训练幼儿的下肢耐力和力量。整个活动在游戏的氛围中开展,能够培养幼儿对体育活动的兴趣。活动目标:1.通过《打地鼠》的游戏,能坚持蹲走一段距离,增强下肢力量。 2.初步树立自我保护意识。 3.积极主动地参与游戏,验体育游戏的乐趣。 活动准备:1.经验准备(1)了解过小地鼠的特征及生活习性。 (2)玩过或了解《打地鼠》的游戏。 (3)学会律动《小跳蛙》《喜欢》。 2.物质准备(1)场地上简单的布置一个玉米地的场景。 (2)空气棒2根,音乐《小跳蛙》、《喜欢》。 活动过程: 一、开始部分(此部分约5分钟) (一)集合整队,师生问好。

1.集合整队 师:准备好了吗? 2.师幼问好 师:小朋友们早上好!(春天哥哥早上好!) 3.放松 师:我们一起跑跑步,热热身,听口令“跑步走,一二一、一二一……”,(跑回原地)找到自己的位置站好。 (二)跳热身律动《小跳蛙》 1.教师带领幼儿回顾律动小跳蛙 师:在玩游戏之前,春天哥哥要带小朋友做律动《小跳蛙》。 2.教师带全部幼儿跳《小跳蛙》与幼儿互动 (1)放音乐跳《小跳蛙》 (配班老师根据现场的运动量大小给一些需要脱掉外套的幼儿脱掉外套) 二、基本部分 (此部分约15分钟) (一)赋予角色,进行下肢力量的初步练习 1.教师引导幼儿初步了解小地鼠的特征和生活习性 (1)师:我们今天要玩小地鼠的游戏,在玩游戏的时候小朋友一定要听春天哥哥的指挥,不然这个游戏就不好玩了。 (2)师:你们知道小地鼠吗?(知道)小地鼠是怎么走路的,谁来学一学,他学的怎么样啊!我再请一位小朋友来学一学,小地鼠到底

北邮数电实验分析报告-信息

北邮数电实验报告-信息

————————————————————————————————作者:————————————————————————————————日期:

数字电路与逻辑设计实验 姓名*** 学院信息与通信工程学院 专业信息工程 班级*** 学号**** 班内序号***

实验一 一、实验名称和实验任务要求 1.实验内容:QuartusII原理图输入法设计与实现。 2.实验目的: (1)熟悉用QuartusII原理图输入法进行电路设计和仿真。 (2)掌握QuartusII图形模块单元的生成与调用。 (3)熟悉实验板的使用。 3.实验任务要求: (1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图像模块。 (2)用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板上测试。要求用拨码开关设定输入信 号,发光二极管显示输出信号。 (3)用3线—8线译码器(74LS138)和逻辑门实现函数 F=(/)(/)(/)+(/)(/)+(/)(/)+,仿真验证其功能,并下载到实 验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 二、原理图 半加器模块和逻辑门设计实现的全加器: 三、仿真波形图及分析 电路实现了全加器的功能。全加器是实现两个1位二进制数及低位来的进位相加求得和数及向高位进位的逻辑电路。由其原理可得逻辑表达式:sum=ain⊕bin⊕cin

cout = (ain⊕bin)cin + ain*bin。 列出真值表: 输入输出 ain bin cin cout sum 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 仿真波形对比真值表,可以看出波形图与理论值完全符合。 四、故障及问题分析 1、问题:按照逻辑表达式连接了全加器电路后,仿真波形很乱。 解决方法:思考后知道了应该把输入信号依次设成2的n次方,这样的仿真波形清楚容易分析。 2、问题:把代码下载到板子上的过程中,进行到37%的时候停了,等了2分钟 也没继续下载。 解决方法:再次重连USB尝试下载,手紧握着接线口,下载成功了,分析可能是接线口接触不好。 实验二 一、实验名称和实验任务要求 1.实验内容:用VHDL设计与实现组合逻辑电路。 2.实验目的: (1)熟悉用VHDL语言设计组合逻辑电路的方法。 (2)熟悉用QuartusII文本输入法进行电路设计。 3.实验任务要求: (1)用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个‘1’时,输出为‘1’,否则输出‘0’,仿真验证其功能,并下载到实验板测 试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 (2)用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号, 发光二极管显示输出信号。

基于labview的打地鼠小游戏定稿版

基于l a b v i e w的打地 鼠小游戏 HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】

虚拟仪器 成绩评定表设计课题:基于labview的打地鼠小游戏 学院名称:电气工程学院 专业班级:测控技术与仪器1403 学生姓名:王行健 学号: 201423030305 指导教师:牛群峰

虚拟仪器课程设计任务书

摘要?: 主要介绍了通过LabView研发打地鼠小游戏的过程。? 关键词:Labview?打地鼠 一、设计任务 1设计目标: 设计一个打地鼠(僵尸)的小游戏。 2设计基本要求及发挥: (1)初步实现打地鼠功能。 (2)增加积分和等级统计功能。 (3)美化程序界面,添加音效。 二、方案论证 1.地鼠部分 方案一:运用事件,实现点击的确认,并利用随机来判定哪个口有地鼠。方案二:调用ActiveX控件,采用更简单的语句编写,例如Flash。

鉴于此次想要练习Labview的应用,选用了方案一。 https://www.sodocs.net/doc/cd11903364.html,BVIEW程序设计 初步的设计并不理想,不能实现地鼠自动消失以及乱点鼠标的惩罚。 经过多次调整方案,最后采用了对于事件进行详尽分类,将地鼠的出现与消失编入事件,后来加入开始结束按键以后,问题变得更加复杂,于是在调用子VI 的基础上,又增加了“等待开始”与“失败”两个事件,在此基础上重新调整了每一个参数在不同事件中的传递以及累计运算,最后实现了数据的统计。? 在等待地鼠出现的事件中加入了难度的递增判断。对于同类数据隐藏,并把相同分类的编入簇处理,以简化框图。? 3.界面美化 初步美化界面,个性化了按键,对于某些按键加入特效。最终加入音效。 三、总体方案 1.工作原理: 简单来说,通过事件的触发和认证,实现了打地鼠功能。实际却比想象中的复杂很多。关键在于数据传递和算法的巧妙使用。 2.程序设计

嵌入式程序设计-打地鼠游戏设计

嵌入式程序设计-打地鼠游戏设计 嵌入式程序设计 打地鼠 2013年6月3日 目录 1开发背 景 ..................................................................... ........................... 3 2功能描 述 ..................................................................... ........................... 3 3.基本原 理 ..................................................................... ........................... 3 4.系统总体设 计 ..................................................................... . (4) 4.1界面设 计 ..................................................................... . (4) 4.2 相关变量定 义 ..................................................................... .. (6) 4.3 内部类定义及方法说 明 (6)

5系统测 试 ..................................................................... . (16) 5.1 运行界面...................................................................... . (16) 1开发背景 打地鼠是一款常见的小游戏,简单有趣,深受人们的喜爱,本项目作为基于嵌入式WinCE课程设计和简单游戏编程而提出。希望通过开发《打地鼠》游戏,了解并掌握WinCE软件开发工具的使用,同时提高嵌入式设计的能力。 2功能描述 基本功能:地鼠随机出现在地图上,跟据鼠标点击事件捕获鼠标指针所在区域是否出现地鼠来判断玩家是否击中地鼠,玩家有10次失误机会。 3.基本原理 玩家触发游戏后,地鼠会随机出现在地图上,玩家通过鼠标击打地鼠,地鼠每隔一段时间机会随机出现在地图某一块,若玩家反映不及没有触发鼠标事件,地鼠随机出现别的地方玩家分数不变;若已触发鼠标事件且没有击中地鼠,玩家分数减少;击中则分数增加。 系统流程图:(主要部分的流程图)

北京邮电大学数字电路实验报告

北京邮电大学数字电路实验报告

北京邮电大学 数字电路与逻辑设计实验 实验报告 实验名称:QuartusII原理图输入 法设计与实现 学院:北京邮电大学 班级: 姓名: 学号:

一.实验名称和实验任务要求 实验名称:QuartusII原理图输入法设计与实现 实验目的:⑴熟悉用QuartusII原理图输入法进行电路设计和仿真。 ⑵掌握QuartusII图形模块单元的生成与调用; ⑶熟悉实验板的使用。 实验任务要求:⑴掌握QuartusII的基础上,利用QuartusII用逻辑 门设计实现一个半加器,生成新的半加器图像模 块。 ⑵用实验内容(1)中生成的半加器模块以及逻辑门 实现一个全加器,仿真验证其功能,并能下载到实 验板上进行测试,要求用拨码开关设定输入信号, 发光二级管显示输出信号。 ⑶用3线—8线译码器(74L138)和逻辑门实现要求 的函数:CBA F+ C + =,仿真验证其 + B C B A A A B C 功能,,并能下载到实验板上进行测试,要求用拨 码开关设定输入信号,发光二级管显示输出信号。二.设计思路和过程 半加器的设计实现过程:⑴半加器的应有两个输入值,两个输出值。 a表示加数,b表示被加数,s表示半加和, co表示向高位的进位。

⑵由数字电路与逻辑设计理论知识可知b a s ⊕=;b a co ?= 选择两个逻辑门:异或门和与门。a,b 为异或门和与门的输入,S 为异或门的输出,C 为与门的输出。 (3)利用QuartusII 仿真实现其逻辑功能,并生成新的半加器图形模块单元。 (4)下载到电路板,并检验是否正确。 全加器的设计实现过程:⑴全加器能够由两个半加器和一个或门构成。全加器有三个输入值a,b,ci ,两个输 出值s,co :a 为被加数,b 为加数,ci 为低 位向高位的进位。 ⑵全加器的逻辑表 示式为: c b a s ⊕⊕= b a ci b a co ?+?⊕=)(

北邮数电 节拍器实验报告

数电实验报告 一、设计课题的任务要求 1)基本要求 1、速度在40~120 次/分钟范围内连续可调,通过2 个按键进行速度调节,一个用来增 加,一个用来减少,当长按按键时,按5 次/秒的速度连续增加或减少,用3 个数码管显示当前速度。 2、节拍有1/4、2/4、3/4、4/4、3/8、6/8 可选,通过一个按键选择,用2 个数码管显示。 3、通过一个按键开始和停止打节拍,开始后按照设置好的节拍和速度打节拍。 4、要求有声音和灯光提示,声音要有强弱区别,灯光可用不同颜色的发光二极管表示 强弱。 2)提高要求 通过一个按键选择时值(节奏类型),并在用点阵显示,如下图。 二、系统设计 节拍器的设计关键是由按键控制速度,并产生不同的分频。由于对节拍器不了解,实验结果与实际节拍器不同,不过vhdl用到的模块,实现的功能是一样的。 系统的顶层设计是: 输入:50MHz时钟cp、按键button,button1,button2,button3 输出:beep给蜂鸣器,led1,2,3分别给不同的led灯,countout,smg控制数码管显示,hang,lie控制点阵显示

节拍器的设计分为六个模块:速度设置模块vset,节拍和暂停按键处理模块jpset,分频模块fenpin,数码管显示模块ra;蜂鸣器(和二极管)模块fmq;点阵模块jpfs。 1.分频模块分频: 分频模块输入50M赫兹时钟cp,给其他模块提供分频后的时钟。输出Clk为分频比为25000000*12/(speed+40)),其每十二个周期等于对应速度的一个节拍周期,输出给蜂鸣器模块。Clk1s为250 000分频,输出给速度设置模块vset。Clkmap,clkbeep3为对时钟cp80 000分频625赫兹,clkmap输出给数码管模块作为扫描频率,clkbeep3为低音频率。 Clkcount,Clkbeep1为1250hz,Clkbeep1作为高音频率,Clkcount作为扫描频率检测时间片,输出到蜂鸣器模块。Clkbeep2为1000hz,作为中音频率。 2.速度设置模块vset: 按键button1,2分别为控制加和减的按键。Clk1s为检测按键扫描时钟,判断哪个按键按下,并判断按下时间,加减速度。输出speed为速度,输出到蜂鸣器模块,及数码管模块。 3.节拍和暂停按键处理模块jpset: Button是节拍设置按键,button3为暂停按键,对按键进行防抖处理。每次button按下,jps加一改变节拍,输出jps到蜂鸣器模块,点阵模块以及数码管模块。Button3每被按下暂停信号sigwait翻转,sigwait输出到蜂鸣器模块使暂停或开始。

相关主题