利用键盘控制点阵进行汉字显示课程设计_第1页
利用键盘控制点阵进行汉字显示课程设计_第2页
利用键盘控制点阵进行汉字显示课程设计_第3页
利用键盘控制点阵进行汉字显示课程设计_第4页
利用键盘控制点阵进行汉字显示课程设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、大学课 程 设 计 说 明 书学生姓名: 学 号:学 院:电子与计算机科学技术学院专 业:微电子学题 目: 利用键盘控制点阵进行汉字显示 指导教师: 职称: 目 录1.课程设计目的22.课程设计内容及要求22.1设计内容22.2设计要求23.设计方案及实现情况23.1设计思路23.2工作原理及框图23.3各模块功能描述43.4仿真结果123.5试验箱验证情况144课程设计总结155.参考文献151、课程设计目的 1.学习操作数字电路设计实验开发系统,掌握点阵显示模块的工作原理及应用。2.掌握组合逻辑电路、时序逻辑电路的设计方法。3.学习掌握可编程器件设计的全过程。2、课程设计内容和要求2.1、

2、设计内容 用VHDL语言编写程序,使键盘控制点阵显示模块显示汉字。2.2、设计要求1学习掌握键盘控制模块、点阵显示模块的工作原理及应用;2. 熟练掌握VHDL编程语言,编写键盘控制模块的控制逻辑;3. 仿真所编写的程序,模拟验证所编写的模块功能;4. 下载程序到芯片中,硬件验证所设置的功能,能够实现汉字显示;5. 整理设计内容,编写设计说明书。3、设计方案及实现情况3.1、设计思路通过键盘扫描程序的行输出与列输入就可以确认按键的状态,再通过键盘处理程序便可识别键值。将产生的键值信号送到4-16译码器,经过译码器译码将键值通过LED点阵显示出来。3.2、工作原理及框图3.2.1、矩阵式键盘的工作

3、原理矩阵式键盘又叫行列式键盘,是用I/O口线组成的行、列矩阵结构,在每根行线与列线的交叉处,二线不直接相通而是通过一个按键跨接接通。采用这种矩阵结构只需M根行输出线和N根列输入线,就可连接MN个按键。通过键盘扫描程序的行输出与列输入就可确认按键的状态,再通过键盘处理程序便可识别键值。如图1图1 48矩阵键盘电路原理图键盘译码电路,主要是根据当按键时键盘会输出四 个KIN值(KIN3KIN0)和三个SEL值(SEL2SEL0)。这些构成了键盘的参数。反过来就可以以这些参数来确定具体的键值。有了键盘参数表 ,要写出键盘译码电路的VHDL程序就非常容易了,尤其针对有表可以对照的电路设计,只要使用CA

4、SE-WHEN或WHEN-ELSE语句,便可轻松完成设计。表1 键盘参数表SEL2-SEL0KIN3-KIN0对应的按键SEL2-SEL0KIN3-KIN0对应的按键000111001001110MEM11016110181011LAST1011E0111CTRL0111EMPTY4001111011011110ESC11017110191011STEP1011F0111EMPTY10111SHIFT01011102110111041101REG1101A1011C1011NEXT0111EMPTY20111NONE01111103111111051101EXEC1101B1011D1011E

5、NTER0111EMPTY30111NONE3.2.2、点阵的工作原理点阵式LED显示器采用逐行扫描式工作。要使点阵显示出一个字符的编程方法是:首先选通第一行;接着,向行码锁存器写入该行的字型码(即列数据)。然后,按相同的方式选通第二行,写第二行的字型码由此类推,直到写完所有行的字型码,完成一个字符的显示。如果要使多个点阵循环显示多个字符,只要把显示的各个字符按顺序安排在显示缓冲区,然后根据显示的字符去查表,再按一定的时序向各个字形行码锁存器和行扫描器输入相应的字形行码和行扫描码,便可达到目的。图2 点阵字符的显示3.2.3、程序框图图3 程序总图3.3、各模块功能描述3.3.1、分频模块此模

6、块对时钟信号进行分频,产生时序信号。 图4 分频模块图程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin is port(clk:in std_logic; divclk:out std_logic);end fenpin;architecture dclk_arch of fenpin is beginprocess(clk)variable cnt:std_logic_vector(1 downto 0);variable a:std_logic;beginif

7、clkevent and clk=1 then if a=0 thenif cnt=11 then a:=1;else cnt:=cnt+1;end if; elsif a=1 thenif cnt=00 then a:=0; else cnt:=cnt-1;end if;end if;end if;divclk=a;end process;end dclk_arch;3.3.2、CNT模块此模块产生选通信号和键盘扫描信号,键盘扫描信号的变化顺序为000-001-010-011-100-101-110-111,由sel2&sel1&sel0来决定。依次循环变化来扫描8列按键。其中sel3无影响

8、。 图5 CNT模块图程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt isport( clk:in std_logic; sel3,sel2,sel1,sel0:out std_logic);end cnt;architecture cnt_arch of cnt isbeginprocess(clk)variable cn:std_logic_vector(3 downto 0);beginif clkevent and clk=1 thenif cn=1111 th

9、encn:=0000;elsecn:=cn+1;end if;end if;sel0=cn(0);sel1=cn(1);sel2=cn(2);sel3=cn(3);end process;end cnt_arch;3.3.3、键盘译码模块当按下数字键时,键盘所产生的的输出KIN3-KIN0跟扫描信号SEL3-SEL0结合,编译成与数字键键值相对应数字的二位二进制码,传给到显示模块。 图6 键盘译码程序框图程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ym is port(ki

10、n3,kin2,kin1,kin0:in std_logic; clk:in std_logic; sel3,sel2,sel1,sel0:in std_logic; p:out std_logic_vector(1 downto 0);end ym;architecture ym_arch of ym issignal a:std_logic_vector(3 downto 0);signal b:std_logic_vector(3 downto 0);signal q:std_logic_vector(1 downto 0);signal m:std_logic_vector(7 dow

11、nto 0);begin a=kin3&kin2&kin1&kin0; b=sel3&sel2&sel1&sel0; mqqqqq=q;end case; end if; p=q;end process;end ym_arch;3.3.4、显示模块此模块对应产生列字符扫描信号图7 显示模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cora isport(ch:in std_logic_vector(1 downto 0);clk:in std_logic;se0,se1,

12、se2,se3:in std_logic;q:out std_logic_vector(15 downto 0);end cora;architecture corn_arc of cora issignal sel:std_logic_vector(3 downto 0);begin sel case sel is when 0000=qqqqqqqqqqqqqqqqnull; end case;when 01= case sel is when 0000=qqqqqqqqqqqqqqqqnull; end case;when 10= case sel is when 0000=qqqqqq

13、qqqqqqqqqqnull; end case;when 11= case sel is when 0000=qqqqqqqqqqqqqqqqnull; end case; when others=null;end case;end if;end process;end corn_arc;3.4、仿真结果3.4.1、分频模块仿真图图8 分频模块仿真图3.4.2、CNT模块仿真图图9 CNT模块仿真图3.4.3、键盘译码模块仿真图图10 键盘译码模块仿真图3.4.4、显示模块仿真图图11 显示模块仿真图3.4.5、总电路仿真图图12 总电路仿真图3.5、实验箱验证情况将写好的程序仿真保存后建立

14、一个.gdf文件,将所有的程序框图连接起来(如图4)。然后仿真,无误后,选择芯片类型。分配管脚,然后再仿真,无错后。根据所分配的管脚在实验箱上把线连接好(如图18),最后把程序下载到FPGA中,运行并观察结果。 图13 硬件连线图在本次实验中,我只用了0、1、2、3,四个键来实现显示,当按下这些键时其显示的结果是 图14 显示汉字“中” 图15 显示汉字“北” 图16 显示汉字“大” 图17 显示汉字“学”4、课程设计总结通过本次课程设计,学会了操作数字电路设计实验开发系统,掌握了点阵显示模块的工作原理及应用和组合逻辑电路、时序逻辑电路的设计方法以及键盘控制模块的工作原理及应用;理解了键盘和点阵的逻辑工作原理。熟练掌握了VHDL编程语言,编写出键盘控制模块的控制逻辑和点阵显示逻辑的VHDL程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论