汉字点阵显示系统的设计与实现VHDL代码Quartus仿真

名称:汉字点阵显示系统的设计与实现VHDL代码Quartus仿真(文末获取)

软件:Quartus

语言:VHDL

代码功能:

汉字点阵显示系统的设计与实现

属性:综合性

实验目的:设计并制作一个LED汉字点阵显示系统

实验内容:实现16×16点阵的任意汉字的左右及上下滚屏显示,并制作本校学生会工作的广告、通知标语

1. 工程文件

2. 程序文件

3. 程序编译

4. 仿真图

整体仿真图

局部放大

局部放大

分频模块仿真图

控制模块仿真图

局部放大

局部放大

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
--16*16点阵
ENTITY led_16X16 IS
   PORT (
      clk      : IN STD_LOGIC;--时钟
      rst_p    : IN STD_LOGIC;--复位
      dir_sw1  : IN STD_LOGIC;--方向(同方向的正反切换)
      dir_sw2  : IN STD_LOGIC;--方向(左右和上下切换)
      hang     : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);--行
      lie      : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)--列
   );
END led_16X16;
ARCHITECTURE trans OF led_16X16 IS
   COMPONENT led_ctrl IS
      PORT (
         clk      : IN STD_LOGIC;
         clk_1    : IN STD_LOGIC;
         rst_p    : IN STD_LOGIC;
         dir_sw1  : IN STD_LOGIC;
         dir_sw2  : IN STD_LOGIC;
         hang     : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
         lie      : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)
      );
   END COMPONENT;
   
   COMPONENT div_clk IS
      PORT (
         clk      : IN STD_LOGIC;
         clk_shift : OUT STD_LOGIC
      );
   END COMPONENT;
    
   SIGNAL clk_shift  : STD_LOGIC;--滚动时钟1Hz
BEGIN
--分频模块
   i_div_clk : div_clk
      PORT MAP (
         clk        => clk,--50M
         clk_shift  => clk_shift--1Hz
      );
   
   
--控制模块   
   i_led_ctrl : led_ctrl
      PORT MAP (
         clk      => clk,--50M
         clk_1    => clk_shift,
         rst_p    => rst_p,
         dir_sw1  => dir_sw1,--方向(同方向的正反切换)
         dir_sw2  => dir_sw2,--方向(左右和上下切换)
         hang     => hang,--行
         lie      => lie--列
      );
   
END trans;
源代码

 扫描文章末尾的公众号二维码

  • 24
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的 VHDL 代码,用于实现一个 8x8 的点阵显示: ```vhdl entity dot_matrix is port ( clk : in std_logic; reset : in std_logic; data : in std_logic_vector(7 downto 0); row : out std_logic_vector(7 downto 0); col : out std_logic_vector(7 downto 0) ); end entity; architecture behavior of dot_matrix is signal row_count : integer range 0 to 7 := 0; signal col_count : integer range 0 to 7 := 0; signal dot_matrix : std_logic_vector(7 downto 0) := (others => '0'); begin process(clk, reset) begin if reset = '1' then row_count <= 0; col_count <= 0; dot_matrix <= (others => '0'); elsif rising_edge(clk) then -- 更新点阵数据 dot_matrix <= data; -- 更新行和列 row_count <= row_count + 1; if row_count = 8 then row_count <= 0; col_count <= col_count + 1; if col_count = 8 then col_count <= 0; end if; end if; -- 输出行和列信号 row <= std_logic_vector(row_count); col <= std_logic_vector(col_count); end if; end process; end architecture; ``` 这个代码定义了一个名为 `dot_matrix` 的实体,其中包含一个时钟信号 `clk`、一个复位信号 `reset`、一个输入数据端口 `data`,以及两个输出端口 `row` 和 `col`。在架构中,我们定义了一个名为 `dot_matrix` 的信号,用于存储 8x8 的点阵数据。在时钟上升沿处理过程中,我们从输入端口读取新的点阵数据,并递增行和列计数器变量。当计数器达到 8 时,它们将重置为 0。我们还将行和列计数器转换为 `std_logic_vector` 并将其分配给输出端口。 请注意,这是一个基本的示例代码,只用于参考。您需要根据自己的需求进行修改和调整。同时,您还需要为点阵显示器编写具体的驱动器程序,以将行和列信号转换为适当的控制信号来控制点阵显示

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值