数字电路与逻辑设计实验报告数码管扫描显示控制器设计与实现_第1页
数字电路与逻辑设计实验报告数码管扫描显示控制器设计与实现_第2页
数字电路与逻辑设计实验报告数码管扫描显示控制器设计与实现_第3页
数字电路与逻辑设计实验报告数码管扫描显示控制器设计与实现_第4页
数字电路与逻辑设计实验报告数码管扫描显示控制器设计与实现_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

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

2、3450->234501->345012->450123->501234->012345(2)向左滚动,用全来的数码管填充右边,直至全部变来,然后再依次从右边一个一个的点亮。状态为:012345->12345x->2345xx->345xxx->45xxxx->5xxxxx->xxxxxx->xxxxx0->xxxx01->xxx012->xx0123->x01234->012345。其中,x表示数码管不显示。四. 设计思路和过程(1)七段发光二极管(led)数码管是目前最常用的数字显示器,一

3、个led数码管可用一位0-9十进制数和一个小数点。下图为共阴极数码管显示0到9时各段对应的编码。digit shownabcdefg01111110101100002110110131111001401100115101101161011111711100008111111191111011(2)cat cat是数码管选通控制信号,分别对应6个共阴极数码管的公共端,当catn=0时,其对应的数码管被点亮。因此,通过控制cat cat,就可以控制6个数码管依次循环点亮。五. vhdl 程序、仿真波形图及分析1. (1) vhdl 程序library ieee;use ieee.std_logic

4、_1164.all;entity atthesametime2 is port(clk:in std_logic; catout:out std_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_t

5、mp:std_logic; signal cnt:integer; -分频记数begin process(clk)beginif (clk'event and clk='1') then -分频if cnt=49999 thencnt<=0;clk_tmp<= not clk_tmp;elsecnt<=cnt+1;end if;end if;end process; process(clk_tmp) begin if(clk_tmp'event and clk_tmp='1') then case cat is when&quo

6、t;111110"=>cat<="111101"b<="0110000" -显示数字1 when"111101"=>cat<="111011"b<="1101101" -显示数字2 when"111011"=>cat<="110111"b<="1111001" -显示数字3 when"110111"=>cat<="101111&qu

7、ot;b<="0110011" -显示数字4 when"101111"=>cat<="011111"b<="1011011" -显示数字5 when others =>cat<="111110"b<="1111110" -显示数字0 end case; end if; end process; catout<=cat; bout<=b;end a;(2)仿真波形图(3) 分析当clk_t第一个上升沿到来时,cat(0)到c

8、at(5)中只有cat(0)=0,表明第一个数码管被点亮,所显示的数字由b决定。此时,b=“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

9、(clk: in std_logic; mode:in std_logic; -控制信号 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

10、 cnt :integer range 0 to 5000000;beginprocess(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&

11、quot;,"1101101","1111001","0110011","1011011");-状态1constant values2: state:=("1111110","0110000","1101101","1111001","0110011","1011011","0000000","0000000","0000000",&qu

12、ot;0000000","0000000","0000000");-状态2beginif(clk'event 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"

13、seg_t<=values1(i mod 12);tmp<=tmp+1;elsif(tmp=1) then cat<="101111"seg_t<=values1(i+1) mod 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&l

14、t;=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<="0000000"tmp<=0;end if;if(k=1000) then-第二个分频器,i:=(i+1) mod 12;k:=

15、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 c

16、at<="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<=

17、values2(i+5) mod 12);tmp<=0;else cat<="111111"seg_t<="0000000"tmp<=0;end if;if(k=1000) theni:=(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) 分析程序中设置一个控制状态转换的变量和计数的变量。当计数变量满足要求时,状态发生改变,波形图发生变化。仿真波形图的时候去掉了分频器,并对计数的周期也进行调整。否则很难看到所有状态。六. 故障及问题分析在做实验内容一时,第一次下载数码管显示数字不清晰,有些数字的几段线不亮。原因是没加分频器,频率太高导致输出效果不理想。对代码进行修改,加入分频器后,得到效果理想。七. 实验总结和结论总结:实验电路越来越复杂,实验讲究精益求精,其实要想实现一个功能还是比较容易的,但是因为一

温馨提示

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

评论

0/150

提交评论