七段数码管显示_第1页
七段数码管显示_第2页
七段数码管显示_第3页
七段数码管显示_第4页
七段数码管显示_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、七段数码管显示设计报告目 录一、设计任务 二、题目分析与整体构思三、硬件电路设计四、程序设计 五、心得体会一 设计任务数码的显示方式一般有三种:第一种是字型重叠式;第二种是分段式;第三种是点阵式。目前以分段式应用最为普遍,主要器件是七段发光二极管(LED)显示器。它可分为两种,一是共阳极显示器(发光二极管的阳极都接在一个公共点上),另一是共阴极显示器(发光二极管的阳极都接在一个公共点上,使用时公共点接地)。数码管动态扫描显示,是将所用数码管的相同段(ag 和p)并联在一起,通过选位通信号分时控制各个数码管的公共端,循环依次点亮各个数码管。当切换速度足够快时,由于人眼的“视觉暂留”现象,视觉效果

2、将是数码管同时显示。根据七段数码管的显示原理,设计一个带复位的七段数码管循环扫描程序,本程序需要着重实现两部分:1. 显示数据的设置:程序设定 4 位数码管从左至右分别显示1、2、3、4;2. 动态扫描:实现动态扫描时序。利用EXCD-1 开发板实现七段数码管的显示设计,使用EXCD-1 开发板的数码管为四位共阴极数码管,每一位的共阴极7 段数码管由7 个发光LED 组成,7 个发光LED 的阴极连接在一起,阳极分别连接至FPGA相应引脚。四位数码管与 FPGA 之间通过8 位拨码开关(JP1)进行连接。二 题目分析与整体构思使用EXCD-1 开发板的数码管为四位共阴极数码管,每一位的共阴极7

3、 段数码管由7 个发光LED 组成,呈“ ”字状,7 个发光LED 的阴极连接在一起,阳极分别连接至FPGA相应引脚。SEG_SEL1、SEG_SEL2、SEG_SEL3 和SEG_SEL4 为四位7 段数码管的位选择端。当其值为“1”时,相应的7 段数码管被选通。当输入到7 段数码管SEG_A SEG_G 和SEG_DP 管脚的数据为高电平时,该管脚对应的段变亮,当输入到7 段数码管SEG_ASEG_G 和SEG_DP 管脚的数据为低电平时,该管脚对应的段变灭。该四位数码管与 FPGA 之间通过8 位拨码开关(JP1)进行连接,当DIP 开关全部拨到上方时(板上标示为:7SEGLED),FP

4、GA 的相应IO 引脚和四位7 段数码管连接,7 段数码管可以正常工作;当DIP 开关全部拨到下方时(板上标示为:EXPORT5),FPGA 的相应IO引脚与7 段数码管断开,相应的FPGA 引脚用于外部IO 扩展。注意:无论拨码开关断开与否,FPGA 的相应IO 引脚都是与外部扩展接口连接的,所以当正常使用数码管时,不允许在该外部扩展接口上安装任何功能模块板。数码管选通控制信号分别对应4 个数码管的公共端,当某一位选通控制信号为高电平时,其对应的数码管被点亮,因此通过控制选通信号就可以控制数码管循环依次点亮。一个数码管稳定显示要求的切换频率要大于50Hz,那么4 个数码管则需要50×

5、;4200Hz 以上的切换频率才能看到不闪烁并且持续稳定显示的字符。三 硬件电路设计设计结构图如下:四 软件设计(1)创建工程制定工程名,工程路径以及顶层设计所使用的输入方式,此设计我们选择硬件描述语言作为顶层设计的输入方式HDL。(2)选择目标器件(3)创建新源文件这里我们选择“VHDL Module”,进行新源文件模块定义,所定义的内容是所要设计模块的实体说明,即模块的端口说明。本实验所要实现的是编码器的设计,设定SW0与SW1的四个状态分别作为SEG_SEL1、SEG_SEL2、SEG_SEL3 和SEG_SEL4四位7 段数码管的位选择端,共8 个输出信号控制四个数码管显示,选择输出为

6、总线模式(Bus),Msb、Lsb 分别表示最大端口号与最小端口号(注意:选择端口方向in、out、inout)。检查模块端口定义是否正确。(4)添加源文件(5)完成工程创建在工程设置统计窗口,可以看到对工程的描述总结,目标器件的描述,以及新建源文件的总结,此工程创建完成。(6)设计输入包括库的声明,包的声明,完整的实体说明以及结构体框架。使用VHDL 语言设计完善数码管显示的设计,拨动开关SW0SW1 ,其四个状态为四个位选择端,LED0LED3 作为输出显示,以观察实验结果。1. LED 与编码器电路对应关系(7) 仿真设计代码输入完成后,需要对设计进行波形仿真。有添加波形仿真文件,仿真波

7、形文件时钟设置,设置输入信号波形和波形仿真这几个步骤。(8) 设计综合Xilinx 综合工具对设计进行行为级综合,将系统直接从行为级描述综合为寄存器传输级描述。综合过程中主要完成三个步骤:首先为语法检查,检查设计文件语法是否有错误;其次为编译过程,翻译和优化HDL 代码,将其转换为综合工具可以识别的元件序列;最后为映射过程,将这些可识别的元件序列转换为可识别的目标技术的基本元件。Synthesis 工具即用来完成设计综合,它可完成以下任务查看综合报告(View Synthesis Report)、查看RTL 原理图(View RTL Schematic)、查看技术原理图(Vies Techno

8、logy Schematic)、检查语法(Check Syntax)、产生综合后仿真模型(Generate Post-Synthesis Simulation Model)。(). 引脚分配信号名及对应板上资源 信号名 FPGA 引脚分配时钟脉冲 clk P80七段数码管a 段 a_to_g<0> P49七段数码管b 段 a_to_g<1> P42七段数码管c 段 a_to_g<2> P45七段数码管d 段 a_to_g<3> P41七段数码管e 段 a_to_g<4> P48七段数码管f 段 a_to_g<5> P50七

9、段数码管g 段 a_to_g<6> P47七段数码管小数点 dp P40片选 an<0> P34片选 an<1> P35片选 an<2> P36数码管1 片选 an<3> P39复位(SW0) btn P43(10)设计实现设计综合完成后,即进行设计实现(Implement)。实现过程主要分为三个步骤:翻译逻辑网表(Translate)、映射到器件单元(Map)、布局布线(Place&Route)。在处理子窗口,鼠标双击Implement Design,信息输出窗口会显示设计信息。(11) 生成下载文件及目标板配置处理子窗口中

10、双击Generate Programming File,生成可编程文件。而后双击Configure Target Device,进行目标板配置。开发板正确连接,并上电后,可在ISE 用户区看到两个可配置芯片,分别为4Mb 的平台flash 与FPGA xc3s500e台flash 与FPGA xc3s500e。同时出现平台Flash 配置文件指定窗口,绿色芯片表示当前进行配置的芯片。该设计我们选择对FPGA xc3s500e 进行配置,平台Flash 配置窗口点击Cancel。选定FPGA 芯片图标,右键单击选择program,在随后弹出的“Device Programming Propert

11、ies”对话框直接点击ok,对FPGA 进行编程。文件下载成功,则显示“Program Succeeded”可通过开发板观察相应实验现象。至此,使用ISE 软件设计基本逻辑门电路已经完成。(12)程序代码1. 顶层文件library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity clk7seg_top isPort ( clk : in STD_LOGIC;btn : in STD_LOGIC; -复位信号a_to_g : out STD_

12、LOGIC_VECTOR (6 downto 0);an : out STD_LOGIC_VECTOR (3 downto 0);dp : out STD_LOGIC);end clk7seg_top;architecture Behavioral of clk7seg_top iscomponent clk7segPort ( x : in STD_LOGIC_VECTOR (15 downto 0);clk : in STD_LOGIC; -100MHzclr : in STD_LOGIC;a_to_g : out STD_LOGIC_VECTOR (6 downto 0);an : ou

13、t STD_LOGIC_VECTOR (3 downto 0);dp : out STD_LOGIC);end component;signal x : std_logic_vector(15 downto 0);beginx<=X"1234" -设定x 初值U0 : clk7seg port map(x=>x,clk=>clk,clr=>btn,a_to_g=>a_to_g,an=>an,dp=>dp);end Behavioral;2. 七段数码管显示程序library IEEE;use IEEE.STD_LOGIC_1164.

14、ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity clk7seg isPort ( x : in STD_LOGIC_VECTOR (15 downto 0);clk : in STD_LOGIC; -50MHzclr : in STD_LOGIC;a_to_g : out STD_LOGIC_VECTOR (6 downto 0);an : out STD_LOGIC_VECTOR (3 downto 0);dp : out STD_LOGIC);end clk7seg;architecture B

15、ehavioral of clk7seg issignal s : std_logic_vector (1 downto 0);signal digit : std_logic_vector (3 downto 0);signal clkdiv : std_logic_vector (20 downto 0);signal aen : std_logic_vector (3 downto 0) := "1111"begindp <= '1's <= clkdiv(20 downto 19); -片选process(clr)beginif(clr=

16、'1') thenclkdiv <= (others => '0');elsif(rising_edge(clk) thenclkdiv <= clkdiv + 1;end if;end process;process(aen,s)beginan <= "0000"if(aen(conv_integer(s)='1') thenan(conv_integer(s) <= '1' -an(n)为1 则片选第n 个数码管end if;end process;process(s)begi

17、ncase s iswhen "00" => digit <= x(3 downto 0);when "01" => digit <= x(7 downto 4);when "10" => digit <= x(11 downto 8);when others => digit <= x(15 downto 12); -4 个数码管轮流显示,有延时end case;end process;process(digit)begincase digit iswhen x"0"

18、; => a_to_g <= "1111110"-"0000001"when x"1" => a_to_g <= "0110000"-"1001111"when x"2" => a_to_g <= "1101101"-"0010010"when x"3" => a_to_g <= "1111001"-"0000110"when x

19、"4" => a_to_g <= "0110011"-"1001100"when x"5" => a_to_g <= "1011011"-"0100100"when x"6" => a_to_g <= "1011111"-"0100000"when x"7" => a_to_g <= "1110000"-"0001111

20、"when x"8" => a_to_g <= "1111111"-"0000000"when x"9" => a_to_g <= "1111011"-"0000100"when x"A" => a_to_g <= "1110111"-"0001000"when x"B" => a_to_g <= "0011111"-&

21、quot;1100000"when x"C" => a_to_g <= "1001110"-"0110001"when x"D" => a_to_g <= "0111101"-"1000010"when x"E" => a_to_g <= "1001111"-"0110000"when others => a_to_g <= "1000111&quo

22、t;-"0111000"end case;end process;end Behavioral;五.调试将SW0SW6为a_to_g 来改变其状态来观察,结果如下:SW0SW6 "1111110",显示"0"SW0SW6"0110000",显示"1"SW0SW6 "1101101"显示"2"SW0SW6 "1111001 "显示"3"SW0SW6 "0110011 "显示"4"

23、SW0SW6"1011011 "显示"5"SW0SW6 "1011111"显示"6"SW0SW6“1110000"显示"7"SW0SW6"1111111"显示"8"SW0SW6 "1111011"显示"9"SW0SW6 "1110111"显示"A"SW0SW6"0011111"显示"B"SW0SW6 "1001110"显示"C"SW0SW6"0111101"显示"D";SW0SW6"1001111"显示"E"SW0SW6 "1000111"显示其他;在软件中波形图如下:调试结果:数码管显示成功实现。6总结本设计,满足了本次试验设计的任务要求,改变输入状态时,数码管显示不同字符。通过这次设计我们了解并掌握VHDL硬件描述语言的设计方法和思想,使自己能将已学过

温馨提示

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

评论

0/150

提交评论