北邮数电实验双色点阵扫描控制器.docx

北邮数电实验双色点阵扫描控制器.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2018212048赵依然 实验 5 双色点阵扫描显示控制器 一、实验要求 1. 用 8×8 点阵显示字符,每次显示一个字符,每秒切换一次,显示内容为“B”、“U”、“P”、 “T”及姓名的第一个字母。如张三显示的内容为“B”、“U”、“P”、“T”、“Z”、“S”。 2.为系统设置一个复位键,复位后重新从“B”开始循环显示。要求使用按键复位。 二、实验设计思路 我们知道点阵的结构,当 row 轮流出 0 的时候,二极管阴极为低电平,这时候我们给到一 个高电平在红灯或者绿灯的阳极的时候,就能驱使灯点亮。这样我们可以基于“视觉暂留”的 现象,快速刷新 row 灯,使得点阵能够快速点亮,这样就能显示一个完整的字,最后再利 用一个模 7 计数器来实现每个字母之间的转换。 我们引入一个 1000hz 的时钟,并对其进行一个 1000 分频变成 1hz 的时钟。之后再利用这 个模 7 计数器来控制 cor_l 和 cor_g 和 row 来控制灯的颜色、每行灯亮时列的亮灯情况。另 外,我们需要一个模 8 计数器,后面再设计一个 3-8 线译码器,这样能够控制 row 的亮灯 情况。最后我们需要注意的是,由于 row 需要快速刷新,故我们需要用 1000hz 的时钟,而 字符之间的转换的计数器要用 1hz 的时钟,来满足亮灯 1s 的条件。 我们还需要设计一个复位键,以便能做到按下按钮重新回到第一个字母的功能,这需要 reset 按下时,模 7 计数器的数字回到 0。这样把带防抖的复位键加进去即可。 最后顶层将这两个模块连接起来即可。 三、VHDL 代码及注释 点阵部分: library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; use IEEE.std_logic_arith.all; entity dianzhen is port(clk :in std_logic; col_r :out std_logic_vector(7 downto 0); --红灯的控制显示 col_g :out std_logic_vector(7 downto 0); --绿灯的控制显示 row : out std_logic_vector(7 downto 0);--二极管阴极控制 reset: in std_logic); end dianzhen; architecture a of dianzhen is signal sel7:std_logic_vector(2 downto 0); --模 7 计数器的信号 signal sel8:std_logic_vector(2 downto 0); --模 8 计数器的信号 signal clk_add:std_logic:=0; --分频后的时钟 begin p1:process(clk) --1000 分频 variable c:integer range 0 to 499:=0; begin if (clkevent and clk=1) then if c=499 then clk_add=not clk_add; c:=0; else c:=c+1; end if; end if; end process p1; p2:process (clk)--模 8 计数器 begin if (clkevent and clk=1) then sel8=sel8+1;--加满自动重新归零 end if; end process p2; p3:process(clk_add,reset)--模 7 计数器 begin if(reset=1) then--当出现重置的信号为高电平时,计数器重置为 000,这样就能回到字母 B sel7=000; elsif (CLK_addEVENT AND CLK_add=1)then if (sel7=O6) then sel7=O0;--模满 7 归零 else sel7=sel7+1; end if; end if; end process p3; p4:process(sel7,sel8)—模 7 和模 8 共同作用,模 8 用来快速刷新 row,模 7 用来控制哪个字 母,每行对应相对的列点亮的情况,显示字母。 begin case sel7 is when O0= case sel8 is --字母 B,运用循环嵌套,如 7 是显示 B 的最上面一行,0 是显示 最下面一行左下角灯为(0,0),右上角为(7,7),这样的方式点亮灯显示字符。 when O7 =col_rcol_growwhen O6 =

您可能关注的文档

文档评论(0)

bakey8 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档