矩阵键盘键信号检测电路设计-EDA课程设计说明书
单片机课程设计---4×4矩阵式键盘识别显示电路的设计

《单片机原理及应用》课程设计题目:4×4矩阵式键盘与单片机连接与编程专业:测控技术与仪器班级:机电082-1 姓名:学号:指导老师:组员:( 2011.7 .13)目录第1节引言 (2)1.1 4*4矩阵式键盘系统概述 (2)1.2 本设计任务和主要内容 (3)第2节系统主要硬件电路设计 (4)2.1 单片机控制系统原理 (4)2.2 单片机主机系统电路 (5)2.2.1 时钟电路 (8)2.2.2 复位电路 (8)2.2.3 矩阵式键盘电路 (8)2.3 译码显示电路 (9)第3节系统软件设计 (13)3.1 软件流程图 (13)3.2 系统程序设计 (14)第4节结束语 (17)参考文献 (18)第一节引言矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,即时在LED数码管上。
单片机控制的据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。
1.1 4*4矩阵式键盘识别显示系统概述矩阵式键盘模式以N个端口连接控制N*N个按键,实时在LED数码管上显示按键信息。
显示按键信息,既降低了成本,又提高了精确度,省下了很多的I/O端口为他用,相反,独立式按键虽编程简单,但占用I/O口资源较多,不适合在按键较多的场合应用。
并且在实际应用中经常要用到输入数字、字母、符号等操作功能,如电子密码锁、电话机键盘、计算器按键等,至少都需要12到16个按键,在这种情况下如果用独立式按键的话,显然太浪费I/O端口资源,为了解决这一问题,我们使用矩阵式键盘。
矩阵式键盘简介:矩阵式键盘又称行列键盘,它是用N条I/O线作为行线,N条I/O线作为列线组成的键盘。
在行线和列线的每个交叉点上设置一个按键。
这样键盘上按键的个数就为N*N个。
这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。
实验一 矩阵键盘检测

实验一矩阵键盘检测一、实验目的:1、学习非编码键盘的工作原理和键盘的扫描方式。
2、学习键盘的去抖方法和键盘应用程序的设计。
二、实验设备:51/AVR实验板、USB连接线、电脑三、实验原理:键盘接口电路是单片机系统设计非常重要的一环,作为人机交互界面里最常用的输入设备。
我们可以通过键盘输入数据或命令来实现简单的人机通信。
1、按键的分类一般来说,按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。
前者造价低,后者寿命长。
目前,微机系统中最常见的是触点式开关按键(如本学习板上所采用按键)。
按键按照接口原理又可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。
编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的识别。
全编码键盘由专门的芯片实现识键及输出相应的编码,一般还具有去抖动和多键、窜键等保护电路,这种键盘使用方便,硬件开销大,一般的小型嵌入式应用系统较少采用。
非编码键盘按连接方式可分为独立式和矩阵式两种,其它工作都主要由软件完成。
由于其经济实用,较多地应用于单片机系统中(本学习板也采用非编码键盘)。
2、按键的输入原理在单片机应用系统中,通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。
也就是说,它能提供标准的TTL 逻辑电平,以便与通用数字系统的逻辑电平相容。
此外,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据。
当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能。
因此,键信息输入是与软件结构密切相关的过程。
对于一组键或一个键盘,通过接口电路与单片机相连。
单片机可以采用查询或中断方式了解有无按键输入并检查是哪一个按键按下,若有键按下则跳至相应的键盘处理程序处去执行,若无键按下则继续执行其他程序。
基于EDA的矩阵键盘设计

学号 14082101445 成绩:信息学院《EDA技术及应用》课程论文题目:基于FPGA的矩阵键盘设计作者罗诗雨班级 08-1BF 系别信息学院专业自动化完成时间 2010年12月12日1 绪论随着人们生活水平的提高,19世纪兴起的数字电路以其先天的便捷、稳定的优点在现代电子技术电路中占有越来越重要的地位。
数字电路与模拟电路相比有显而易见的稳定性。
近年来,数字电路又有了巨大的发展。
可编程逻辑器件(PAL、GAL等)的发展和普及最终使IC的设计面向了用户(这是模拟电路无法做到的),而这毫无疑问会给用户带来巨大的便捷,从而奠定它在电子电路中的对位。
FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB (Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。
此次设计即为基于FPGA的矩阵键盘设计。
1.1 4×4矩阵键盘的工作原理在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
1.2矩阵键盘的功能特点在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,在矩阵键盘中每条水平线和垂直线在交叉处不直接相连,而是通过一个按键相连接,这样在由N条水平线和M条垂直线最多可以有N *M 个按键,大大的减少了对于芯片I/O的占用。
矩阵键盘键信号检测电路设计EDA课程设计说明书

课程设计说明书题目EDA技术及应用系(部)专业(班级)姓名学号指导教师起止日期EDA技术课程设计任务书系(部):专业:指导教师:目录引言 (5)一、绪论 (5)1.1 FPGA概况 (5)1.2 此课题的研究意义 (6)二、矩阵键盘接口电路的原理及总体设计 (6)2.1 矩阵键盘接口电路的原理 (6)2.2 总体设计 (8)三、各模块的设计及仿真 (8)3.1 键盘扫描电路 (8)3.2 键盘译码电路和按键标志位产生电路 (11)3.3 时钟产生模块 (16)3.4 键盘接口电路顶层电路实现 (18)四、硬件测试 (19)五、实验设备 (19)六、总结 (20)参考文献 (20)矩阵键盘键信号检测电路设计引言人类文明已进入到高度发达的信息化社会。
信息化社会的发展离不开电子信息产品开发技术、产品品质的提高和进步。
电子信息产品随着科学技术的进步,其电子器件和设计方法更新换代的速度日新月异。
实现这种进步的主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化(EDA,Electronic Design Automation)技术,EDA技术的发展和推广应用又极大地推动了电子信息产业的发展。
为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的一项先进技术和重要工具。
目前,在国内电子技术教学和产业界的技术推广中已形成“EDA热”,完全可以说,掌握EDA技术是电子信息类专业学生、工程技术人员所必备的基本能力和技能。
此设计主要利用VHDL硬件描述语言在EDA平台Quartus II上设计一个4×4阵列键盘扫描电路,将行扫描信号输入阵列键盘,读取列信号的值,输出按键编码,从而判断出按键按下的位置。
并且进行模拟仿真,下载到EDA实验箱进行硬件验证。
一、绪论1.1 FPGA概况早期的可编程逻辑器件只有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(E2PROM)三种。
实验6 矩阵键盘的检测

实验6 矩阵键盘的检测一、实验目的1、掌握七段数码管显示的软件译码方法;2、掌握矩阵键盘的使用。
二、实验内容矩阵键盘来控制数码管显示:实验板上电时,数码管不显示,顺序按下4*4矩阵键盘后,在数码管上依次显示0-F,6个数码管同时静态显示即可。
三、实验方法和手段多媒体教学、演示、讲练结合、软件仿真、实物焊接四、实验条件实验指导书、计算机、Proteus软件、Keil C51软件、耗材、电烙铁五、实验学时2学时六、实验步骤1、Proteus设计电路原理图(1)按照图6-1,在Proteus软件中绘制好电路原理图。
图6-1 电路原理图说明:矩阵键盘行线接P3口低4位(第一行P3.0),列线接P3口高4位(第一列接P3.4)。
(2)电路原理图中所需要的元件见表6-1。
表6-1 元件列表元件名称型号数量Proteus中的名称单片机芯片AT89C51 1个AT89C51 晶振12MHz 1个CRYSTAL电容22PF 2个CAP电解电容22uF/16V 1个CAP-ELEC电阻1K 1个RES排阻1K 1个RESPACK_8 六位一体共阴极数码管1个7SEG-MPX6_CC 锁存芯片74HC573 2个74HC573按键开关16个BUTTON 2、编程控制在Keil软件中进行程序编制,完成目标:顺序按下4*4矩阵键盘后,6个数码管同时静态依次显示0-F。
将下面的参考程序补充完整,也可自行编写新程序。
参考程序代码如下:3、仿真调试将生成的HEX文件加载到Proteus中,进行软件仿真,查看效果。
4、实物调试(1)程序烧制(2)使用焊接成功的电路板,通电调试,查看效果。
七、思考题1、如果采用双数码管显示按键值(0-15),应如何修改程序代码?2、如果行线接P3口低4位,列线接P2口低4位,程序代码如何修改?。
矩阵键盘电路设计

学号: 2课程设计题目矩阵键盘电路设计教学院计算机学院专业计算机应用技术班级姓名指导教师2010 年01 月12 日前言.................................................................... 第一章需求分析.........................................................功能描述.........................................................功能分析......................................................... 第二章系统的原理及分析.................................................用到的知识点的介绍,知识点使用的总体思路第三章详细设计.........................................................硬件设计系统结构图,元器件的选择等软件设计所设计的软件关键模块的程序流程第四章测试............................................................运行结果分析等第五章总结............................................................. 参考文献................................................................ 附录关键程序代码........................................................矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。
在行线和列线的每个交叉点上设置一个按键。
4×4矩阵键盘EDA设计

else if(Clk4EN) begin
case(KeyOut) 4'b1110 : KeyTmp1[3:0] <= KeyDone;//扫描过程中消抖 4'b1101 : KeyTmp1[7:4] <= KeyDone; 4'b1011 : KeyTmp1[11:8] <= KeyDone; 4'b0111 : KeyTmp1[15:12] <= KeyDone; default : KeyTmp1 <= 16'hffff;//清零
2021/7/23
9
7/23/2021
硬件设计
8段数码管原理图
2021/7/23
11
硬件设计
2021/7/23
12
2021/7/23
软件设计
module matrix_keyboard(Clock,nRST,nEN,pEN,INT,KeyVal,KeyIn,KeyOut);
input
Clock;//系统时钟
KeyVal <= 8'hf2;
else if(pFlag[7])
KeyVal <= 8'hfa;
else if(pFlag[8])
KeyVal <= 8'hf9;
else if(pFlag[9])
KeyVal <= 8'hf6;
else if(pFlag[10])KeyVal <= 8'hf3;
else if(pFlag[11])KeyVal <= 8'hfb;
)
EDA矩阵键盘

实验十五矩阵键盘接口电路的设计一、实验目的1、了解普通4×4键盘扫描的原理。
2、进一步加深七段码管显示过程的理解。
3、了解对输入/输出端口的定义方法。
一、实验原理实现键盘有两种方案:一是采用现有的一些芯片实现键盘扫描;再就是用软件实现键盘扫描。
作为一个嵌入系统设计人员,总是会关心产品成本。
目前有很多芯片可以用来实现键盘扫描,但是键盘扫描的软件实现方法有助于缩减一个系统的重复开发成本,且只需要很少的CPU 开销。
嵌入式控制器的功能能强,可能充分利用这一资源,这里就介绍一下软键盘的实现方案。
图15-1 简单键盘电路通常在一个键盘中使用了一个瞬时接触开关,并且用如图15-1 所示的简单电路,微处理器可以容易地检测到闭合。
当开关打开时,通过处理器的I/O 口的一个上拉电阻提供逻辑1;当开关闭合时,处理器的/IO 口的输入将被拉低得到逻辑0。
可遗憾的是,开关并不完善,因为当它们被按下或者被释放时,并不能够产生一个明确的1 或者0。
尽管触点可能看起来稳定而且很快地闭合,但与微处理器快速的运行速度相比,这种动作是比较慢的。
当触点闭合时,其弹起就像一个球。
弹起效果将产生如图15-2 所示的好几个脉冲。
弹起的持续时间通常将维持在5ms∼30ms 之间。
如果需要多个键,则可以将每个开关连接到微处理器上它自己的输入端口。
然而,当开关的数目增加时,这种方法将很快使用完所有的输入端口。
图15-2 按键抖动键盘上阵列这些开关最有效的方法(当需要5 个以上的键时)就形成了一个如图15-3 所示的二维矩阵。
当行和列的数目一样多时,也就是方型的矩阵,将产生一个最优化的布列方式(I/O 端被连接的时候)。
一个瞬时接触开关(按钮)放置在每一行与线一列的交叉点。
矩阵所需的键的数目显然根据应用程序而不同。
每一行由一个输出端口的一位驱动,而每一列由一个电阻器上拉且供给输入端口一位。
图15-3 矩阵键盘键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出4行为高电平,然后输出4列为低电平,在读入输出的4行的值,通常高电平会被低电平拉低,如果读入的4行均为高电平,那么肯定没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。
课程设计报告矩阵键盘控制[1](1)
](https://img.taocdn.com/s3/m/53226ded5ef7ba0d4a733bb6.png)
忻州师范学院《EDA技术综合性设计》课程设计报告报告题目:矩阵键盘控制接口设计所在系部:电子系所在专业:电子信息科学与技术所在班级:电本0803班姓名:徐丽娜200807211163闫爱红 200807211164武艳红200807211165贺吉盛200807211166指导教师姓名:任国凤完成时间:2011.05.26目录一概述 (3)二方案设计与论证 (3)三单元电路设计 (4)1.键盘接口消抖动元件 (4)2.时钟产生电路 (5)3.键盘扫描电路 (5)4.键盘译码电路 (5)5.寄存器_选择器模块电路 (5)6.译码模块电路 (6)四器件编程与下载 (6)五性能测试与分析 (7)六实验设备 (8)七心得体会 (8)八参考文献 (8)九附录 (9)一、概述本课程设计的基本原理是在时钟信号的控制下,使数码管上显示所按下的键值,并且能够保持直到下一个按键被按下。
首先,构思一个8×4的矩阵键盘控制顶层电路的模块划分图兼端口及内部信号定义图,再用VHDL语言编辑文本程序,需先录入底层文件(键盘接口消抖动元件DEBOUNCING的描述)再录入键盘接口电路主程序,保存编译并检查程序是否有语法错误,再仿真观察波形是否符合所预期的设计要求,当一切都满足要求后,即可将程序下载到实验箱的FLEX10K \ EPF10K10LC84-4芯片中。
正确的将脉冲源、FLEX10K \ EPF10K10LC84-4芯片、5行×6列薄膜轻触按键键盘、数码管按设计要求连接好。
再将程序下载到实验箱的FLEX10K \ EPF10K10LC84-4芯片中,则可观察到预期的实验效果,即当按下某一键时,在数码管上显示该键对应的键值。
如:当按下5时,数码管显示05。
本课程设计需设计键盘接口消抖动元件(底层文本)和矩阵键盘接口电路(顶层文本)。
在顶层文本中包含扫描信号发生模块、按键消抖动模块、按键译码模块、寄存器-选择器模块和数码管的译码模块。
EDA课程设计-矩阵键盘-交通灯

1 矩阵键盘扫描要求:设计矩阵式键盘接口,并在一个数码管上面显示按下的数字,从0到9以及小数点。
判断键盘中有无按键按下是通过行线送入扫描线好然后从列线读取状态得到的。
其方法是依次给行线送低电平,检查列线的输入。
如果列线全是高电平,则代表低电平信号所在的行中无按键按下;如果列线有输入为低电平,则代表低电平信号所在的行和出现低电平的列的交点处有按键按下。
整个设计程序包括三个模块:时钟分频、键盘扫描和键译码转换。
时钟分频:由于使用的外部时钟频率为50MHz,这个频率对扫描来说太高,所以这里需要一个分频器来分得适合键盘扫描使用的频率。
键盘扫描:由键盘的工作原理可知,要正确地完成按键输入工作必须有按键扫描电路产生KEYI信号,同时必须有按键译码电路从KEYI中和KEYOUT中读出按键的键值。
键盘扫描电路是用于产生KEYI3~ KEYI0 信号,其变化顺序是1110→1101→1011→0111→1110…周而复始地扫描。
其停留时间大慨在10ms。
键盘译码:键盘译码电路是从keyI3~keyI0和keyout3~keyout0信号中译码出按键值的电路。
将此按键值显示在数码管上。
FPGA_CLK 系统的主时钟MASTER_RESET_n 主复位Button[0]-[15] 拨码开关/白色按钮通过跳线Jxx选择Seven_seg[0]-[7] 数码管的显示Seven_seg[8]-[15] 数码管的选择LED_DOWN[0]-[7] 8个ledKeyboard_Down[0]-[8] 键盘输入/AD输入,通过JP8选择低位表示行。
原理图中Keyboard_Down[0]-[4]对应KEYI[0-4]Keyboard_Down[5]-[8]对应KEYO[0-3]此例中Keyboard_Down[1]-[4]对应KEYI[0-3]Keyboard_Down[5]-[8]对应KEYO[0-3]2、交通灯的控制课程设计原理:在十字路口,每条道路各有一组红、黄、绿灯和倒计时显示器,用以指挥车辆和行人有序的通行。
eda矩阵键盘扫描课程设计

eda矩阵键盘扫描课程设计一、课程目标知识目标:1. 让学生理解EDA矩阵键盘的基本原理和结构;2. 使学生掌握矩阵键盘扫描的方法和技巧;3. 帮助学生掌握利用EDA工具进行矩阵键盘电路设计和仿真。
技能目标:1. 培养学生运用EDA工具进行矩阵键盘电路搭建和调试的能力;2. 培养学生分析并解决矩阵键盘扫描过程中出现问题的能力;3. 提高学生团队协作和沟通表达能力,能就矩阵键盘扫描问题进行有效讨论。
情感态度价值观目标:1. 培养学生对电子技术课程的兴趣和热情,激发学生主动探究精神;2. 培养学生严谨的科学态度和良好的学习习惯;3. 增强学生的创新意识,鼓励学生勇于尝试新的设计方法和思路。
课程性质分析:本课程为电子技术课程的一部分,以实践操作为主,理论联系实际,旨在培养学生的电子技术应用能力。
学生特点分析:学生处于高中年级,具有一定的电子技术基础和动手能力,对新鲜事物充满好奇,善于团队合作。
教学要求:结合学生特点,注重实践与理论相结合,强调学生的动手能力和问题解决能力,提高学生的创新意识和团队协作能力。
通过本课程的学习,使学生能够达到上述课程目标,为后续电子技术课程的学习打下坚实基础。
二、教学内容1. 理论知识:- 矩阵键盘的工作原理与结构;- 键盘扫描方法:行扫描和列扫描;- EDA工具的使用方法及电路仿真基本操作。
2. 实践操作:- 利用EDA工具设计矩阵键盘电路;- 矩阵键盘电路的搭建与调试;- 键盘扫描程序编写与优化。
3. 教学大纲安排:- 第一章:矩阵键盘原理及结构介绍(1课时)- 第二章:键盘扫描方法分析(1课时)- 第三章:EDA工具的使用及电路仿真(2课时)- 第四章:矩阵键盘电路设计与搭建(2课时)- 第五章:键盘扫描程序编写与调试(2课时)4. 教材关联:- 《电子技术基础》第四章:数字电路基础;- 《电子技术实验教程》第六章:矩阵键盘与显示电路设计。
教学内容确保科学性和系统性,结合课程目标,注重理论与实践相结合。
EDA课设报告(哈理工荣成)

哈尔滨理工大学荣成学院课程设计题目:矩阵键盘控制电路设计班级:姓名:学号:目录一、设计任务 (1)二、方案选择 (1)三、实现方案与电路原理图 (2)四、引脚分配表 (5)五、关系表 (5)六、总体设计 (6)七、软件设计源程序及实验现象 (6)八、总结 (11)一、设计任务矩阵键盘实验1:向用户介绍矩阵键盘扫描实现的方法,;把相应的键值显示在数码管二、方案选择(1)矩阵键盘基础知识在许多数字系统中,经常采用按键系统的输入方式之一,为系统提供数据输入或者命令输入。
当按键数目交多少时,把每一个按键连接到键盘矩阵中行和列的交叉点,如下图所示,一个4*4行列结构可构成有16个按键的矩阵。
开发板上设计了行列式矩阵编码键盘,规模为4*4,可作为外部输入。
采用矩阵编码可以减少对口的占用。
开发板上的矩阵编码键盘有4条行线,4条列线。
行线和列线的交又处不直接连接,而是通过一个按键加以连接。
这样就构成了4*4=16个按键输入,比直接将信号线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,如图列线通过电阻接正电源,并将行线所接的、的口作为输出端,而列线所接的口则作为输入。
这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。
行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可以得知是否有键按下了。
(2)行扫描法的基础知识行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法。
第一种(列扫描):1、判断键盘中有无键按下:将全部行线Y03置低电平,然后检测列线的状态。
只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。
若所有列线均为高电平,则键盘中无按键按下。
实验三 矩阵键盘检测实验

实验三矩阵键盘识别实验
一、实验目的
掌握单片机I/O口的输入检测的方法、矩阵按键的识别方法、键盘消抖等。
学会实时程序的调试技巧。
二、实验原理
我们在手动按键的时候,由于机械抖动或是其它一些非人为的因素很有可能会造成误识别,一般手动按下一次键然后接着释放,按键两片金属膜接触的时间大约为50ms 左右,在按下瞬间到稳定的时间为5-10ms,在松开的瞬间到稳定的时间也为5-10ms,如果我们在首次检测到键被按下后延时10ms 左右再去检测,这时如果是干扰信号将不会被检测到,如果确实是有键被按下,则可确认,以上为按键识别去抖动的原理。
三、实验内容
实验板上电时,数码管不显示,顺序按下矩阵键盘后,在数码管上依次显示0到F,6个数码管同时静态显示即可。
下图中按键s6-s218条线分别联接p3口相连,p3.0~p3.3控制1~4行,p3.4~p3.7控制1~4列。
图1 实验板键盘电路原理图
四、实验步骤
1、按实验要求在Keil中创建项目,编辑、编译程序。
2、将编译生成的目标码文件(后缀为.Hex)传入实验板中。
3、在实验板上运行程序,观察实验运行结果并记录。
EDA矩阵键盘接口电路的设计

1. 2. 3. 4. 5. 6.打开QUARTUSII 软件,新建一个工程。
建完工程之后,再新建一个 VHDL File ,打开VHDL 编辑器对话框。
按照实验原理和自己的想法,在 VHDL 编辑窗口编写 VHDL 程序。
编写完VHDL 程序后,保存起来。
对自己编写的VHDL 程序进行编译并仿真,对程序的错误进行修改。
编译仿真无误后,依照 4X4矩阵键、LED 灯与FPGA 的管脚连接表进行引脚锁定。
分配完 成后,再进行全编译一次,以使管脚分配生效。
7.2. 了解对输入/输出端口的定义方法。
【实验元器件和模块】 元器件:矩阵键盘、数码管 模块:矩阵键盘 KEYSCAN 模块【实验步骤】用下载电缆通过JTAG 口将对应的sof 文件加载到FPGA 中。
观察实验结果是否与自己的编程思想一致。
参考代码:library IEEE;use IEEE.STDLOGIC.1164.ALL;SIGNAL key_code SIGNAL dataout_t mp use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY KEYSCAN ISP ORT (clk :IN std_logic;rst :IN std_logic;row :OUT std_logic_vector(3 DOWNTO 0);-- 行线column :IN std_logic_vector(3 DOWNTO 0); --列线dataout:OUT std_logic_vector(7 DOWNTO 0)--数码管显示数据);END KEYSCAN;ARCHITECTURE arch OF KEYSCAN ISSIGNAL div_cnt : std_logic_vector(24 downto 0);std_logic_vector(3 DOWNTO 0); std_logic_vector(7 DOWNTO 0);BEGINrow <= scan_key;dataout <= dataout_t mp; P ROCESS(clk,rst) BEGINIF (NOT rst = '1') THENdiv_cnt <= "0000000000000000000000000"; ELSIF(clk'EVENT AND clk = '1')THENdiv_cnt <= div_cnt + 1; END IF;END P ROCESS;P ROCESS(div_cnt(20 downto 19)) BEGINCASE div_cnt(20 downto 19) IS WHEN "00"=> scan_key<="1110"; WHEN "01"=> scan_key<="1101"; WHEN "10"=> scan_key<="1011"; WHEN "11"=> scan_key<="0111"; END CASE; END P ROCESS;SIGNAL scan_key std_logic_vector(3 DOWNTO 0);--扫描码寄存器P ROCESS(clk,rst) BEGIN<= "0000"; WHEN "1101" => key_code <="0001"; WHEN "1011" => key_code <= "0010"; WHEN "0111" => key_code <= "0011";WHEN "1110" => key_code <="0100"; WHEN "1101" => key_code <= "0101"; WHEN "1011" => key_code <= "0110"; WHEN "0111" => key_code<= "0111";WHEN "1110" => key_code <= "1000"; WHEN "1101" => key_code <= "1001"; WHEN "1011" => key_code<="1010";IF (NOT rst = '1') THENkey_code <= "0000";ELSIF(clk'EVENT AND clk='1')THENCASE scan_key IS--检测何处有键按下WHEN "1110" => CASE column ISWHEN "1110" => key_codeWHEN OTHERS => NULL; END CASE;WHEN "1101" => CASE column ISWHEN OTHERS => NULL; END CASE;WHEN "1011" => CASE column ISWHEN "0111" => key_code <= "1011"; WHEN OTHERS => NULL; END CASE;WHEN "0111" => CASE column ISWHEN "1110" => key_code <= "1100"; WHEN "1101" => key_code <= "1101"; WHEN "1011" => key_code <= "1110"; WHEN "0111" => key_code <= "1111"; WHEN OTHERS => NULL; END CASE;WHEN OTHERS => key_code <= "1111"; END CASE;<= "0000";P ROCESS(key_code)--显示键值END IF;END P ROCESS;BEGINCASE key_code ISWHEN "0000" => dataout_t mp <= "00111111";WHEN "0001" => dataout_t mp <= "00000110";WHEN "0010" => dataout_t mp <= "01011011";WHEN "0011" => dataout_t mp <= "01001111";WHEN "0100" => dataout_t mp <= "01100110";WHEN "0101" => dataout_t mp <= "01101101";WHEN "0110" => dataout_t mp <= "01111101";WHEN "0111" => dataout_t mp <= "00000111";WHEN "1000" => dataout_t mp <= "01111111";WHEN "1001" => dataout_t mp <= "01101111";WHEN "1010" => dataout_t mp <= "01110111";WHEN "1011" => dataout_t mp <= "01111100";WHEN "1100" => dataout_t mp <= "00111001";WHEN "1101" => dataout_t mp <= "01011110";WHEN "1110" => dataout_t mp <= "01111001";WHEN "1111" => dataout_t mp <= "01110001";WHEN OTHERS => NULL;END CASE;END P ROCESS;END arch;【实验数据整理与归纳】関融砂盟巒且日日盯*1 •实际效果图i 2 ! J" ■ !7r ly:CZZ . .JU. JELit Pl■::-助T H 111IFTT X=T<"=:77^.^ i-r j .r论Z JU . I - ■■TOPT Ixkrrrlb 1J I HE. 玉2匚/*. PL【“■ rs i-^cT™ OCTT 翻W石=4■匚_社二話;「n 附―:■ ACd£」"£•:MifT 口11 r:, 近宾切丿丹丫匕」肚蔦;£F - FiL rz . +.卡hi H IS I已汁■ H J-ii 2]EKL FErS. kSJ^i■ r・F FTy TisvT r"i:i:. r repYJ^E-i raJ;M L L和.刃n: 0L右Ml■EE “I r in d<«a.ro D5;EPY_J. I L F J -a^^LiKj L UE -J 1 rCRlTYi 匚2;•J:-J H 竺卿d^Ta-i;T ■—口二■ ■ i* J SLr 't, n?—n±,=:h:?冷,* * ■ '3 T^EHn>::> = - Ji JtrJ LT --.r -■ - :, y rr = 1 -EXD ir.-34E= >C.\5Cr;lT 1*1)FH.-'帕讥亠-Cl:'三] "I三■ '■ih ■ ■ i ■ : _ R ■ ,| ny . a! ■_ f - VCZK - _ ■- • rcni.叭乂-甘:■■: TtlLH L-” j【=■■■. —H■i-=r ; J •口匸-L " 皿;S, hIE jy嗣*4 匚訐:•m,r; .「.r.pi/-」";JL;-.i h心上rat = •■・)7iEiE” -廿"U E| . ■ ■-T:La;ri^<'rr:3T ANC:二E|丄r7^^Tl^UJl :;业応』i;3 r.. r .和吨MJr-■ r E TJttLh:壬… ■ f haT-Z・C * r■ r5 F I. .■ _ _ I _ iL ■ =. TG7死■:H・ r 0甲[bE* " ~ 厂唱■* ■ J fc--b_ :l-"=VriM「710 E =- THT-hC【实验结果与分析】)1吨* ■:'J■«■:ASE c二二irc\ ]生¥Hlcif ■ . . □ - i »W 「-・「£d1HCI 片___J- -5- <- - _________ 亠.17^rlkV r_.」jr *■!* 匸sb " ■亠J_F.SB Eiih-h 1丄* 十酣*[亡心坐 3・.…■:r5<H L S常山:■*利EJZ :?1 注:41iMtJJ -_,■'-=■■■ WJT .-■ .im I>sHcx yar 0 "F u口 A ■. .」・*■:44■HEIC Ji广--抽*1“舍十■. . j;"i€51HC3 7亡D矩<■4t«7•H阻'■H.J 1* --r *Cy"e"fe J ・..*■ ■HE胴:rTB£i・> 少匸JI TIIE? *■:::・2州■小 CrJiK. 1?7l72IHEX ®^L_. J* -> CBj- CD・3■■__________________ 'jIHEI m* r 血區 <- J T上亠:r4HHEJ "O-J J"-> 工已丄Wit 37&THKn TPwrt-i >> rnij■ □O7E ZfLTSJ7?msi LIT®"-■-■x ■* Siui*.7S IriD ZXSZr,S L44L IE.EKE IPLTE^r«l■RHJ EMWy r■■却J TT.MdZ•3■aj£ baT_-mta Z3«■< . -r-'■> lU^*-IU^_kMk 4・ 'G.:Ulr・J「15KMC暨■;:--■-> 3 恤:込」*«frrlEM ・-." C IrtrJHit-:■卑•Lh i 1 ■ .$7xHEN ■:::_■TBT <- 'Oi.rHBI ・,4「希ma飞E -二«9zHEir ■-: :■■A JHtLnTii-_-rT <- '^L:HO=h ■.* *11- h 1 1 -ilT«]rHCT - ?__=-> aiLd-auL^uip 4 'i:i:.:.:.」■■二mitr -j .=』4atft_>ut_L^ -=■Hfii r :.-■->4^L4-IM匚二申匚£■ *0L_■ 1 -业胆,-J .. ■-> dat±:>ut2t^ ■<■ .(KUl .旳f-rihH * 1 -*> ^nr.ViqC-TWr <- ^U. p 1 1 . 'L'^-IHEW ■::::■=> "Mnut二op <= 'ocjlir-i-j扯HRM -1 : - ■ ■-A dhr R .iir-rpp v=-怕T 1 丽■”:XHEV ■ ■ : --■■>4H鈕FI P TTT T<- '^::l f■ 1 r .■八,■ an,IE IM ■* TE-Uil 'I"±to直MET J-mu-> lULZzHl UL如缶.K<a BBC TPT-TBa-S.Cft.' flc-thjkeyboardll.vhd按下矩阵键盘第一行第一列时,数码管显示“按下第二行第二列时, 数码管显示" 按下第三行第三列时,数码管显示“以此类推。
4X4矩阵键盘及显示电路设计说明

4X4矩阵键盘及显示电路设计FPGA在数字系统设计中的广泛应用,影响到了生产生活的各个方面。
在FPGA 的设计开发中,VHDL语言作为一种主流的硬件描述语言,具有设计效率高,可靠性好,易读易懂等诸多优点。
作为一种功能强大的FPGA数字系统开发环境,Altera公司推出的Quar-tUSⅡ,为设计者提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程,为使用VHDL语言进行FPGA设计提供了极大的便利。
矩阵键盘作为一种常用的数据输入设备,在各种电子设备上有着广泛的应用,通过7段数码管将按键数值进行显示也是一种常用的数据显示方式。
在设计机械式矩阵键盘控制电路时,按键防抖和按键数据的译码显示是两个重要方面。
本文在QuartusⅡ开发环境下,采用VHDL语言设计了一种按键防抖并能连续记录并显示8次按键数值的矩阵键盘及显示电路。
一、矩阵键盘及显示电路设计思路矩阵键盘及显示电路能够将机械式4×4矩阵键盘的按键值依次显示到8个7段数码管上,每次新的按键值显示在最右端的第O号数码管上,原有第0~6号数码管显示的数值整体左移到第1~7号数码管上显示,见图1。
总体而言,矩阵键盘及显示电路的设计可分为4个部分:(1)矩阵键盘的行及列的扫描控制和译码。
该设计所使用的键盘是通过将列扫描信号作为输入信号,控制行扫描信号输出,然后根据行及列的扫描结果进行译码。
(2)机械式按键的防抖设计。
由于机械式按键在按下和弹起的过程中均有5~10 ms的信号抖动时间,在信号抖动时间无法有效判断按键值,因此按键的防抖设计是非常关键的,也是该设计的一个重点。
(3)按键数值的移位寄存。
由于该设计需要在8个数码管上依次显示前后共8次按键的数值,因此对已有数据的存储和调用也是该设计的重点所在。
(4)数码管的扫描和译码显示。
由于该设计使用了8个数码管,因此需要对每个数码管进行扫描控制,并根据按键值对每个数码管进行7段数码管的译码显示。
4矩阵按键课程设计

4矩阵按键课程设计一、课程目标知识目标:1. 理解矩阵按键的基本概念,掌握矩阵按键的排列方式和编码原理;2. 学会运用4×4矩阵按键进行电路设计和搭建;3. 了解矩阵按键在嵌入式系统中的应用和重要性。
技能目标:1. 能够运用所学知识,独立完成4×4矩阵按键电路的设计与搭建;2. 掌握矩阵按键的编程方法,实现对按键的识别和功能分配;3. 提高实际操作能力,培养动手实践和解决问题的技能。
情感态度价值观目标:1. 培养学生对电子技术和嵌入式系统的兴趣,激发学习热情;2. 培养学生的团队协作精神,提高沟通与交流能力;3. 增强学生的创新意识,鼓励敢于尝试和挑战的精神。
课程性质:本课程属于电子技术实践课程,以理论为基础,实践为核心,注重培养学生的实际操作能力和创新意识。
学生特点:学生在本年级已经具备一定的电子技术基础知识,具有较强的学习能力和动手欲望,对新鲜事物充满好奇心。
教学要求:结合学生特点,采用理论讲解与实践操作相结合的方式,注重启发式教学,引导学生主动探究,提高学生的实践能力和创新能力。
通过本课程的学习,使学生能够掌握矩阵按键的相关知识,为后续课程打下坚实基础。
二、教学内容1. 矩阵按键原理介绍:包括矩阵按键的排列方式、编码原理以及扫描方法;- 教材章节:第二章第四节“矩阵键盘的设计与应用”2. 4×4矩阵按键电路设计与搭建:讲解如何设计电路图,选择合适的元器件,并进行电路搭建;- 教材章节:第二章第五节“矩阵键盘的电路设计与搭建”3. 矩阵按键编程方法:介绍如何使用编程语言对矩阵按键进行编程,实现对按键的识别和功能分配;- 教材章节:第三章第一节“矩阵键盘的编程方法”4. 实践操作:安排学生进行4×4矩阵按键电路的设计、搭建和编程实践,巩固所学知识;- 教材章节:实践环节5. 应用案例分析:分析矩阵按键在嵌入式系统中的应用实例,了解其实际应用场景;- 教材章节:第四章“矩阵键盘在实际应用中的案例分析”6. 课程总结与拓展:对本章所学内容进行总结,并提出一些拓展问题,激发学生深入学习的兴趣;- 教材章节:本章总结与拓展教学内容安排与进度:第一课时:矩阵按键原理介绍第二课时:4×4矩阵按键电路设计与搭建第三课时:矩阵按键编程方法第四课时:实践操作(含讨论与指导)第五课时:应用案例分析及课程总结与拓展三、教学方法本课程将采用以下多样化的教学方法,以充分激发学生的学习兴趣和主动性:1. 讲授法:教师通过生动的语言、形象的比喻和具体的案例,为学生讲解矩阵按键的基本原理、电路设计与搭建方法以及编程技巧。
矩阵键盘实验说明

#define TIMER_DEVICE_ID
XPAR_XSCUTIMER_0_DEVICE_ID
#define INTC_DEVICE_ID
XPAR_SCUGIC_SINGLE_DEVICE_ID
XScuGic_InterruptHandler
/*
* The following constants define the positions of the buttons and LEDs
each
* channel of the GPIO
*/
#define LEDS_ALL_ON
0x00
#define LEDS_ALL_OFF
三.源代码说明
3.1 头文件说明
Matrix_Keyboard.h 文件源代码 /********************************************************************** *******/ /** * @file Matrix_Keyboard.h * * 该文件包含矩阵键盘项目所包含的库文件、宏定义、常数、全局变量、函数定义 * * <pre> * MODIFICATION HISTORY: * * Ver Who Date Changes * ----- ---- -------- -----------------------------------------------------* 1.0 lj 07/28/06 创建该文件fine HIGH_MASK 0xF0
/*
* The following constants define the GPIO channel that is used for the
eda矩阵键盘扫描课程设计

eda矩阵键盘扫描课程设计一、课程目标知识目标:1. 让学生掌握EDA矩阵键盘扫描的基本原理,理解其电路构成及工作流程。
2. 学会运用已学知识,分析并设计简单的矩阵键盘扫描电路。
3. 了解矩阵键盘扫描技术在现实生活中的应用,培养对电子技术的兴趣。
技能目标:1. 培养学生动手操作能力,能独立完成矩阵键盘扫描电路的搭建与调试。
2. 提高学生的问题分析能力,学会运用矩阵键盘扫描技术解决实际问题。
3. 培养学生的团队合作精神,学会在团队中分享观点、交流经验。
情感态度价值观目标:1. 激发学生对电子科技的兴趣,培养其探索精神和创新意识。
2. 培养学生严谨的科学态度,注重实践操作,养成动手解决问题的习惯。
3. 引导学生关注社会问题,认识到科技对生活的改善作用,树立正确的价值观。
课程性质:本课程为实践性较强的电子技术课程,旨在通过矩阵键盘扫描技术的学习,培养学生的动手能力、问题分析能力和团队合作精神。
学生特点:本课程面向高年级学生,学生在前期课程中已具备一定的电子技术基础,具有较强的学习能力和实践操作能力。
教学要求:结合学生特点,注重理论与实践相结合,强调动手实践,提高学生的实际操作能力。
通过小组合作、讨论交流等形式,培养学生的团队合作精神和创新意识。
同时,关注学生的学习进度,及时调整教学策略,确保课程目标的实现。
在教学过程中,注重分解课程目标为具体的学习成果,以便进行有效的教学设计和评估。
二、教学内容1. 理论知识:- 矩阵键盘的原理及其在EDA技术中的应用。
- 矩阵键盘扫描电路的设计方法及其工作原理。
- 常见矩阵键盘扫描电路的电路图分析。
2. 实践操作:- 矩阵键盘扫描电路的搭建与调试。
- 键盘扫描程序编写及烧录。
- 键盘扫描电路与微控制器连接与通信。
3. 教学大纲安排:- 第一阶段:矩阵键盘原理学习,了解其在EDA技术中的应用,分析典型矩阵键盘扫描电路。
- 第二阶段:实践操作,分组进行矩阵键盘扫描电路的搭建、编程和调试。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计说明书题目EDA技术与应用系(部)专业(班级)姓名学号指导教师起止日期EDA技术课程设计任务书系(部):专业:指导教师:目录引言 (5)一、绪论 (5)1.1 FPGA概况 (5)1.2 此课题的研究意义 (6)二、矩阵键盘接口电路的原理与总体设计 (6)2.1 矩阵键盘接口电路的原理 (6)2.2 总体设计 (8)三、各模块的设计及仿真 (8)3.1 键盘扫描电路 (8)3.2 键盘译码电路和按键标志位产生电路 (11)3.3 时钟产生模块 (16)3.4 键盘接口电路顶层电路实现 (18)四、硬件测试 (19)五、实验设备 (19)六、总结 (20)参考文献 (20)矩阵键盘键信号检测电路设计引言人类文明已进入到高度发达的信息化社会。
信息化社会的发展离不开电子信息产品开发技术、产品品质的提高和进步。
电子信息产品随着科学技术的进步,其电子器件和设计方法更新换代的速度日新月异。
实现这种进步的主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化(EDA,Electronic Design Automation)技术,EDA技术的发展和推广应用又极大地推动了电子信息产业的发展。
为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的一项先进技术和重要工具。
目前,在国内电子技术教学和产业界的技术推广中已形成“EDA热”,完全可以说,掌握EDA技术是电子信息类专业学生、工程技术人员所必备的基本能力和技能。
此设计主要利用VHDL硬件描述语言在EDA平台Quartus II上设计一个4×4阵列键盘扫描电路,将行扫描信号输入阵列键盘,读取列信号的值,输出按键编码,从而判断出按键按下的位置。
并且进行模拟仿真,下载到EDA实验箱进行硬件验证。
一、绪论1.1 FPGA概况早期的可编程逻辑器件只有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(E2PROM)三种。
由于结构的限制,它们只能完成简单的数字逻辑功能。
其后出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。
典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与—或”表达式来描述,所以PLD能以乘积和的形式完成大量的组合逻辑功能。
这一阶段的产品主要有PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。
PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。
PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和E2PROM技术。
还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。
PLA器件既有现场可编程的,也有掩膜可编程的。
在PAL的基础上又发展了一种通用阵列逻辑(GAL、Generic ArrayLogic),如GAL16V8、GAL22V10等。
它采用了EPROM工艺,实现了电可擦除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。
这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。
为了弥补这一缺陷,20世纪80年代中期,Altera和Xilinx分别推出了类似于PAL结构的扩展型CPLD(Complex Programmable Logic Dvice)和与标准门阵列类似的FPGA(FieldProgrammable Gate Array),它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。
这两种器件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。
与门阵列等其他ASIC(Application Specific IC)相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品不需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产(一般在10 000件以下)之中。
几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD 器件。
1.2 此课题的研究意义近年来EDA技术在电子领域引发的技术革命,推动着电子技术的迅猛发展,为世人所瞩目,而FPGA 为代表的可编程逻辑器件的应用,更是受到业内人士的普遍关注。
伴随着大规模集成电路和计算机技术的高速发展,在设计工业自动化,仪器仪表,计算机设计与应用、通信、国防等领域的电子系统中,FPGA 技术的含量正以惊人的速度提升。
将尽可能大的完整的电子系统在单一FPGA芯片中实现已成为现实,电子类新技术项目的开发也更多地依赖于FPGA技术的应用。
作为FPGA研究课题之一的矩阵键盘控制接口电路的设计,在FPGA设计中是一个经常被提到的话题,就像是利用PFGA设计数字中一样,虽然简单,但是却是一个很有研究意义的话题,涉及到怎么样才能是FPGA资源更加充分利用,现在很多电子产品都涉及到按键,小的有独立按键,大的有N*N的矩阵键盘,独立按键由于案件的个数少,也就没必要考虑资源的利用问题了。
而矩阵键盘,由于按键多,对整个系统的影响大,所以肯定要考虑资源的利用问题,而且还要考虑一下电路里面的时序问题。
本次设计要求设计一个4*4矩阵键盘,也就是行为4,列为4,一共可以设计16个按键。
其中设计方法为:一般判断键盘中有没有按键按下是通过行线送入扫描信号,然后从列线中读取状态得到的,其方法是依次给行线送入低电平,检查列线的输入。
如果列线信号高电平,则代表低电平信号所在的行中无按键按下,反之,则有,则在低电平信号所在的行和出现低电平的交叉处有按键按下。
二、矩阵键盘接口电路的原理与总体设计2.1 矩阵键盘接口电路的原理在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的FPGA的I/O口作为输出端,而列线所接的I/O口则作为输入。
这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。
行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。
行列式键盘的电路原理如图2.1.1所示:+5v+5V图2.1.1 行列式键盘的电路原理图设置扫描信号为keydrv3~keydrv0,列线按键输入信号keyin3~keyin0与按键位置的关系如表2.1.1所示:2.2总体设计本次设计在EDA开发平台QUARTUSⅡ9.0上利用VHDL语言设计矩阵键盘控制接口电路。
由行列式键盘原理就可以知道,要正确的完成键盘输入工作必须有按键扫描电路产生keydrv3~keydrv0信号,同时还必须有按键译码电路从keydrv3~keydrv0信号和keyin3~keyin0信号中译码出按键的值。
此外,一般还需要一个按键发生信号用于和其他模块接口,通知其他模块键盘上有按键动作发生,并可以从键盘上读取按键的键值。
由于各个模块需要的时钟频率是不一样的,因此时钟产生模块就是用于产生各个模块需要的时钟信号。
此课题的实验一共有三个模块,分别为:扫描电路模块、时钟产生模块、键盘译码电路和按键标志位产生电路。
扫描模块中是为了产生扫描信号,来利用扫描信号来扫描键盘中中是否有按键按下。
键盘译码电路和按键标志位产生电路是为了配合扫描模块来扫描电路中是否有按键按下,而且还要求它来产生按键标志信号,以便和外部电路握手。
时钟产生电路是为了产生不同频率的信号,来驱动上面两个电路的运转。
三、各模块的设计及仿真3.1 键盘扫描电路键盘扫描电路是用于产生keydrv3~keydrv0信号,其变化的顺序依次是1110---1101---1011---0111---……周而复始地扫描。
其停留在某个状态的时间大约为10ms。
更短的停留时间是没有必要的,因为人按键的时间大约为10ms,不可能有更快的按键动作发生;另外,更短的停留时间还容易采集到抖动信号,会干扰判断,而太长的停留时间则会使某些较快的按键东走丢失。
键盘扫描电路的外部接口电路如图3.1.1所示,其中clk_scan是周期为10ms的扫描时钟,keydrv 为输出到键盘的扫描信号,宽度为4位。
图3.1.1 键盘扫描电路的外部接口电路图其VHDL描述如下:LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY key_scan IS-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!PORT(clk_scan : IN STD_LOGIC; --扫描时钟,周期10mskeydrv : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) --输出扫描信号);-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!END key_scan;-- Architecture BodyARCHITECTURE key_scan_architecture OF key_scan ISCONSTANT s0 :STD_LOGIC_VECTOR (3 DOWNTO 0):="1110" ;--定义状态机编码CONSTANT s1 :STD_LOGIC_VECTOR (3 DOWNTO 0):="1101" ;CONSTANT s2 :STD_LOGIC_VECTOR (3 DOWNTO 0):="1011" ;CONSTANT s3 :STD_LOGIC_VECTOR (3 DOWNTO 0):="0111" ;SIGNAL present_state:STD_LOGIC_VECTOR(3 DOWNTO 0);--状态机现态SIGNAL next_state:STD_LOGIC_VECTOR(3 DOWNTO 0);--状态机次态BEGIN--状态更新进程PROCESS(clk_scan)BEGINIF(clk_scan'event and clk_scan='1') thenpresent_state<=next_state;END IF;END PROCESS;--状态译码PROCESS (present_state)BEGINCASE present_state ISWHEN s0=>next_state<=s1;WHEN s1=>next_state<=s2;WHEN s2=>next_state<=s3;WHEN s3=>next_state<=s0;--多余状态处理WHEN OTHERS=>next_state<=s0;END CASE;END PROCESS;--输出译码keydrv<=present_state;END key_scan_architecture;以上程序采用一个状态机来实现扫描电路。