当前位置:文档之家› EDA课程设计八位数码管扫描显示电路的设计 2解读

EDA课程设计八位数码管扫描显示电路的设计 2解读

EDA技术应用期末论文题目:八位数码管动态显示姓名:班级:学号:1.系统总体方案设计 (1)2. LED的工作原理 (2)2.1 LED工作原理 (3)2.2 LED动态扫描显示原理 (3)3.系统设计 (4)3.1硬件电路设计 (9)3.2 VHDL代码设计 (9)4.运行调试......................................................,,7 4.1时序仿真. (7)5 总结..............................................,,,,,,,,,,,,,,,96.参考文献 (10)1.系统总体方案设计设计流程图如下:首先,我们要对所要设计的八位数码管静态扫描显示电路充分理解,同时在了解了所给的硬件器材的基础上需进行“源程序的编辑和编译”——用一定的逻辑表达手段将设计表达出来;其次要进行“逻辑综合”——将用一定的逻辑表达手段表达出来的设计,经过一系列的操作,分解成一系列的基本逻辑电路及对应关系;然后要进行“目标器件的布线∕适配”——在选定的目标器件中建立这些基本逻辑电路及对应关系;最后,目标器件的编程下载——将前面的软件设计经过编程变成具体的设计系统,同时在设计过程中要进行有关“仿真”——模拟有关设计结果,看是否与设计构想相符。

系统结构框图如下:2. LED的工作原理2.1 LED工作原理LED为分段式半导体显示器,通常称为七段发光二极管显示器。

下图为七段发光二极管显示器共阴极和共阳极的电路图。

对共阴极显示器的公共端应接地,给a-g输入相应高电平,对应字段的发光二极管显示十进制数;对共阳极的公共端应接+5V电源,给a-g输入端相应低电平,对应字段的发光二极管也显示十进制数。

2.2 LED动态扫描显示原理LED有段码和位码之分,所谓段码就是让LED显示出“8.”的八位数据,一般情况下要通过一个译码电路,将输入的4位2进制数转换为与LED显示对应的8位段码。

位码也就是LED的显示使能端,对于共阳级的LED而言,高电平使能。

要让8个LED同时工作,显示数据,就是要不停的循环扫描每一个LED,并在使能每一个LED的同时,输入所需显示的数据对应的8位段码。

虽然8个LED是依次显示,但是受视觉分辨率的影响,看到的现象是8个LED同时工作。

多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描的频率大于50Hz,将看不到闪烁现象。

3 系统设计3.1 硬件电路设计3.2 VHDL程序设计library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_signed.all;entity scan_seg8 isport(clk3,clk5:in std_logic;rst: in std_logic;seg_da:out std_logic_vector(7 downto 0);seg_sel:out std_logic_vector(2 downto 0));end scan_seg8;architecture ado of scan_seg8 issignalseg_buf1,seg_buf2,seg_buf3,seg_buf4,seg_buf0:std_logic_vector(3 downto 0);signal seg_buf5,seg_buf6,seg_buf7,seg_buf8:std_logic_vector(3 downto 0);signal seg_cnt:std_logic_vector(2 downto 0);signal seg_temp:std_logic_vector(3 downto 0);signal clk:std_logic;beginprocess(clk5)beginif clk5'event and clk5='1' thenclk<=not clk;end if;end process;process(clk5,rst)beginif clk5' event and clk5='1' thenif clk='1' thenseg_buf1<="0010";seg_buf2<="0010";seg_buf3<="1000";seg_buf4<="0010";seg_buf5<="0000";seg_buf6<="0001";seg_buf7<="0000";seg_buf8<="0010";elseseg_buf1<="1111";seg_buf2<="1111";seg_buf3<="1111";seg_buf4<="1111";seg_buf5<="1111";seg_buf6<="1000";seg_buf7<="0001";seg_buf8<="0000";end if;end if;end process;process (clk3,rst)beginif clk3' event and clk3='1' thenif rst='1' thenseg_cnt<="000";elseseg_cnt<=seg_cnt+1;end if;end if;end process;seg_sel<=seg_cnt;process(seg_cnt,seg_buf1,seg_buf2,seg_buf3,seg_buf4,seg_buf5,seg_buf6 ,seg_buf7,seg_buf8)begincase seg_cnt iswhen o"0" => seg_temp<=seg_buf1;when o"1" => seg_temp<=seg_buf2;when o"2" => seg_temp<=seg_buf3;when o"3" => seg_temp<=seg_buf4;when o"4" => seg_temp<=seg_buf5;when o"5" => seg_temp<=seg_buf6;when o"6" => seg_temp<=seg_buf7;when o"7" => seg_temp<=seg_buf8;when others=> seg_temp<="XXXX";end case;end process;process(seg_temp)begincase seg_temp iswhen "0000"=> seg_da<="00111111";when "0001"=> seg_da<="00000110";when "0010"=> seg_da<="01011011";when "0011"=> seg_da<="01001111";when "0100"=> seg_da<="01100110";when "0101"=> seg_da<="01101101";when "0110"=> seg_da<="01111101";when "0111"=> seg_da<="00000111";when "1000"=> seg_da<="01111111";when "1001"=> seg_da<="01101111";when "1010"=> seg_da<="01110111";when "1011"=> seg_da<="01111100";when "1100"=> seg_da<="00111001";when "1101"=> seg_da<="01011110";when "1110"=> seg_da<="01111001";when "1111"=> seg_da<="00000000";when others=> null;end case;end process;end architecture ado;4 运行调试4.1 时序仿真(1)建立波形文件。

选择File项及其New,再选择New窗中的Waveform Editer..项,打开波形编辑窗。

(2)输入信号节点。

在波形编辑窗的上方选择Node项,在下拉菜单中选择输入信号,在弹出的窗口中首先点击List键,这时左窗口将列出设计所以信号节点。

由于设计者有时只需要观察其中部分信号的波形,因此要利用中间的“=>”键将需要观察的信号选到右栏中,然后点击OK键即可将测试信号。

(3)设置波形参量。

相关主题