exp3矩阵键盘扫描电路设计

合集下载

矩阵键盘电路设计

矩阵键盘电路设计

矩阵键盘电路设计矩阵键盘是一种常见的输入设备,它通过矩阵布局的按键组成,可以方便地输入数字、字母和其他符号。

在电子设备中,矩阵键盘通常采用扫描电路进行输入和控制。

在本文中,将探讨矩阵键盘电路的设计。

首先,我们需要确定矩阵键盘的布局。

一般情况下,矩阵键盘采用4×4或者3×4的布局。

每个按键都是一个开关,当按下时闭合,松开时断开。

接下来,我们需要设计输入电路。

输入电路通过扫描矩阵键盘的每一行和每一列来检测按键的状态。

为了实现这个功能,我们可以使用两个二进制计数器来控制扫描的行和列。

每当计数器增加时,就对应地扫描一行或者一列。

我们可以通过多路复用器和反向器将计数器输出与矩阵键盘的行和列相连。

当计数器的输出与矩阵键盘的行和列相连后,我们可以通过逐行或逐列地扫描矩阵键盘并检测按键的状态。

如果有按键按下,我们可以将对应的按键编码为数字信号。

在设计输入电路时,我们还需要考虑按键去抖动的问题。

按键去抖动是指当按键被按下或松开时,会产生多次开关闭合的现象。

为了解决这个问题,我们可以使用一个滤波器电路来消除按键的抖动。

滤波器电路可以采用RC滤波器或者Schmitt触发器等。

设计好输入电路后,接下来需要设计控制电路。

控制电路负责扫描矩阵键盘的每一行和每一列,以及对按键的状态进行控制。

我们可以使用计时器和计数器来控制扫描的速度和顺序。

当检测到按键按下时,控制电路会将对应的按键编码为数字信号并传递给接收端。

此外,在设计控制电路时,我们还需要考虑矩阵键盘的多键同时按下的问题。

当多个按键同时按下时,我们需要使用矩阵解码器来对这些按键进行解码,并将解码结果传递给接收端。

在进行电路设计时,我们还需要考虑一些其他的因素,比如布线、电源供应和接收端的设计等。

布线是指将电路中的各个元件和连接线布置在PCB板上的过程。

在布线时,我们需要确保信号传输的可靠性和稳定性。

电源供应是指提供电路所需的电源电压和电流的过程。

接收端的设计是指接收和处理从矩阵键盘电路传递过来的数字信号的过程。

实验一 矩阵键盘检测

实验一  矩阵键盘检测

实验一矩阵键盘检测一、实验目的:1、学习非编码键盘的工作原理和键盘的扫描方式。

2、学习键盘的去抖方法和键盘应用程序的设计。

二、实验设备:51/AVR实验板、USB连接线、电脑三、实验原理:键盘接口电路是单片机系统设计非常重要的一环,作为人机交互界面里最常用的输入设备。

我们可以通过键盘输入数据或命令来实现简单的人机通信。

1、按键的分类一般来说,按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。

前者造价低,后者寿命长。

目前,微机系统中最常见的是触点式开关按键(如本学习板上所采用按键)。

按键按照接口原理又可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。

编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的识别。

全编码键盘由专门的芯片实现识键及输出相应的编码,一般还具有去抖动和多键、窜键等保护电路,这种键盘使用方便,硬件开销大,一般的小型嵌入式应用系统较少采用。

非编码键盘按连接方式可分为独立式和矩阵式两种,其它工作都主要由软件完成。

由于其经济实用,较多地应用于单片机系统中(本学习板也采用非编码键盘)。

2、按键的输入原理在单片机应用系统中,通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。

也就是说,它能提供标准的TTL 逻辑电平,以便与通用数字系统的逻辑电平相容。

此外,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据。

当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能。

因此,键信息输入是与软件结构密切相关的过程。

对于一组键或一个键盘,通过接口电路与单片机相连。

单片机可以采用查询或中断方式了解有无按键输入并检查是哪一个按键按下,若有键按下则跳至相应的键盘处理程序处去执行,若无键按下则继续执行其他程序。

矩阵键盘显示电路的设计

矩阵键盘显示电路的设计

矩阵键盘显示电路的设计一、实验目的1、了解普通4×4键盘扫描的原理。

2、进一步加深七段码管显示过程的理解。

3、了解对输入/输出端口的定义方法。

二、实验原理实现键盘有两种方案:一是采用现有的一些芯片实现键盘扫描;再就是用软件实现键盘扫描。

作为一个嵌入系统设计人员,总是会关心产品成本。

目前有很多芯片可以用来实现键盘扫描,但是键盘扫描的软件实现方法有助于缩减一个系统的重复开发成本,且只需要很少的CPU 开销。

嵌入式控制器的功能能强,可能充分利用这一资源,这里就介绍一下软键盘的实现方案。

图12-1 简单键盘电路通常在一个键盘中使用了一个瞬时接触开关,并且用如图10-1 所示的简单电路,微处理器可以容易地检测到闭合。

当开关打开时,通过处理器的I/O 口的一个上拉电阻提供逻辑1;当开关闭合时,处理器的/IO 口的输入将被拉低得到逻辑0。

可遗憾的是,开关并不完善,因为当它们被按下或者被释放时,并不能够产生一个明确的1 或者0。

尽管触点可能看起来稳定而且很快地闭合,但与微处理器快速的运行速度相比,这种动作是比较慢的。

当触点闭合时,其弹起就像一个球。

弹起效果将产生如图12-2 所示的好几个脉冲。

弹起的持续时间通常将维持在5ms∼30ms 之间。

如果需要多个键,则可以将每个开关连接到微处理器上它自己的输入端口。

然而,当开关的数目增加时,这种方法将很快使用完所有的输入端口。

图12-2 按键抖动键盘上阵列这些开关最有效的方法(当需要5 个以上的键时)就形成了一个如图12-3 所示的二维矩阵。

当行和列的数目一样多时,也就是方型的矩阵,将产生一个最优化的布列方式(I/O 端被连接的时候)。

一个瞬时接触开关(按钮)放置在每一行与线一列的交叉点。

矩阵所需的键的数目显然根据应用程序而不同。

每一行由一个输出端口的一位驱动,而每一列由一个电阻器上拉且供给输入端口一位。

图12-3 矩阵键盘键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出4行为高电平,然后输出4列为低电平,在读入输出的4行的值,通常高电平会被低电平拉低,如果读入的4行均为高电平,那么肯定没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。

课程设计:矩阵键盘扫描(汇编)

课程设计:矩阵键盘扫描(汇编)

课程设计:矩阵键盘扫描(汇编)//比较简单的汇编矩阵键盘扫描程序//P2 口高四位接列线,第四位接行线//源程序和proteus 仿真我一打包,地址:proteus.5d6d/thread-9013-1-1.html ORG0000H AJMPMAINORG0030HMAIN:MOVP2,#0F0H;给列送高电平LCALLDELAY;延时,使电路稳定下来MOVR4,00H MOVA,P2;取P2 口的值ANLA,#0F0H;屏蔽行线的影响CJNEA,#0F0H,L;如果有键按下,就跳转到LDESPLAY: MOVA,R7 MOVDPTR,#TABLE MOVCA,@A+DPTR MOVP1,A AJMPMAINL: LCALLDELAY;延时去除抖动MOVA,P2;重新取值JBACC.4,L1;P2.4 这一列有键按下?没有则跳转到L1 MOVR3,#00H;R3 用作记列号AJMPQ1L1: JBACC.5,L2 MOVR3,#01H AJMPQ1L2: JBACC.6,L3 MOVR3,#02HAJMPQ1L3:JBACC.7,MAIN MOVR3,#03H AJMPQ1Q1: MOVP2,#0FH;给行送高电平LCALLDELAY;延时,稳定电路MOVA,P2;取值ANLA,#0FH;屏蔽高四位JBACC.0,Q2;判断是不是第0 行,不是则转移MOVR4,#00H;如果是,那把0 送给R4(R4 存行(转换为键号)) AJMPJIAQ2: JBACC.1,Q3 MOVR4,#04H AJMPJIAQ3: JBACC.2,Q4 MOVR4,#08H AJMPJIAQ4: JBACC.3,MAIN MOVR4,#0CH AJMPJIAJIA: MOVA,R3 ;行号加上列号就是改键的值ADDA,R4 MOVR7,A;调整后放在R7 寄存器中AJMPMAINDELAY:MOVR6,#20H;仿真时测试延时为13ms。

使用可编程逻辑器件实现矩阵键盘扫描模块的设计

使用可编程逻辑器件实现矩阵键盘扫描模块的设计

使用可编程逻辑器件实现矩阵键盘扫描模块的设计给出了CPLD 部分模块的VHDL 语言实现和仿真波形。

在矩阵键盘的扫描、编码、输出完全不需CPU 控制的前提下,实现标准键盘和矩阵键盘双键盘同时使用。

在基于PC104 的便携式野外测试设备的设计中,键盘是常用的输入设备。

对于便携式设备野外工作时,一般使用小型(4×4)矩阵键盘就能满足设备的信息输入需要;室内调试时,使用标准PS2 键盘更方便、灵活。

一般的做法是保留PC104 的键盘接口用于接标准键盘,利用扩展I/O接口完成小矩阵键盘的扫描和输入。

这样做虽然可以实现设备双键盘同时工作的功能,却需耗费大量的CPU 处理时间扫描矩阵键盘,造成CPU 处理其他信息的能力下降。

而本文设计的基于CPLD 的矩阵键盘扫描模块能够很好地解决上述问题。

1 矩阵键盘扫描原理图1 给出了4×4 矩阵键盘的电路图,在图1 中KX[3..0]为扫描码输入,KY[3..0]为扫描码输出。

键盘扫描开始时,首先置KX[3..0]=“0000”;键盘扫描码寄存器和键盘扫描码缓存器Kreg[15..0]和Kscan[15..0]置成“1111111111111111”(全1为没有键按下,有键按下时至少有一位为0),一旦有键按下,KY[3..0]输出不全为“0”的扫描码触发键盘扫描功能开始键盘扫描,扫描开始后,依次将KX3、KX2、KX1、KX0 置“0”,分别将对应的4 组KY[3..0]输入值保存于Kscan[15..12]、Kscan[11..8] 、Kscan[7..4] 、Kscan[3..0]中,而后比较Kscan 和Kreg 的大小,如果Kscan 小于Kreg,将Kscan 保存于Kreg 中,重复上述扫描过程直到Kscan[15..0]各位输出全为“1”时,说明按下的键全部抬起,Kreg[15..0]中的每一个为“0”的位对应一个按下的键,保留扫描过程中的Kreg 最小值就可以处理组合键。

键盘扫描电路

键盘扫描电路

键盘扫描电路设计:2014-4-11.电路名称:键盘扫描电路2.电路概述:(包括遵循的依据或标准,实现的功能)利用矩阵键盘方式,实现12位按键输入,供用户对电能表进行充值等操作,广泛应用于一体式预付费键盘表及分体式CIU等产品中。

3.工作参数及指标参比温度23℃±2℃4.电路图5.电路图的工作原理描述:在上电模式下,程序SW1-SW4一直输出低电平,SW5-SW7检测高低电平,在没有按键被按下的情况下SW5-SW7都被上拉到高电平,当十二位按键中任意一位被按下时,SW1-SW4的低电平通过分压电阻使的SW5-SW7中某位由高电平变为低电平,程序开始进入按键扫描,逐一使SW1-SW4输出低电平并结合SW-SW7的状态确认哪个按键被按下,程序扫描两次以防止误判。

在掉电模式下(适用于TDK654X系列芯片),由于TDK654X系列芯片进入低功耗后管脚无法控制,因此电路增加D1、D2两个双二级管,用于按键唤醒单片机,当低功耗模式下SW1-SW4无法输出低电平,此时键盘被按下时先通过D1、D2使PB脚电平由低到高变化唤醒单片机,单片机被唤醒后通过上电模式一样的程序扫描方式以确认具体是哪个按键被按下。

图一图一中坐标1是PB口线的波形,坐标2是SW5口线的波形,在掉电情况下,当按一下S1按键,PB口产生一个3V的高电平脉冲(TDK芯片高电平为2V 以上),唤醒芯片程序初始化SW1-SW4,此时按键被按着因此SW5会有一个低电平脉冲,程序进入扫描后PB由于SW1-SW4轮流输出高的原因使PB持续高电平25ms左右,扫描完一轮后程序进入按键释放期150ms,SW1-SW4全部输出低,因此PB持续150ms低电平,然后程序进入第二轮扫描,由于SW1-SW4轮流输出高电平的原因,PB又会产生一个高电平,且高电平宽度宽度是SW5的4倍,扫描完两轮后又进入按键释放期,此时S1键被释放,程序按键处理完成进入低功耗模式,PB与SW5口线恢复到默认状态。

矩阵键盘电路设计

矩阵键盘电路设计

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

在行线和列线的每个交叉点上设置一个按键。

矩阵键盘程序设计

矩阵键盘程序设计

矩阵键盘程序设计矩阵键盘程序设计1.引言2.矩阵键盘的工作原理矩阵键盘由多行多列的按键组成,每个按键都与行线和列线相交。

当按下某一个按键时,行线和列线会形成一个闭合电路,通过这个闭合电路来传递按键的信号。

通过扫描行线和列线的状态,可以确定用户按下了哪个按键。

3.矩阵键盘的程序设计在程序设计中,需要初始化矩阵键盘的引脚配置,即将每个行线和列线连接到相应的引脚上。

然后,通过循环扫描行线和列线的状态,判断用户是否按下了某个按键。

一般情况下,矩阵键盘的扫描速度比较快,可以采用中断的方式来进行扫描,提高响应速度。

以下是一个简单的矩阵键盘程序设计示例:import RPi.GPIO as GPIO初始化引脚配置row_pins = [11, 13, 15, 16] 行引脚col_pins = [18, 22, 24, 26] 列引脚GPIO.setmode(GPIO.BOARD)设置行引脚为输出模式,列引脚为输入模式for pin in row_pins:GPIO.setup(pin, GPIO.OUT)for pin in col_pins:GPIO.setup(pin, GPIO.IN)循环扫描矩阵键盘while True:for row in row_pins:设置当前行引脚为低电平GPIO.output(row, GPIO.LOW)for col in col_pins:判断当前列引脚是否为高电平,即判断用户是否按下了某个按键if GPIO.input(col) == GPIO.HIGH:处理按键事件print(\。

矩阵键盘键信号检测电路设计-EDA课程设计说明书

矩阵键盘键信号检测电路设计-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)三种。

关于矩阵键盘行列扫描的测试实验

关于矩阵键盘行列扫描的测试实验
*******************************************************************************/
void KeyDown(void)
{
char a=0;
GPIO_KEY=0x0f; // 位定义的引脚
if(GPIO_KEY!=0x0f) //读取按键是否按下
/*******************************************************************************
* 函数名 : KeyDown
* 函数功能 : 检测有按键按下并读取键值
* 输入 : 无
* 输出 : 无
* 作者 : INK
* 日期地点 : NANKING
下图就是矩阵键盘 由P1口控制,P10~P13为列 P14~P17为输出低电平,低四位输出高电平,检测低四位不全为高可确定列;反过来高四位输出高电平,低四位输出高电平,高四位不全为高确定行,行列交叉即可获得按键键值。废话不多说,直接上程序,我已经详细注解过了,不懂多看看哈。
{
Delay10ms(); //延时10ms进行消抖
if(GPIO_KEY!=0x0f) //再次检测键盘是否按下
{
//测试列
GPIO_KEY=0X0F;
switch(GPIO_KEY)
{ //此段程序只是为了确定列的值 方便在后面进行测试行的时候加减运算 获得具体案件的行列值 从而转换为按键值
case(0X07): KeyValue=0;break;//扫描第一列
switch(GPIO_KEY)
{ //已经进行过
case(0X70): KeyValue=KeyValue;break;//自己去看为什么是 0X70 列的时候又为什么是0X07 硬件相结合

矩阵键盘及其电路设计

矩阵键盘及其电路设计
键(9键)。
3、矩阵式键盘的按键识别方法
• 逐行扫描法是一种逐行或逐列判断是否有键按下的方法。扫描法又称为逐行或列扫 描查询法,是一种最常用的按键识别方法。利用行扫描法判断矩阵键盘中被按下的 键时主要经过以下步骤。
• 第一步、识别有无键按下 • 让所有的行线均置为0电平,即P1.4-P1.7均输出低电平,读取列线P1.0-P1.3的值,
若P1.0-P1.3均为高电平,则表示无键按下,若不全为高电平,则表示有键按下 • 第二步、若有键被按下,识别出具体的按键 • 方法是采用逐行扫描的办法,即逐行置零电平,检查各列线的电平。如首先置第一
行为0,其余行为1,也就是让P1.4-P1.7输出0111,读取列线P1.0-P1.3的值,若不 全为1,则根据读取的列值即可判断出按键在第一行第几列上,从而识别出按键的 位置,若全为1,表示第一行无键按下,那么就再置第二行为0,其余行为1,即 P1.4-P1.7输出1011,再读取列值,根据列值结果,判断第二行上有无键被按下, 依此类推,识别出按键的键值。
1、独立式键盘及其接口
• 独立式键盘,是一种最简单的键盘构成 方法,它将每个按键的一端接到单片机 的I/O口,另一端接地,如图所示。
• 主要特点是各个键相互独立,每一个按 键对应一根输入口线。键盘软件结构简 单,但当键盘数目较多时,需占用大量 的输入口线,所以在使用上受到了很大 的限制。
2、矩阵式键盘及其接口
键盘及其电路设计
一、键盘的基本概念
• 键盘是一组开关的集合,是最常用的输入设备之一。组成键盘的按键 有触点式和非触点式两种。
• 触点式按键通常是机械触点开关,它利用了机械触点的通、断特性来 完成信息的输入。
• 非触点式按钮主要指利用电子器件的通、断来完成信息的输入,如工 作在开关状态的三极管等。

矩阵式键盘试验一

矩阵式键盘试验一

矩阵式键盘试验实验目的:1.掌握矩阵式键盘结构2.掌握矩阵式键盘工作原理3.掌握矩阵式键盘的两种常用编程方法,即扫描法和反转法实验要求:完成矩阵式键盘实验。

具体包括绘制仿真电路图、编写c源程序(反转法和扫描法)、进行仿真并观察仿真结果,需要保存原理图截图,保存c源程序,总结观察的仿真结果。

实验内容:实验1.矩阵式键盘实验功能:用数码管显示4*4矩阵式键盘的按键值,当K1按下后,数码管显示数字0,当K2按下后,显示为1,以此类推,当按下K16,显示F。

①硬件设计电路原理图如下②C源程序程序1:扫描法#include <REGx51.H>unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0x A1,0x86,0x8E};void delay(unsigned char xms) {while(xms--) {unsigned char i, j;i = 2;j = 239;do {while (--j);} while (--i);}}void dispaly(unsigned char num) {P2 = 0x00;P0 = table[num];}unsigned char keyscan() {P1 = 0xff;P1_3 = 0;if (P1_7 == 0) {delay(20);}if (P1_6 == 0) {delay(20);while(!P1_6) {}return 4;}if (P1_5 == 0) {delay(20);return 8;}if (P1_4 == 0) {delay(20);return 12; }P1 = 0xff;P1_2 = 0;if (P1_7 == 0) {delay(20);return 1;}if (P1_6 == 0) {return 5; }if (P1_5 == 0) {delay(20);return 9; }if (P1_4 == 0) {delay(20);return 13; }P1 = 0xff;P1_1 = 0;if (P1_7 == 0) {delay(20);return 2; }if (P1_6 == 0) {delay(20);return 6; }if (P1_5 == 0) {delay(20);}if (P1_4 == 0) {delay(20);return 14; }P1 = 0xff;P1_0 = 0;if (P1_7 == 0) {delay(20);return 3; }if (P1_6 == 0) {delay(20);return 7; }if (P1_5 == 0) {delay(20);return 11; }if (P1_4 == 0) {delay(20);return 15; }void main() {unsigned char num;while (1) {num = keyscan();dispaly(num);}}程序2:反转法#include <REGX51.H>unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0x A1,0x86,0x8E};unsigned char flag = 0;void delay(unsigned char xms) {while(xms--) {unsigned char i, j;i = 2;j = 239;do {while (--j);} while (--i);}}void display(unsigned char num) {P2 = 0x00;P0 = table[num];}unsigned char keyscan() {unsigned char n,m;P1 = 0x0f;n = P1;n &= 0x0f;P1 = 0xf0;m = P1;m &= 0xf0;switch(n | m) {case(0xee): flag = 1; return 15; //1110_1110case(0xde): flag = 1; return 11; //1101_1110case(0xbe): flag = 1; return 7; //1011_1110case(0x7e): flag = 1; return 3; //0111_1110case(0xed): flag = 1; return 14; //1110_1101case(0xdd): flag = 1; return 10; //1101_1101case(0xbd): flag = 1; return 6; //1011_1101case(0x7d): flag = 1; return 2; //0111_1101case(0xeb): flag = 1; return 13; //1110_1011case(0xdb): flag = 1; return 9; //1101_1011case(0xbb): flag = 1; return 5; //1011_1011case(0x7b): flag = 1; return 1; //0111_1011case(0xe7): flag = 1; return 12; //1110_0111case(0xd7): flag = 1; return 8; //1101_0111case(0xb7): flag = 1; return 4; //1011_0111case(0x77): flag = 1; return 0; //0111_0111default: flag = 0; return 0;}}void main() {unsigned char num = 0;while (1) {unsigned char num1 = keyscan();if (flag) {num = num1;}display(num);}}proteus仿真扫描法反转法实验结果与分析:。

矩阵键盘及其电路设计

矩阵键盘及其电路设计

矩阵键盘及其电路设计
矩阵键盘是一种常见的输入设备,常用于计算机、电视机、手机等电
子产品中。

它由多个按键组成,每个按键都与一个矩阵电路相连。

矩阵键
盘的设计简单、成本低廉,因此在许多场景中广泛应用。

矩阵键盘的电路设计可以分为两个主要方面:行扫描电路和列扫描电路。

行扫描电路负责控制行通道。

它由多个行扫描引脚组成,每一个引脚
都与一个行通道相连。

通常情况下,行扫描电路会以一定的频率依次将每
一个引脚置高电平,然后检测列通道是否有相应的信号。

如果检测到信号,就说明用户按下了对应的按键。

通过依次扫描所有的行通道,可以获取用
户整个键盘的按键状态。

列扫描电路负责控制列通道。

它由多个列扫描引脚组成,每一个引脚
都与一个列通道相连。

当行扫描电路扫描到其中一行时,列扫描电路会检
测到该行通道与列通道之间的电位差。

如果电位差存在,则说明用户按下
了该行和列交叉点处的按键。

在实际的电路设计中,还可以使用连接电阻和电容的方式来降低电路
的噪声。

通过在矩阵键盘中添加适当的抗干扰电路,可以有效减少外界干
扰对键盘输入的影响。

总结起来,矩阵键盘的电路设计主要包括行扫描电路和列扫描电路。

通过行列通道的扫描和检测,可以判断用户所按下的按键。

在实际的设计中,还可以添加抗干扰电路来提高键盘的输入稳定性。

矩阵键盘的设计简
单且成本低廉,因此被广泛应用于各种电子产品中。

一种矩阵键盘的电路控制模块的制作方法

一种矩阵键盘的电路控制模块的制作方法

一种矩阵键盘的电路控制模块的制作方法
矩阵键盘的电路控制模块是一种常用的输入设备,可用于电子产品中,如计算机、手机和家电等。

本文将介绍一种制作矩阵键盘的电路控制模块的方法。

制作矩阵键盘的电路控制模块需要以下材料和工具:矩阵键盘、电路板、导线、焊锡、焊接工具和测试仪器。

首先,将矩阵键盘的引脚与电路板上的连接点对应起来。

矩阵键盘通常有多行
多列的引脚,根据键盘规格和需要的按键数量,确定连接方式。

接下来,使用导线将键盘的引脚与电路板上的连接点焊接在一起。

确保焊接牢固且接触良好。

然后,根据需要的按键数量,确定矩阵键盘的排列方式。

将键盘按键的行列进
行编码,并在电路板上绘制相应的电路连接。

使用导线将键盘按键与电路板上的相应行列连接点焊接在一起。

确保每个按键的连接都正确无误。

接着,进行焊接和连接点的检查。

检查焊接是否牢固,连接是否正确。

可以使
用测试仪器来检测按键和电路的连通性。

确保每个按键在按下时都能正确地触发相应的行列连接点。

最后,进行电路模块的调试和封装。

连接模块到相应的电子产品,测试按键是
否正常工作。

对于需要外部接口的电子产品,可以设计相应的信号转换电路,以适配键盘和电子产品的接口。

最终,将模块进行固定封装,以保护电路和提高外观。

上述是一种矩阵键盘的电路控制模块制作方法。

通过对键盘引脚的连接、焊接
和排列,以及对电路的调试和封装,可以制作出功能稳定、可靠性高的矩阵键盘电路控制模块。

这一模块在各种电子产品中得到广泛应用,并为用户提供更加便捷的输入方式。

矩阵键盘电路

矩阵键盘电路
矩阵键盘电路
知识点目录
1
矩阵键盘电路结构与工作原理
矩阵键盘的编码
矩阵式键盘按键识别
键盘的工作方式
1.矩阵键盘电路结构与工作原理
2
矩阵式键盘又称为行列式键盘。用I/O接口线组成行和列结构,键位设置在行和 列的交叉点上。如图1所示,8个I/O口实现了16个按键。
图1 矩阵键盘电路结构
1.矩阵键盘电路结构与工作原理
3
工作原理:以第一组键盘为例。设置KeyOut1输出一个低电平,相当于KeyOut1接 地,电路相当于4个独立按键电路,此时KeyIn1-KeyIn4四个输入端为高电平;当 键盘K1按下时,由于电路导通,此时KeyIn1变为低电平。同理,哪个按键按下, 相对应的输入端为低电平,单片机通过读输入端的状态,判断是否有按键按下。 对应图1四组按键,当KeyOut1输出为低电平时,KeyOut2-KeyOut4输出必须为高 电平,才能避免相互间的干扰。
2.矩阵键盘的编码
பைடு நூலகம்
4
对于矩阵式键盘,按键的位置由行号 和列号唯一确定,因此可分别对行号 和列号进行二进制编码,然后将两值 合成一个字节,高4位是行号,低4位 是列号。
3.矩阵式键盘按键识别
5
扫描法:
1) 判断有无键按下。
2) 如果有键按下,识别是哪一个键按下,键盘扫描取得闭合键的行、列值。
3) 用计算法或查表法得到键值。
4) 判断闭合键是否释放,如没释放则继续等待。
5) 将闭合键键号保存,同时转去执行该闭合键的功能。
4.键盘的工作方式
6
(1)编程扫描方式
利用CPU在完成其它工作的空余时间,调用键盘扫描子程序来响应键盘输入 的要求。
(2)定时扫描工作方式

单片机矩阵键盘设计方案

单片机矩阵键盘设计方案

单片机矩阵键盘设计方案一、设计目标设计一个8行8列的矩阵键盘,每个按键都有一个唯一的键码,能够正常读取用户的按键输入,并将按键对应的键码显示在LCD屏幕上。

二、硬件设计硬件设计包括键盘电路和显示电路两部分。

1.键盘电路设计矩阵键盘的硬件设计主要包括键盘矩阵、行扫描电路和列读取电路。

键盘矩阵由8行8列的按键构成,每个按键都连接到一个由二极管组成的矩阵。

行扫描电路使用8位输出的GPIO口,根据行的值来选通对应的行组。

列读取电路使用8位输入的GPIO口,根据列的值来读取对应的列组。

2.显示电路设计三、软件设计软件设计主要包括初始化设置、按键检测、键码解析和显示处理四个部分。

1.初始化设置首先需要对GPIO口进行初始化设置,将扫描行的GPIO口设置为输出模式,将读取列的GPIO口设置为输入模式。

同时需要对LCD屏幕进行初始化设置,设置显示模式、光标位置等参数。

2.按键检测循环扫描每一行,当其中一行被选通时,读取每一列的值。

如果其中一列的值为低电平,则表示对应的按键被按下。

将按下的按键的行和列的值保存下来,用于后续的键码解析。

3.键码解析根据行和列的值,通过查表的方式找到对应的键码。

将键码保存下来,用于后续的显示处理。

4.显示处理将键码传送给LCD屏幕,通过LCD屏幕的驱动芯片进行解析和显示。

根据LCD屏幕的显示方式,可以选择逐行显示或者按需显示的方式。

四、优化设计在以上基本设计方案的基础上,可以进行一些优化设计,以提高系统的性能和可靠性。

1.消除按键抖动按键在实际使用中会存在抖动现象,需要通过软件滤波来消除。

可设置一个适当的延时,当检测到按键按下后,延时一段时间再进行键码解析,只有在延时之后仍然检测到按键按下,才认为是一个有效的按键。

2.防止冲突按键由于矩阵键盘的性质,可能存在一些按键组合会产生冲突的情况。

可以通过硬件设计和软件处理来解决。

在硬件上,可以增加二极管来隔离不同的按键。

在软件上,可以通过扫描算法和按键排除的方式来避免冲突。

实验8-矩阵键盘扫描实验

实验8-矩阵键盘扫描实验
}
//查询按键键值
key = Key_Scan() ;
if( key != 0xff )
printf( "Interrupt occur... K%d is pressed!\n", key ) ;
//重新初始化IO口
rGPGCON = rGPGCON & (~((3<<12)|(3<<4))) | ((1<<12)|(1<<4)) ;//GPG6,2 set output
6.EINT19、EINT11、EINT2、EINT0中断开启
}
6.2键盘中断响应
void __irq KeyISR(void)
{
1.GPG13、GPG11、GPF2、GPF0设为input端口
2.清楚中断EINT19、EINT11、EINT2、EINT0
3.键盘扫描Key_Scan(),并在串口输出
else if( (rGPGDAT&(1<< 3)) == 0 )return 14 ;
else if( (rGPGDAT&(1<<11)) == 0 )return 13 ;
//扫描键盘第2列K11、K8、K5、K2
rGPGDAT = rGPGDAT & (~((1<<6)|(1<<2))) | (0<<6) | (1<<2) ;//GPG6 output 0;GPG2 output 1
rEXTINT0 &= ~(7|(7<<8));
rEXTINT0 |= (2|(2<<8));//set eint0,2 falling edge int

矩阵式键盘识别显示电路的设计

矩阵式键盘识别显示电路的设计

第一节引言矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,即时在LED数码管上。

单片机控制的据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。

4*4矩阵式键盘采用AT89S51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用汇编语言编程。

单片机将检测到的按键信号转换成数字量,显示于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-1所示。

一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式,本设计就采用这个键盘模式。

图1-1 键盘布局随着21世纪的到来,资源危机接踵而至。

快速席卷整个国家,这一状况还将随着时间的推移和社会的发展而更加严重。

国家提倡资源节约型社会,资源危机已成为全球性的突出问题,利用科技手段缓解这一危机,将是人类主要的出路。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一实验目的
设计并实现一个4×4键盘接口控制器,含有时序产生电路、键盘扫描电路、弹跳消除电路、键盘译码电路、按键码存储电路、显示电路。

要求:当按下某一键时,4位LED上显示对应的键值。

二实验内容
实验仪器中4×4矩阵键盘的电路原理图如图1所示。

图1 4×4矩阵键盘电路原理图
当X1—X4四条行选线中有其中一位为0时,读入Y1—Y4的四位行值。

如Y1—X4输出为:0111,读入的Y1—Y4值为:0111,则对应按下的键为S1;当读入的Y1—Y4值为:1111时,则说明没有按键按下。

X1—X4为扫描信号,在程序中我们用SEL[3..0]表示;Y1—Y4为键值读取信号,在程序中我们用KEYIN[3..0]表示。

扫描信号为SEL[3..1],当SEL1为‘0’,其他位为‘1’,我们按下第一排第一键,此时KEYIN0输出‘0’,KEYIN1—KEYIN3输出全为‘1’,按下第二排第二键时,KEYIN1输出‘0’,其他输出‘1’;当SEL2为‘0’,其它位为‘1’时,我们按下第一排第二键,此时KEYIN0输出‘0’,KEYIN1—KEYIN3输出全为‘1’,同理其他键依此类推。

键盘上的每个按键就是一个开关,当某键被按下时,该按键的接点会呈现‘0’状态,反之为‘1’。

扫描信号为SEL[3..0]输出到键盘,所以第一次只能扫描一排,依此周而复始。

按键位置与数码的关系如表1所示。

若从KEYIN[3..0]输出的皆为‘1’时,表示没有按键按下,代表该列没有按键被按下,则不进行按键编码的操作,反之,如果有被按下时,则应将KEYIN[3..0]读出的值送到译码电路进行编码。

表1 按键位置与键值对应关系
光靠矩阵键盘是无法正确地完成输入工作的,另外还需搭配以下几个电路模块:
1、时钟产生电路
当一个系统中使用不同操作频率的脉冲波形时,最方便的方法就是利用一个自由计数器来产生各种频率。

本电路中就使用三种不同频率的工作脉冲波形。

它们分别是:系统时钟(它是系统内部所有时钟的提供者,频率最高)、弹跳消除取样信号、键盘扫描信号和七段显示器扫描信号。

在很多的电路设计中,键盘扫描信号和七段显示器扫描信号可以使用相同的时钟信号,本设计也采用此方法。

具体做法:
●先建立一个N位的计数器,N的大小由电路的需求所定。

N的值越大,分频的
次数就越多,但所占用的空间也越大。

●若要得到一个脉冲波形信号,可以只取计数器中一个值,如使用CLK<=Q(4)
语句,其值变化为0-1-0-1-1……。

●若要得到脉冲波形序列,可以取计数器中的几个值,如使用CLK<=Q(4
DOWNTO 3)语句,其值变化为00-01-10-11-00-01……。

2、键盘扫描电路
扫描电路的作用是用来提供键盘扫描信号(表1中的SEL3—SEL0)的电路,扫描信号的变化的顺序依次为1110—1101—1011—0111—1110依次的周而复始。

扫描时依序分别扫描4列按键,当扫描信号为1110时,扫描0这一列按键……每扫描一列按键,就检查一次是否有按键按下,如果这排有按键按下,就马上停止扫描,立即进行按键编码动作,存储键码,如果没有按键按下,则继续扫描下一列。

3、弹跳消除电路
因为按键大多是机械式开关结构,在开关切换的瞬间会在接触点出现来回弹跳的现象,对于激活关闭一般电器并不会有何影响,但对于灵敏度较高的电路,却有可能产生误动作而出错。

弹跳现象产生的原因可从图2说明。

虽然只是按下按键一次然后放掉,然而实际产生的按键信号却不只跳动一次,经过取样的检查后将会造成误判,以为按键两次。

图2 弹跳现象产生错误的抽样结果
如果调整抽样频率(如图3),可以发现弹跳现象获得了改善。

图3 调整抽样频率后得到的抽样结果
因此必须加上弹跳消除电路,避免误操作信号的发生。

注意,弹跳消除电路所使用脉冲信号的频率必须比其它电路使用的脉冲信号的频率更高;通常将扫描电路或LED 显示电路的工作频率定在24H Z 左右,两者的工作频率是通常的4倍或更高。

4、 键盘译码电路
上述键盘中的按键可分为数字键和功能键。

数字键主要用来输入数字,但从表2中发现,键盘所产生的输出KEYIN3—KEYIN0无法拿来直接使用;另外不同的数字按键也担负不同的功能,因此必须由键盘译码电路来规划第个按键的输出形式,以便执行相应的动作。

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

表2 键盘参数表
按键信号 抽样信号 抽样结果
按键信号 抽样信号 抽样结果
译码电路负责的工作有:
a)判别是否有键按下。

b)若被按下的是数字键或字母键,则编码成相对应的16进制编码。

c)若被按下的是数字键,除进行16进制编码外,同时还编码成BCD
码。

d)若按下是的功能键或其他按键,则编码成16进制编码。

5、按键码存储电路
因为每次扫描会产生新的按键数据,可能会覆盖前面的数据,所以需要一个按键存储电路,将整个键盘扫描完毕后记录下来。

按键存储电路可以用移位寄存器构成,在这里对移位寄存器就不再介绍,请参阅前面相关实验。

键盘接口电路的引脚如图4所示。

图4 矩阵键盘接口模块引脚图
三实验连线
功能选择位VGA[3..0]状态为0101,即4X4键盘功能选取,此时16位数据总线只有最低的8位有效,其中高4位为键盘的4位行扫描输出,即SCAN[3..0];低4位为键盘的4位列查询输入,即KEYIN[3..0]。

RST即对应CPU板上的RESET
CLK_IN即对应CPU板上的50MHz晶振输入,50MHz输入时钟经内部分频产生扫描时钟
LEDS0—LED3分别对应PIO9—PIO12,STATE对应PIO16,将PIO9—PIO12、PIO16用导线连接L1—L5。

相关文档
最新文档