六位数码管动态扫描显示电路设计与实现

  • 格式:doc
  • 大小:62.50 KB
  • 文档页数:8

下载文档原格式

  / 8
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

可编程逻辑器件技术项目设计报告

课题名称:六位数码管动态扫描显示电路设计与实现班级:13电子(2)班

******

指导老师:***

一、设计要求

1)用VHDL语言设计一个可以实现以下功能的程序:六个数码管可以同时工作,显示不同的数字。

2)编写完程序之后并在开发系统上进行硬件测试。

二、任务分析

串行连接,即每个数码管对应的引脚都要连接在一起(如每个数码管的a引脚都要接到一起,然后再接到CPLD/FPGA上的一个引脚上),通过控制公共端(图5中的K端)控制相对应的数码管亮、灭(共阴极数码管的公共端为高电平时,LED不亮;共阳极的公共端为低电平时,LED不亮)。

串行法的优点在于消耗的系统资源少,占用的I/O口少,N个数码管只需要(7+N)个引脚(如果需要小数点,则是(8+N)个引脚)。其缺点是控制起来不如并行法容易。

三、设计原理

四、硬件要求

主芯片EPM240T100C5,六个共阴极七段数码管。

五、源程序

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity dt is

port(

clock:in std_logic;

numa,numb: in integer range 0 to 9;

en:out std_logic_vector(0 to 5);

display:out std_logic_vector(0 to 6)--(a~g) );

end;

architecture decoder of dt is

signal counter:integer range 0 to 9;

signal clk_1:std_logic;

signal numc,numd,nume,numf:integer range 0 to 9; begin

numc<=0;

numd<=0;

nume<=0;

numf<=0;

process(clock)

variable cnt1: integer range 0 to 1000;

variable cnt2: integer range 0 to 50;

-------------------------------------------------------

-----------1000Hz

begin

if rising_edge(clock) then

if cnt1=1000 then

cnt1:=0;

If cnt2=50 then

cnt2:=0;

clk_1<=not clk_1;

else

cnt2:=cnt2+1;

end if;

else

cnt1:=cnt1+1;

end if;

end if;

end process;

-------------------------------------------------------

----------------

process(clk_1)

variable num:integer range 0 to 9; begin

if rising_edge(clk_1) then

if counter=5 then

counter<=0;

else

counter<=counter+1;

end if;

case counter is

when 0=>en<="011111";

num:=numa;

when 1=>en<="101111";

num:=numb;

when 2=>en<="110111";

num:=numc;

when 3=>en<="111011";

num:=numd;

when 4=>en<="111101";

num:=nume;

when 5=>en<="111110";

num:=numf;

when others=>en<="000000";

num:=0;

end case;

case num is

when 0=>display<="1111110";

when 1=>display<="0110000";

when 2=>display<="1101101";

when 3=>display<="1111001";

when 4=>display<="0110011";

when 5=>display<="1011011";

when 6=>display<="0011111";

when 7=>display<="1110000";

when 8=>display<="1111111";

when 9=>display<="1111011";

when others=>display<="0000000"; end case;

end if;

end process;

end;

六、接线图

七、现象描述

以上程序在硬件上的现象是从左往右数,前四个显示字形为0,后两个数码管由八个拨码开关控制显示字形。拨码开关打到相应位置的二进制数,对应在七段数码管上显示相应字形,形如七段数码管显示译码器的硬件现象测试。

八、总结

通过这次动态扫描设计实验,明显加强了对译码器程序的编写。对比七段数码管显示译码器的实验,更加熟练的运用各程序模块。对于本次实验,个人觉得也还有可以改进,结合十进制的程序,改动本程序,利用分频等让七段数码管按照一定时间改变