手机版

数字电路综合实验报告-杨纯

时间:2025-04-23   来源:未知    
字号:

《数字电路与逻辑设计实验(下)》

题目:电子沙漏

学号: 2012210885 姓名: 杨 纯 班级: 2012211203 学院: 电子工程学院 时间: 2014/11/7

一、设计课题的任务要求

相关知识:

沙漏是一种古老的计时工具,也是一种玩具。电子沙漏用发光二极管表示沙粒,模拟沙漏的运动过程。电子沙漏会像真正的沙漏一样,上部的沙粒(点亮的发光二极管)一粒一粒往下掉,下部的沙粒一粒一粒堆起来。

在结构上,两组各16 个发光二极管分别排列成为两个三角形,如图1 所示。其中:VD0~VD15 位于上部,排列成倒三角形;VD0'~VD15'位于下部,排列成正三角形。两个三角形的顶尖相对,组成沙漏形状。当上部有一个发光二极管熄灭时,相应地下部就有一个发光二极管点亮,模拟了沙粒的运动。

基本要求:

1、采用 8*8 双色点阵显示电子沙漏的开机界面,如图2 所示。其中红色LED 代表沙

漏的上半部分沙粒VD0~VD15,绿色LED 代表沙漏的下半部分VD0'~VD15'。

2、用拨码开关 SW1 模拟重力感应器。当SW1 为低电平时,沙粒从VD0~VD15 向

VD0'~VD15'移动;当SW1 为高电平时,沙粒从VD0'~VD15'向VD0~VD15 移动。

3、按键 BTN0 作为计时启动停止按键,启动后沙粒即可按照SW1 设定的方向移动,

以SW1 为低电平时为例,LED 移动的顺序与对应关系如图3 的①~ 所示(若SW1 为高电平,则点阵显示移动顺序为 ~①)。每颗沙粒的移动时间为1 秒,当移动

到图3 的 时,若SW1 仍为低电平,则保持沙粒不动,但计时继续,直到SW1 的 电平发生变化或者BTN0 计时停止。

4、设计实现一个 60 秒计时器,当按键BTN0 启动时开始工作,用于在沙粒移动过程

中进行计时校准,并用数码管DISP0~DISP1 显示计时结果。

提高要求:

1、可以调节控制电子沙漏的流动速度。

2、用多种方式呈现电子沙漏界面。

3、自行设定沙粒的移动路径,显示每颗沙粒的移动过程。

4、外接重力感应器,实现真实的电子沙漏功能。

5、自拟其它功能。

二、系统设计(包括设计思路、总体框图、分块设计)

1、设计思路:

整个沙漏分为时钟分频、按键模块、开机界面、计时模块和点阵模块。开机时,显示开机界面。按键防抖模块,提高输入信号,用于沙漏的启动和停止之间的切换。计数模块计数,通过数码管显示计数的值。点阵模块,显示沙漏的各个状态。

2、总体框图:

3、分块设计:

①时钟分频:

将50MHZ的时钟分频12500HZ用于数码管和点阵显示,1250HZ用于按键防抖,1HZ用于计时,和沙子状态切换。

②按键模块:

设一个FLAG变量。按下BT0时,时钟开始计时,延时一定时间,认为按键被按下,FLAG<= NOT FLAG。FLAG=’1’时启动,FLAG=’0’时停止,从而实现沙漏的启动和停止之间的切换。

③数码管显示模块:

设置变量CN9,CN6分别为各位和十位。SG表示数码管段选a-g段显示数字,BT位选表示点亮某几个数码管。以12500HZ频率扫描,使人眼产生连续显示的感觉。

④计时模块:

设置变量CN9,CN6分别为各位和十位。每过1S,CN9加一,当CN9加到10时置零且CN6加一。当CN6到6,CN9加到10时,CN6、CN9都置零。 ⑤开机点阵显示:

S2状态之间不断切换,循环显示贪吃蛇画面。

⑥沙漏状态点阵显示:

S1状态,表示沙漏状态。由0到 状态不断切换。

三、仿真波形及波形分析

1、数码管显示模块:

图4

图4为数码管0,1号灯循环点亮波形仿真。

2、计时模块:

图5

如图5所示,数码管0和1循环点亮,计数器由0开始到60循环计时。段选为“1111110”和“1101101”时,数码管显示“01”。数码管连续显示“01”、“02”、“03”等。由上图可以看出,数码管计时显示正确。

3、沙漏点阵显示:

图6

如图6为ROW行的波形仿真,为点阵行的扫描波形。

7

图8

以上两幅图为点阵列的扫描波形。图7为绿色LED列,图8为红色LED列。

四、源程序(要有注释)

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity div4k is

clk_out : out std_logic);

end;

architecture a of div4k is

signal cnt : integer range 0 to 1999;

signal clk_tmp : std_logic;

begin

process(clk_in)

begin

if (clk_in'event and clk_in='1') then

if cnt=1999 then

cnt<=0; clk_tmp<= not clk_tmp;

else

cnt<=cnt+1;

end if;

end if;

end process;

clk_out<=clk_tmp;

end;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY scan_led_2 IS

PORT ( CLK : IN STD_LOGIC;

BTN0: IN STD_LOGIC;--运行和停止

SW0 : IN STD_LOGIC;--控制开机画面

SW1 : IN STD_LOGIC;--控制沙漏上下

SW2 : IN STD_LOGIC;--控制沙漏速率

SW3 : IN STD_LOGIC;--控制沙漏速率

SW4 : IN STD_LOGIC;--控制沙漏速率

SG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);

BT : OUT STD_LOGIC_VECTOR(5 DOWNTO 0);

R:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);

Cr:OUT STD_LOGIC_VECTOR(0 TO 6);< …… 此处隐藏:9675字,全部文档内容请下载后查看。喜欢就下载吧 ……

数字电路综合实验报告-杨纯.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
    ×
    二维码
    × 游客快捷下载通道(下载后可以自由复制和排版)
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
    × 常见问题(客服时间:周一到周五 9:30-18:00)