1、内 容 摘 要LED显示屏广泛应用于车站、码头、机场、医院、市场和其他公共场所。LED点阵显示是由多个独立的LED发光二极管封装而成。LED点阵显示屏可以显示数字或符号等。设计方案包括系统的硬件设计,软件流程图设计和VHDL语言的设计。设计采用动态扫描的显示方法。LED列有416译码器控制。关键词:LED 、 VHDL语言 、 416译码器目 录一、 概 述 1二、方案设计与论证2三、总原理图2四、元器件清单 4五、程序 6六、收获与体会 6七、参考文献 6一 、概述在实验仪中,16X16点阵的列驱动电路已经做好,其列选信号送到416译码电路,译码电路的输出通过8只75451驱动点阵管的16条
2、共阴极列线;DIN3.0为显示花样模式选择,高电平有效;CLK为时钟输入端。二 、方案设计与论证用LED显示屏显示信息,不论显示文字还是图形,都是控制与组成这些图形或文字的各个点所在位置相应的LED器件发光。事先把需要显示的图案转换成点阵图形,在按照显示控制的要求以一定的格式形成显示数据。对于只控制通断的的图形显示屏来说,每个LED发光器件占据数据中的1位。三 、总原理图四 、原件清单LED发光二级管 256个416译码器 1个EPF10K10LC84-4芯片 1个分频器 1个拨码开关 3个按键开关 1个导线 导线五 、程序library ieee;use ieee.std_logic_116
3、4.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;use ieee.numeric_std;entity keshe isport(clk,clr : in std_logic; din : in std_logic_vector(3 downto 0); dout : out std_logic_vector(15 downto 0); selout : out std_logic_vector(3 downto 0) );end keshe;architecture behave of keshe issi
4、gnal din_temp:std_logic_vector(3 downto 0);signal sel_temp :std_logic_vector(3 downto 0);signal dout_temp:std_logic_vector(15 downto 0);signal flag:std_logic; signal count: std_logic_vector(3 downto 0);signal x: std_logic_vector(1 downto 0);begin process (clk ,din,clr) variable note:integer :=0;vari
5、able num:integer :=0;begin if clr=1 thensel_temp0); dout_temp0); flag=1;dout_temp=0000000000000001; elsif clkevent and clk=1 thenif din=0000 then sel_temp=sel_temp+1; sel_temp=sel_temp+1;if sel_temp=1111 thensel_temp=0000;end if;selout=sel_temp;num:=num+1;if num=160 then num:=0;if flag=1 then lop1:f
6、or i in 1 to 15 loop dout_temp(i)=dout_temp(i-1); dout=dout_temp;if dout_temp(15)=1 thendout_temp(15)=0;flag=0;end if;end loop lop1;elsif flag=0 thenlop2:for i in 15 downto 1 loop dout_temp(i-1)=dout_temp(i); dout=dout_temp;if dout_temp(0)=0 thendout_temp(0)=1;flag=1;end if;end loop lop2;end if;end
7、if;elsif din=0001then count=count+1;if count=1111 then count=0000;note:=note+1;if note=100 thennote:=0;x=x+1;if x=11 thenxSELOUT=0000;dout SELOUT=0001;dout SELOUT=0010;dout SELOUT=0011;dout SELOUT=0100;dout SELOUT=0101;dout SELOUT=0110;dout SELOUT=0111;dout SELOUT=1000;dout SELOUT=1001;dout SELOUT=1
8、010;dout SELOUT=1011;dout SELOUT=1100;dout SELOUT=1101;dout SELOUT=1110;dout SELOUT=1111;dout NULL;end case;end if;if x=01 thencase count isWHEN 0000=SELOUT=0000;dout SELOUT=0001;dout SELOUT=0010;dout SELOUT=0011;dout SELOUT=0100;dout SELOUT=0101;dout SELOUT=0110;dout SELOUT=0111;dout SELOUT=1000;do
9、ut SELOUT=1001;dout SELOUT=1010;dout SELOUT=1011;dout SELOUT=1100;dout SELOUT=1101;dout SELOUT=1110;dout SELOUT=1111;dout NULL;end case;end if;if x=10 thencase count isWHEN 0000=SELOUT=0000;dout SELOUT=0001;dout SELOUT=0010;dout SELOUT=0011;dout SELOUT=0100;dout SELOUT=0101;dout SELOUT=0110;dout SEL
10、OUT=0111;dout SELOUT=1000;dout SELOUT=1001;dout SELOUT=1010;dout SELOUT=1011;dout SELOUT=1100;dout SELOUT=1101;dout SELOUT=1110;dout SELOUT=1111;dout NULL;end case;end if;if x=11 thencase count isWHEN 0000=SELOUT=0000;dout SELOUT=0001;dout SELOUT=0010;dout SELOUT=0011;dout SELOUT=0100;dout SELOUT=01
11、01;dout SELOUT=0110;dout SELOUT=0111;dout SELOUT=1000;dout SELOUT=1001;dout SELOUT=1010;dout SELOUT=1011;dout SELOUT=1100;dout SELOUT=1101;dout SELOUT=1110;dout SELOUT=1111;dout NULL;end case;end if;elsif din=0010then count=count+1;if count=1111 then countSELOUT=0000;dout SELOUT=0001;dout SELOUT=001
12、0;dout SELOUT=0011;dout SELOUT=0100;dout SELOUT=0101;dout SELOUT=0110;dout SELOUT=0111;dout SELOUT=1000;dout SELOUT=1001;dout SELOUT=1010;dout SELOUT=1011;dout SELOUT=1100;dout SELOUT=1101;dout SELOUT=1110;dout SELOUT=1111;dout NULL;end case;elsif din=0011then count=count+1;if count=1111 then countS
13、ELOUT=0000;dout SELOUT=0001;dout SELOUT=0010;dout SELOUT=0011;dout SELOUT=0100;dout SELOUT=0101;dout SELOUT=0110;dout SELOUT=0111;dout SELOUT=1000;dout SELOUT=1001;dout SELOUT=1010;dout SELOUT=1011;dout SELOUT=1100;dout SELOUT=1101;dout SELOUT=1110;dout SELOUT=1111;dout NULL;end case;elsif din=0100t
14、hen count=count+1;if count=1111 then countSELOUT=0000;dout SELOUT=0001;dout SELOUT=0010;dout SELOUT=0011;dout SELOUT=0100;dout SELOUT=0101;dout SELOUT=0110;dout SELOUT=0111;dout SELOUT=1000;dout SELOUT=1001;dout SELOUT=1010;dout SELOUT=1011;dout SELOUT=1100;dout SELOUT=1101;dout SELOUT=1110;dout SEL
15、OUT=1111;dout NULL;end case;elsif din=0101then count=count+1;if count=1111 then countSELOUT=0000;dout SELOUT=0001;dout SELOUT=0010;dout SELOUT=0011;dout SELOUT=0100;dout SELOUT=0101;dout SELOUT=0110;dout SELOUT=0111;dout SELOUT=1000;dout SELOUT=1001;dout SELOUT=1010;dout SELOUT=1011;dout SELOUT=1100;dout SELOUT=1101;dout SELOUT=1110;dout SELOUT=1111;dout NULL;end case;end if;end if;end process;end behave;六 、收获与体会通过这次课设,我不仅熟悉了VHDL语言的用运,提高了动手能力,还掌握了很多关于EDA方面的知识,收获很大。教师评语及设计成绩 评 语 课程设计成绩: 指导教师: 日期: 年 月 日七 、参考文献EDA技术与实验