数字电路与逻辑设计实验报告-数码管扫描显示控制器设计与实现.doc

上传人:啊飒飒 文档编号:10600644 上传时间:2021-05-25 格式:DOC 页数:12 大小:11.27MB
返回 下载 相关 举报
数字电路与逻辑设计实验报告-数码管扫描显示控制器设计与实现.doc_第1页
第1页 / 共12页
数字电路与逻辑设计实验报告-数码管扫描显示控制器设计与实现.doc_第2页
第2页 / 共12页
数字电路与逻辑设计实验报告-数码管扫描显示控制器设计与实现.doc_第3页
第3页 / 共12页
数字电路与逻辑设计实验报告-数码管扫描显示控制器设计与实现.doc_第4页
第4页 / 共12页
数字电路与逻辑设计实验报告-数码管扫描显示控制器设计与实现.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《数字电路与逻辑设计实验报告-数码管扫描显示控制器设计与实现.doc》由会员分享,可在线阅读,更多相关《数字电路与逻辑设计实验报告-数码管扫描显示控制器设计与实现.doc(12页珍藏版)》请在三一文库上搜索。

1、信息与通信工程学院 数字电路与逻辑设计实验数码管扫描显示控制器设计与实现实验报告学院: 班级: 姓名: 班内序号: 一. 实验目的 1进一步了解时序电路设计方法,掌握vhdl语言的语法规范。2掌握多个数码管动态扫描显示原理及设计方法。二. 实验所用仪器及元件 1计算机2直流稳压电源3数字系统与逻辑设计实验开发板三. 实验内容1. 用VHDL语言设计实现六个数码管串行扫描电路,要求同时显示0、1、2、3、4、5这六个不同的数字图形到六个数码管上,仿真并下载验证其功能。2. 用VHDL设计并实现六个数码管滚动显示电路。(1)循环左滚动,始终点亮六个数码管,左出右进。状态为012345-123450

2、-234501-345012-450123-501234-012345(2)向左滚动,用全来的数码管填充右边,直至全部变来,然后再依次从右边一个一个的点亮。状态为:012345-12345X-2345XX-345XXX-45XXXX-5XXXXX-XXXXXX-XXXXX0-XXXX01-XXX012-XX0123-X01234-012345。其中,X表示数码管不显示。四. 设计思路和过程(1)七段发光二极管(LED)数码管是目前最常用的数字显示器,一个LED数码管可用一位0-9十进制数和一个小数点。下图为共阴极数码管显示0到9时各段对应的编码。Digit Shownabcdefg011111

3、10101100002110110131111001401100115101101161011111711100008111111191111011(2)cat cat是数码管选通控制信号,分别对应6个共阴极数码管的公共端,当catn=0时,其对应的数码管被点亮。因此,通过控制cat cat,就可以控制6个数码管依次循环点亮。五. VHDL 程序、仿真波形图及分析1. (1) VHDL 程序library ieee;use ieee.std_logic_1164.all;entity atthesametime2 is port(clk:in std_logic; catout:out std

4、_logic_vector(5 downto 0); bout:out std_logic_vector(6 downto 0);end atthesametime2;architecture a of atthesametime2 is signal cat:std_logic_vector (5 downto 0); -选通管控制 signal b:std_logic_vector(6 downto 0);-数码管显示控制 signal clk_tmp:std_logic; signal cnt:integer; -分频记数begin process(clk)beginif (clkeve

5、nt and clk=1) then -分频if cnt=49999 thencnt=0;clk_tmp= not clk_tmp;elsecntcat=111101;bcat=111011;bcat=110111;bcat=101111;bcat=011111;bcat=111110;b=1111110; -显示数字0 end case; end if; end process; catout=cat; bout=b;end a;(2)仿真波形图(3) 分析当clk_t第一个上升沿到来时,cat(0)到cat(5)中只有cat(0)=0,表明第一个数码管被点亮,所显示的数字由b决定。此时,b

6、=“1111110”,数码管对应显示的数字为0。同理:当clk第二个上升沿到来时,cat(0)到cat(5)中只有cat(1)=0,表明第二个数码管被点亮,所显示的数字由b决定。此时,b=“0110000”,数码管对应显示的数字为1依次类推,当第三个数码管被点亮时显示2,综合上述,设计符合要求。2. (1) VHDL 程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dongtai isport(clk: in STD_LOGIC; mode:in STD_LOGIC; -控制信号

7、 seg: out STD_LOGIC_VECTOR(0 to 6); -选通管 cat: out STD_LOGIC_VECTOR(0 to 5); -数码显示end dongtai;architecture a of dongtai issignal tmp :integer range 0 to 5;signal seg_t:std_logic_vector(0 to 6);type state is array (0 to 11) of STD_LOGIC_VECTOR(0 to 6);signal cnt :integer range 0 to 5000000;beginproces

8、s(clk)variable i: integer range 0 to 11;variable k: integer range 0 to 1000;constant values1: state:=(1111110,0110000,1101101,1111001,0110011,1011011,1111110,0110000,1101101,1111001,0110011,1011011);-状态1constant values2: state:=(1111110,0110000,1101101,1111001,0110011,1011011,0000000,0000000,0000000

9、,0000000,0000000,0000000);-状态2beginif(clkevent and clk=1) then-第一个分频,每50000个时钟cnt=cnt+1;-数码管显示一次,频率为if cnt=50000 then cnt=0;-1kHzend if; if(mode=0) then-mode=0时进行状态1之间的转移if cnt=0 then tmp=0;if(tmp=0) then cat=011111;seg_t=values1(i mod 12);tmp=tmp+1;elsif(tmp=1) then cat=101111;seg_t=values1(i+1) mo

10、d 12);tmp=tmp+1;elsif(tmp=2) then cat=110111;seg_t=values1(i+2) mod 12);tmp=tmp+1;elsif(tmp=3) then cat=111011;seg_t=values1(i+3) mod 12);tmp=tmp+1;elsif(tmp=4) thencat=111101;seg_t=values1(i+4) mod 12);tmp=tmp+1;elsif(tmp=5) thencat=111110;seg_t=values1(i+5) mod 12);tmp=0;else cat=111111;seg_t=0000

11、000;tmp=0;end if;if(k=1000) then-第二个分频器,i:=(i+1) mod 12;k:=0;-每一秒变换一次状态else k:=k+1;end if;end if; elsif(mode=1) then-mode=1时进行状态2之间的转移if cnt=0 then tmp=0;if(tmp=0) then cat=011111;seg_t=values2(i mod 12);tmp=tmp+1;elsif(tmp=1) then cat=101111;seg_t=values2(i+1) mod 12);tmp=tmp+1;elsif(tmp=2) then ca

12、t=110111;seg_t=values2(i+2) mod 12);tmp=tmp+1;elsif(tmp=3) then cat=111011;seg_t=values2(i+3) mod 12);tmp=tmp+1;elsif(tmp=4) thencat=111101;seg_t=values2(i+4) mod 12);tmp=tmp+1;elsif(tmp=5) thencat=111110;seg_t=values2(i+5) mod 12);tmp=0;else cat=111111;seg_t=0000000;tmp=0;end if;if(k=1000) theni:=(

13、i+1) mod 12;k:=0;else k:=k+1;end if;end if; end if;end if;end process;seg=seg_t; end a;(2)仿真波形图 (3) 分析程序中设置一个控制状态转换的变量和计数的变量。当计数变量满足要求时,状态发生改变,波形图发生变化。仿真波形图的时候去掉了分频器,并对计数的周期也进行调整。否则很难看到所有状态。六. 故障及问题分析在做实验内容一时,第一次下载数码管显示数字不清晰,有些数字的几段线不亮。原因是没加分频器,频率太高导致输出效果不理想。对代码进行修改,加入分频器后,得到效果理想。七. 实验总结和结论总结:实验电路越来

14、越复杂,实验讲究精益求精,其实要想实现一个功能还是比较容易的,但是因为一个小小的功能耗费许多的元件这显然是不考虑实际的,这样的设计没有意义,设计电路就是要用尽量少的元件完成最完善的功能。在设计完电路后还会不断地发现新的问题,这主要是设计的时候考虑得不够全面造成。实验就是要不断探索找到最优的办法,这才是的实验分外的有意思,深深地吸引着我。结论:这次实验做完,让我明白电路的初步设计是很重要的,不要急于将想到的方法进行计算机仿真,应多想想将每一步都考虑好。这次实验我就是经过了详细的设计,将个方面全面考虑过后,然后通过实验仿真很快就得到了正确的结果。当然也有些跟原有想法不一样的地方,主要是器件本身的问题稍做修改基本都没有问题。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1