用VHDL语言实现矩阵键盘并在数码管上显示

用VHDL语言实现矩阵键盘并在数码管上显示

ID:37968611

大小:149.49 KB

页数:7页

时间:2019-06-04

用VHDL语言实现矩阵键盘并在数码管上显示_第1页
用VHDL语言实现矩阵键盘并在数码管上显示_第2页
用VHDL语言实现矩阵键盘并在数码管上显示_第3页
用VHDL语言实现矩阵键盘并在数码管上显示_第4页
用VHDL语言实现矩阵键盘并在数码管上显示_第5页
资源描述:

《用VHDL语言实现矩阵键盘并在数码管上显示》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、用VHDL语言实现矩阵键盘并在数码管上显示作者:高仙儒(0942051058)摘要:使用VHDL语言描述一个矩阵键盘的电路功能,程序实现的功能是测试4X4矩阵按键;具体的键值通过FPGA核心板上的数码管来显示。如按下K1,数码管就显示0,按下K16,数码管就显示F。这里在QuartusⅡ开发环境下,采用VHDL语言设计了一种能够将机械式4×4矩阵键盘的按键值依次显示到8个7段数码管上的矩阵键盘及显示电路。仿真结果表明,所设计的矩阵键盘及显示电路成功地实现了按键防抖和按键数据的准确显示。在HS-EDA5.1实验箱上实验,验证了各项设计功能的正确性

2、。关键词:VHDL,矩阵键盘,数码管0、引言FPGA/CPLD在数字系统设计中的广泛应用,影响到了生产生活的各个方面。在FPGA/CPLD的设计开发中,VHDL语言作为一种主流的硬件描述语言,具有设计效率高,可靠性好,易读易懂等诸多优点。作为一种功能强大的FPGA/CPLD数字系统开发环境,Altera公司推出的QuartusⅡ,为设计者提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程,为使用VHDL语言进行FPGA/CPLD设计提供了极大的便利。矩阵键盘作为一种常用的数据输入设备,在各种电子设备上有着广泛的应用

3、,通过7段数码管将按键数值进行显示也是一种常用的数据显示方式。在设计机械式矩阵键盘控制电路时,按键防抖和按键数据的译码显示是两个重要方面。本文在QuartusⅡ开发环境下,采用VHDL语言设计了一种矩阵键盘及显示电路。1、矩阵键盘原理及数码管显示设计思路键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘.而靠软件编程来识别的称为非编码键盘;在一般常用系统中,用的最多的是非编码键盘。也有用到编码键盘的。非编码键盘有分为:独立键盘和行列式(又称为矩阵式)键盘。矩阵键盘结构如图一所示

4、。矩阵键盘的读取都经历一个扫描的过程,程序先将L1输出低电平,,即端口输入11111110,即十六进制0FEH,然后读回端口的数据,此时如果L1上的四个按键没有按下,读到的P0口的数据还是11111110,如按下了按键8,H2便被拉成低电平,读回的端口数据11011110(十六进制:0DEH),程序就根据读回的数据来判断某个按键按下了,如果没有按键按下,则再将L2输出低电平(P0=11111101,十六进制:0FDH),然后也一样读回端口数据,判断有按键按下否,如此下去,到L4的完成,为一个扫描过程。图一、矩阵键盘结构2、矩阵键盘及显示电路设计

5、矩阵键盘的电路符号如下其中clk为时钟信号输入端,rst为清零控制端,column为列扫描信号输入端,row为行扫描信号输出端,key_cod为数码管显示信号输入端。VHDL语言生成代码如下:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYkeyscanISPORT(clk:INstd_logic;rst:INstd_logic;row:OUTstd_logic_vector(3DOWN

6、TO0);column:INstd_logic_vector(3DOWNTO0);key_cod:OUTstd_logic_vector(3DOWNTO0));ENDKEYSCAN;ARCHITECTUREarchOFkeyscanISSIGNALdiv_cnt:std_logic_vector(24downto0);SIGNALscan_key:std_logic_vector(3DOWNTO0);SIGNALkey_code:std_logic_vector(3DOWNTO0);BEGINkey_cod<=key_code;row<=sca

7、n_key;PROCESS(clk,rst)BEGINIF(NOTrst='1')THENdiv_cnt<="0000000000000000000000000";ELSIF(clk'EVENTANDclk='1')THENdiv_cnt<=div_cnt+1;ENDIF;ENDPROCESS;PROCESS(div_cnt(20downto19))BEGINCASEdiv_cnt(20downto19)ISWHEN"00"=>scan_key<="1110";WHEN"01"=>scan_key<="1101";WHEN"10"=>scan_

8、key<="1011";WHEN"11"=>scan_key<="0111";WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。