利用键盘控制点阵进行汉字显示课程设计Word下载.docx

上传人:b****5 文档编号:20718743 上传时间:2023-01-25 格式:DOCX 页数:16 大小:369.54KB
下载 相关 举报
利用键盘控制点阵进行汉字显示课程设计Word下载.docx_第1页
第1页 / 共16页
利用键盘控制点阵进行汉字显示课程设计Word下载.docx_第2页
第2页 / 共16页
利用键盘控制点阵进行汉字显示课程设计Word下载.docx_第3页
第3页 / 共16页
利用键盘控制点阵进行汉字显示课程设计Word下载.docx_第4页
第4页 / 共16页
利用键盘控制点阵进行汉字显示课程设计Word下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

利用键盘控制点阵进行汉字显示课程设计Word下载.docx

《利用键盘控制点阵进行汉字显示课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《利用键盘控制点阵进行汉字显示课程设计Word下载.docx(16页珍藏版)》请在冰豆网上搜索。

利用键盘控制点阵进行汉字显示课程设计Word下载.docx

2.1、设计内容

用VHDL语言编写程序,使键盘控制点阵显示模块显示汉字。

2.2、设计要求

1.学习掌握键盘控制模块、点阵显示模块的工作原理及应用;

2.熟练掌握VHDL编程语言,编写键盘控制模块的控制逻辑;

3.仿真所编写的程序,模拟验证所编写的模块功能;

4.下载程序到芯片中,硬件验证所设置的功能,能够实现汉字显示;

5.整理设计内容,编写设计说明书。

3、 

设计方案及实现情况

3.1、设计思路

通过键盘扫描程序的行输出与列输入就可以确认按键的状态,再通过键盘处理程序便可识别键值。

将产生的键值信号送到4-16译码器,经过译码器译码将键值通过LED点阵显示出来。

3.2、工作原理及框图

3.2.1、矩阵式键盘的工作原理

矩阵式键盘又叫行列式键盘,是用I/O口线组成的行、列矩阵结构,在每根行线与列线的交叉处,二线不直接相通而是通过一个按键跨接接通。

采用这种矩阵结构只需M根行输出线和N根列输入线,就可连接M×

N个按键。

通过键盘扫描程序的行输出与列输入就可确认按键的状态,再通过键盘处理程序便可识别键值。

如图1

图14×

8矩阵键盘电路原理图

键盘译码电路,主要是根据当按键时键盘会输出四个KIN值(KIN3—KIN0)和三个SEL值(SEL2—SEL0)。

这些构成了键盘的参数。

反过来就可以以这些参数来确定具体的键值。

有了键盘参数表,要写出键盘译码电路的VHDL程序就非常容易了,尤其针对有表可以对照的电路设计,只要使用CASE-WHEN或WHEN-ELSE语句,便可轻松完成设计。

表1键盘参数表

SEL2-SEL0

KIN3-KIN0

对应的按键

000

1110

100

MEM

1101

6

8

1011

LAST

E

0111

CTRL

EMPTY4

001

1

101

ESC

7

9

STEP

F

EMPTY1

SHIFT

010

2

110

4

REG

A

C

NEXT

EMPTY2

NONE

011

3

111

5

EXEC

B

D

ENTER

EMPTY3

3.2.2、点阵的工作原理

点阵式LED显示器采用逐行扫描式工作。

要使点阵显示出一个字符的编程方法是:

首先选通第一行;

接着,向行码锁存器写入该行的字型码(即列数据)。

然后,按相同的方式选通第二行,写第二行的字型码……由此类推,直到写完所有行的字型码,完成一个字符的显示。

如果要使多个点阵循环显示多个字符,只要把显示的各个字符按顺序安排在显示缓冲区,然后根据显示的字符去查表,再按一定的时序向各个字形行码锁存器和行扫描器输入相应的字形行码和行扫描码,便可达到目的。

图2点阵字符的显示

3.2.3、程序框图

图3程序总图

3.3、各模块功能描述

3.3.1、分频模块

此模块对时钟信号进行分频,产生时序信号。

图4分频模块图

程序:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityfenpinis

port(clk:

instd_logic;

divclk:

outstd_logic);

endfenpin;

architecturedclk_archoffenpinis

begin

process(clk)

variablecnt:

std_logic_vector(1downto0);

variablea:

std_logic;

ifclk'

eventandclk='

1'

then

ifa='

0'

ifcnt="

11"

a:

='

;

else

cnt:

=cnt+1;

endif;

elsifa='

ifcnt="

00"

a:

else

=cnt-1;

endif;

endif;

divclk<

=a;

endprocess;

enddclk_arch;

3.3.2、CNT模块

此模块产生选通信号和键盘扫描信号,键盘扫描信号的变化顺序为000-001-010-011-100-101-110-111,由sel2&

sel1&

sel0来决定。

依次循环变化来扫描8列按键。

其中sel3无影响。

图5CNT模块图

程序:

entitycntis

port(clk:

sel3,sel2,sel1,sel0:

endcnt;

architecturecnt_archofcntis

variablecn:

std_logic_vector(3downto0);

ifcn="

1111"

cn:

="

0000"

=cn+1;

sel0<

=cn(0);

sel1<

=cn

(1);

sel2<

=cn

(2);

sel3<

=cn(3);

endcnt_arch;

3.3.3、键盘译码模块

当按下数字键时,键盘所产生的的输出KIN3--KIN0跟扫描信号SEL3--SEL0结合,编译成与数字键键值相对应数字的二位二进制码,传给到显示模块。

图6键盘译码程序框图

entityymis

port(kin3,kin2,kin1,kin0:

clk:

sel3,sel2,sel1,sel0:

p:

outstd_logic_vector(1downto0));

endym;

architectureym_archofymis

signala:

signalb:

signalq:

signalm:

std_logic_vector(7downto0);

a<

=kin3&

kin2&

kin1&

kin0;

b<

=sel3&

sel2&

sel0;

m<

=a&

b;

begin

then

casemis

when"

11100000"

=>

q<

11100001"

01"

11100010"

10"

11100011"

whenothers=>

=q;

endcase;

p<

endym_arch;

3.3.4、显示模块

此模块对应产生列字符扫描信号

图7显示模块

entitycorais

port(ch:

instd_logic_vector(1downto0);

se0,se1,se2,se3:

q:

outstd_logic_vector(15downto0));

endcora;

architecturecorn_arcofcorais

signalsel:

sel<

=se3&

se2&

se1&

se0;

process(ch,sel,clk)

variablecnt,bnt:

integerrange0to1000;

ifclk'

casechis

when"

caseselis

0000000000000000"

0001"

0000001110000000"

0010"

0011"

0100"

0101"

1111111111111110"

0110"

0111"

1110001110001110"

1000"

1001"

1010"

1011"

1100"

1101"

1110"

whenothers=>

null;

endcase;

when"

0000110001100000"

0111110001111110"

0001100001100100"

0011000001100110"

0110000001111111"

1100000001111111"

0000001100000000"

1111111111111111"

0000011100000000"

0000011111000000"

0000111001110000"

0000111000111000"

0001110000011100"

0011100000001110"

0111000000001110"

0011000111000100"

0011000111000110"

0110000000000110"

0110011111100110"

0010011111100100"

0000000011100000"

0000000011000000"

0111111111111110"

0000110011000000"

endcase;

endcorn_arc;

3.4、仿真结果

3.4.1、分频模块仿真图

图8分频模块仿真图

3.4.2、CNT模块仿真图

图9CNT模块仿真图

3.4.3、键盘译码模块仿真图

图10键盘译码模块仿真图

3.4.4、显示模块仿真图

图11显示模块仿真图

3.4.5、总电路仿真图

图12总电路仿真图

3.5、实验箱验证情况

将写好的程序仿真保存后建立一个.gdf文件,将所有的程序框图连接起来(如图4)。

然后仿真,无误后,选择芯片类型。

分配管脚,然后再仿真,无错后。

根据所分配的管脚在实验箱上把线连接好(如图18),最后把程序下载到FPGA中,运行并观察结果。

图13硬件连线图

在本次实验中,我只用了0、1、2、3,四个键来实现显示,当按下这些键时其显示的结果是

图14显示汉字“中”图15显示汉字“北”

图16显示汉字“大”图17显示汉字“学”

4、课程设计总结

通过本次课程设计,学会了操作数字电路设计实验开发系统,掌握了点阵显示模块的工作原理及应用和组合逻辑电路、时序逻辑电路的设计方法以及键盘控制模块的工作原理及应用;

理解了键盘和点阵的逻辑工作原理。

熟练掌握了VHDL编程语言,编写出键盘控制模块的控制逻辑和点阵显示逻辑的VHDL程序,仿真成功并下载到FPGA中。

最终在实验箱上成功实现了硬件验证所设置的功能----汉字显示。

5、参考文献

1.侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计.西安:

西安电子科技大学出版社,1999

2.求是科技.CPLD/FPGA应用开发技术与工程实践.北京:

人民邮电出版社,2005

3.罗苑棠.CPLD/FPGA常用模块与综合系统设计实例精讲.北京:

电子工业出版社,2007

4.任勇峰,庄新敏.VHDL与硬件实现速成.北京:

国防工业出版社,2005

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1