EDALED点阵显示屏控制系统设计.docx
《EDALED点阵显示屏控制系统设计.docx》由会员分享,可在线阅读,更多相关《EDALED点阵显示屏控制系统设计.docx(12页珍藏版)》请在冰豆网上搜索。
EDALED点阵显示屏控制系统设计
EDA技术与应用》
课程设计报告
题目:
LED点阵显示屏控制系统设计
院(系):
机电与自动化学院
专业班级:
自动化
学生姓名:
学号:
2014
指导教师:
2017年6月19日至2017年6月23日
EDA技术及应用》课程设计任务书
一、设计题目
LED点阵显示屏控制系统设计
二、设计主要内容
(1)控制要求
本课程设计要求根据输入指令要求对16*16点阵的LED显示屏进行显示控制,在控
制过程中以EP3C10E144C为主控芯片,利用译码芯片进行行扫描控制,同时输出字型8
码进行显示控制。
1根据控制要求,编写VHDL程序实现LED点阵屏控制功能;
2使用字库转换软件实现汉字字型码的转换。
3要求能够实现名字及学号的现示,要求能够实现字符不同的移动显示方向,能
够实现不同的显示速度(时钟频率不变)。
(2)设计要求
1设计FPGA的基础工作电路;
2设计LED点阵屏,译码电路,驱动电路及FPGA芯片的硬件电路连接;
3程序设计及仿真调试;
4程序下载并进行硬件调试
(3)撰写说明书
1含系统硬件设计电路;
2含软件设计(程序及必要的说明);
3含软件仿真及生成的顶层文件,含代码生成的硬件电路;
4调试及调试结果,以及在调试过程中出现的问题及解决办法。
(1)16*16点阵LED屏可显示数字及汉字,对于点阵,在给出字型码数据的同时
给出行扫描信号,通过控制给出数据的速度,结合人体的视觉效应可以使点阵屏稳定
显示字符;
(2)本系统控制的还有译码电路及驱动电路。
通过输出译码数据,可以调整显示
字符的移动方向。
(3)在控制过程中,可以外接控制开关控制字符显示方式;
(4)
EP3C10E144C8芯片只能输出3.3V电压,对于16个LED液晶灯的驱动是不够
的,因此必须有外接驱动电路提供足够的驱动能力。
根据
CLK输入信号产生控制信号点阵
屏的
四、要求的设计成果
在QuartusII软件中新建原理图文件,编译,仿真,锁定管脚并下载到目标芯片。
(1)根据设计要求,设计系统的原理框图,说明系统中各主要组成部分的功能;
(2)在QuartusII软件中,编写各个模块VHDL源程序;并上机调试通过;
(3)根据软件编好用于系统仿真的测试文件;
(4)编好用于硬件验证的管脚锁定文件;
(5)记录系统各个模块仿真结果;
(6)记录调试过程中出现的问题及解决办法。
注意:
基本要求学生必须完成,学有余力的学生可以在基本要求完成的前提下,选
择其它方案完成设计。
一般来说,生成的硬件电路越简单考查评价就越高。
五、进程安排
序号
课程设计内容
学时分
配
备注
1
集中学生学习课程设计的关键理论知识、分配设计任务、明确设计要求、查找资料等。
0.5天
2
根据任务的要求进行方案构思,初选方案,绘制系统原理框图并与指导教师讨论,方案定稿。
0.5天
3
完成各模块的VHDL程序设计、编译和时序仿真
2天
4
编程、下载,结合硬件平台,进行调试。
完成顶层文件图绘制,对编制好的文件交给老师检查,并按照老师要求修改。
1天
5
撰写课程设计说明书
0.5天
6
答辩及验收课程设计
0.5天
合计
5天
六、主要参考资料
[1]侯伯享.VHDL硬件描述语言与数字逻辑电路设计.西安:
西安电子科技大学出版,2010
[2]潘松.EDA技术实用教程.成都:
电子科技大学出版社,2010
[3]李玉山.电子系统集成设计技术.北京:
电子工业出版社,2010.6.
[4]李国丽.EDA与数字系统设计.北京:
机械工业出版社,2009
[5]周彩宝.VHDL语言及其应用.上海:
华东计算机技术研究所:
2009
[6]谭会生.EDA技术中和应用实例与分析.西安:
西安电子科技大学出版社,2008
指导教师(签名):
20年月日
摘要:
我国经济正处于发展的高峰期,也需要广大的公共场合信息公示平台,而利用LED点阵
滚动显示正好符合情况,且这种方式已经成为信息传递的一种重要手段。
因此,在日常生活中,点
阵随处可见。
通过多种控制手段,点阵还可以实现各种文字甚至图案的动态显示。
在不同的应用场
合,点阵的设计要求也是不同的。
传统思路一般是应用单片机实现点阵控制,但该方法有一定的局
限性。
该次课程设计主要研究利用VHDL语言编程来设计汉字的显示。
首先描述相应的设计电路;然
后叙述在16*16矩阵显示汉字的原理;最后给出描述功能的VHDL设计语言。
并通过编程、调试、仿真、
下载正确实现汉字滚动、扫描显示结果。
关键词:
LED点阵;FPGA;VHDL语言;汉字滚动显示。
1.实验要求及总体方案1
1.1实验要求1
1.2扫描显示1
1.3滚动显示1
2.LED点阵显示原理1
2.1LED点阵原理1
2.2汉字取模2
3.扫描显示3
1.1设计基本原理3
1.2计数器设计3
1.3列驱动设计4
1.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.1LED点阵原理
以下为16×16点阵LED外观及引脚图及其等效电路,只要其对应的X、Y轴顺向偏压,
即可使LED发亮。
例如如果想使左上角LED点亮,则Y0=1,X0=0即可。
应用时限流电阻
可以放在X轴或Y轴。
图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.2原理图
4.3实物图
5.程序
Libraryieee;
Useieee.std_logic_1164.all;
Useieee.std_logic_unsigned.all;
EntityGis
Port(clk:
instd_logic;
s0:
outstd_logic_vector(3downto0);
Cout:
outstd_logic_vector(15downto0));
EndG;
ARCHITECTUREbhvofGissignalb0:
std_logic_vector(3downto0);Signals1:
std_logic_vector(3downto0);
Signals2:
std_logic_vector(15downto0);
Begin
a1:
process(clk)begin
Ifclk'eventandclk='1'thenb0<=b0+1;
endif;
s0<=b0;
Endprocess;
a2:
process(clk)begin
Ifclk'eventandclk='1'then
Cases1is
When"0001"=>caseb0is--高
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";
When"1100"=>s2<="0110110000110110";
When"1101"=>s2<="0110111111110110";
Whenothers=>s2<="0000000000000000";
Endcase;
When"0010"=>caseb0is--*
When"1111"=>s2<="0000000000000000";
When"0000"=>s2<="0111111111111110";
When"0001"=>s2<="0111000110001110";
When"0010"=>s2<="0111000110001110";
When"0011"=>s2<="0111111111111110";
When"0100"=>s2<="0111000110001110";
When"0101"=>s2<="0111000110001110";
When"0110"=>s2<="0111111111111100";
When"0111"=>s2<="0000000000000000";
When"1000"=>s2<="0111110110001100";
When"1001"=>s2<="0111110111001110";
When"1010"=>s2<="0110110011100110";
When"1011"=>s2<="1110110001111111";
When"1100"=>s2<="1100110000011011";
When"1101"=>s2<="1100111111111000";
Whenothers=>s2<="0000000000000000";
Endcase;
When"0011"=>caseb0is--*
When"1111"=>s2<="0000000000000000";
When"0001"=>s2<="0111111111111110";
When"0010"=>s2<="0000000110000000";
When"0011"=>s2<="0011111111111100";
When"0100"=>s2<="0111000110000110";
When"0101"=>s2<="0111000110000110";
When"0110"=>s2<="0011111111111100";
When"0111"=>s2<="0000000110000000";
When"1000"=>s2<="0111111111111110";
When"1001"=>s2<="1110000110110111";
When"1010"=>s2<="1110000110111111";
When"1011"=>s2<="1110000011111111";
When"1100"=>s2<="1111111100011111";
When"1101"=>s2<="1110000000001111";
When"1110"=>s2<="1110000001111110";
Whenothers=>s2<="0000000000000000";
Endcase;
Whenothers=>s2<="0000000000000000";
Endcase;
Endif;
Cout<=s2;
Endprocess;
a3:
process(clk)
Variablem:
integerrange0to511;
Variableint:
std_logic;
Begin
Ifclk'eventandclk='1'thenm:
=m+1;
Ifm=511then
s1<=s1+1;
Endif;
Endif;
Endprocess;
end;
程序只模拟扫描显示“高**”三个字。
参考文献:
[1]郭照南,孙胜麟.电子技术与EDA技术实验及仿真.长沙:
中南大学出版社,2012.4
[2]孟庆斌,司敏山.EDA实验教程.天津:
南开大学出出版社,2011.8
[3]吴岩海.EDA技术及应用.西安:
西安电子科技大学出版社,2012.1
[4]徐飞.EDA技术与实践.北京:
清华大学出版社,2011.6
课程设计成绩评定表
成绩评定
项目
比例
得分
平时成绩(百分制记分)
30%
业务考核成绩(百分制记分)
70%
总评成绩(百分制记分)
100%
评定等级
优良中及格不及格
指导教师(签名)
20年月日