实验四数码管扫描显示控制器设计与实现_第1页
实验四数码管扫描显示控制器设计与实现_第2页
实验四数码管扫描显示控制器设计与实现_第3页
实验四数码管扫描显示控制器设计与实现_第4页
实验四数码管扫描显示控制器设计与实现_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、实验四 数码管扫描显示控制器设计与实现一、 实验目的1. 掌握VHDL语言的语法规范,掌握时序电路描述方法。2. 掌握多个数码管动态扫描现实的原理及设计方法。二、 实验所用仪器及元器件1.计算机:装有Quartus软件,为VHDL语言提供操作场所。2.直流稳压电源:通过USB接口实现,为实验开发板提供稳定电源。3.数字系统与逻辑设计实验开发板:使试验结果下载到开发板上,实现整个实验的最终结果。三、 实验原理多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环依次点亮多个数码管,利用人眼的视觉暂留现象,只要扫描的频率大于50HZ,将看不到闪烁现象

2、。如下图10-1,是多个数码管动态扫描显示的电路连接图。当闪烁显示的发光二极管闪烁频率较高时我们将观察到持续点亮的现象。同理,当多个数码管依次显示,当切换速度够快时,我们将观察到所有数码管都是同事在显示。一个数码管要稳定显示要求显示频率>50hz,那么6个数码管则需要50*6=300hz以上才能看到持续稳定点亮的现象。图10-1中,cat1cat6是数码管选通控制信号,分别对应于6个共阴极数码管的公共端,当catn=0时,其对应的数码管被点亮。因此,通过控制cat1cat6,就可以控制6个数码管循环依次点亮,图10-2为cat1cat6的时序关系图。四、实验内容1. 用VHDL语言设计并

3、实现六个数码管串行扫描电路,要求同时显示0、1、2、3、4、5这6个不同的数字图形到6个数码管上,仿真并下载验证其功能。2. 用VHDL语言设计并实现六个数码管滚动显示电路。(1) 循环左滚动,始终点亮6个数码管,左出右进。状态为:012345123450234501345012450123501234012345(2) 向左滚动,用全灭的数码管填充右边,直至全部变灭,然后再一次从右边一个一个的点亮。状态为01234512345X2345XX345XXX45XXXX5XXXXXXXXXXXXXXXX0XXXX01XXX012XX0123X01234012345,其中“X”表示数码管不显示。五、

4、实验设计思路及过程1实现六个数码管串行扫描电路的思路及代码:LIBRARY IEEE;ENTITY ljxh1 ISPORT(clk:IN STD_LOGIC;clear:IN STD_LOGIC;b:OUT STD_LOGIC_VECTOR(6 downto 0;c:OUT STD_LOGIC_VECTOR(0 to 5;END ljxh1;ARCHITECTURE a OF ljxh1 ISSIGNAL tmp:INTEGER RANGE 0 TO 5;SIGNAL x:INTEGER RANGE 0 TO 5:=0;SIGNAL s:INTEGER RANGE 0 TO 10:=0;SI

5、GNAL clk_out:STD_LOGIC_VECTOR(0 to 5;BEGINp1:PROCESS(clear,clkBEGINIF clear='0' THENtmp<=0;ELSIF clk'event AND clk='1' THENIF tmp=5 THENtmp<=0;x<=x+1;ELSEtmp<=tmp+1;END IF;IF x=6 THENx<=0;END IF;for i in 0 to 5 loopIF tmpclk_out(i<='1'ELSIF tmp clk_out(i

6、<='0'ELSEclk_out(i<='1'END IF;END loop;for i in 0 to 5 loopc(i<=clk_out(i;END loop; s<=tmp+x;CASE s IS WHEN 10 => b<="0110011" -1WHEN 9 => b<="1111001" -2WHEN 8 => b<="1101101" -3WHEN 7 => b<="0110000" -4WHEN

7、 6 => b<="1111110" -5WHEN 0 => b<="1111110" -0WHEN 1 => b<="0110000" -1WHEN 2 => b<="1101101" -2WHEN 3 => b<="1111001" -3WHEN 4 => b<="0110011" -4WHEN 5 => b<="1011011" -5END CASE;END IF;E

8、ND PROCESS p1;END a;2六个数码管滚动电路的思路及代码:library IEEE;entity v0711509 isport(clk:IN STD_LOGIC;control1:IN STD_LOGIC;c:OUT STD_LOGIC_VECTOR(5 downto 0;b:OUT STD_LOGIC_VECTOR(6 downto 0;end v0711509;Architecture a Of v0711509 IsSIGNAL clkout: STD_LOGIC;signal stat:INTEGER RANGE 0 TO 11;signal count:INTEGE

9、R RANGE 0 TO 5;signal ck:INTEGER RANGE 0 TO 50000;TYPE ram_array1 IS ARRAY (0 TO 5 OF STD_LOGIC_VECTOR(6 downto 0; SIGNAL light1 : ram_array1:=("1111110","0110000","1101101","1111001","0110011","1011011" TYPE ram_array2 IS ARRAY (0 TO 11 OF

10、 STD_LOGIC_VECTOR(6 downto 0; SIGNAL light2 : ram_array2:=("1111110","0110000","1101101","1111001","0110011","1011011","0000000","0000000","0000000","0000000","0000000","0000000"CO

11、MPONENT div50m port(clk_in : in std_logic;clk_out : out std_logic;END COMPONENT;Beginu1: div50m PORT MAP(clk_in=>clk,clk_out=>clkout;p1:process(clkbeginif clk'event and clk='1' thenif ck=50000 thenck<=0;if count=5 then count<=0; elsecount<=count+1; end if;else ck<=ck+1;

12、end if;end if; if clkout'event and clkout='1' thenif stat=11 thenstat<=0;elsestat<=stat+1;end if;end if; CASE count ISWHEN 0 => c <="011111" WHEN 1 => c <="101111" WHEN 2 => c <="110111"WHEN 3 => c <="111011"WHEN 4 =&g

13、t; c <="111101"WHEN 5 => c <="111110"WHEN OTHERS => c <="111111"END CASE;if control1='0' thenCASE count ISWHEN 0 => b <=light1(stat mod 6; WHEN 1 => b <=light1(stat+1 mod 6; WHEN 2 => b <=light1(stat+2 mod 6; WHEN 3 => b <=

14、light1(stat+3 mod 6; WHEN 4 => b <=light1(stat+4 mod 6; WHEN 5 => b <=light1(stat+5 mod 6; WHEN OTHERS => b <="0000000"END CASE;elseCASE count ISWHEN 0 => b <=light2(stat mod 12; WHEN 1 => b <=light2(stat+1 mod 12; WHEN 2 => b <=light2(stat+2 mod 12; WHE

15、N 3 => b <=light2(stat+3 mod 12; WHEN 4 => b <=light2(stat+4 mod 12; WHEN 5 => b <=light2(stat+5 mod 12; WHEN OTHERS => b <="0000000"END CASE;end if;END PROCESS p1;END a;六、实验结果及分析:1六个数码管串行扫描电路仿真结果结果分析:2六个数码管滚动显示电路结果:结果分析:七、故障及问题分析1.每次实验中都应该注意到VHDL的文件名应与实体名一致,如果不一致编译会报错。我在实验过程中虽然原理图设计名与工程名相同,但在其后某程序名上犯了错误,导致出错。2.在仿真波形的观察中,一定要调节好zoom一选项,缩放出便于观察的波形。3.在命名过程一定要注意规范,不要出现非法字符。4.在做10进制计数器时,由于板的固有频率为晶振的频率50兆赫兹,所以当以微秒级的时钟去自动跳变太快根本无法看清,应该加一段程序令时钟在微秒级跳变2

温馨提示

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

评论

0/150

提交评论