课题名称:16*16点阵显示。
专业:通信工程。
班级:2013级通信工程(2)班。
学号:12013241953
姓名:刘乐。
指导教师:杨泽林。
完成时间:2023年12月18号。
一、设计目的。
二、课题的主要功能。
三、课题的功能模块划分。
四、主要功能的实现。
五、实验程序。
六、系统调试与**。
七、总结与体会。
一 、设计目的。
全面熟悉、掌握vhdl语言基本知识,掌握利用vhdl语言对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。
二、课题的主要功能。
2.1问题描述。
本实验主要完成汉字字符在led 上的显示,16*16 扫描led 点阵的工作原理与8 位扫描数码管类似,只是显示的方式与结果不一样而已。下面就本实验系统的16*16 点阵的工件原理做一些简单的说明。16*16 点阵由此256 个led 通过排列组合而形成16 行*16 列的一个矩阵式的led 阵列,俗称16*16 点阵。
单个的led 的电路如下图1 所示:
图1 单个led 电路图。
由上图可知,对于单个led 的电路图当rn 输入一个高电平,同时cn 输入一个低电平时,电路形成一个回路,led 发光。也就是led 点阵对应的这个点被点亮。16*16 点阵也就是由16 行和16 列的led 组成,其中每一行的所有16 个led的rn 端并联在一起,每一列的所有16 个led 的cn 端并联在一起。
通过给rn 输入一个高电平,也就相当于给这一列所有led 输入了一个高电平,这时只要某个led 的cn 端输入一个低电平时,对应的led 就会被点亮。具体的电路如下图2所示:
图2 16*16 点阵电路原理图。
在点阵上显示一字符是根据其字符在点阵上的显示的点的亮灭来表示的,如下图3 所示:
图3 字符在点阵上的显示。
在上图中,显示的是一个“汉”字,只要将被“汉”字所覆盖的区域的点点亮,则在点阵中就会显示一个“汉”字。根据前面我们所介绍的点阵显示的原理,当我们选中第一列后,根据要显示汉字的第一列中所需要被点亮的点对应的rn置为高电平,则在第一列中需要被点亮的点就会被点亮。依此类推,显示第二列、第三列……第n 列中需要被点亮的点。
然后根据人眼的视觉原理,将每一列显示的点的间隔时间设为一定的值,那么我们就会感觉显示一个完整的不闪烁的汉字。同时也可以按照这个原理来显示其它的汉字。下图4 是一个汉字显示所需要的时序图:
图4 显示时序图。
2.2功能描述。
本实验的示例程序依次显示的是“宁大物电学院”,要求每隔一秒换下一个字显示。
三、课题的功能模块的划分。
3.1 系统的总体框图。
图5此程序分为五个模块,两个计数器和一个行驱动程序和一个显示字体控制程序,最后再加上一个顶层文件,用来连接前四个模块,程序简图如下:
图6电路连接简图。
四、主要功能的实现。
4.1 8进制加法器设计。
是8进制的计数器,其每计一次数,输出一个字。例如当计数为“000b”时显示“宁”,当计数为“001b”时显示“大”。给其脉冲周期为1s。
4.2 16进制计数器设计。
是16进制的计数器,其输出端控制行和列驱动控制器的输出数据。
4.3 列驱动设计。
为列驱动控制器,该模块控制所亮的行,当输出为0001h时,给点阵的第一行高电平,输出为0010h时,给点阵的第二行高电平,依次类推,逐次给每行高电平。
4.4 字体显示控制器。
为字体显示控制器,shi控制的是所显示的字。例如当shi为00h时,表示显示第一个字;当shi为01h时,表示显示第二个字,依次类推。wei控制所显示的为字的第几行,例如当wei为0000b时,表示输出字的第一行文字信息;wei为0001b时,表示输出字的第二行文字信息,依次类推。
4.5 顶层文件设计。
是顶层文件设计,文件在实体中首先定义了顶层设计元件的端口信号,然后在architecture和begin之间利用component语句对准备调用的元件做了声明,并定义了c,d两个信号作为器件内部的连接线。最后利用端口映射语句port map()将两个计数器和列驱动,字体显示驱动连接起来构成一个完整的器件。
五、实验程序。
library ieee;
use use
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);
beginprocess(clk1)
beginif (clk1'event and clk1='1') then
cqi<=cqi+1;
end if;
qout<=cqi;
end process;
end architecture behv;
library ieee;
use use
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);
beginprocess(clk)
beginif (clk'event and clk='1') then
cqi<=cqi+1;
end if;
qout<=cqi;
end process;
end architecture behv;
library ieee;
use use
entity hang is
port(datain : in std_logic_vector(3 downto 0);
row : out std_logic_vector(15 downto 0));
课程设计实验报告
成都理工大学。课程名称程序设计。院系信科院数字 技术系 班级。所属小组。姓名。学号。指导教师何建军。2012年月日。课程设计要求 课程设计的目的检验学生对相应知识体系掌握程度。对学生来说是全面展示自己的理论知识掌握程度 综合编程实践能力以及写作能力。这对未来的工作有较好的帮助,希望各位同学认真对待,...
FPGA课程设计实验报告
合肥工业大学大学。实验报告。课程名称fpga设计。实验名称 移位乘法器设计 8位booth乘法器设计。姓名陶辉。学号20114712 班级电子科学与技术11 1班。指导教师倪伟。合肥工业大学电子科学与应用物理学院制。移位乘法器。一 实验原理。移位和相加乘法原理,乘法通过逐项移位相加原理来实现,从被乘...
vfp课程设计实验报告
vfp课程设计实验报告。2010年1月1日。一 课程设计的目的。通过一个小型而典型的开发试验项目的训练,促使学生进一步巩固 理解所学的基础知识,增强实际操作能力,丰富开发管理信息应用系统的认识和经验。二 课程设计的要求。一 系统功能设计。注 打印功能可能单独在菜单上列出,也可以直接在统计表单上添加打...