EDA(LED点阵显示屏控制系统设计)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《EDA技术与应用》
课程设计报告
题目: LED点阵显示屏控制系统设计院(系):机电与自动化学院
专业班级:自动化
学生姓名:
学号: 2014
指导教师:
2017年6月 19日至2017年 6 月23 日
*******
《EDA技术及应用》课程设计任务书
摘要:我国经济正处于发展的高峰期,也需要广大的公共场合信息公示平台,而利用LED点阵滚动显示正好符合情况,且这种方式已经成为信息传递的一种重要手段。因此,在日常生活中,点阵随处可见。通过多种控制手段,点阵还可以实现各种文字甚至图案的动态显示。在不同的应用场合,点阵的设计要求也是不同的。传统思路一般是应用单片机实现点阵控制,但该方法有一定的局限性。
该次课程设计主要研究利用VHDL语言编程来设计汉字的显示。首先描述相应的设计电路;然后叙述在16*16矩阵显示汉字的原理;最后给出描述功能的VHDL设计语言。并通过编程、调试、仿真、下载正确实现汉字滚动、扫描显示结果。
关键词: LED点阵;FPGA;VHDL语言;汉字滚动显示。
目录
1.实验要求及总体方案 (1)
1.1 实验要求 (1)
1.2 扫描显示 (1)
1.3 滚动显示 (1)
2.LED点阵显示原理 (1)
2.1 LED点阵原理 (1)
2.2汉字取模 (2)
3.扫描显示 (3)
3.1 设计基本原理 (3)
3.2计数器设计 (3)
3.3 列驱动设计 (4)
3.4 行驱动设计 (4)
4.仿真图原理图及实物图 (4)
4.1仿真图 (4)
4.2原理图 (5)
4.3实物图 (6)
5.程序 (7)
参考文献: (10)
1.实验要求及总体方案
1.1 实验要求
本课程设计要求根据输入指令要求对16*16点阵的LED显示屏进行显示控制,在控制过程中以EP3C10E144C8为主控芯片,利用译码芯片进行行扫描控制,同时输出字型码进行显示控制。
1.2 扫描显示
采用从上往下依次点亮,扫描显示16列。每次显示一个汉字,显示完毕后扫描显示第二汉字,之后刷新显示第三汉字,依次刷新显示“高思禹20142101009”。循环显示以上汉字。
1.3 滚动显示
利用ROM库的方法,采用滚屏显示,使每一位都置‘1’这就实现了点亮;当第‘0’位也置‘1’后,给第0位也置‘0’,再采用上下的方法将每一位都置‘0’,这就实现了反相依次熄灭,等第15位为‘0’时,又重新开始,以此循环。
2.LED点阵显示原理
2.1 LED点阵原理
以下为16×16点阵LED外观及引脚图及其等效电路,只要其对应的X、Y轴顺向偏压,即可使LED发亮。例如如果想使左上角LED点亮,则Y0=1,X0=0即可。应用时限流电阻可以放在X轴或Y轴。
图2-1 16*16点阵LED等效电路
图2-1 16*16点阵LED等效电路
图2-1 点阵图
点阵LED一般采用扫描式显示,实际运用分为三种方式:点扫面、行扫描、列扫描。若使用第一种方式,其扫描频率必须大于16×64=1024Hz,周期小于1ms即可。若使用第二和第三种方式,则频率必须大于16×8=128Hz,周期小于7.8ms即可符合视觉暂留要求。此外一次驱动一列或一行(16颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。
2.2汉字取模
图2-2 汉字取模
用取模软件依次取出相应字的代码,其中的16进制数可利用计算机中的计算器软件转换成二进制即可。
3.扫描显示
3.1 设计基本原理
图3-1 基本原理图
16×16扫描LED点阵只要其对应的X、Y轴顺向偏压,即可使LED发亮;计数器模块用来控制每个字显示的时间长短,当计数器计数到设定的值后,显示屏就换下一个字;本设计由32进制计数器(COUNT32),16进制计数器(COUNT16),行驱动(XIANSHI)和列驱动(ROWCON)组成。
3.2计数器设计
s1是计数器,其每计一次数,更换一个字显示。例如当计数为“0010”时显示“*”,当计数为“0011”时显示“*”,按要求需显示“*********”,所以当计数为“1110”时又循环显示“*”,给其脉冲周期为1S,1S钟换一个字。
3.3 列驱动设计
b0控制所亮的行,当输出为0001时,给点阵的第一列高电平,输出为0010H 时,给点阵的第二行列电平,依次类推,逐次给每列高电平。
3.4 行驱动设计
该模块控制的是所显示的字。例如当s1为0001时,表示显示第一个字;当s1为00010时,表示显示第二个字,依次类推。b0控制所显示的为字的第几行,例如当b0为0001时,表示输出字的第一行文字信息;b0为0010时,表示输出字的第二行文字信息,依次类推。
4.仿真图原理图及实物图
4.1仿真图
图4-1 时序仿真图
4.2原理图
图4-2 原理图(上下连接)
4.3实物图
图4-3滚动显示实物图
5.程序Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.std_logic_unsigned.all;
Entity G is
Port(clk:in std_logic;
s0:out std_logic_vector(3 downto 0);
Cout:out std_logic_vector(15 downto 0)); End G;
ARCHITECTURE bhv of G is
signal b0:std_logic_vector(3 downto 0); Signal s1:std_logic_vector(3 downto 0); Signal s2:std_logic_vector(15 downto 0); Begin
a1:process(clk) begin
If clk'event and clk='1' then
b0<=b0+1;
end if;
s0<=b0;
End process;
a2:process(clk) begin
If clk'event and clk='1' then
Case s1 is
When"0001"=>case b0 is--高When"0001"=>s2<="0000000110000000"; When"0010"=>s2<="1111111111111111"; When"0011"=>s2<="0000000000000000"; When"0100"=>s2<="0001111111111000"; When"0101"=>s2<="0001100000011000"; When"0110"=>s2<="0001111111111000"; When"0111"=>s2<="0000110000110000"; When"1000"=>s2<="0111111111111110"; When"1001"=>s2<="0110100000000110"; When"1010"=>s2<="0110111111110110"; When"1011"=>s2<="0110110000110110";