八位七段数码管动态显示电路设计_第1页
八位七段数码管动态显示电路设计_第2页
八位七段数码管动态显示电路设计_第3页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、八位七段数码管动态显示电路的设计一 七段显示器介绍七段显示器, 在许多产品或场合上经常可见。其内部结构是由八个发光二极管所组成,为七个笔画与一个小数点,依顺时针方向为A 、B 、C、D 、E、F、G 与 DP 等八组发光二极管之排列,可用以显示0 9 数字及英文数A 、 b、 C、 d、 E、 F。目前常用的七段显示器通常附有小数点, 如此使其得以显示阿拉伯数之小数点部份。七段显示器的脚位和线路图如下图 4.1 所示 ( 其第一支接脚位于俯视图之左上角)。图 4.1 、七段显示器俯视图由于发光二极管只有在顺向偏压的时候才会发光。因此,七段显示器依其结构不同的应用需求, 区分为低电位动作与高电位

2、动作的两种型态的组件,另一种常见的说法则是共阳极( 低电位动作)与共阴极 ( 高电位动作)七段显示器,如下图4.2 所示。(共阳极)(共阴极)图 4.2 、共阳极 ( 低电位动作 ) 与共阴极 ( 高电位动作 )1要如何使七段显示器发光呢?对于共阴极规格的七段显示器来说,必须使用“ SinkCurrent方”式,亦即是共同接脚COM 为 VCC ,并由 Cyclone II FPGA使接脚成为高电位,进而使外部电源将流经七段显示器,再流入Cyclone II FPGA的一种方式本实验平台之七段显示器模块接线图如下图4.5 所示。此平台配置了八组共阳极之七段显示器,亦即是每一组七段显示器之COM

3、 接脚,均接连至VCC 电源。而每一段发光二极管,其脚位亦均与Cyclone II FPGA接连。四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。八个数码管的a、 b、c、 d、 e、 f 、g、 h、dp 都连在了一起, 8 个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。图 4.5 、七段显示器模块接线图七段显示器之常见应用如下可作为与数值显示相关之设计。电子时钟应用显示倒数定时器秒表计数器、定时器算数运算之数值显示器2二七段显示器显示原理七段显示器可用来显示单一的十进制或十六进制的数字,它是由八个发光二极管所构成的( 每一个二极

4、管依位置不同而赋予不同的名称,请参见图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、共阳极七段显示器显示数字编码资料DPGFEDCBA1

5、6 进制011000000C0111111001F9210100100A4310110000B0410011001995100100109261000001082711111000F881000000080本实验要求完成的任务是在时钟信号的作用下,通过输入的键值在数码管上显示相应的键值。在实验中时,数字时钟选择1KHZ 作为扫描时钟,用四个拨动开关做为输入,当四个拨动开关置为一个二进制数时,在数码管上显示其十六进制的值。实验箱中的拨动开关与 FPGA的接口电路, 以及拨动开关FPGA的管脚连接在实验一中都做了详细说明,这里不在赘述。3数码管显示模块的电路原理如图4-2 所示,图 4-2数字时钟

6、信号模块电路原理三 实验步骤(本实验用VHDL文本语言实现八位七段数码管动态显示,当然也可用Quartus 的图形输入法实现八位七段数码管动态显示)1.下面我们建立一个八位七段数码管动态显示的VHDL工程1) 选择开始> 程序> Altera> QuartusII5.1,运行 QUARTUSII软件。或者双击桌面上的 QUARTUSII的图标运行QUARTUSII软件,出现如图1-3 所示。图 1-3 QUARTUSII 软件运行界面42) 选择软件中的菜单File>New Project Wizard,新建一个工程。如图1-4 所示。图 1-4新建工程对话框3)点击图

7、1-4 中的 NEXT进入工作目录,工程名的设定对话框如图1-5 所示。第一个输入框为工程目录输入框,用户可以输入如e:/eda等工作路径来设定工程的目录,设定好后,所有的生成文件将放入这个工作目录。第二个输入框为工程名称输入框,第三个输入框为顶层实体名称输入框。用户可以设定如EXP1,一般情况下工程名称与实体名称相同。使用者也可以根据自已的实际情况来设定工程名和顶层文件名。注:本处的顶层文件名必须和程序的实体名一致,否则编译会出错。图 1-5指定工程名称及工作目录54)点击 NEXT,进入下一个设定对话框,按默认选项直接点击NEXT进行器件选择对话框。如图1-6 所示。这里我们以选用Cycl

8、oneII系列芯片EP2C35F672C8为例进行介绍。用户可以根据使用的不同芯片来进行设定。图 1-6器件选择界面首先在对话框的左上方的Family下拉菜单中选取CycloneII,在中间右边的Speedgrade 下拉菜单中选取8,在左下方的Availabledevices框中选取 EP2C35F672C8,点击 NEXT完成器件的选取,进入EDA TOOL设定界面如图1-7 所示。图 1-7 EDA TOOL 对话框65)按默认选项,点击Next 出现新建工程以前所有的设定信息,如图1-8 所示,点击Finish完成新建工程的建立。图 1-8新建工程信息2、建立 VHDL设计文件1)在创

9、建好设计工程后,选择File > NEW菜单,出现图1-9 所示的新建设计文件类型选择窗口。这里我们以建立VHDL设计文件为例进行说明。7图 1-9新建设计文件选择窗口2)在 New 对话框(图1-9)中选择Device Design Files 页下的 VHDLFile ,点击 OK按钮,打开图形编辑器对话框,如图1-10 所示。图中标明了常用的每个按钮的功能3) 在文本编辑器中输入如下VHDL程序:-下面是引用库-library ieee;-库函数use ieee.std_logic_1164.all;-定义了 std_logic数据类型及相应运算use ieee.std_logic

10、_arith.all;-定义了 signed和 unsigned数据类型、相应运算和相关类型转换函数use ieee.std_logic_unsigned.all;-定义了一些函数,可以使 std_logic_vector类-型被当作符号数或无符号数一样进行运算- 下面是构造实体entity exp4 is -exp4为实体名port( clk: instd_logic;-定义动态扫描时钟信号key: instd_logic_vector(3 downto 0);-定义四位输入信号8ledag : out std_logic_vector(6 downto 0);-定义七位输出信号del: o

11、ut 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); -变量,计数beginifclk'event and clk='1' then-检测时钟上升沿dount:=dount+1;-计数器 dount 累加end i

12、f;del<=dount; -片选信号end process;-结束进程process(key) -进程, key 变化时启动进程begincase key iswhen "0000" => ledag <="0111111"-七段数码管显示0when "0001" => ledag <="0000110"-1when "0010" => ledag <="1011011"-2when "0011" => l

13、edag <="1001111"-3when "0100" => ledag <="1100110"-4when "0101" => ledag <="1101101"-5when "0110" => ledag <="1111101"-6when "0111" => ledag <="0000111"-7when "1000" => l

14、edag <="1111111"-8when "1001" => ledag <="1101111"-9when "1010" => ledag <="1110111"- R9when "1011" => ledag <="1111100"-bwhen "1100" => ledag <="0111001"-Cwhen "1101" =>

15、 ledag <="1011110"-dwhen "1110" => ledag <="1111001"-Ewhen "1111" => ledag <="1110001"-Fwhen others => null;end case;end process; -结束进程end whbkrc; -结束结构体关于 VHDL,我们以上面八位七段数码管显示程序为例来解释VHDL的语法构成,以使大家对 VHDL有个整体的把握。一个 VHDL程序有三部分构成,其为:1.

16、库和包 library(设计资源);2. 实体 entity (外部端口)3. 结构体 architecture (内部结构) 库和包 library (设计资源)的介绍本程序中用到 3 个库函数包:如下 :1.1use ieee.std_logic_1164.all;-定义了 std_logic数据类型及相应运算1.2use ieee.std_logic_arith.all;-定义了 signed和 unsigned 数据类型、相应运算- 和相关类型转换函数1.3 use ieee.std_logic_unsigned.all;-定义了一些函数,可以使std_logic_vector- 类型

17、被当作符号数或无符号数一样进行运算补充:当使用库时,需要说明使用的库名称,同时需要说明库中包集合的名称及范围;每个实体都应独立进行库的说明; 库的说明应该在实体之前; 经过说明后, 实体和结构体就可以自动调用库中的资源; 实体 entity(外部端口)entity exp4 is-exp4 为实体名port( clk:instd_logic;-定义动态扫描时钟信号10key:instd_logic_vector(3 downto 0);-定义四位输入信号ledag:outstd_logic_vector(6 downto 0);-定义七位输出信号del:outstd_logic_vector(

18、2 downto 0)-定义八位数码管位置显示信);end exp4; -结束实体实体说明主要描述对象的外貌,即对象的输入和输出(I/O )的端口信息,它并不描述器件的具体功能。在电路原理图上实体相当于元件符号。CLKdel(20)Key3.0ledag(70)图 4-9实体 exp4 中描述如上图4-9 输入和输出(I/O )的端口信息 结构体 architecture(内部结构)结构体具体指明了该设计实体的行为,定义了该设计实体的功能,规定了该设计实体的数据流程,指派了实体中内部元件的连接关系。architecture whbkrc of exp4 is -whbkrc为结构体名begin

19、 -以 begin 为标志开始结构体的描述process(clk) -进程, clk 变化时启动进程variable dount : std_logic_vector(2 downto 0); -变量,计数beginifclk'event and clk='1' then-检测时钟上升沿dount:=dount+1;-计数器 dount 累加end if;del<=dount; -片选信号end process;-结束进程process(key) -进程, key 变化时启动进程begincase key is11when "0000" =&g

20、t; ledag <="0111111"-七段数码管显示0when "0001" => ledag <="0000110"-1when "0010" => ledag <="1011011"-2when "0011" => ledag <="1001111"-3when "0100" => ledag <="1100110"-4when "0101&qu

21、ot; => ledag <="1101101"-5when "0110" => ledag <="1111101"-6when "0111" => ledag <="0000111"-7when "1000" => ledag <="1111111"-8when "1001" => ledag <="1101111"-9when "1010&qu

22、ot; => ledag <="1110111"- Rwhen "1011" => ledag <="1111100"-bwhen "1100" => ledag <="0111001"-Cwhen "1101" => ledag <="1011110"-dwhen "1110" => ledag <="1111001"-Ewhen "1111&q

23、uot; => ledag <="1110001"-Fwhen others => null;end case;end process; -结束进程end whbkrc; -结束结构体4)点击保存按钮,弹出如下选项,将其名命名为exp1 ,如下图125)对设计文件进行编译QUARTUSII编译器窗口包含了对设计文件处理的全过程。在QUARTUSII软件中选择 processin>start compilation 菜单项,就会自动编译,出现QUARTUSII的编译器窗口,如下图所示如果文件有错,在软件的下方则会提示错误的原因和位置,以便于使用者进行修

24、改直到设计文件无错。整个编译完成,软件会提示编译成功,3 管脚分配在前面选择好一个合适的目标器件(在这个实验中选择为EP2C35F672C8 ),完成设计的分析综合过程,得到工程的数据文件以后,需要对设计中的输入、输出引脚指定到具体的器件管脚号码,指定管脚号码称为管脚分配或管脚锁定。这里介绍两种方法进行管脚锁定。131)点击Assignments 菜单下面的Assignment Editor,进入到引脚分配窗口。如图 1-15 所示。图 1-15进入引脚分配界面首先将要分配管脚的信号放置在 To 下方。双击 To 下方的 New ,如图 1-15 所示则会出现如图 1-16 所示界面。图 1-

25、16信号选择对话框选择 Node Finder 进入如图 1-17 所示的 Node Finder 对话框界面。按图 1-17 中样例设置参数。在 Filter 窗口选择 Pins:all ,在 Named 窗口中输入“ * ”,点击 List 在 Nodes Found14窗口出现所有信号的名称,点击中间的按钮则 Selected Nodes 窗口下方出现被选择的端口名称。双击OK 按钮,完成设置。进入管脚分配窗口,如图1-18 所示。图 1-17 Node Finder 对话框图 1-18 管脚分配在图 1-18 中以锁定端口key0 的管脚为例,其它端口的管脚锁定与其基本一致。选择端口

26、key0 的对应 Assignment Name 待其变为蓝色,双击之,出现下拉菜单选取如图1-1815所示的 Location (Accepts wildcards/groups )选项。选择端口 key0 的对应 Value 栏, 待其变为蓝色,依照表 1-2 所示的硬件与 FPGA 的管脚连接表(或附录),输入对应的管脚名 AC22 ,按回车键,软件将自动将其改为PIN_ AC22 ,同时蓝色选择条会自动跳转到Value 栏的下一行,这表明软件已经将输入端口key0 分配到 FPGA 的 AC22 引脚上,如图1-19 所示。图 1-19给 key0 端口进行管脚分配用同样的方法,依照表

27、4-2 和所示的硬件与FPGA 的管脚连接表(或附录),对其它端口进行管脚分配,如图1-20 所示。图 1-20 所有引脚全部分配结束后的软件窗口16端口名使用模块信号对应 FPGA 管脚说明CLK数字信号源N2时钟为 1KHZKEY0拨动开关 K1AC22KEY1拨动开关 K2AD23二进制数据输入KEY2拨动开关 K3AB8KEY3拨动开关 K4AA9LEDAG0数码管 A段V17LEDAG1数码管 B段W16LEDAG2数码管 C段W15LEDAG3数码管 D段L10LEDAG4数码管 E段V14十六进制数据LEDAG5数码管 F段V13输出显示LEDAG6数码管 G段W12DEL0位选

28、 DEL0U12DEL1位选 DEL1V20DEL2位选 DEL2V21表 4-2 端口管脚分配表值得注意的是,当管脚分配完之后一定要进行再进行一次全编译,以使分配的管脚有效。4、对设计文件进行仿真1)创建一个仿真波形文件,选择QUARTUSII软件 File>New ,进行新建文件对话框。如图 1-24 所示。选取对话框的Other File 标签页,从中选取Vector Waveform File ,点击 OK按钮,则打开了一个空的波形编辑器窗口,如图1-25 所示。图 1-24新建文件对话框图 1-25波形编辑器172)设置仿真结束时间,波形编辑器默认的仿真结束时间为1 S,根据仿

29、真需要,可以自由设置仿真的结束时间。选择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 对话框在出现的Node Finder 界面中,如图 1-27 所示,在 Filter 列表中选择Pins:a

30、ll ,在 Named窗口中输入“ * ”,点击 List 在 Nodes Found 窗口出现所有信号的名称,点击中间的按钮则 Selected Nodes 窗口下方出现被选择的端口名称。双击 OK 按钮,完成设置,回到图 1-26所示的 Insert Node or Bus 对话框, 双击 OK 按钮,所有的输入、 输出端口将会在端口名列表区内显示出来,如图 1-28 所示。图 1-27 Node Finder 对话框18图 1-28在波形编辑器中加入端口4)编辑输入端口波形,即指定输入端口的逻辑电平变化,在如图1-28 所示的波形编辑窗口中,选择要输入波形的输入端口如clk 端口,在端口

31、名显示区左边的波形编辑器工具栏中有要输入的各种波形,其按钮说明如图1-29 所示。根据仿真的需要输入波形。以添加输入端口波形clk 为例来讲解如何操作:在添加完输入, 输出端口后, 在每个端口的左边会出现 I 或者 O 字样,分别代表输入, 输出,我们只需要添加输入端口波形,首先单击Edit-EdnTime 左边第一行输入10 ,第二行输入us ,完毕后单击OK ,完成了整个仿真时间的设置。然后用波形编辑工具选中Clk 的 0 到 40ns 后 ,然后单击高电平,该段波形高电平1,用同样的方法编辑其他时段的波形和其他输入端口的波形,参照 图 1-30 编辑输入端口波形。注:输入波形的时间不能过小,最好能达到每段波形最小间隔40ns,否则很可能由于延时造成结果的不如意。完成后如图1-30 所示。最后选择软件的File>Save 进行保存。图 1-29波形编辑器工具栏19图 1-30 编辑输入端口波形5)指定仿真器设置,在仿真过程中有时序仿真和功能仿真之分,在这里介绍功能仿真。在 QUARTUSII软件中选择Tool>Simulator Tool 命令,打开仿真器工具窗口,如图 1-31所示。图 1-31仿真器工具窗口图 1-31按图1-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论