收藏 分销(赏)

eda课程设计报告16x16点阵显示大学论文.doc

上传人:丰**** 文档编号:4776891 上传时间:2024-10-12 格式:DOC 页数:16 大小:139.50KB 下载积分:8 金币
下载 相关 举报
eda课程设计报告16x16点阵显示大学论文.doc_第1页
第1页 / 共16页
eda课程设计报告16x16点阵显示大学论文.doc_第2页
第2页 / 共16页


点击查看更多>>
资源描述
湖北大学本科课程设计 题 目 16*16点阵显示 姓 名 学 号 专业年级 指导教师 职 称 2016年 12月 18日 目录 一、设计内容 2 1.1功能描述 2 1.2实现目标 3 二、逻辑电路图 3 三、功能模块的划分 4 3.1 系统的总体框图 4 四、主要功能的实现 4 4.1 1 8进制加法器设计 4 4.2 2 16进制计数器设计 4 4.3 列驱动设计 4 4.4 字体显示控制器 5 4.5 顶层文件设计 5 五、系统调试与仿真 5 5.1 程序仿真图 5 5.2 16*16 LED点阵显示引脚分配 6 5.3 程序运行结果 7 六、附件 8 一、设计内容 1.1功能描述 本实验主要完成汉字字符在LED 上的显示,16*16 扫描LED 点阵的工作原理与8 位扫描数码管类似,只是显示的方式与结果不一样而已。下面就本实验系统的16*16 点阵的工件原理做一些简单的说明。16*16 点阵由此256 个LED 通过排列组合而形成16 行*16 列的一个矩阵式的LED 阵列,俗称16*16 点阵。单个的LED 的电路如下图11-1 所示: 图11-1 单个LED 电路图 由上图可知,对于单个LED 的电路图当Rn 输入一个高电平,同时Cn 输入一个低电平时,电路形成一个回路,LED 发光。也就是LED 点阵对应的这个点被点亮。16*16 点阵也就是由16 行和16 列的LED 组成,其中每一行的所有16 个LED的Rn 端并联在一起,每一列的所有16 个LED 的Cn 端并联在一起。通过给Rn 输入一个高电平,也就相当于给这一列所有LED 输入了一个高电平,这时只要某个LED 的Cn 端输入一个低电平时,对应的LED 就会被点亮。具体的电路如下图11-2所示: 图11-2 16*16 点阵电路原理图 在点阵上显示一字符是根据其字符在点阵上的显示的点的亮灭来表示的,如下图11-3 所示: 图11-3 字符在点阵上的显示 在上图中,显示的是一个“汉”字,只要将被“汉”字所覆盖的区域的点点亮,则在点阵中就会显示一个“汉”字。根据前面我们所介绍的点阵显示的原理,当我们选中第一列后,根据要显示汉字的第一列中所需要被点亮的点对应的Rn置为高电平,则在第一列中需要被点亮的点就会被点亮。依此类推,显示第二列、第三列……第N 列中需要被点亮的点。然后根据人眼的视觉原理,将每一列显示的点的间隔时间设为一定的值,那么我们就会感觉显示一个完整的不闪烁的汉字。同时也可以按照这个原理来显示其它的汉字。下图11-4 是一个汉字显示所需要的时序图: 图11-4 显示时序图 1.2实现目标 本实验的示例程序依次显示的是“考试必过”,要求每隔一秒换下一个字显示。 二、逻辑电路图 此程序分为五个模块,两个计数器和一个行驱动程序和一个显示字体控制程序,最后再加上一个顶层文件,用来连接前四个模块,程序简图如下: CLK1 Q1 HANG CNT16 W1 XIANSHI CLK CNT8 图2-2 电路连接简图 字体显示驱动 行驱动程序 16 进制计数器 8 进制 计数器 顶层文件设计 三、功能模块的划分 3.1 系统的总体框图 图 3-1 模块图 四、主要功能的实现 4.1 1 8进制加法器设计 CNT8.vhd是8进制的计数器,其每计一次数,输出一个字。例如当计数为“000B”时显示“湖”,当计数为“001B”时显示“南”。给其脉冲周期为1S。 4.2 2 16进制计数器设计 CNT16.vhd是16进制的计数器,其输出端控制行和列驱动控制器的输出数据; 4.3 列驱动设计 HANG.vhd为列驱动控制器,该模块控制所亮的行,当输出为0001H时,给点阵的第一行高电平,输出为0010H时,给点阵的第二行高电平,依次类推,逐次给每行高电平。 4.4 字体显示控制器 XIANSHI.vhd为字体显示控制器,SHI控制的是所显示的字。例如当SHI为00H时,表示显示第一个字;当SHI为01H时,表示显示第二个字,依次类推。WEI控制所显示的为字的第几行,例如当WEI为0000B时,表示输出字的第一行文字信息;WEI为0001B时,表示输出字的第二行文字信息,依次类推。 4.5 顶层文件设计 JUZHEN16.vhd是顶层文件设计,文件在实体中首先定义了顶层设计元件的端口信号,然后在architecture和begin之间利用component语句对准备调用的元件做了声明,并定义了c,d两个信号作为器件内部的连接线。最后利用端口映射语句PORT MAP()将两个计数器和列驱动,字体显示驱动连接起来构成一个完整的器件。 五、系统调试与仿真 5.1 程序仿真图 图5-1 CNT16.vhd仿真波形图 图5-2 HANG.vhd仿真波形图 图5.3 顶层仿真图 5.2 16*16 LED点阵显示引脚分配 16×16 点阵信号名称 FPGA 引脚 说明 DOC-C0 F7 列 DOT-C1 E8 列 DOT-C2 J8 列 DOT-C3 G9 列 DOT-C4 G10 列 DOT-C5 F11 列 DOT-C6 F9 列 DOT-C7 F10 列 DOT-C8 G2 列 DOT-C9 F1 列 DOT-C10 E1 列 DOT-C11 E2 列 DOT-C12 D1 列 DOT-C13 D2 列 DOT-C14 C2 列 DOT-C15 B2 列 DOT-R0 B3 行选择 DOT-R1 C3 行选择 DOT-R2 H1 行选择 DOT-R3 J2 行选择 DOT-R4 L2 行选择 DOT-R5 J13 行选择 DOT-R6 H15 行选择 DOT-R7 V11 行选择 DOT-R8 E10 行选择 DOT-R9 F12 行选择 DOT-R10 E12 行选择 DOT-R11 F13 行选择 DOT-R12 F14 行选择 DOT-R13 E15 行选择 DOT-R14 F15 行选择 DOT-R015 F16 行选择 时钟: Clk N1 图5.4 引脚分配 5.3 程序运行结果 程序仿真完全正确后,线封锁引脚,然后连接硬件,再次编译,没有错误后下载程序到硬件之中,当拨码开关闭合时,得到点阵LED显示结果,其中每个汉字显示时间为一秒,一秒过后自动换下一个汉字,直到显示完“考试必过”,再循环显示以上内容;当拨码开关断开时,点阵LED不显示任何内容 六、附件 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT8 IS PORT( CLK1: IN STD_LOGIC; QOUT : OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END ENTITY CNT8; ARCHITECTURE BEHV OF CNT8 IS SIGNAL CQI : STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN PROCESS(CLK1) BEGIN IF (CLK1'EVENT AND CLK1='1') THEN CQI<=CQI+1; END IF; QOUT<=CQI; END PROCESS; END ARCHITECTURE BEHV; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT16 IS PORT( CLK : IN STD_LOGIC; QOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END ENTITY CNT16; ARCHITECTURE BEHV OF CNT16 IS SIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK) BEGIN IF (CLK'EVENT AND CLK='1') THEN CQI<=CQI+1; END IF; QOUT<=CQI; END PROCESS; END ARCHITECTURE BEHV; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY HANG IS PORT(DATAIN : IN STD_LOGIC_VECTOR(3 DOWNTO 0); ROW : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)); END ENTITY HANG; ARCHITECTURE BEHV OF HANG IS SIGNAL HANG : STD_LOGIC_VECTOR(15 DOWNTO 0); BEGIN PROCESS(DATAIN) BEGIN CASE DATAIN IS WHEN "0000"=> ROW<="1000000000000000"; WHEN "0001"=> ROW<="0100000000000000"; WHEN "0010"=> ROW<="0010000000000000"; WHEN "0011"=> ROW<="0001000000000000"; WHEN "0100"=> ROW<="0000100000000000"; WHEN "0101"=> ROW<="0000010000000000"; WHEN "0110"=> ROW<="0000001000000000"; WHEN "0111"=> ROW<="0000000100000000"; WHEN "1000"=> ROW<="0000000010000000"; WHEN "1001"=> ROW<="0000000001000000"; WHEN "1010"=> ROW<="0000000000100000"; WHEN "1011"=> ROW<="0000000000010000"; WHEN "1100"=> ROW<="0000000000001000"; WHEN "1101"=> ROW<="0000000000000100"; WHEN "1110"=> ROW<="0000000000000010"; WHEN "1111"=> ROW<="0000000000000001"; WHEN OTHERS=> ROW<="0000000000000000"; END CASE;END PROCESS; END ARCHITECTURE BEHV; LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY XIANSHI IS PORT( WEI : IN STD_LOGIC_VECTOR(3 downto 0); SHI : IN STD_LOGIC_VECTOR(2 downto 0); Q : OUT STD_LOGIC_VECTOR(15 downto 0)); END XIANSHI; ARCHITECTURE XIANSHI_architecture OF XIANSHI IS BEGIN process(shi,wei) variable b:std_logic_vector(15 downto 0); begin case shi is When "000"=> case wei is when "0000" =>b:="1111111111111111"; when "0001" =>b:="1011111111110111"; when "0010" =>b:="1101111111110000"; when "0011" =>b:="1110111011101110"; when "0100" =>b:="1111111101110110"; when "0101" =>b:="1000000001110000"; when "0110" =>b:="0010011111111001"; when "0111" =>b:="1110111101110110"; when "1000" =>b:="1111111101110000"; when "1001" =>b:="1111110000010110"; when "1010" =>b:="1111010111010110"; when "1011" =>b:="1110110111010110"; when "1100" =>b:="1101110000010110"; when "1101" =>b:="1011111111011110"; when "1110" =>b:="1011111111011110"; when "1111" =>b:="1111111111111111"; when others=>null; end case; When "001"=> case wei is when "0000" =>b:="1111111111111111"; when "0001" =>b:="1111111110111111"; when "0010" =>b:="1111111101111111"; when "0011" =>b:="1110000000000111"; when "0100" =>b:="1111110111111111"; when "0101" =>b:="1111101111111111"; when "0110" =>b:="1111000000000111"; when "0111" =>b:="1111011011010111"; when "1000" =>b:="1111011010110111"; when "1001" =>b:="1111010000010111"; when "1010" =>b:="1111011101110111"; when "1011" =>b:="1111010000010111"; when "1100" =>b:="1111011101110111"; when "1101" =>b:="1111011101110111"; when "1110" =>b:="1111111111111111"; when "1111" =>b:="1111111111111111"; when others=>null; end case; When "010"=> case wei is when "0000" =>b:="1111111111111111"; when "0001" =>b:="1111111111110111"; when "0010" =>b:="1000000000000011"; when "0011" =>b:="1111111011111111"; when "0100" =>b:="1111111011111111"; when "0101" =>b:="1111111011111111"; when "0110" =>b:="1111111011111111"; when "0111" =>b:="1111111011111111"; when "1000" =>b:="1111111011111111"; when "1001" =>b:="1111111011111111"; when "1010" =>b:="1111111011111111"; when "1011" =>b:="1111111011111111"; when "1100" =>b:="1111111011111011"; when "1101" =>b:="0000000000000001"; when "1110" =>b:="1111111111111111"; when "1111" =>b:="1111111111111111"; when others=>null; end case; When "011"=> case wei is when "0000" =>b:="1111111111111111"; when "0001" =>b:="1111101111111111"; when "0010" =>b:="1111011111111111"; when "0011" =>b:="1110111100000111"; when "0100" =>b:="1000111101110111"; when "0101" =>b:="1110111101110111"; when "0110" =>b:="1110111100000111"; when "0111" =>b:="1000000111111111"; when "1000" =>b:="1110111000000011"; when "1001" =>b:="1100011111011111"; when "1010" =>b:="1010101000000011"; when "1011" =>b:="0110101111011111"; when "1100" =>b:="0110110111011111"; when "1101" =>b:="1110111000000011"; when "1110" =>b:="1110111111111111"; when "1111" =>b:="1111111111111111"; when others=>null; end case; When "100"=> case wei is when "0000" =>b:="1101110111110111"; when "0001" =>b:="1110111011110111"; when "0010" =>b:="1111111111111111"; when "0011" =>b:="1111111111011111"; when "0100" =>b:="1000000000000001"; when "0101" =>b:="1011111111111101"; when "0110" =>b:="0111111111111011"; when "0111" =>b:="1110000000011111"; when "1000" =>b:="1111111110111111"; when "1001" =>b:="1111111001111011"; when "1010" =>b:="0000000000000001"; when "1011" =>b:="1111111011111111"; when "1100" =>b:="1111111011111111"; when "1101" =>b:="1111111011111111"; when "1110" =>b:="1111101011111111"; when "1111" =>b:="1111110111111111"; when others=>null; end case; When "101"=> case wei is when "0000" =>b:="1111111111111111"; when "0001" =>b:="1111011110011111"; when "0010" =>b:="1110101111101111"; when "0011" =>b:="1101110100000001"; when "0100" =>b:="1101110011111110"; when "0101" =>b:="1100001011000110"; when "0110" =>b:="1101001111111111"; when "0111" =>b:="1101110100000001"; when "1000" =>b:="1100010111010111"; when "1001" =>b:="1101101111010111"; when "1010" =>b:="1101111111010111"; when "1011" =>b:="1101111110010111"; when "1100" =>b:="1101111110110101"; when "1101" =>b:="1101111101110000"; when "1110" =>b:="1111111111111111"; when "1111" =>b:="1111111111111111"; when others=>null; end case; when others=>null; end case; q<=b; end process; END XIANSHI_architecture; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JUZHEN16 IS PORT (a,b : IN STD_LOGIC ; Q1,W1: OUT STD_LOGIC_VECTOR(15 DOWNTO 0)); END ENTITY JUZHEN16; ARCHITECTURE JZ16 OF JUZHEN16 IS COMPONENT CNT8 PORT( CLK1: IN STD_LOGIC; QOUT : OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END COMPONENT; COMPONENT CNT16 PORT( CLK : IN STD_LOGIC; QOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END COMPONENT; COMPONENT HANG PORT(DATAIN : IN STD_LOGIC_VECTOR(3 DOWNTO 0); ROW : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)); END COMPONENT; COMPONENT XIANSHI PORT( WEI : IN STD_LOGIC_VECTOR(3 downto 0); SHI : IN STD_LOGIC_VECTOR(2 downto 0); Q : OUT STD_LOGIC_VECTOR(15 downto 0)); END COMPONENT; SIGNAL c: STD_LOGIC_VECTOR(3 downto 0); SIGNAL d: STD_LOGIC_VECTOR(2 downto 0); BEGIN U1: CNT8 PORT MAP( CLK1=>b,QOUT=>d ); U2: CNT16 PORT MAP( CLK=>a,QOUT=>c ); U3: HANG PORT MAP(datain=>c,ROW=>Q1); U4: XIANSHI PORT MAP (wei=>c,shi=>d,Q=>W1); END ARCHITECTURE JZ16;
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服