EDA课程设计报告LED点阵汉字显.docx

上传人:b****5 文档编号:12273922 上传时间:2023-04-17 格式:DOCX 页数:84 大小:27.57KB
下载 相关 举报
EDA课程设计报告LED点阵汉字显.docx_第1页
第1页 / 共84页
EDA课程设计报告LED点阵汉字显.docx_第2页
第2页 / 共84页
EDA课程设计报告LED点阵汉字显.docx_第3页
第3页 / 共84页
EDA课程设计报告LED点阵汉字显.docx_第4页
第4页 / 共84页
EDA课程设计报告LED点阵汉字显.docx_第5页
第5页 / 共84页
点击查看更多>>
下载资源
资源描述

EDA课程设计报告LED点阵汉字显.docx

《EDA课程设计报告LED点阵汉字显.docx》由会员分享,可在线阅读,更多相关《EDA课程设计报告LED点阵汉字显.docx(84页珍藏版)》请在冰豆网上搜索。

EDA课程设计报告LED点阵汉字显.docx

EDA课程设计报告LED点阵汉字显

 

石家庄经济学院信息工程学院

电子信息工程专业

EDA技术课程设计报告

 

题目:

LED点阵汉字显示

 

姓名孟庆康

学号409109060114

班级电子一班

指导教师马艳玲

 

2012年1月12日

 

要求:

1.指导教师按照课程设计大纲要求完成学生课程设计指导工作。

2.课程设计任务书由指导教师照大纲要求填写,内容要全面。

3.课程设计报告由参加本学生填写。

课程设计结束时交指导教师。

4.指导教师要根据每一位学生课程设计任务完成情况,认真审核设计报告,并在课程设计结束时,给出客观、准确的评语和成绩。

5.课程设计任务书和报告要语言流畅,图表正确规范。

 

课程设计任务书

班级电子一班姓名孟庆康学号409109060114

课程设计题目LED点阵汉字显示

课程设计起止日期2011.12.26至2012.01.12

实习地点石家庄经济学院实验楼308

课程设计内容与要求

1.及格:

在实验箱上16*16点阵模块上显示汉字“电”;

2.中:

设置不同的清屏方式(上下左右);

3.良:

滚动显示汉字“电”;

4.优:

滚动显示“电子信息工程。

 

指导教师马艳玲

2011年12月26日

一、设计原理与技术方法:

包括:

电路工作原理分析与原理图、元器件选择与参数计算、电路调试方法与结果说明;

软件设计说明书与流程图、软件源程序代码、软件调试方法与运行结果说明。

1、软件设计说明:

(1)在实验箱上16*16点阵模块上显示汉字“电”

LED点阵汉字显示实验采用16*16的点阵,列选信为SEL0,SEL1,SEL2,SEL3,经4线16线译码器输出16列,最左边为第一列,列选信号是由一个4位向量SEL[3..0]控制;行选信号为line0~line15,是由16个行信号组成的,每一行由一个单独的位来控制,高电平有效。

实验中用逐列扫描的方法,将每列中不同的行用“0”或“1”写出,将列用时钟信号控制,当频率到达一定值时肉眼无法分辨,每列的值看上去几乎同时显示,静止的“电”字就显示在16*16点阵上。

(2)设置四种不同的清屏方式

“电”字的四种清屏方式原理基本一样,就是在不同时刻将对应的不同逻辑值

送给对应的行和列。

左清屏就是由一个低频时钟控制,由左到右逐列清屏,clk1为上升延时,counter自动+1,电字的形状变一次,然后将此时电字的逻辑值送给对应的点阵位置。

例如,clk第一次到上升延时就将缺少最左边一列的“电”字对应的逻辑值送给对应的点阵位置。

依此类推,15次上升沿后“电”字就会清完。

右清屏原理同左清屏,由一个低频时钟控制,然后由右到左逐列清屏,clk1为上升延时,counter自动+1,“电”字逐列消失,直到15次上升沿,“电”字清完。

上、下清屏也是由一个低频时钟控制,在每次上升延时,“电”字消失一行,然后将此时“电”字对应的逻辑值送入对应的位置,16个上升沿过后,“电”字清完。

由时钟控制循环完成清屏。

(3)滚动显示汉子“电”

首先写出“电”字各行各列对应的逻辑值,然后由时钟控制以1列为单位将各列的值循环左移,每移动一列,就将此时的逻辑值送给对应的点阵坐标,时钟clk1每达到一次上升沿,counter自动+1,然后“电”字循环左移一次,将此时对应的逻辑值,送给对应的位置,随着counter的变化,“电”字逐列完成循环左移,也就是左滚动。

滚动

 

(4)滚动显示“电子信息工程”

滚动显示“电子信息工程”原理和“电”字左滚动基本相同,即在16*16点阵上写出其对应的逻辑值,用counter来作为不同时刻不同状态的切换信号,时钟信号clk1每次到达上升沿counter自动+1,然后“电子信息工程”左移六礼列,因为“电子信息工程”为16*6=96列,所以时钟信号经过16个上升沿,即counter由0000到1111后,“电子信息工程”完成左移一次,然后由clk1控制循环滚动“电子信息工程”。

2、软件程序代码

(1)“电”单独显示

libraryieee;--调用库

useieee.std_logic_1164.all;--标准库

useieee.std_logic_unsigned.all;--无标志库

entitydianis--定义实体

port(clk0,clr:

instd_logic;--时钟和清屏

sel:

outstd_logic_vector(3downto0);--列扫描

line:

outstd_logic_vector(15downto0));--行

enddian;--实体结束

architecturertlofdianis--定义结构体

signalq:

std_logic_vector(3downto0);

signalcounter:

std_logic_vector(3downto0);--列扫描计数器

begin

sel<=q;

p1:

process(clk0,clr)

begin--进程开始

if(clr='1')then--clr=1时,清屏

counter<="0000";

elsif(clk0'eventandclk0='1')then--上升沿有效

if(counter>"1111")then--十六进制,counter加到15后清零

counter<="0000";

else

counter<=counter+'1';

endif;

endif;

endprocessp1;--进程结束

p2:

process(counter)

begin

casecounteris--列扫描计数器为不同值时,将不同

时刻“电”的代码送入相应位置

when"0000"=>line<=x"0000";q<="0000";--电

when"0001"=>line<=x"03f8";q<="0001";

when"0010"=>line<=x"0248";q<="0010";

when"0011"=>line<=x"0248";q<="0011";

when"0100"=>line<=x"0248";q<="0100";

when"0101"=>line<=x"0248";q<="0101";

when"0110"=>line<=x"7fff";q<="0110";

when"0111"=>line<=x"4248";q<="0111";

when"1000"=>line<=x"4248";q<="1000";

when"1001"=>line<=x"4248";q<="1001";

when"1010"=>line<=x"4248";q<="1010";

when"1011"=>line<=x"43f8";q<="1011";

when"1100"=>line<=x"4000";q<="1100";

when"1101"=>line<=x"4000";q<="1101";

when"1110"=>line<=x"7000";q<="1110";

when"1111"=>line<=x"0000";q<="1111";

whenothers=>null;

endcase;

endprocessp2;

endrtl;

(2)“电”清屏

libraryieee;--调用库

useieee.std_logic_1164.all;--标准库

useieee.std_logic_unsigned.all;--无标志库

entityqpis--定义实体

port(enable:

instd_logic_vector(1downto0);--四选一电路控制端

clk0,clk1,clr:

instd_logic;--时钟信号

sel:

outstd_logic_vector(3downto0);--列扫描

line:

outstd_logic_vector(15downto0));--行

endqp;--实体结束

architecturertlofqpis--定义结构体

signalq:

std_logic_vector(3downto0);--列扫描

signalcounter:

std_logic_vector(3downto0);--列扫描计数器

begin

sel<=q;--q值给sel

p0:

process(clk0,clr)

begin--进程开始

if(clr='1')then--clr=1时,清屏

q<="0000";

elsif(clk0'eventandclk0='1')then--上升沿有效

if(q>"1111")then--十六进制,加到15后清零

q<="0000";

else

q<=q+'1';

endif;

endif;

endprocess;--进程结束

P1:

process(clk1,enable)

begin

ifclk1'eventandclk1='1'then--上升沿有效

ifenable="00"then--四选一控制enable=“00”

casecounteris--列扫描计数器,不同时刻将“电”

when"0000"=>的代码送入相应位置

caseqis

when"0000"=>line<=x"0000";--“电”左清屏

when"0001"=>line<=x"03f8";

when"0010"=>line<=x"0248";

when"0011"=>line<=x"0248";

when"0100"=>line<=x"0248";

when"0101"=>line<=x"0248";

when"0110"=>line<=x"7fff";

when"0111"=>line<=x"4248";

when"1000"=>line<=x"4248";

when"1001"=>line<=x"4248";

when"1010"=>line<=x"4248";

when"1011"=>line<=x"43f8";

when"1100"=>line<=x"4000";

when"1101"=>line<=x"4000";

when"1110"=>line<=x"7000";

when"1111"=>line<=x"0000";

whenothers=>null;

endcase;

when"0001"=>

caseqis

when"0000"=>line<=x"0000";--“电”的后15列

when"0001"=>line<=x"0000";

when"0010"=>line<=x"0248";

when"0011"=>line<=x"0248";

when"0100"=>line<=x"0248";

when"0101"=>line<=x"0248";

when"0110"=>line<=x"7fff";

when"0111"=>line<=x"4248";

when"1000"=>line<=x"4248";

when"1001"=>line<=x"4248";

when"1010"=>line<=x"4248";

when"1011"=>line<=x"43f8";

when"1100"=>line<=x"4000";

when"1101"=>line<=x"4000";

when"1110"=>line<=x"7000";

when"1111"=>line<=x"0000";

whenothers=>null;

endcase;

when"0010"=>

caseqis

when"0000"=>line<=x"0000";--“电”的后14列

when"0001"=>line<=x"0000";

when"0010"=>line<=x"0000";

when"0011"=>line<=x"0248";

when"0100"=>line<=x"0248";

when"0101"=>line<=x"0248";

when"0110"=>line<=x"7fff";

when"0111"=>line<=x"4248";

when"1000"=>line<=x"4248";

when"1001"=>line<=x"4248";

when"1010"=>line<=x"4248";

when"1011"=>line<=x"43f8";

when"1100"=>line<=x"4000";

when"1101"=>line<=x"4000";

when"1110"=>line<=x"7000";

when"1111"=>line<=x"0000";

whenothers=>null;

endcase;

when"0011"=>

caseqis

when"0000"=>line<=x"0000";

when"0001"=>line<=x"0000";

when"0010"=>line<=x"0000";

when"0011"=>line<=x"0000";

when"0100"=>line<=x"0248";

when"0101"=>line<=x"0248";

when"0110"=>line<=x"7fff";

when"0111"=>line<=x"4248";

when"1000"=>line<=x"4248";

when"1001"=>line<=x"4248";

when"1010"=>line<=x"4248";

when"1011"=>line<=x"43f8";

when"1100"=>line<=x"4000";

when"1101"=>line<=x"4000";

when"1110"=>line<=x"7000";

when"1111"=>line<=x"0000";

whenothers=>null;

endcase;

when"0100"=>

caseqis

when"0000"=>line<=x"0000";

when"0001"=>line<=x"0000";

when"0010"=>line<=x"0000";

when"0011"=>line<=x"0000";

when"0100"=>line<=x"0000";

when"0101"=>line<=x"0248";

when"0110"=>line<=x"7fff";

when"0111"=>line<=x"4248";

when"1000"=>line<=x"4248";

when"1001"=>line<=x"4248";

when"1010"=>line<=x"4248";

when"1011"=>line<=x"43f8";

when"1100"=>line<=x"4000";

when"1101"=>line<=x"4000";

when"1110"=>line<=x"7000";

when"1111"=>line<=x"0000";

whenothers=>null;

endcase;

when"0101"=>

caseqis

when"0000"=>line<=x"0000";

when"0001"=>line<=x"0000";

when"0010"=>line<=x"0000";

when"0011"=>line<=x"0000";

when"0100"=>line<=x"0000";

when"0101"=>line<=x"0000";

when"0110"=>line<=x"7fff";

when"0111"=>line<=x"4248";

when"1000"=>line<=x"4248";

when"1001"=>line<=x"4248";

when"1010"=>line<=x"4248";

when"1011"=>line<=x"43f8";

when"1100"=>line<=x"4000";

when"1101"=>line<=x"4000";

when"1110"=>line<=x"7000";

when"1111"=>line<=x"0000";

whenothers=>null;

endcase;

when"0110"=>

caseqis

when"0000"=>line<=x"0000";

when"0001"=>line<=x"0000";

when"0010"=>line<=x"0000";

when"0011"=>line<=x"0000";

when"0100"=>line<=x"0000";

when"0101"=>line<=x"0000";

when"0110"=>line<=x"0000";

when"0111"=>line<=x"4248";

when"1000"=>line<=x"4248";

when"1001"=>line<=x"4248";

when"1010"=>line<=x"4248";

when"1011"=>line<=x"43f8";

when"1100"=>line<=x"4000";

when"1101"=>line<=x"4000";

when"1110"=>line<=x"7000";

when"1111"=>line<=x"0000";

whenothers=>null;

endcase;

when"0111"=>

caseqis

when"0000"=>line<=x"0000";

when"0001"=>line<=x"0000";

when"0010"=>line<=x"0000";

when"0011"=>line<=x"0000";

when"0100"=>line<=x"0000";

when"0101"=>line<=x"0000";

when"0110"=>line<=x"0000";

when"0111"=>line<=x"0000";

when"1000"=>line<=x"4248";

when"1001"=>line<=x"4248";

when"1010"=>line<=x"4248";

when"1011"=>line<=x"43f8";

when"1100"=>line<=x"4000";

when"1101"=>line<=x"4000";

when"1110"=>line<=x"7000";

when"1111"=>line<=x"0000";

whenothers=>null;

endcase;

when"1000"=>

caseqis

when"0000"=>line<=x"0000";

when"0001"=>line<=x"0000";

when"0010"=>line<=x"0000";

when"0011"=>line<=x"0000";

when"0100"=>line<=x"0000";

when"0101"=>line<=x"0000";

when"0110"=>line<=x"0000";

when"0111"=>line<=x"0000";

when"1000"=>line<=x"0000";

when"1001"=>line<=x"4248";

when"1010"=>line<=x"4248";

when"1011"=>line<=x"43f8";

when"1100"=>line<=x"4000";

when"1101"=>line<=x"4000";

when"1110"=>line<=x"7000";

when"1111"=>line<=x"0000";

whenothers=>null;

endcase;

when"1001"=>

caseqis

when"0000"=>line<=x"0000";

when"0001"=>line<=x"0000";

when"0010"=>line<=x"0000";

when"0011"=>line<=x"0000";

when"0100"=>line<=x"0000";

when"0101"=>line<=x"0000";

when"0110"=>line<=x"0000";

when"0111"=>line<=x"0000";

when"1000"=>line<=x"0000";

when"1001"=>line<=x"0000";

when"1010"=>line<=x"4248";

when"1011"=>line<=x"43f8";

when"1100"=>line<=x"4000";

when"1101"=>line<=x"4000";

when"1110"=>line<=x"7000";

when"1111"=>line<=x"0000";

whenothers=>null;

endcase;

when"1010"=>

caseqis

when"0000"=>line<=x"0000";

when"0001"=>line<=x"0000";

when"0010"=>line<=x"0000";

when"0011"=>line<=x"0000";

when"0100"=>line<=x"0000";

when"0101"=>line<=x"0000";

when"0110"=>line<=x"0000";

when"0111"=>line<=x"0000";

when"1000"=>line<=x"0000";

when"1001"=>line<=x"0000";

when"1010

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

当前位置:首页 > 求职职场 > 笔试

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

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