没有合适的资源?快使用搜索试试~ 我知道了~
首页ED流水灯设计实验报告
ED流水灯设计实验报告
需积分: 30 38 下载量 92 浏览量
更新于2023-03-16
评论 4
收藏 315KB DOC 举报
将8个彩灯共阴极接地,阴极分别为EP1C3的8个I/O输出变化的电平,来控制彩灯的点亮,流水灯分不同的时段,指示灯有不同的显示模式,开始时刻LED流水灯从左到右依次点亮,第二时间段LED流水灯从右到左依次熄灭,第三时间段LED流水灯从中间向两边依次点亮,第四时间段LED流水灯从两边向中间依次熄灭,第五时间段LED流水灯由1,4点亮,然后2,5点亮……以此类推,最后完成一次循环又回到开始时刻,进入第二轮循环,来实现LED流水灯的控制实验。
资源详情
资源评论
资源推荐
实验报告
课程名称:EDA 技术与应用 指导教师:
专业:通信工程 班级:082 班 姓名: 学号:
实验日期:2011-5-6
成绩:
实验题目:流水灯的设计
一、实验任务
实验内容:
采用文本输入法设计流水灯。
实验要求:
设计 8 个 LED 发光管发光,并按照要求轮流发光,产生 4 种以上流水灯的流动
效果。
二、设计过程
1. 设计思路
将 8 个彩灯共阴极接地,阴极分别为 EP1C3 的 8 个 I/O 输出变化的电平,来控制彩灯的
点亮,流水灯分不同的时段,指示灯有不同的显示模式,开始时刻 LED 流水灯从左到右依
次点亮,第二时间段 LED 流水灯从右到左依次熄灭,第三时间段 LED 流水灯从中间向两边
依次点亮,第四时间段 LED 流水灯从两边向中间依次熄灭,第五时间段 LED 流水灯由 1,4
点亮,然后 2,5 点亮……以此类推,最后完成一次循环又回到开始时刻,进入第二轮循环,
来实现 LED 流水灯的控制实验。
从 LED 流水灯的工作原理来看,无论是第一时间段还是其他时间段,LED 流水灯点亮
还是熄灭,都是一个频率来控制 LED 流水灯点亮和熄灭的快慢。只不过这个频率可以在程
序中控制,也可以在定义输入引脚时把频率选择不同的频率段。
2. 设计方案
总体方框图如图 1 所示。
图 1 总体方框图
此次设计主要是 8 位 LED 灯以不同方式进行亮暗,其中亮暗的方式如下:
主要分为三种方式:
第一种方式是开始时 LED 流水灯从左到右依次点亮,然后从右到左依次熄灭;
第二种方式是开始时 LED 流水灯从中间向两边点依次点亮,第四时间段从两边向
中间依次熄灭;
第三种方式是开始时 LED 流水灯由 1,4 亮,然后 2,5 亮……依次,以此类推;
最后完成一轮,进入下一轮循环。
因此,可用 VHDL 语句来实现,通过给定一个系统时钟,然后设置相应的中间信
号,根据它们来确定中间状态变量,再根据中间状态变量的值来选择灯的亮暗方式。
此次实验主要分两个大模块:控制模块以及功能模块,其中功能模块中还含有 3 个
子模块(灯亮暗的 3 种方式),如下所示:
图 2 细化框图
控制模块:主要是通过控制给定系统的时钟频率,可以改变灯亮暗的快慢。
功能模块:即为灯亮暗方式的选择。
3. 设计步骤
⑴ 打开 QuartusⅡ 软件,建立一个新的工程 light;
① 单击菜单 File→New Project Wizard…
② 输入工程路径,工程名以及顶层实体名。
③ 单击 Next>按键,进入下一个界面。由于我们建立的是一个空的项目,所以没有包含
已有文件,单击 Next>继续。
④ 设置我们的器件信息:设置为 Cyclone,在 Available devices 中选择 EP1C3T 144C8,
然后单击 Next>后结束工程建立。
⑵ 建立 VHDL 文件
1 单击 File→New 菜单项,选择弹出串口的 VHDL File 选项,单击 OK 按钮以建立
打开空的 VHDL 文件
2 在编辑窗口输入以下源程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity light is
port(clk1: in std_logic;
light: buffer std_logic_vector(7 downto 0));
end light;
architecture behv of light is
constant len: integer:=7;
signal banner: std_logic;
signal clk,clk2: std_logic;
begin
clk<=(clk1 and banner) or (clk2 and not banner);
process(clk1)
begin
if clk1'event and clk1='1' then
clk2<=not clk2;
end if;
end process;
process(clk)
variable flag:bit_vector(2 downto 0):="000";
begin
if clk'event and clk='1'then
if flag="000" then
light<='1' & light(len downto 1);
if light(1)='1' then
flag:="001";
end if;
elsif flag ="001" then
light<=light(len-1 downto 0) & '0';
if light(6)='0' then
剩余13页未读,继续阅读
xianCC
- 粉丝: 1
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0