EDALED点阵显示屏控制系统设计.docx

上传人:b****8 文档编号:9948178 上传时间:2023-02-07 格式:DOCX 页数:18 大小:283.76KB
下载 相关 举报
EDALED点阵显示屏控制系统设计.docx_第1页
第1页 / 共18页
EDALED点阵显示屏控制系统设计.docx_第2页
第2页 / 共18页
EDALED点阵显示屏控制系统设计.docx_第3页
第3页 / 共18页
EDALED点阵显示屏控制系统设计.docx_第4页
第4页 / 共18页
EDALED点阵显示屏控制系统设计.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

EDALED点阵显示屏控制系统设计.docx

《EDALED点阵显示屏控制系统设计.docx》由会员分享,可在线阅读,更多相关《EDALED点阵显示屏控制系统设计.docx(18页珍藏版)》请在冰豆网上搜索。

EDALED点阵显示屏控制系统设计.docx

EDALED点阵显示屏控制系统设计

《EDA技术与应用》

课程设计报告

 

题目:

LED点阵显示屏控制系统设计

院(系):

机电与自动化学院

专业班级:

自动化

学生姓名:

学号:

2014

指导教师:

 

2017年6月19日至2017年6月23日

 

*******

《EDA技术及应用》课程设计任务书

一、设计题目

LED点阵显示屏控制系统设计

二、设计主要内容

(1)控制要求

本课程设计要求根据输入指令要求对16*16点阵的LED显示屏进行显示控制,在控制过程中以EP3C10E144C8为主控芯片,利用译码芯片进行行扫描控制,同时输出字型码进行显示控制。

①根据控制要求,编写VHDL程序实现LED点阵屏控制功能;

②使用字库转换软件实现汉字字型码的转换。

③要求能够实现名字及学号的现示,要求能够实现字符不同的移动显示方向,能够实现不同的显示速度(时钟频率不变)。

(2)设计要求

①设计FPGA的基础工作电路;

②设计LED点阵屏,译码电路,驱动电路及FPGA芯片的硬件电路连接;

③程序设计及仿真调试;

④程序下载并进行硬件调试

(3)撰写说明书

①含系统硬件设计电路;

②含软件设计(程序及必要的说明);

③含软件仿真及生成的顶层文件,含代码生成的硬件电路;

④调试及调试结果,以及在调试过程中出现的问题及解决办法。

三、原始资料

(1)16*16点阵LED屏可显示数字及汉字,对于点阵,在给出字型码数据的同时给出行扫描信号,通过控制给出数据的速度,结合人体的视觉效应可以使点阵屏稳定显示字符;

(2)本系统控制的还有译码电路及驱动电路。

通过输出译码数据,可以调整显示字符的移动方向。

(3)在控制过程中,可以外接控制开关控制字符显示方式;

(4)EP3C10E144C8芯片只能输出3.3V电压,对于16个LED液晶灯的驱动是不够的,因此必须有外接驱动电路提供足够的驱动能力。

四、要求的设计成果

在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实验要求

本课程设计要求根据输入指令要求对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-116*16点阵LED等效电路

图2-116*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.程序

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;

ARCHITECTUREbhvofGis

signalb0:

std_logic_vector(3downto0);

Signals1:

std_logic_vector(3downto0);

Signals2:

std_logic_vector(15downto0);

Begin

a1:

process(clk)begin

Ifclk'eventandclk='1'then

b0<=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年月日

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1