八位七段数码管动态显示电路设计

上传人:gbs****77 文档编号:9957144 上传时间:2020-04-09 格式:DOC 页数:23 大小:670KB
返回 下载 相关 举报
八位七段数码管动态显示电路设计_第1页
第1页 / 共23页
八位七段数码管动态显示电路设计_第2页
第2页 / 共23页
八位七段数码管动态显示电路设计_第3页
第3页 / 共23页
点击查看更多>>
资源描述
1 八位七段数码管动态显示电路的设计 一 七段显示器介绍 七段显示器 在许多产品或场合上经常可见 其内部结构是由八个发光二极管所组成 为七个笔画与一个小数点 依顺时针方向为 A B C D E F G 与 DP 等八组发光二 极管之排列 可用以显示 0 9 数字及英文数 A b C d E F 目前常用的七段显示器 通常附有小数点 如此使其得以显示阿拉伯数之小数点部份 七段显示器的脚位和线路图 如下图 4 1 所示 其第一支接脚位于俯视图之左上角 图 4 1 七段显示器俯视图 由于发光二极管只有在顺向偏压的时候才会发光 因此 七段显示器依其结构不同的 应用需求 区分为低电位动作与高电位动作的两种型态的组件 另一种常见的说法则是共 阳极 低电位动作 与共阴极 高电位动作 七段显示器 如下图 4 2 所示 共阳极 共阴极 图 4 2 共阳极 低电位动作 与共阴极 高电位动作 2 要如何使七段显示器发光呢 对于共阴极规格的七段显示器来说 必须使用 Sink Current 方式 亦即是共同接脚 COM 为 VCC 并由 Cyclone II FPGA 使接脚成为高电位 进而使外部电源将流经七段显示器 再流入 Cyclone II FPGA 的一种方式 本实验平台之七段显示器模块接线图如下图 4 5 所示 此平台配置了八组共阳极之七 段显示器 亦即是每一组七段显示器之 COM 接脚 均接连至 VCC 电源 而每一段发光二 极管 其脚位亦均与 Cyclone II FPGA 接连 四位一体的七段数码管在单个静态数码管的 基础上加入了用于选择哪一位数码管的位选信号端口 八个数码管的 a b c d e f g h dp 都连在了一起 8 个数码管分别由各自的位选信号来控制 被选通的数码管显示数据 其余关闭 图 4 5 七段显示器模块接线图 七段显示器之常见应用如下 可作为与数值显示相关之设计 电子时钟应用显示 倒数定时器 秒表 计数器 定时器 算数运算之数值显示器 3 二 七段显示器显示原理 七段显示器可用来显示单一的十进制或十六进制的数字 它是由八个发光二极管所构 成的 每一个二极管依位置不同而赋予不同的名称 请参见图 4 1 我们可以简单的说 要产生数字 便是点亮特定数据的发光二极管 例如要产生数字 0 须只点亮 A B C D E F 等节段的发光二极管 要产生数字 5 则须点亮 A C D F G 等节段发光二极管 以此类推 参见图 4 6 因此 以共阳极七段显示器而言 要产生数字 0 必须控制 Cyclone II FPGA 芯片接连至 A B C D E F 等接脚呈现 低电位 使电路形成通路状态 表 4 1 则为共阳极七段显示器显示之数字编码 图 4 6 七段显示器显示阿拉伯数字 表 4 1 共阳极七段显示器显示数字编码 资料 DP G F E D C B A 16 进制 0 1 1 0 0 0 0 0 0 C0 1 1 1 1 1 1 0 0 1 F9 2 1 0 1 0 0 1 0 0 A4 3 1 0 1 1 0 0 0 0 B0 4 1 0 0 1 1 0 0 1 99 5 1 0 0 1 0 0 1 0 92 6 1 0 0 0 0 0 1 0 82 7 1 1 1 1 1 0 0 0 F8 8 1 0 0 0 0 0 0 0 80 本实验要求完成的任务是在时钟信号的作用下 通过输入的键值在数码管上显示相 应的键值 在实验中时 数字时钟选择 1KHZ 作为扫描时钟 用四个拨动开关做为输入 当四个拨动开关置为一个二进制数时 在数码管上显示其十六进制的值 实验箱中的拨 动开关与 FPGA 的接口电路 以及拨动开关 FPGA 的管脚连接在实验一中都做了详细说明 这里不在赘述 4 数码管显示模块的电路原理如图 4 2 所示 图 4 2 数字时钟信号模块电路原理 三 实验步骤 本实验用 VHDL 文本语言实现八位七段数码管动态显示 当然也可用 Quartus 的图形输 入法实现八位七段数码管动态显示 1 下面我们建立一个八位七段数码管动态显示的 VHDL 工程 1 选择 开始 程序 Altera QuartusII5 1 运行 QUARTUSII 软件 或者双击桌 面上的 QUARTUSII 的图标运行 QUARTUSII 软件 出现如图 1 3 所示 图 1 3 QUARTUSII 软件运行界面 5 2 选择软件中的菜单 File New Project Wizard 新建一个工程 如图 1 4 所示 图 1 4 新建工程对话框 3 点击图 1 4 中的 NEXT 进入工作目录 工程名的设定对话框如图 1 5 所示 第一 个输入框为工程目录输入框 用户可以输入如 e eda 等工作路径来设定工程的目录 设定 好后 所有的生成文件将放入这个工作目录 第二个输入框为工程名称输入框 第三个输 入框为顶层实体名称输入框 用户可以设定如 EXP1 一般情况下工程名称与实体名称相同 使用者也可以根据自已的实际情况来设定工程名和顶层文件名 注 本处的顶层文件名必 须和程序的实体名一致 否则编译会出错 图 1 5 指定工程名称及工作目录 6 4 点击 NEXT 进入下一个设定对话框 按默认选项直接点击 NEXT 进行器件选择对话 框 如图 1 6 所示 这里我们以选用 CycloneII 系列芯片 EP2C35F672C8 为例进行介绍 用 户可以根据使用的不同芯片来进行设定 图 1 6 器件选择界面 首先在对话框的左上方的 Family 下拉菜单中选取 CycloneII 在中间右边的 Speed grade 下拉菜单中选取 8 在左下方的 Available devices 框中选取 EP2C35F672C8 点击 NEXT 完成器件的选取 进入 EDA TOOL 设定界面如图 1 7 所示 图 1 7 EDA TOOL 对话框 7 5 按默认选项 点击 Next 出现新建工程以前所有的设定信息 如图 1 8 所示 点击 Finish 完成新建工程的建立 图 1 8 新建工程信息 2 建立 VHDL 设计文件 1 在创建好设计工程后 选择 File NEW 菜单 出现图 1 9 所示的新建设计文件类 型选择窗口 这里我们以建立 VHDL 设计文件为例进行说明 8 图 1 9 新建设计文件选择窗口 2 在 New 对话框 图 1 9 中选择 Device Design Files 页下的 VHDL File 点击 OK 按钮 打开图形编辑器对话框 如图 1 10 所示 图中标明了常用的每个按钮的功能 3 在文本编辑器中输入如下 VHDL 程序 下面是引用库 library ieee 库函数 use ieee std logic 1164 all 定义了 std logic 数据类型及相应运算 use ieee std logic arith all 定义了 signed 和 unsigned 数据类型 相应运 算和相关类型转换函数 use ieee std logic unsigned all 定义了一些函数 可以使 9 std logic vector 类 型被当作符号数或无符号数一样进行运算 下面是构造实体 entity exp4 is exp4 为实体名 port clk in std logic 定义动态扫描时 钟信号 key in std logic vector 3 downto 0 定义四位输入信 号 ledag out std logic vector 6 downto 0 定义七位输出信 号 del out std logic vector 2 downto 0 定义八位数码管 位置显示信号 end exp4 结束实体 architecture whbkrc of exp4 is whbkrc 为结构体名 begin 以 begin 为标志开始结构体的描述 process clk 进程 clk 变化时启动进程 variable dount std logic vector 2 downto 0 变量 计数 begin if clk event and clk 1 then 检测时钟上升沿 dount dount 1 计数器 dount 累加 end if del ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag null end case end process 结束进程 end whbkrc 结束结构体 关于 VHDL 我们以上面八位七段数码管显示程序为例来解释 VHDL 的语法构成 以使 大家对 VHDL 有个整体的把握 一个 VHDL 程序有三部分构成 其为 1 库和包 library 设计资源 2 实体 entity 外部端口 3 结构体 architecture 内部结构 库和包 library 设计资源 的介绍 本程序中用到 3 个库函数包 如下 1 1 use ieee std logic 1164 all 定义了 std logic 数据类型及相应运算 1 2 use ieee std logic arith all 定义了 signed 和 unsigned 数据类型 相应运算 和相关类型转换函数 1 3 use ieee std logic unsigned all 定义了一些函数 可以使 std logic vector 类型被当作符号数或无符号数一样进行运算 11 补充 当使用库时 需要说明使用的库名称 同时需要说明库中包集合的名称及范围 每个实体都应独立进行库的说明 库的说明应该在实体之前 经过说明后 实体和结构体 就可以自动调用库中的资源 实体 entity 外部端口 entity exp4 is exp4 为实体名 port clk in std logic 定义动态扫描时钟信号 key in std logic vector 3 downto 0 定义四位输入信号 ledag out std logic vector 6 downto 0 定义七位输出信号 del out std logic vector 2 downto 0 定义八位数码管位置显示信 end exp4 结束实体 实 体 说 明 主 要 描 述 对 象 的 外 貌 即 对 象 的 输 入 和 输 出 I O 的 端 口 信 息 它 并 不 描 述 器 件 的 具 体 功 能 在 电 路 原 理 图 上 实 体 相 当 于 元 件 符 号 CLK del 2 0 Key 3 0 ledag 7 0 图 4 9 实体 exp4 中描述如上图 4 9 输 入 和 输 出 I O 的 端 口 信 息 结构体 architecture 内部结构 结 构 体 具 体 指 明 了 该 设 计 实 体 的 行 为 定 义 了 该 设 计 实 体 的 功 能 规 定 了 该 设 计 实 体 的 数 据 流 程 指 派 了 实 体 中 内 部 元 件 的 连 接 关 系 architecture whbkrc of exp4 is whbkrc 为结构体名 begin 以 begin 为标志开始结构体的描述 process clk 进程 clk 变化时启动进程 variable dount std logic vector 2 downto 0 变量 计数 begin if clk event and clk 1 then 检测时钟上升沿 dount dount 1 计数器 dount 累加 12 end if del ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag null end case end process 结束进程 end whbkrc 结束结构体 4 点击保存按钮 弹出如下选项 将其名命名为 exp1 如下图 13 5 对设计 文件进行编译 QUARTUSII 编译器窗口包含了对设计文件处理的全过程 在 QUARTUSII 软件中 选择 processin start compilation 菜单项 就会自动编译 出现 QUARTUSII 的编译器窗 口 如下图所示 如果文件有错 在软件的下方则会提示错误的原因和位置 以便于使用者进行修 改直到设计文件无错 整个编译完成 软件会提示编译成功 3 管脚分配 在前面选择好一个合适的目标器件 在这个实验中选择为 EP2C35F672C8 完成设 14 计的分析综合过程 得到工程的数据文件以后 需要对设计中的输入 输出引脚指定到具 体的器件管脚号码 指定管脚号码称为管脚分配或管脚锁定 这里介绍两种方法进行管脚 锁定 1 点击 Assignments 菜单下面的 Assignment Editor 进入到引脚分配窗口 如 图 1 15 所示 图 1 15 进入引脚分配界面 首先将要分配管脚的信号放置在 To 下方 双击 To 下方的 New 如图 1 15 所示则 会出现如图 1 16 所示界面 15 图 1 16 信号选择对话框 选择 Node Finder 进入如图 1 17 所示的 Node Finder 对话框界面 按图 1 17 中样例 设置参数 在 Filter 窗口选择 Pins all 在 Named 窗口中输入 点击 List 在 Nodes Found 窗口出现所有信号的名称 点击中间的 按钮则 Selected Nodes 窗口下方出现被 选择的端口名称 双击 OK 按钮 完成设置 进入管脚分配窗口 如图 1 18 所示 图 1 17 Node Finder 对话框 16 图 1 18 管脚分配 在图 1 18 中以锁定端口 key 0 的管脚为例 其它端口的管脚锁定与其基本一致 选择 端口 key 0 的对应 Assignment Name 待其变为蓝色 双击之 出现下拉菜单选取如图 1 18 所示的 Location Accepts wildcards groups 选项 选择端口 key 0 的对应 Value 栏 待其 变为蓝色 依照表 1 2 所示的硬件与 FPGA 的管脚连接表 或附录 输入对应的管脚名 AC22 按回车键 软件将自动将其改为 PIN AC22 同时蓝色选择条会自动跳转到 Value 栏的下一行 这表明软件已经将输入端口 key 0 分配到 FPGA 的 AC22 引脚上 如图 1 19 所示 17 图 1 19 给 key 0 端口进行管脚分配 用同样的方法 依照表 4 2 和所示的硬件与 FPGA 的管脚连接表 或附录 对其它 端口进行管脚分配 如图 1 20 所示 图 1 20 所有引脚全部分配结束后的软件窗口 端口名 使用模块信号 对应 FPGA 管脚 说 明 CLK 数字信号源 N2 时钟为 1KHZ KEY0 拨动开关 K1 AC22 KEY1 拨动开关 K2 AD23 KEY2 拨动开关 K3 AB8 KEY3 拨动开关 K4 AA9 二进制数据输入 LEDAG0 数码管 A 段 V17 LEDAG1 数码管 B 段 W16 LEDAG2 数码管 C 段 W15 LEDAG3 数码管 D 段 L10 LEDAG4 数码管 E 段 V14 LEDAG5 数码管 F 段 V13 LEDAG6 数码管 G 段 W12 DEL0 位选 DEL0 U12 DEL1 位选 DEL1 V20 DEL2 位选 DEL2 V21 十六进制数据 输出显示 18 表 4 2 端口管脚分配表 值得注意的是 当管脚分配完之后一定要进行再进行一次全编译 以使分配的管脚有效 4 对设计文件进行仿真 1 创建一个仿真波形文件 选择 QUARTUSII 软件 File New 进行新建文件对话框 如图 1 24 所示 选取对话框的 Other File 标签页 从中选取 Vector Waveform File 点击 OK 按钮 则打开了一个空的波形编辑器窗口 如图 1 25 所示 图 1 24 新建文件对话框 图 1 25 波形编辑器 2 设置仿真结束时间 波形编辑器默认的仿真结束时间为 1 S 根据仿真需要 可以 自由设置仿真的结束时间 选择 QUARTUSII 软件的 Edit End Time 命令 弹出线路束时间 对话框 在 Time 框办输入仿真结束时间 点击 OK 按钮完成设置 3 加入输入 输出端口 在波形编辑器窗口左边的端口名列表区点击鼠标右键 在 弹出的右键菜单中选择 Insert Node or Bus 命令 在弹出的 Insert Node or Bus 对话框如图 1 26 所示界面中点击 Node Finder 按钮 图 1 26 Insert Node or Bus 对话框 19 在出现的 Node Finder 界面中 如图 1 27 所示 在 Filter 列表中选择 Pins all 在 Named 窗口中输入 点击 List 在 Nodes Found 窗口出现所有信号的名称 点击中间的 按钮则 Selected Nodes 窗口下方出现被选择的端口名称 双击 OK 按钮 完成设置 回到图 1 26 所示的 Insert Node or Bus 对话框 双击 OK 按钮 所有的输入 输出端口将会 在端口名列表区内显示出来 如图 1 28 所示 图 1 27 Node Finder 对话框 图 1 28 在波形编辑器中加入端口 4 编辑输入端口波形 即指定输入端口的逻辑电平变化 在如图 1 28 所示的波形 编辑窗口中 选择要输入波形的输入端口如 clk 端口 在端口名显示区左边的波形编辑器 工具栏中有要输入的各种波形 其按钮说明如图 1 29 所示 根据仿真的需要输入波形 以 添加输入端口波形 clk 为例来讲解如何操作 在添加完输入 输出端口后 在每个端口的左 边会出现 I 或者 O 字样 分别代表输入 输出 我们只需要添加输入端口波形 首先单击 Edit Edn Time 左边第一行输入 10 第二行输入 us 完毕后单击 OK 完成了整个仿 真时间的设置 然后用波形编辑工具选中 Clk 的 0 到 40ns 后 然后单击 高电平 该段波 形高电平 1 用同样的方法编辑其他时段的波形和其他输入端口的波形 参照图 1 30 编辑输 20 入端口波形 注 输入波形的时间不能过小 最好能达到每段波形最小间隔 40ns 否则很可能由 于延时造成结果的不如意 完成后如图 1 30 所示 最后选择软件的 File Save 进行保存 图 1 29 波形编辑器工具栏 图 1 30 编辑输入端口波形 5 指定仿真器设置 在仿真过程中有时序仿真和功能仿真之分 在这里介绍功能 仿真 在 QUARTUSII 软件中选择 Tool Simulator Tool 命令 打开仿真器工具窗口 如图 1 31 所示 21 图 1 31 仿真器工具窗口 图 1 31 按图 1 31 上的提示 首先产生功能仿真网表文件 点击产生功能仿真网表的按钮 Generate Functional Simulation Netlist 产生功能仿真网表 然后点击开始仿真的 START 按 钮开始进行仿真 直到仿真进度条为 100 完成仿真 点击仿真报告窗口按钮 Report 观 察仿真波形 如图 1 32 所示 图 1 32 仿真波形 5 从设计文件到目标器件的加载 完成对器件的加载有两种形式 一种是对目标器件进行加载文件 一种是对目标器件 的配置芯片进行加载 这里我们介绍对目标器件 EP2C35F672C8 进行加载的方法 1 使用下载电缆将 PC 机与实验系统连接起来 2 选择 QUARTUSII 软件的 Tool Programmer 命令 进行编程器窗口 如图 1 33 所 示 如果没有设置编程硬件 则编程硬件类型为 No Hardware 需要对编程硬件进行设置 点击 Hardware Setup 编程硬件设置按钮 进行如图 1 34 所示的编程硬件设置对话框 图 1 33 编程器窗口 22 图 1 33 图 1 34 编程器硬件设置对话框 3 点击 Add Hardware 按钮 出现 Add Hardware 对话框 如图 1 35 所示 图 1 35 编程硬件选择对话框 4 在 Add Hardware 对话框中 从 Hardware type 列表中选择所需要硬件类型 如果 是 USB 接口的请参照用户使用手册中的 USB 电缆的安装与使用 如果使用的是并口下载 线则选取如图 1 35 所示的硬件类型 点击 OK 按钮 完成对硬件类型的设置 回到编程器 硬件设置窗口 点击 Close 按钮退出设置 则在编程器对话框中的编程硬件类型会出现刚 才选取的编程器硬件 23 5 如果软件已运行一个工程 则在打开编程器的时候 编程器窗口会自动出现这个 工程文件要加载到目标器件的文件 如果要加载其它文件可以从其它地方进行添加更改 选好加载文件后 再点选 Progam Configure 编程模式选取 JTAG 模式 点击 STRAT 进行 文件加载 直到加载进度变为 100 文件成功加载完成 四 实验现象与结果 以设计的参考示例为例 当设计文件加载到目标器件后 将数字信号源模块的时钟选 择为 1KHZ 拨动四位拨动开关 使其为一个数值 则八个数码管均显示拨动开关所表示的 十六进制的值 五 实验报告 1 绘出仿真波形 并作说明 2 明扫描时钟是如何工作的 改变扫描时钟会有什么变化 3 实验原理 设计过程 编译仿真波形和分析结果 硬件测试结果记录下来
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!