EDA技术课程设计报告LED点阵汉字显示.docx
- 文档编号:26716872
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:38
- 大小:444.49KB
EDA技术课程设计报告LED点阵汉字显示.docx
《EDA技术课程设计报告LED点阵汉字显示.docx》由会员分享,可在线阅读,更多相关《EDA技术课程设计报告LED点阵汉字显示.docx(38页珍藏版)》请在冰豆网上搜索。
EDA技术课程设计报告LED点阵汉字显示
EDA技术课程设计报告
题目:
LED点阵汉字显示
姓名
学号
班级
指导教师
2012年1月12日
要求:
1.指导教师按照课程设计大纲要求完成学生课程设计指导工作。
2.课程设计任务书由指导教师照大纲要求填写,内容要全面。
3.课程设计报告由参加本学生填写。
课程设计结束时交指导教师。
4.指导教师要根据每一位学生课程设计任务完成情况,认真审核设计报告,并在课程设计结束时,给出客观、准确的评语和成绩。
5.课程设计任务书和报告要语言流畅,图表正确规范。
课程设计任务书
班级姓名学号
课程设计题目LED点阵汉字显示
课程设计起止日期2011年12月26日至2012年1月13日
实习地点实验楼308
课程设计内容与要求
设计内容:
LED点阵汉字显示
要求:
1、及格:
在实验箱上16×16点阵模块上显示汉字“电”。
2、中:
设置不同的清屏方式(上下左右)。
3、良:
滚动显示汉字“电”。
4、优:
滚动显示“电子信息工程”。
指导教师
2011年12月26日
一、设计原理与技术方法:
1.LED点阵显示原理
16×16扫描LED点阵的工作原理同8位扫描数码管类似。
它有16个共阴极输出端口,每个共阴极对应有16个LED显示灯,所以其扫描译码地址需4位信号线(SEL0-SEL3),其汉字扫描码由16位段地址(L0-L15)输入。
通过时钟的每列扫描显示完整汉字。
首先,SEL3-SEL0从状态“0000”按位加1一直到“1111”的过程中点阵从第1列一直扫描到第16列;L0到L15依次对应第1行到第16行的点阵。
因为列点阵为共阴极,因此若SEL3-SEL0为“0000”,而L0接高电平,L1-L15均接低电平,则点阵屏幕上第一点亮。
比如要实现第一列全亮的效果,则SEL给“0000”,L0-L15均接上高电平即可,而要实现第一行全亮,则就要用到动态扫描的概念:
首先L0接“1”,L1-L15均接“0”,而SEL3-SEL0从“0000”按位加1一直到“1111”并循环变化,或者从“1111”按位减1一直到“0000”并循环变化,只要变化的足够快,由于视觉暂留则会看到第一行均亮。
有了上面的说明,现在以汉字“电”的显示来说明点阵扫描显示的过程。
首先将“电”字编码用软件获取,推荐一款小巧而功能强大的软件PCTOLED,此软件可以绘出M×N任意大小的文字,并且支持宋体、楷体等多种字体。
图1是用此软件绘出的汉字“电”以及其生成的“电”字编码(具体用法见软件“设置”中的说明),即便不懂软件用法也可按汉字占的格数算出汉字的编码。
现将SEL3-0接上一个16进制计数器,计数器输入为时钟信号,计数值随时钟变化,对应SEL3-SEL0从“0000”变化到“1111”时对应L0-L15的值见表1。
只需时钟足够快,则可在点阵屏幕上看到“电”字。
课程设计报告
注:
此表可加附页
图1PCtoLCD生成汉字“字”及其编码
表1SEL与L对应关系
SEL3-SEL0
L0-L15
0000
"0000000000000000"
0001
"0000000000000000"
0010
"0001111111111000"
0011
"0000100010001000"
0100
"0000100010001000"
0101
"0000100010001000"
0110
"0000100010001000"
0111
"0111111111111111"
1000
"1000100010001000"
1001
"1000100010001000"
1010
"1000100010001000"
1011
"1000100010001000"
1100
"1001111111111000"
1101
"1000000000000000"
1110
"1111000000000000"
1111
"0000000000000000"
2.“电”字显示原理及各模块工作原理
2.1“电”字显示原理图
“电”字显示原理图如图2.1所示。
图2.1“电”显示原理图
其中CLK接时钟信号,LIE[15..0]接L15—L0,SEL[3..0]接sel3—sel0。
根据前面提到的原理可知,要在点阵屏幕上显出“电”字,只需sel端接16进制计数器,因此需要计数器模块。
当sel为不同值时对应不同的L值,因此还需有数据选择模块。
2.2计数器模块工作原理
(1)VHDL代码
此模块VHDL代码如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCOUNT16IS--定义实体:
16进制减法计数器
PORT(CLK:
INSTD_LOGIC;--定义端口:
输入为CLK,输出为位矢量sel
sel:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDENTITYCOUNT16;
ARCHITECTUREBEHVOFCOUNT16IS--定义结构体
SIGNALCQI:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(CLK)--定义进程,上升沿触发
BEGIN
IF(CLK'EVENTANDCLK='1')THEN
CQI<=CQI-1;--从右向左扫描
ENDIF;
sel<=CQI;
ENDPROCESS;
ENDARCHITECTUREBEHV;
其中输入为CLK,输出为位矢量SEL,CLK上升沿触发,SEL依次减1,从而实现从“1111”到“0000”的循环改变。
(2)计数器模块仿真
此模块的仿真图如图2.2所示。
图2.216进制计数器仿真图
从仿真图中可以看出此模块可以实现SEL从“1111”顺次降到“0000”的功能。
2.3数据选择模块工作原理
(1)此模块VHDL代码如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYjiandanyimaIS
PORT(sel:
INSTD_LOGIC_VECTOR(3DOWNTO0);
lie:
OUTSTD_LOGIC_VECTOR(15DOWNTO0));
ENDENTITYjiandanyima;
ARCHITECTUREBEHVOFjiandanyimaIS
BEGIN
PROCESS(sel)
BEGIN
CASEselIS
WHEN"0000"=>lie<=x"0000";
WHEN"0001"=>lie<=x"07fc";
WHEN"0010"=>lie<=x"0444";
WHEN"0011"=>lie<=x"0444";
WHEN"0100"=>lie<=x"0444";
WHEN"0101"=>lie<=x"0444";
WHEN"0110"=>lie<=x"0444";
WHEN"0111"=>lie<=x"7fff";
WHEN"1000"=>lie<=x"4444";
WHEN"1001"=>lie<=x"4444";
WHEN"1010"=>lie<=x"4444";
WHEN"1011"=>lie<=x"4444";
WHEN"1100"=>lie<=x"4444";
WHEN"1101"=>lie<=x"47fc";
WHEN"1110"=>lie<=x"7000";
WHEN"1111"=>lie<=x"0000";
WHENOTHERS=>lie<=x"0000";
ENDCASE;
ENDPROCESS;
ENDARCHITECTUREBEHV;
其中SEL为输入端,LIE为输出端,LIE随SEL的变化而变化,只需SEL变化足够快,便可实现动态扫描,从而实现“电”字显示。
(2)模块仿真图
此模块仿真截图如图2.3所示。
图2.3数据选择模块仿真图
从仿真结果可以看出此模块可以实现数据选择功能。
2.4“电”字显示仿真及说明
显示“电”字的仿真图如图2.4所示。
图2.4显示“电”字仿真图
从图中可以看出,当CLK上升沿到来时SEL随之改变,从而使输出改变,当CLK频率很快时,点阵屏幕上即出现“电”字。
3.滚动显示汉字各模块工作原理及功能说明
3.1滚动显示汉字原理图
此功能原理图如图3.1所示。
图3.1汉字滚动功能原理图
FASTCLK端接高频率时钟信号,SLOWCLK端接低频率时钟信号,SEL[3..0]依次接到sel3—sel0上,VERTIC[15..0]接到L15—L0上。
此功能由三个模块组成,其中用到16进制计数器,此模块已在上文提及,不再重复;数据选择模块GUND,当其输出不同值时便可实现汉字滚动效果;显示模块DISPLAY1,此模块用于输出滚动效果的汉字“电子信息工程”。
FASTCLK端接高频率时钟信号,实现动态扫描,SLOWCLK端接低频率时钟信号,用于实现汉字滚动的效果。
3.2数据选择模块原理及功能说明
(1)此模块VHDL代码如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYgundIS
PORT(CLK:
INSTD_LOGIC;
QOUT:
bufferSTD_LOGIC_VECTOR(3DOWNTO0));
ENDENTITYgund;
ARCHITECTUREBEHVOFgundIS
BEGIN
PROCESS(CLK)
BEGIN
IF(CLK'EVENTANDCLK='1')THEN
QOUT<=QOUT+1;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREBEHV;
此模块相当于一个数据选择端,当GUND随SLOWCLK时钟的改变而输出不同值时,屏幕上出现移动的汉字,此模块定义的汉字滚动次数为16次,6个汉字每个占用16列,因此只实现了滚动一次移动7列的效果。
然而经实验证实,用此种芯片—EPF10K10LC84-4并且用此种方案最多实现滚动31次的效果。
(2)模块仿真图
此模块仿真效果图如图3.2所示。
图3.2数据选择模块仿真图
从仿真效果来看此模块可以达到计数作用,连接后续电路方可实现数据选择的功能从能实现汉字滚动效果。
3.3汉字滚动显示模块原理及功能说明
(1)此模块VHDL代码如下:
libraryieee;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYdisplay1IS--定义实体
PORT(sel:
INSTD_LOGIC_VECTOR(3downto0);--定义端口,sel为输入位矢量,gund控制滚动频率,vetic为列输出
gund:
INSTD_LOGIC_VECTOR(3downto0);
vertic:
OUTSTD_LOGIC_VECTOR(15downto0));
ENDdisplay1;
ARCHITECTUREXIANSHIOFdisplay1IS--定义结构体
BEGIN
PROCESS(gund,sel)--定义过程,gund,sel为敏感量
VARIABLEB:
STD_LOGIC_VECTOR(15downto0);--定义变矢量
BEGIN
CASEgundIS
When"0000"=>
caseselis
when"0000"=>b:
=x"0000";
when"0001"=>b:
=x"0000";
when"0010"=>b:
=x"0000";
when"0011"=>b:
=x"0000";
when"0100"=>b:
=x"0000";
when"0101"=>b:
=x"0000";
when"0110"=>b:
=x"0000";
when"0111"=>b:
=x"0000";
when"1000"=>b:
=x"0000";
when"1001"=>b:
=x"0000";
when"1010"=>b:
=x"07fc";
when"1011"=>b:
=x"0444";
when"1100"=>b:
=x"0444";
when"1101"=>b:
=x"0444";
when"1110"=>b:
=x"0444";
when"1111"=>b:
=x"0444";
whenothers=>null;endcase;
When"0001"=>
caseselis
when"0000"=>b:
=x"0000";
when"0001"=>b:
=x"0000";
when"0010"=>b:
=x"0000";
when"0011"=>b:
=x"07fc";
when"0100"=>b:
=x"0444";
when"0101"=>b:
=x"0444";
when"0110"=>b:
=x"0444";
when"0111"=>b:
=x"0444";
when"1000"=>b:
=x"0444";
when"1001"=>b:
=x"7fff";
when"1010"=>b:
=x"4444";
when"1011"=>b:
=x"4444";
when"1100"=>b:
=x"4444";
when"1101"=>b:
=x"4444";
when"1110"=>b:
=x"4444";
when"1111"=>b:
=x"47fc";
whenothers=>null;endcase;
When"0010"=>
caseselis
when"0000"=>b:
=x"0444";
when"0001"=>b:
=x"0444";
when"0010"=>b:
=x"7fff";
when"0011"=>b:
=x"4444";
when"0100"=>b:
=x"4444";
when"0101"=>b:
=x"4444";
when"0110"=>b:
=x"4444";
when"0111"=>b:
=x"4444";
when"1000"=>b:
=x"47fc";
when"1001"=>b:
=x"7000";
when"1010"=>b:
=x"0000";
when"1011"=>b:
=x"0000";
when"1100"=>b:
=x"0080";
when"1101"=>b:
=x"0082";
when"1110"=>b:
=x"2082";
when"1111"=>b:
=x"2082";
whenothers=>null;endcase;
When"0011"=>
caseselis
when"0000"=>b:
=x"4444";
when"0001"=>b:
=x"47fc";
when"0010"=>b:
=x"7000";
when"0011"=>b:
=x"0000";
when"0100"=>b:
=x"0000";
when"0101"=>b:
=x"0080";
when"0110"=>b:
=x"0082";
when"0111"=>b:
=x"2082";
when"1000"=>b:
=x"2082";
when"1001"=>b:
=x"4082";
when"1010"=>b:
=x"4082";
when"1011"=>b:
=x"40a2";
when"1100"=>b:
=x"40d2";
when"1101"=>b:
=x"238a";
when"1110"=>b:
=x"1c8a";
when"1111"=>b:
=x"0086";
whenothers=>null;endcase;
When"0100"=>
caseselis
when"0000"=>b:
=x"2082";
when"0001"=>b:
=x"2082";
when"0010"=>b:
=x"4082";
when"0011"=>b:
=x"4082";
when"0100"=>b:
=x"40a2";
when"0101"=>b:
=x"40d2";
when"0110"=>b:
=x"238a";
when"0111"=>b:
=x"1c8a";
when"1000"=>b:
=x"0086";
when"1001"=>b:
=x"0082";
when"1010"=>b:
=x"0080";
when"1011"=>b:
=x"0080";
when"1100"=>b:
=x"0000";
when"1101"=>b:
=x"0000";
when"1110"=>b:
=x"00c0";
when"1111"=>b:
=x"7ff8";
whenothers=>null;endcase;
When"0101"=>
caseselis
when"0000"=>b:
=x"1c8a";
when"0001"=>b:
=x"0086";
when"0010"=>b:
=x"0082";
when"0011"=>b:
=x"0080";
when"0100"=>b:
=x"0080";
when"0101"=>b:
=x"0000";
when"0110"=>b:
=x"0000";
when"0111"=>b:
=x"00c0";
when"1000"=>b:
=x"7ff8";
when"1001"=>b:
=x"0007";
when"1010"=>b:
=x"0004";
when"1011"=>b:
=x"7ca4";
when"1100"=>b:
=x"44a4";
when"1101"=>b:
=x"44a4";
when"1110"=>b:
=x"44a4";
when"1111"=>b:
=x"44a6";
whenothers=>null;endcase;
When"0110"=>
caseselis
when"0000"=>b:
=x"00c0";
when"0001"=>b:
=x"7ff8";
when"0010"=>b:
=x"0007";
when"0011"=>b:
=x"0004";
when"0100"=>b:
=x"7ca4";
when"0101"=>b:
=x"44a4";
when"0110"=>b:
=x"44a4";
when"0111"=>b:
=x"44a4";
when"1000"=>b:
=x"44a6";
when"1001"=>b:
=x"44a4";
when"1010"=>b:
=x"44a4";
when"1011"=>b:
=x"44a4";
when"1100"=>b:
=x"7ca4";
when"1101"=>b:
=x"0004";
when"1110"=>b:
=x"0000";
when"1111"=>b:
=x"0000";
whenothers=>null;endcase;
When"0111"=>
caseselis
when"0000"=>b:
=x"44a4";
when"0001"=>b:
=x"44a6";
when"0010"=>b:
=x"44a4";
when"0011"=>b:
=x"44a4";
when"0100"=>b:
=x"44a4";
when"0101"=>b:
=x"7ca4";
when"0110"=>b:
=x"0004";
when"0111"=>b:
=x"0000";
when"1000"=>b:
=x"0000";
when"1001"=>b:
=x"4000";
when"1010"=>b:
=x"19fc";
when"1011"=>b:
=x"0154";
when"1100"=>b:
=x"3954";
when"1101"=>b:
=x"4154";
when"1110"=>b:
=x"4154";
when"1111"=>b:
=x"4157";
whenothers=>null;endcase;
When"1000"=>
caseselis
when"0000"=>b:
=x"0000";
when"0001"=>b:
=x"0000";
when"0010"=>b:
=x"4000";
when"0011"=>b:
=x"19fc";
when"0100"=>b:
=x"0154";
when"0101"=>b:
=x"3954";
when"0110"=>b:
=x"4154";
when"0111"=>b:
=x"4154";
when"1000"=>b:
=x"4157";
when"1001"=>b:
=x"5d54";
when"1010"=>b:
=x"4154";
when"1011"=>b:
=x"4154";
when"1100"=>b:
=x"7954";
when"1101"=>b:
=x"0554";
when"1110"=>b:
=x"09
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 技术 课程设计 报告 LED 点阵 汉字 显示