16乘16点阵.docx

上传人:b****8 文档编号:28134551 上传时间:2023-07-08 格式:DOCX 页数:18 大小:93.83KB
下载 相关 举报
16乘16点阵.docx_第1页
第1页 / 共18页
16乘16点阵.docx_第2页
第2页 / 共18页
16乘16点阵.docx_第3页
第3页 / 共18页
16乘16点阵.docx_第4页
第4页 / 共18页
16乘16点阵.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

16乘16点阵.docx

《16乘16点阵.docx》由会员分享,可在线阅读,更多相关《16乘16点阵.docx(18页珍藏版)》请在冰豆网上搜索。

16乘16点阵.docx

16乘16点阵

北华航天工业学院

综合实践总结报告

 

综合实践名称:

EDA技术与实践

综合实践地点、时间

 

一.题目功能分析和设计

实验的要求有如下三点:

1.用16*16点阵的发光二极管显示字符;

2.可显示字符为0~9的数字字符与A~F英文字母的大写;

3.输入为四位二进制矢量;

按照要求可知,LED点阵模块,共由16×16=256个LED发光二极管组成,如何在该点阵模块上显示数字和字母是本实验的关键。

先将要显示的每一幅图像画在一个16×16共256个小方格的矩形框中,再在有笔划下落处的小方格里填上“1”,无笔划处填上“0”,这样就形成了与这个汉字所对应的二进制数据在该矩形框上的分布

以数字8为例,点阵分布为:

0000000000000000

0000000000000000

0001111111111000

0001111111111000

0001100000011000

0001100000011000

0001100000011000

0001111111111000

0001111111111000

0001100000011000

0001100000011000

0001100000011000

0001111111111000

0001111111111000

0000000000000000

0000000000000000

 

考虑到实际物理实验平台上点阵发光二极管的原理,以下为16×16点阵LED外观图,只要其对应的X、Y轴顺向偏压,即可使LED发亮。

例如如果想使左上角LED点亮,则Y0=1,X0=0即可。

 

所以我采用行列扫描的方法,用四位二进制数做列选信号(总共16列),如选中第一列,则扫描第一列之中哪些行是高电平

(1),哪些行是低电平(0);为高电平的则点亮,为低电平的不亮。

(列信号都接地)。

如此,列选信号由“0000”变到“1111”时,16列扫描完毕,一个字也就出来了,列选信号重新由“0000”开始扫描。

注意扫描频率必须要足够快,才能保证显示一个数字或字母时所有灯在肉眼看来是同时在闪烁的。

再者,就是字变换的问题。

题目要求可显示字符为0~9的数字字符与A~F英文字母的大写;16个字正好用四位二进制表示,字选信号。

每个字选信号对应一个0到9,A到F中的一个字模(像前面列出的8的字模一样)。

通常情况下是1s变一个字符,但我在实验时考虑到仿真的问题,将字选信号的变化周期缩小很多,以便仿真。

要注意的是,列选信号变化频率一定是比字选信号大得多的。

二.总体模块划分

1.字选模块

输入为一个时钟信号,输出为4位二进制(用xuan表示)字选信号,用来顺序输出题目要求的16个字。

因为设计采用字选模块和列选模块使用同一个输入时钟脉冲,但是字选信号的变化频率比列选信号要小得多。

所以该模块中还应该设置一个计数器,计数器满,则Q加1,即变向下一个字,同时计数器重新置零。

2.列选模块

输入为一个时钟信号,输出为4位二进制(用sel表示)列选信号,用来选中列,进行扫描。

3.显示模块

输入为字选信号和列选信号,输出为16位二进制,用来表示一列,该列中的1的位置就表示亮灯的位置,0的位置表示不亮。

每扫描一列就输出一列,看该列中哪些行是1,哪些行是0。

该模块应该包含0~9,A~F这16个字模。

4.顶层模块

该模块采用图形模式(.gdf),将所有的模块按要求合理连接起来后,再添加上顶层的输入输出信号。

附顶层图:

三.代码实现

1.显示模块

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYXIANSHIIS

PORT(XUAN:

INSTD_LOGIC_VECTOR(3DOWNTO0);

SEL:

INSTD_LOGIC_VECTOR(3DOWNTO0);

Q:

OUTSTD_LOGIC_VECTOR(15DOWNTO0)

);

ENDENTITYXIANSHI;

ARCHITECTUREXSDZOFXIANSHIIS

BEGIN

PROCESS(XUAN,SEL)

BEGIN

CASEXUANIS

WHEN"0000"=>

CASESELIS

when"0000"=>Q<="0000000000000000";----显示“0”

when"0001"=>Q<="0000000000000000";

when"0010"=>Q<="0000000000000000";

when"0011"=>Q<="0000000000000000";

when"0100"=>Q<="0001111111111000";

when"0101"=>Q<="0010000000000100";

when"0110"=>Q<="0100000000000010";

when"0111"=>Q<="0100000000000010";

when"1000"=>Q<="0100000000000010";

when"1001"=>Q<="0010000000000100";

when"1010"=>Q<="0001111111111000";

when"1011"=>Q<="0000000000000000";

when"1100"=>Q<="0000000000000000";

when"1101"=>Q<="0000000000000000";

when"1110"=>Q<="0000000000000000";

when"1111"=>Q<="0000000000000000";

whenothers=>null;

ENDCASE;

WHEN"0001"=>

CASESELIS

when"0000"=>Q<="0000000000000000";---显示"1"

when"0001"=>Q<="0000000000000000";

when"0010"=>Q<="0000000000000000";

when"0011"=>Q<="0000000000000000";

when"0100"=>Q<="0000000000000000";

when"0101"=>Q<="0000000000000000";

when"0110"=>Q<="0110000000000000";

when"0111"=>Q<="0111111111111110";

when"1000"=>Q<="0111111111111110";

when"1001"=>Q<="0110000000000110";

when"1010"=>Q<="0000000000000000";

when"1011"=>Q<="0000000000000000";

when"1100"=>Q<="0000000000000000";

when"1101"=>Q<="0000000000000000";

when"1110"=>Q<="0000000000000000";

when"1111"=>Q<="0000000000000000";

whenothers=>null;

ENDCASE;

 

WHEN"0010"=>

CASESELIS

when"0000"=>Q<="0000000000000000";---显示“2”

when"0001"=>Q<="0000000000000000";

when"0010"=>Q<="0000000000000000";

when"0011"=>Q<="0000000000000000";

when"0100"=>Q<="0111000000000110";

when"0101"=>Q<="0111100000000110";

when"0110"=>Q<="0110110000000110";

when"0111"=>Q<="0110011000000110";

when"1000"=>Q<="0110001111111110";

when"1001"=>Q<="0110000111111110";

when"1010"=>Q<="0000000000000000";

when"1011"=>Q<="0000000000000000";

when"1100"=>Q<="0000000000000000";

when"1101"=>Q<="0000000000000000";

when"1110"=>Q<="0000000000000000";

when"1111"=>Q<="0000000000000000";

whenothers=>null;

ENDCASE;

 

WHEN"0011"=>

CASESELIS

when"0000"=>Q<="0000000000000000";--显示”3“

when"0001"=>Q<="0000000000000000";

when"0010"=>Q<="0000000000000000";

when"0011"=>Q<="0000000000000000";

when"0100"=>Q<="0000000000000000";

when"0101"=>Q<="0110000000000110";

when"0110"=>Q<="0110000110000110";

when"0111"=>Q<="0110000110000110";

when"1000"=>Q<="0110000110000110";

when"1001"=>Q<="0110000110000110";

when"1010"=>Q<="0111111111111110";

when"1011"=>Q<="0111111111111110";

when"1100"=>Q<="0000000000000000";

when"1101"=>Q<="0000000000000000";

when"1110"=>Q<="0000000000000000";

when"1111"=>Q<="0000000000000000";

whenothers=>null;

ENDCASE;

 

WHEN"0100"=>

CASESELIS

when"0000"=>Q<="0000000000000000";--显示”4“

when"0001"=>Q<="0000000000000000";

when"0010"=>Q<="0000001111000000";

when"0011"=>Q<="0000001111100000";

when"0100"=>Q<="0000001100110000";

when"0101"=>Q<="0000001100011000";

when"0110"=>Q<="0000001100001100";

when"0111"=>Q<="0111111111111110";

when"1000"=>Q<="0111111111111110";

when"1001"=>Q<="0000001100000000";

when"1010"=>Q<="0000001100000000";

when"1011"=>Q<="0000001100000000";

when"1100"=>Q<="0000000000000000";

when"1101"=>Q<="0000000000000000";

when"1110"=>Q<="0000000000000000";

when"1111"=>Q<="0000000000000000";

whenothers=>null;

ENDCASE;

 

WHEN"0101"=>

CASESELIS

when"0000"=>Q<="0000000000000000";---显示”5“

when"0001"=>Q<="0000000000000000";

when"0010"=>Q<="0000000000000000";

when"0011"=>Q<="0110000111111110";

when"0100"=>Q<="0110000111111110";

when"0101"=>Q<="0110000110000110";

when"0110"=>Q<="0110000110000110";

when"0111"=>Q<="0110000110000110";

when"1000"=>Q<="0110000110000110";

when"1001"=>Q<="0111111110000110";

when"1010"=>Q<="0111111110000110";

when"1011"=>Q<="0000000000000000";

when"1100"=>Q<="0000000000000000";

when"1101"=>Q<="0000000000000000";

when"1110"=>Q<="0000000000000000";

when"1111"=>Q<="0000000000000000";

whenothers=>null;

ENDCASE;

 

WHEN"0110"=>

CASESELIS

when"0000"=>Q<="0000000000000000";--显示”6"

when"0001"=>Q<="0000000000000000";

when"0010"=>Q<="0000000000000000";

when"0011"=>Q<="0111111111111110";

when"0100"=>Q<="0111111111111110";

when"0101"=>Q<="0110000110000110";

when"0110"=>Q<="0110000110000110";

when"0111"=>Q<="0110000110000110";

when"1000"=>Q<="0110000110000110";

when"1001"=>Q<="0111111110000110";

when"1010"=>Q<="0111111110000110";

when"1011"=>Q<="0000000000000000";

when"1100"=>Q<="0000000000000000";

when"1101"=>Q<="0000000000000000";

when"1110"=>Q<="0000000000000000";

when"1111"=>Q<="0000000000000000";

whenothers=>null;

ENDCASE;

 

WHEN"0111"=>

CASESELIS

when"0000"=>Q<="0000000000000000";--显示“7”

when"0001"=>Q<="0000000000000000";

when"0010"=>Q<="0000000000000000";

when"0011"=>Q<="0000000000000000";

when"0100"=>Q<="0000000000000110";

when"0101"=>Q<="0000000000000110";

when"0110"=>Q<="0000000000000110";

when"0111"=>Q<="0000000000000110";

when"1000"=>Q<="0000000000000110";

when"1001"=>Q<="0111111111111110";

when"1010"=>Q<="0111111111111110";

when"1011"=>Q<="0000000000000000";

when"1100"=>Q<="0000000000000000";

when"1101"=>Q<="0000000000000000";

when"1110"=>Q<="0000000000000000";

when"1111"=>Q<="0000000000000000";

whenothers=>null;

ENDCASE;

 

WHEN"1000"=>

CASESELIS

when"0000"=>Q<="0000000000000000";---显示“8”

when"0001"=>Q<="0000000000000000";

when"0010"=>Q<="0000000000000000";

when"0011"=>Q<="0000000000000000";

when"0100"=>Q<="0111111111111110";

when"0101"=>Q<="0111111111111110";

when"0110"=>Q<="0110000110000110";

when"0111"=>Q<="0110000110000110";

when"1000"=>Q<="0110000110000110";

when"1001"=>Q<="0111111111111110";

when"1010"=>Q<="0111111111111110";

when"1011"=>Q<="0000000000000000";

when"1100"=>Q<="0000000000000000";

when"1101"=>Q<="0000000000000000";

when"1110"=>Q<="0000000000000000";

when"1111"=>Q<="0000000000000000";

whenothers=>null;

ENDCASE;

 

WHEN"1001"=>

CASESELIS

when"0000"=>Q<="0000000000000000";--显示"9"

when"0001"=>Q<="0000000000000000";

when"0010"=>Q<="0000000000000000";

when"0011"=>Q<="0000000000000000";

when"0100"=>Q<="0110000011111110";

when"0101"=>Q<="0110000011000110";

when"0110"=>Q<="0110000011000110";

when"0111"=>Q<="0110000011000110";

when"1000"=>Q<="0110000011000110";

when"1001"=>Q<="0111111111111110";

when"1010"=>Q<="0111111111111110";

when"1011"=>Q<="0000000000000000";

when"1100"=>Q<="0000000000000000";

when"1101"=>Q<="0000000000000000";

when"1110"=>Q<="0000000000000000";

when"1111"=>Q<="0000000000000000";

whenothers=>null;

ENDCASE;

 

WHEN"1010"=>

CASESELIS

when"0000"=>Q<="0000000000000000";--显示”A"

when"0001"=>Q<="0111000000000000";

when"0010"=>Q<="0011110000000000";

when"0011"=>Q<="0000111100000000";

when"0100"=>Q<="0000001111000000";

when"0101"=>Q<="0000001111100000";

when"0110"=>Q<="0000001100111000";

when"0111"=>Q<="0000001100001110";

when"1000"=>Q<="0000001100001110";

when"1001"=>Q<="0000001100111000";

when"1010"=>Q<="0000001111100000";

when"1011"=>Q<="0000001111000000";

when"1100"=>Q<="0000111100000000";

when"1101"=>Q<="0011110000000000";

when"1110"=>Q<="0111000000000000";

when"1111"=>Q<="0000000000000000";

whenothers=>null;

ENDCASE;

 

WHEN"1011"=>

CASESELIS

when"0000"=>Q<="0000000000000000";--显示"B”

when"0001"=>Q<="0000000000000000";

when"0010"=>Q<="0000000000000000";

when"0011"=>Q<="0000000000000000";

when"0100"=>Q<="0111111111111110";

when"0101"=>Q<="0111111111111110";

when"0110"=>Q<="0110000110000110";

when"0111"=>Q<="0110000110000110";

when"1000"=>Q<="0110000110000110";

when"1001"=>Q<="0110000110000110";

when"1010"=>Q<="0111111111111110";

when"1011"=>Q<="0011111001111110";

when"1100"=>Q<="0000000000000000";

when"1101"=>Q<="0000000000000000";

when"1110"=>Q<="0000000000000000";

when"1111"=>Q<="0000000000000000";

whenothers=>null;

ENDCASE;

 

WHEN"1100"=>

CASESELIS

when"0000"=>Q<="0000000000000000";--显示“C”

when"0001"=>Q<="0000000000000000";

when"0010"=>Q<="0000111111110000";

when"0011"=>Q<="0001111111111000";

when"0100"=>Q<="0011100000011100";

when"0101

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

当前位置:首页 > 医药卫生 > 预防医学

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

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