关键词不能为空

当前您在: 主页 > 英语 >

16×16的点阵显示设计

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-03-01 10:30
tags:

-

2021年3月1日发(作者:海瑟微)


目录




一、总体设计 思路


..................................... .................................................. .................


1



1.1


基本原理


< br>.


................................... .................................................. .....................


1



1.2


总体设计图框图


...... .................................................. ......................................


3



1.3


顶层文件设计


....... .................................................. .........................................


3



二、单元电路设计


.............................................. .................................................. ........


4



2.1


时序控制模块


....... .................................................. .........................................


4



2.2


扫描控制模块


....... .................................................. .........................................


5



2.3


显示控制模块


....... .................................................. .........................................


6



三、仿真结果

................................................ .................................................. ............


1


3


四 、系统调试


.................................. .................................................. ..........................


1


5


4.1


创建工程


......... .................................................. .............................................


1


5


4.2


全程编译


......... .................................................. .............................................


1


5


4.3


管脚绑定


......... .................................................. .............................................


1


5


4.4


硬件调试


....................... .................................................. ..............................


1


6


五、心得体会

< br>............................................... .................................................. .............


1


7


六、附录


................................... .................................................. .................................


1


8


6.1


总电路图


......... .................................................. .............................................


1


8


6.2


参考程序:


........ .................................................. ..........................................


1


9


七、参考文献

< br>............................................... .................................................. .............


2


7











一、总体设计思路



1.1


基本原理



LED


就是


Light Emitting Diode


(发光二极管)的缩写。在某些半导体材


料的


PN< /p>


结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形

式释放出来,从而把电能直接转换为光能。


PN


结加反向电 压,少数载流子难以


注入,


故不发光。


这种利用注入式电致发光原理制作的二极管叫发光二极管,




LED



LED


显示屏是一种通过控制半导体发光二极管的显示方式,用来显示文


字、图形、图像、动 画、行情、视频、录像信号等各种信息的显示屏幕。



中小规 模的


LED


点阵显示使用非常广泛,


采 用单片机控制时,


需要扩展大量


的外围资源,

< br>并且不便于进行扩展、


修改和维护。


在系统可编程逻辑器 件具有丰


富的


I/O


口及内部资源,器 件的编程和修改也极为方便。本设计是以


Altera



司可编程逻辑芯片


EP1K30TC144-3


为控制核心、附加一定外围电路组成的一个


16


×

< p>
16


点阵,此点阵系统使用逐列循环扫描的方式来显示自己姓名的英文大写


字母。这样不但简化了外围电路、而且易于修改、扩展和维护。



16


×


16


扫 描


LED


点阵的工作原理同


8


位扫描数码管类似。


它有


16

< br>个共阴极


输出端口


,


每个共阴极 对应有


16



LED

< br>显示灯,


所以其扫描译码地址需


4


位信号


线(


SEL0-SEL3


)< /p>


,其汉字扫描码由


16


位段地址(


0-15


)输入。



通过时钟的每列


扫描显示完整汉字。



点阵


LED


一般采用扫描式显示,实际 运用分为三种方式:




1


)点扫描




2


)行扫描




3


)列扫描




若使用第一种方式,其扫描频率必须大于

16


×


64=1024Hz


,周期 小于


1ms



可。若使用第二和第三种 方式,则频率必须大于


16


×


8=12 8Hz


,周期小于


7.8ms


即可符合 视觉暂留要求。此外一次驱动一列或一行(


8



LED


)时需外加驱动电


路提高电流,否则

< p>
LED


亮度会不足。




1



实验箱上为我们提供了


16*16


的点阵显示模块。通过观察,我们可以看到,


此点阵显示屏即为


16


行、


1 6


列的


LED


显示灯。那么控制这些灯 的亮暗分布,就


能达到字符显示的目的。首先我们设计要正确显示自己名字的英文大写字 母



T,A,N,G,J,I,N,G



,显示屏上的灯的亮暗情况具体应如何。


< br>如第一个字母‘


T



:


0000


11111


11111


0000


0000


0000


0000


0000


0000


0000


0000


0000


0000


0000


0000


0000



如果高电平‘


1


时表示灯是亮的,低 电平‘


0


’时灯是暗的,这样上面的灯


呈现在我们眼前的就是‘


T


’字了。依次类推,我们就可以设计 出所有要显示的


字母了。


这样这些字母就好象是被我们当作了固 定模型了。


但如何点亮这些灯呢,


这就要求有一个脉冲循环扫描 的电路,


我们采用列扫描,


当扫描的和我们先设计


好的字母模型的高电平相匹配时,


灯就相应的点亮。


由于扫描的速度很快,


我们


人的眼睛并不会感到灯的闪烁,所以 每扫描完


16


列就会显示在我们眼中一个字

母了。


但要所有的字母就可以依次的显示出来并不停的循环显示,

< br>就还要再有一


个时序控制电路来控制。


此时序控制电路象 一个计数器,


有自动清零的功能,



样 就可以实现循环的效果了。








2



1.2


总体设计图框图





1.2


总 体设计框图




1.3


顶层文件设计



顶层文件来实现循环显示各个字母的功能。


它由时序控制模块,


扫描模块和


字母显示控制模块组成。


时序控制模块利 用脉冲来控制每个字母的显示时间。



描控制模块利用列扫描脉 冲产生列扫描信号。


而字母显示控制模块用时序控制模


块和扫描 控制模块所提供的脉冲信号来点亮各个字母模型中相应的灯。


在时序模

< br>块的控制下(此设计中每八个字母为一个循环)实现了各个字母循环显示的功


能。



要实现显示自己的英文名字大写字母。结合实际,模块< /p>


chw



cnta, cora


分别实现时序控制模块,扫描模块和字母显示控制模块。具体电路的



顶层文件


设计如下图





1.3


顶层文件设计



3



二、单元电路设计



2.1


时序控制模块



此模块用来控制每个字母的显示时间,


当计满四个脉冲时


cnt


自动清零,



每个字母显示四 个脉冲的时间。一共有八个字母(


T,A,N,G,J,I,N,G


。当


tmp=1000


时,


tmp


自动清零,


此后是这些字母显示的下 一个循环。


如此不停的循


环显示各个字母。


为使字母不断地循环显示,


并且使每个字母之间有停顿,


就需要在中间加一


定的延时和循环环节。


在这一环节中,


可以通过修改其数值来控制每个字母的显


示时 间。





2.1


时序控制模块



程序如下:



Library ieee;


use _logic_;


use _logic_;


Entity chw is





Port(clk:in std_logic;




















q:out std_logic_vector(3 downto 0));






End chw;


Architecture chw_arc of chw is



Begin


Process(clk)


variable cnt:integer range 0 to 1000;



variable tmp:std_logic_vector(3 downto 0);



















4



begin


If clk'event and clk='1'then


If cnt<1000 then




cnt:=cnt+1;


Else




cnt:=0;




If tmp=




tmp:=




Else


tmp:=tmp+1;


End if;


End if;


End if;


q<=tmp;


End process;


End chw_arc;


2.2


扫描控制模块



此模块用来实现列扫描控制,通过对每一列的扫描来完成对字母的现实,


,< /p>


每扫描完


16


列,


tmp


自动清零,这样就提供了一个列循环扫描的功能,这样就


可以循环的是各个字母。



只要扫描的频率足够快,就能给人 以连续的感觉。因此要控制扫描的频率,


不能太低,否则,就会造成视觉上的不连续。< /p>






2.2


扫描控制模块




扫描程序如下



5



Library ieee;


use _logic_;


use _logic_;


Entity cnta is





Port(clk:in std_logic;

















--


端口定义



输入信号





q:out std_logic_vector(3 downto 0));





--


端口定义



输出信号



End cnta;


Architecture count of cnta is



Signal lie:std_logic_vector(3 downto 0);


Begin


Process(clk)
























begin


If clk'event and clk='1'then


If lie=




Lie<=


Else




Lie<=lie+1;


End if;


End if;


q<=lie-1;


End process;


End count;



2.3


显示控制模块



此模块为列驱动控制器


sel


控制的是所显示的字< /p>


,


用来实现显示出相应的字


母。


ch


控制字母的个数,


sel

< br>控制扫描的行数。


使对应列选择信号输出每一列对


应的数 据,点量相应的灯。



例如当


ch



0000B


时,表示输出字的第一列文字 信息,


sel



0001B

< p>
时,


表示输出字的第二列文字信息,依次类推。



6





2.3


显示控制模块




显示程序如下:



LIBRARY IEEE;


USE IEEE. STD_LOGIC_;


ENTITY cora IS









PORT(ch : IN STD_LOGIC_VECTOR(3 downto 0);


sel : IN STD_LOGIC_VECTOR(3 downto 0);


q : OUT STD_LOGIC_VECTOR(15 downto 0));


END cora;



ARCHITECTURE cora_arc OF cora IS


BEGIN


PROCESS(ch,sel)


BEGIN


CASE ch IS















When


case sel is
















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=



7

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=









































when others=>null; end case;


When


case sel is
















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when others=>null;



end case;


When


case sel is
















when



=>q<=

















when



=>q<=



8

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=










































when others=>null; end case;


When


case sel is
















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=



9

















when



=>q<=

















when



=>q<=










































when others=>null; end case;


When


case sel is
















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=









































when others=>null; end case;


When


case sel is
















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=



10

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=










































when others=>null; end case;


When


case sel is

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=










































when others=>null; end case;


When


case sel is


11

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=

















when



=>q<=










































when others=>null; end case;















when others=>null; end case;















END PROCESS;
















END cora_arc;















12



三、仿真结果



3.1


时序控制模块仿真






3.2


扫描控制模块仿真


























13


-


-


-


-


-


-


-


-



本文更新与2021-03-01 10:30,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/687700.html

16×16的点阵显示设计的相关文章