奇思妙想的键盘扫描法
按键扫描程序(4)
else if(key == D_key)
........//点亮B_LED,关闭A_LED和C_LED
else if(key == S_key)
key_time_1 = 0; // 第1次单击,不返回,到下个状态判断后面是否出现双击
key_m = key_state_1;
}
else
特别操作情况定义:
1。短按操作和长按操作间隔<0.5s,以及,长按操作和短按操作间隔<0.5s,均不产生双击事件
2。连续n次(n为奇数)短按操作,且间隔均<0.5s,产生(n-1)/2次双击事件+1次单击事件
3。连续n次(n为偶数)短按操作,且间隔均<0.5s,产生n/2次双击事件
题目:多功能按键设计。利用一个I/O口,接一个按键,实现3功能操作:单击 + 双击 + 长按。
============================================================================
用户基本操作定义:
1。短按操作:按键按下,按下时间<1s,属于一次短按操作
if (!key_press)
{
key_time = 0; //
key_state = key_state_2; // 按键仍然处于按下,消抖完成,状态转换到按下键时间的计时状态,但返回的还是无键事件
}
else
key_state = key_state_0; // 按键已抬起,转换到按键初始态。此处完成和实现软件消抖,其实按键的按下和释放都在此消抖的。
实验五 键盘扫描实验 实验报告
键盘扫描实验实验报告一、实验目的1. 掌握线反转法键盘扫描原理。
2. 了解单片机的输入和输出过程,理解单片机的数据采集过程。
二、实验内容单片机外接4x4键盘,通过线反转法判断按下的键,并在数码管上显示按键对应的数字。
第一行从左到右分别是开关K0, K1, K2, K3,第二行从左到右分别是K4, K5, K6, K7以此类推。
当按下Kn时,在数码管上显示数字n。
三、实验原理线翻转法:先对行(R0-R3)置0,对列(R4-R7)置1。
当有键被按下时,会把按键所在的列的电位从1变0,记录下位置;然后再将行列翻转,记录下按下键的所在行,两数进行或运算,就可以得到一个唯一表示按下键的数字。
例如:假定R0-R7分别与单片机的P2.0-P2.7相连。
先把R4-R7置1,R0-R3置0(通过指令MOV P2, #0F0H实现)。
当键K5被按下时,R5电位被拉低为低电平。
此时,P2口表示的数为:1101 0000(0xD0);然后再置R4-R7为0,R0-R3为1,此时,R1电位被拉低为低电平,此时,P2口表示的数为:0000 1101(0x0D)。
将两数相与取反,得到:0010 0010。
四、实验过程1. 连接好单片机及其外围设备电路2. 编写汇编程序ORG LJMP KeyLJMP K7: CJNE R2, #82H, K8ORG 0100H MOV P0, #0F8H Init: CLR P1.3 LJMP KeyMOV P0, #0C0H K8: CJNE R2, #14H, K9 Key: MOV P2, #0F0H MOV P0, #080HMOV A, P2 LJMP KeyMOV R1, A K9: CJNE R2, #24H, K10MOV P2, #0FH MOV P0, #090HMOV A, P2 LJMP KeyORL A, R1 K10: CJNE R2, #44H, K11CPL A MOV P0, #088HMOV R2, A LJMP KeyJNZ KeyPro K11: CJNE R2, #84H, K12LJMP Key MOV P0, #083H KeyPro: CJNE R2, #11H, K1 LJMP KeyMOV P0, #0C0H K12: CJNE R2, #18H, K13LJMP Key MOV P0, #0C6H K1: CJNE R2, #21H, K2 LJMP KeyMOV P0, #0F9H K13: CJNE R2, #28H, K14LJMP Key MOV P0, #0A1H K2: CJNE R2, #41H, K3 LJMP KeyMOV P0, #0A4H K14: CJNE R2, #48H, K15LJMP Key MOV P0, #086H K3: CJNE R2, #81H, K4 LJMP KeyMOV P0, #0B0H K15: CJNE R2, #88H, K16LJMP Key MOV P0, #08EH K4: CJNE R2, #12H, K5 LJMP KeyMOV P0, #099H K16: LJMP KeyLJMP Key ENDK5: CJNE R2, #22H, K6MOV P0, #092HLJMP KeyK6: CJNE R2, #42H, K7MOV P0, #082H五、实验结果1. 当按下开关Kn时,数码管能够显示对应的数字。
键盘扫描原理
键盘扫描原理
键盘是计算机输入设备中最常用的一种,它通过将人们的按键操作转换成计算机可以识别的信号,从而实现了人机交互。
而键盘的核心部分就是键盘扫描原理,它是如何实现的呢?
首先,我们需要了解键盘的工作原理。
当我们按下键盘上的某一个按键时,就会产生一个按键信号,这个信号会通过键盘的电路传输到计算机主机上。
而键盘扫描原理就是指计算机是如何检测到这个按键信号的。
键盘扫描原理的核心就是矩阵扫描。
键盘上的每一个按键都对应着一个电路,这些电路会以矩阵的形式排列在键盘的背后。
当我们按下某一个按键时,对应的电路就会闭合,从而产生一个按键信号。
计算机会通过扫描这个矩阵来检测到按键信号的产生。
具体来说,计算机会以一定的频率扫描键盘上的每一个按键,检测它们是否产生了按键信号。
这个扫描的频率通常很高,所以我们按下按键时几乎可以立即得到响应。
一旦计算机检测到有按键信号产生,它就会将这个信号转换成相应的键值,从而实现了按键的输入。
除了矩阵扫描,现代键盘还采用了一些其他技术来提高性能和稳定性。
比如采用了多种防抖动技术,防止因按键抖动而产生误操作;采用了多种按键轮询技术,提高了按键的灵敏度和反应速度;还采用了多种按键编码技术,提高了按键的识别准确性和稳定性。
总的来说,键盘扫描原理是键盘工作的核心,它通过矩阵扫描等技术实现了对按键信号的检测和转换,从而实现了人机交互。
随着技术的不断发展,键盘的性能和稳定性会不断提高,为人们的使用体验带来更多的便利和舒适。
扫描键盘的原理
扫描键盘的原理
键盘扫描原理是通过一种叫做"矩阵扫描"的技术来实现的。
它
主要依靠键盘上方的一组电路来完成输入信号的检测和传递。
具体来说,键盘通常有多行多列的布局。
每个按键都与一个特定的行和列相连,形成一个按键矩阵。
当我们按下某个按键时,键盘的控制器会首先激活按键所在的行,然后依次检查每一列。
如果有任何一列检测到有电流通过,就说明该按键被按下。
为了实现这个过程,键盘内部的控制器会周期性地激活行,并读取列上的电流状况。
它会通过一个循环的方式,每次激活一行并读取所有列的状态,以此来获得所有按键的输入信号。
这种矩阵扫描的方式可以同时检测多个按键的状态,从而实现多键同时按下的功能。
一旦控制器检测到按键被按下,它会将相应的按键码发送给计算机,然后由操作系统或相应的应用程序来处理这个输入。
键盘控制器和计算机之间的通信通常是通过USB或PS/2接口完
成的。
总的来说,键盘的扫描原理就是基于矩阵扫描技术,通过激活行和读取列的方式,检测按键的输入信号,并将其传递给计算机进行处理。
键盘扫描与LED数码管显示课件
设计温度传感器模块,如 DS18B20,用于获取环境温
度。
编写程序读取温度传感器数 据,并进行处理和转换。
04
05
使用LED数码管显示当前温 度值,如“25℃”。
THANKS
感谢观看
特点
LED数码管具有高亮度、低功耗、寿命长、耐腐蚀等特点,且体积小、重量轻, 易于安装和携带。
LED数码管的应用场景与优势
应用场景
LED数码管广泛应用于各种需要数字 显示的场合,如仪表盘、计时器、遥 控器等。
优势
LED数码管具有高亮度、低功耗、寿 命长等特点,能够提供清晰、稳定的 数字显示,同时价格相对较低,易于 实现大规模生产。
联合应用的常见问题与解决方案
常见问题
键盘扫描可能会出现按键抖动、串扰等 问题;LED数码管显示可能会出现亮度不 均、闪烁等问题。
VS
解决方案
针对按键抖动问题,可以采用软件消抖或 硬件消抖的方法;针对串扰问题,可以增 加隔离电路或采用差分信号传输方式。针 对LED数码管亮度不均问题,可以调整各 段数码管的电流参数;针对闪烁问题,可 以增加刷新频率或采用动态扫描显示方式 。
放相应音符。
01
设计音符键区,包括 do-re-mi等音符按键。
03
使用LED数码管显示当 前播放的音符名称,如
“C”。
05
详细描述
02
编写程序识别按键并播 放相应音符,如播放C
大调音阶。
04
案例四:温度显示系统设计
详细描述
总结词:通过温度传感器获 取温度值,使用LED数码管
显示温度值。
01
02
03
键盘扫描原理
通过逐行或逐列扫描键盘的每个按键 ,检测是否有键被按下。当某个按键 被按下时,相应的行或列电平发生变 化,从而识别出被按下的按键。
矩阵键盘扫描原理
矩阵键盘扫描原理矩阵键盘是一种常见的输入设备,广泛应用于各种电子产品中,如计算机、手机、电视遥控器等。
它的原理是通过矩阵扫描技术来实现按键的检测和识别。
下面我们将详细介绍矩阵键盘的扫描原理。
首先,我们来了解一下矩阵键盘的结构。
矩阵键盘由若干行和若干列按键组成,每个按键都与一个行线和一个列线相连接。
当按下某个按键时,对应的行线和列线会发生连接,从而形成一个按键闭合的电路。
在正常情况下,行线和列线是断开的,不会导通。
为了检测按键的状态,需要通过矩阵扫描的方式来逐个检测每个按键。
扫描的原理是通过逐行逐列地扫描按键,从而确定哪些按键被按下。
具体来说,扫描的过程是这样的,首先,将所有的列线拉低,然后逐行地扫描每一行,检测每一行上的按键是否被按下。
如果某一行上有按键被按下,那么对应的列线和行线就会连接,从而形成一个闭合的电路。
通过这种方式,可以逐个检测每一个按键的状态。
在实际应用中,为了提高扫描的效率,通常会采用按键去抖技术和扫描周期的优化。
按键去抖技术是为了解决按键在按下和松开的过程中会产生抖动现象的问题,通过软件或硬件的方式来滤除抖动信号,从而确保按键状态的稳定性。
扫描周期的优化则是为了减少扫描的时间,提高系统的响应速度。
总的来说,矩阵键盘的扫描原理是通过逐行逐列地扫描按键,从而确定按键的状态。
通过合理的设计和优化,可以实现稳定、高效的按键检测和识别,从而为用户提供良好的输入体验。
总结一下,矩阵键盘扫描原理是通过逐行逐列地扫描按键,从而确定按键的状态。
通过合理的设计和优化,可以实现稳定、高效的按键检测和识别,为用户提供良好的输入体验。
希望本文能够帮助大家更好地理解矩阵键盘的工作原理。
键盘扫描原理
键盘扫描原理
键盘扫描原理是指通过控制信号将按键状态传输到计算机的一种技术。
它主要分为两个步骤:键盘扫描和数据传输。
在键盘扫描过程中,计算机会发送扫描码(scan code)到键盘。
扫描码是一个8位的二进制数,用于唯一标识每个按键。
键盘内部有一个按键矩阵,当按键按下时,会触发相应的行和列连线,形成一个电路通路。
键盘通过轮询的方式扫描每个按键的状态,并生成扫描码。
一旦键盘生成了扫描码,它就会通过电缆传输给计算机。
数据传输的方式可以是串行还是并行,取决于键盘和计算机之间的连接方式。
对于串行传输,扫描码会被逐位地发送到计算机。
对于并行传输,扫描码会同时发送到计算机的多个引脚上。
计算机接收到扫描码后,会根据预先定义的映射表将其转换为相应的字符或功能。
映射表可以根据键盘类型和语言环境的不同而有所不同。
计算机将转换后的按键信息存储在一个缓冲区中,供操作系统或应用程序读取和处理。
总结来说,键盘扫描原理通过扫描码和数据传输将按键状态传输给计算机。
这种技术广泛应用于各种键盘设备,包括传统的有线键盘和现代的无线键盘。
键盘扫描显示实验报告
一、实验目的1. 理解键盘扫描的基本原理,掌握键盘扫描的方法。
2. 掌握数码管显示的基本原理,实现键盘扫描信息的实时显示。
3. 熟悉8255并行接口芯片在键盘扫描和数码管显示中的应用。
二、实验原理1. 键盘扫描原理:键盘扫描是指通过硬件电路对键盘按键进行检测,并将按键信息转换为可识别的数字信号的过程。
本实验采用行列式键盘,通过扫描键盘的行线和列线,判断按键是否被按下。
2. 数码管显示原理:数码管是一种用来显示数字和字符的显示器,由多个发光二极管(LED)组成。
本实验采用七段数码管,通过控制各个段(A、B、C、D、E、F、G)的亮灭,显示相应的数字或字符。
3. 8255并行接口芯片:8255是一款通用的并行接口芯片,具有三个8位并行I/O口(PA、PB、PC),可用于键盘扫描和数码管显示的控制。
三、实验设备1. 实验平台:PC机、8255并行接口芯片、行列式键盘、七段数码管、面包板、导线等。
2. 软件环境:汇编语言编程软件、仿真软件等。
四、实验步骤1. 硬件连接:将8255并行接口芯片、行列式键盘、七段数码管连接到实验平台上,按照电路图进行连线。
2. 编写程序:使用汇编语言编写键盘扫描和数码管显示的程序。
(1)初始化8255并行接口芯片:设置PA口为输出端口,PB口为输出端口,PC口为输入端口。
(2)扫描键盘:通过PC口读取键盘的行线状态,判断是否有按键被按下。
若检测到按键被按下,读取对应的列线状态,确定按键的位置。
(3)数码管显示:根据按键的位置,控制数码管的段(A、B、C、D、E、F、G)的亮灭,显示相应的数字。
3. 仿真调试:使用仿真软件对程序进行调试,确保程序能够正确扫描键盘和显示数字。
五、实验结果与分析1. 实验结果:成功实现了键盘扫描和数码管显示的功能。
当按下键盘上的任意按键时,数码管上会显示对应的数字。
2. 分析:(1)键盘扫描部分:通过读取PC口的行线状态,判断是否有按键被按下。
当检测到按键被按下时,读取PB口的列线状态,确定按键的位置。
电子键盘的扫描原理
电子键盘的扫描原理电子键盘是现代计算机和其他电子设备中常见的输入设备之一,其工作原理是通过扫描来检测用户按下的按键,并将按键信息传输给相关设备进行处理。
本文将介绍电子键盘的扫描原理及其工作流程。
一、电子键盘的基本结构电子键盘通常由一组按键和控制电路组成。
按键通常被分为几行和几列,并通过金属导线或薄膜电路板连接到控制电路。
每个按键都有一个唯一的标识符,如字符、数字或功能键。
二、键盘扫描的工作原理电子键盘通过扫描技术来检测用户按下的按键。
简单来说,扫描过程分为两个步骤:行扫描和列扫描。
1. 行扫描在行扫描阶段,控制电路将一个个地激活每一行线路,从第一行开始直到最后一行。
当一行被激活时,与该行相对应的列被连接到控制电路上的输入端。
如果没有按键按下,该列电路将保持高电平。
如果有按键按下,该列电路将变为低电平。
2. 列扫描在列扫描阶段,控制电路逐列地检测每一列线路的电平状态。
如果某列电路检测到低电平,则表示该列对应的按键被按下。
控制电路将记录下按下按键所在的行和列信息。
三、键盘扫描的工作流程电子键盘的扫描工作流程可以简要概括如下:1. 初始化开始时,控制电路保持所有行线路为高电平状态,并等待用户按下按键。
2. 行扫描控制电路依次激活每一行线路,从第一行到最后一行。
对于每一个激活的行,控制电路会检查每一列线路的电平状态。
3. 检测按键如果有按键被按下,控制电路将记录下按下按键所在的行和列信息,并将其保存在缓存中。
4. 输出按键信息一旦扫描完成,控制电路将按下按键的信息传输给相关设备进行进一步处理。
比如,在计算机中,操作系统会接收到按键信息,并将其转化为相应的字符或指令。
四、扫描速度和反馈机制电子键盘的扫描速度通常非常快,以保证用户在快速输入时不会出现按键丢失或错位的情况。
现代的电子键盘通常采用多级的硬件扫描技术,使得扫描速度更快,响应更准确。
另外,一些高级电子键盘还会提供按键反馈机制,比如机械键盘中的轴体触发,通过物理机械结构产生明显的触感和声音反馈,以增强用户的输入体验。
实验五 键盘扫描实验 实验报告
实验五键盘扫描实验实验报告一、实验目的本次实验的主要目的是深入了解键盘扫描的工作原理,掌握键盘扫描的编程实现方法,以及提高对硬件接口和软件编程的综合应用能力。
二、实验设备1、计算机一台2、实验开发板一套3、下载线一根4、键盘一个三、实验原理键盘扫描的基本原理是通过逐行或逐列扫描键盘矩阵,检测按键的按下和释放状态。
常见的键盘扫描方式有行列式扫描和编码式扫描。
在行列式扫描中,将键盘的行线和列线分别连接到微控制器的输入输出端口。
通过依次将行线设置为低电平,同时读取列线的状态,来判断是否有按键按下。
如果在某一行被设置为低电平时,对应的列线检测到低电平,则表示该行和该列交叉处的按键被按下。
编码式扫描则是利用专门的编码芯片对键盘进行扫描和编码,微控制器只需读取编码芯片输出的按键编码即可确定按键的状态。
四、实验步骤1、硬件连接将实验开发板与计算机通过下载线连接好。
将键盘连接到实验开发板的相应接口。
2、软件编程选择合适的编程语言和开发环境,如 C 语言和 Keil 开发环境。
定义键盘的行线和列线所对应的端口。
编写扫描函数,实现键盘扫描的逻辑。
在主函数中调用扫描函数,并根据返回的按键值进行相应的处理,如显示按键字符或执行特定的操作。
3、编译下载对编写好的程序进行编译,检查是否有语法错误。
将编译生成的可执行文件下载到实验开发板中。
4、实验测试按下键盘上的不同按键,观察实验开发板上的显示或输出结果是否正确。
检查是否能够准确检测到按键的按下和释放,以及是否存在按键抖动等问题。
五、实验结果与分析1、实验结果在实验过程中,成功实现了对键盘的扫描,并能够准确检测到按键的按下。
按下不同的按键时,实验开发板能够正确显示相应的按键字符或执行预定的操作。
2、结果分析对于按键的准确检测,说明编写的扫描函数逻辑正确,能够有效地识别键盘矩阵中的按键状态变化。
在检测到按键按下时,没有出现误判或漏判的情况,表明行线和列线的设置以及读取操作正常。
扫描按键原理
扫描按键原理
扫描按键原理是一种常见的输入设备工作原理,常用于电脑键盘、手机触摸屏等设备中。
扫描按键原理的基本思想是通过周期性地扫描每个按键,来检测按键是否被按下。
具体的工作流程如下:
1. 首先,将所有按键连接到一个键盘矩阵中。
键盘矩阵由若干列和若干行组成,按键与对应的行和列交叉连接。
2. 然后,将每一列设置为输入状态,每一行设置为输出状态。
3. 系统开始扫描按键时,首先将第一列置为高电平,然后逐行读取输入状态。
如果某一行的输入状态为低电平,说明该行对应的按键被按下。
4. 当检测到按键按下后,系统将记录下所在的行和列信息,并执行相应的操作。
5. 接下来,系统继续将下一列置为高电平,继续扫描按键直到所有列都被扫描完毕。
6. 扫描完成后,系统会根据之前记录的按键信息,来判断哪些按键被按下,并进行相应的响应。
通过周期性的扫描方式,系统可以实时检测按键的状态,并进行相应的处理,从而实现按键输入的功能。
需要注意的是,扫描按键原理存在一定的延迟,因为需要不断地扫描每个按键。
为了提高响应速度,可以通过优化扫描速度或者使用中断方式来减少延迟。
总之,扫描按键原理是一种常用的输入设备工作原理,通过周期性扫描按键的方式来检测按键状态,并进行相应的处理。
它在各种电子设备中被广泛应用,为用户提供便捷的操作体验。
4x4矩阵键盘扫描原理
4x4矩阵键盘扫描原理
4x4矩阵键盘扫描原理是一种常用的键盘扫描方法,也称为矩阵键盘扫描。
它可以将多个按键连接在一起并使用较少的引脚来检测按键的状态。
4x4矩阵键盘由4行和4列组成,共有16个按键。
通常使用单片机或电路来进行扫描,以下是简要的原理:
1. 行扫描:首先,将行引脚设置为输出,同时将列引脚设置为输入,并将其上拉或下拉。
所有行引脚中只有一个为低电平,其余为高电平。
然后逐行检测按键状态。
2. 列检测:对于每一行,将对应的行引脚置为低电平后,检测列引脚的电平状态。
如果有按键按下,则相应的列引脚会变为低电平。
通过读取列引脚的状态,可以确定按键的位置。
3. 组合键:由于只能一次检测一行,因此当同时按下多个按键时,可能会导致误检。
为了解决这个问题,可以在检测到按键按下时,延迟一段时间,并再次检测按键的状态。
如果在第二次检测时仍然检测到按键按下,则确认按键有效。
4. 反向扫描:为了检测按键的释放状态,可以将行引脚设置为输入,列引脚设置为输出,并将其置为低电平。
然后逐列检测行引脚的电平状态,如果有按键释放,则相应的行引脚会变为高电平。
通过不断地循环扫描所有的行和列,可以实时检测按键的状态,并根据需要进行相应的处理。
堪称一绝的键盘扫描方法
堪称一绝的键盘扫描方法
键盘扫描是计算机视觉系统中经常使用的一种技术,它的作用是检测
用户输入的键盘输入,从而实现用户与计算机的交互。
目前,键盘扫描技
术有许多种形式,它们的特点是方式不同,用于输入控制信息的类型也不同。
其中最为出色的键盘扫描方法之一就是时序扫描。
时序扫描是一种用以检测用户输入的键盘扫描方法,它具有以下特点:
1、可以识别出按下的每个按钮:通过识别连接在芯片上的每一排的
按钮,可以检测到按下的每一个按钮,并能够识别出其它按键的状态;
2、具有低成本:时序扫描不需要复杂而昂贵的硬件,也不需要任何
软件,只要在芯片上使用一些简单的电路就可以实现;
3、可用于多行键盘:时序扫描可以非常方便地支持多行键盘,而且
用户还可以使用灯光状态监视器来指示按键状态。
4、具有高可靠性:在使用时序扫描技术进行键盘扫描时,用户可以
忽略硬件布线和失效的可能性,这是其他技术无法实现的;
5、可以使用多种程序进行实现:时序扫描可以使用不同的芯片、不
同的程序,以及不同的键盘应用来实现控制;
6、可以在低压下工作:时序扫描可以在低电压和低功耗的情况下工作,具有非常好的电气性能。
实验三 键盘扫描
实验三键盘扫描&8位7段码管显示实验一实验目的1.进一步熟悉用Quartus II开发SOPC的基本流程。
2.进一步掌握PIO外设的使用方法。
3.熟悉对PIO的更复杂的操作过程。
4.掌握驱动8位七段码管的方法。
二硬件需求1.EDA/SOPC实验箱一台。
三实验原理实验中要用到4×4键盘,系统需要完成4×4键盘的扫描,确定有键按下后需要获取其键值,根据预先存放的键值表,逐个进行对比,从而进行按键的识别,并将相应的按键值进行显示。
键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,首先输出4列中的第一列为低电平,其它列为高电平,然后读取行值;然后再输出4列中的第二列为低电平,读取行值,依此类推,不断循环。
系统在读取行值的时候会自动判断,如果读进来的行值全部为高电平,则说明没有按键按下,否则如果读进来的行值发现不全为高电平,则说明键盘整列中必定有至少一个按键按下,读取此时的行值和当前的列值,即可判断到当前的按键位置。
获取到行值和列值以后,组合成一个8位的数据,根据实现不同的编码在对每个按键进行匹配,找到键值后在7段码管显示。
8位七段码管的显示是在程序中定时扫描显示的,为了使显示的过程简化,可以在程序中开辟8个存储区,用于存放8个七段码管对应值,然后每按下按键一次,则相应的值出现在最右边的七段码管上,原先的显示的值依次左移。
为了完成键盘的扫描和七段码管的正确显示,必须在原来CPU模块的基础上再加入一个定时器模块,用以产生周期性中断,在中断服务程序中完成键盘的扫描以及七段码管的扫描。
四实验内容本实验要完成的内容是设计一个CPU模块,该CPU需要加入一个定时器模块,用以产生周期性中断进行键盘扫描和七段码管的扫描显示。
实验要求能够在按下按键时获取其键值,然后在8个七段码管上正确显示按下的键值,每按键一次,原先显示的值整体左移,新的键值出现在8个七段码管的最右边。
实验八 键盘扫描显示实验
实验八键盘扫描显示实验一、实验目的1、了解普通4×4键盘扫描的原理。
2、进一步加深七段码管显示过程的理解。
二、硬件要求1、4×4键盘阵列。
2、FPGA主芯片EP1K30TC144-3。
3、可变时钟源。
4、七段码显示区。
三、实验原理本实验主要完成的实验是完成4×4键盘扫描的,然后获取其键值,并对其进行编码,从而进行按键的识别,并将相应的按键值进行显示。
键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出4行为高电平,然后输出4列为低电平,在读入输出的4行的值,通常高电平会被低电平拉低,如果读入的4行均为高电平,那么肯定没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。
同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。
获取到行值和列值以后,组合成一个8位的数据,根据实现不同的编码在对每个按键进行匹配,找到键值后在7段码管显示。
四、实验内容及步骤本实验内容是完成4×4键盘的扫描,然后将正确的键值进行显示,实验步骤如下:1、编写键盘扫描和显示的VHDL代码。
2、用MaxPlusII对其进行编译仿真。
3、在仿真确定无误后,选择芯片ACEX1K EP1K30TC144-3。
4、给芯片进行管脚绑定,在此进行编译。
5、根据自己绑定的管脚,在实验箱上对键盘接口、显示接口和FPGA之间进行正确连线。
6、给目标板下载代码,在4×4键盘输入键值,观看实验结果。
五、实验连线如果是调用的本书提供的VHDL代码,则实验连线如下:Clk:FPGA工作时钟信号,大约位5KHz至50KHz即可。
Kr[0:3]:分别接4×4键盘部分的R1、R2、R3和R4。
io按键扫描原理
io按键扫描原理宝子们!今天咱们来唠唠这个超有趣的IO按键扫描原理呀。
咱先想象一下,这个IO口就像是一个超级小的门卫,它守着一个通往神秘世界(设备内部电路)的小路口。
按键呢,就像是来拜访这个神秘世界的小客人。
当这个按键按下去的时候呀,就相当于小客人来敲门啦。
这个IO口呢,它有两种状态,就像门卫有两种心情一样。
一种是高电平,一种是低电平。
这就好比门卫有时候高兴,举着个高高的小旗子(高电平),有时候有点低落,小旗子就放低啦(低电平)。
按键没按下去的时候,IO口可能处于一种默认的电平状态,比如说高电平。
这时候呢,电路里的小电流就安安静静地按照既定路线走,就像小河流在河道里平静地流淌。
当咱们把按键按下去的时候,可就热闹起来咯。
按键按下就像是在电路里搭起了一座新的小桥,电流就会顺着这座新的小桥跑。
这时候呀,IO口检测到电平发生了变化。
如果之前是高电平,现在可能就变成低电平啦。
这个变化就像是门卫看到了不寻常的事情,赶紧要去汇报一样呢。
那设备怎么知道是这个按键按下去了,而不是其他什么奇怪的干扰呢?这就涉及到扫描啦。
就好比这个小门卫很聪明,它不是随便看到电平变化就大惊小怪的。
它会按照一定的节奏去查看这个IO口的电平情况,这个节奏就像是它巡逻的时间间隔。
比如说,它每隔一小会儿就去看看这个电平是高是低。
如果连续好几次看到电平从高变成低,而且这个变化的时间和规律符合按键按下的特征,那它就会很确定地说:“这个按键被按下去啦。
”而且呀,这个扫描还有个很贴心的地方呢。
如果只是瞬间的干扰,比如说旁边有个小静电之类的调皮鬼来捣乱了一下,让电平闪了一下,但是这个变化不符合按键按下的那种持续稳定的变化规律,那小门卫就不会误判,不会大喊大叫说按键按下去了。
这就像是小门卫很有经验,能够区分真正的客人和那些一闪而过的小影子一样。
在软件层面呢,就像是有个小管家在背后指挥这个小门卫。
小管家会告诉小门卫什么时候开始扫描,扫描的速度要多快。
这个小管家还会根据不同的情况,调整扫描的策略。
键盘扫描原理及应用键盘
键盘扫描原理及应⽤键盘本资源为⽹上搜集⽽来,如果该程序涉及或侵害到您的版权请⽴即写信通知我键盘扫描键盘是由按键构成,是单⽚机系统⾥最常⽤的输⼊设备。
我们可以通过键盘输⼊数据或命令来实现简单的⼈-机通信。
1.按键及键抖动按键是⼀种常开型按钮开关。
平时,按键的两个触点处于断开状态,按下按键时两个触点才闭合(短路)。
如图1-1所⽰,平常状态下,当按键K未被按下时,按键断开,PA0输⼊⼝的电平为⾼电平;当按键K被按下时,按键闭合,PA0输⼊⼝的电平为低电平。
图1-1 按键电路图1-2 按键抖动⼀般的按键所⽤开关都是机械弹性开关,由于机械触点的弹性作⽤,按键开关在闭合时不会马上稳定地连接,在断开进也不会马上完全的断开,在闭合和断开的瞬间均有⼀连串的抖动。
按键按下的电压信号波形图如图1-2所⽰,从图中可以看出按键按下和松开的时候都存在着抖动。
抖动时间的长短因按键的机械特性不同⽽有所不同,⼀般为5ms~10ms。
如果不处理键抖动,则有可能引起⼀次按键被误读成多次,所以为了确保能够正确地读到按键,必须去除键抖动,确保在按键的稳定闭合和稳定断开的时候来判断按键状态,判断后再做处理。
按键在去抖动,可⽤硬件或软件两种⽅法消除。
由于使⽤硬件⽅法消除键抖动,⼀般会给系统的成本带来提⾼,所以通常情况下都是使⽤软件⽅法去除键抖动。
常⽤的去除键抖动的软件⽅法有很多种,但是都离不开基本的原则:就是要么避开抖动的时候检测按键或是在抖动的时候检测到的按键不做处理。
这⾥说明⼀下常⽤的两种⽅法:第⼀种⽅法是检测到按键闭合电平后先执⾏⼀个延时程序,做⼀个12ms~24ms的延时,让前抖动消失后再⼀次检测按键的状态,如果仍是闭合状态的电平,则认为真的有按键按下;若不是闭合状态电平,则认为没有键按下。
若是要判断按键松开的话,也是要在检测到按键释放电平之后再给出12ms~24ms的延时,等后抖动消失后再⼀次检测按键的状态,如果仍为断开状态电平,则确认按键松开。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
奇思妙想的键盘扫描法
HELLO,今天来让我给大家讲一讲奇思妙想的键盘扫描法。
可能大家会有这样的疑问——不就是矩阵键盘么这有什么好谈的。
PS:有这样想法的同学默默的面壁去吧。
下面进入正文。
不知大家在日常的电子设计中是否遇到过IO口资源不够用的问题,或者是大量的IO资源被键盘占用的问题。
那么大
家想过没有一组IO口究竟扫描出多少个键盘呢?下面以5个IO口为例,给大家讲解如何用5个IO口扫描25个键盘的方法。
先来看看最常用的矩阵扫描法(如下图)。
扫描的键盘个数为2*3=6
个。
矩阵键盘扫描法在
这里就不多说了(神马,
你还没学过矩阵键盘扫
描法,面壁自学去吧)。
那么在扫描6个键盘的基础上,还能不能扫描出更多的键盘来呢?答案是肯定的。
如下图所示先检测3个行IO口,对K1’,K2’,K3’进行扫键,之后如上述2*3
扫键流程。
5个IO口能扫9个键,够
厉害吧,足足比6个键多了1/2!动
动脑,还能不能再多扫几个?就几个?
一个也行!好,再想一下,硬是被逼
出来了!
大家先来看看原理图(下图),哈哈办法总是被逼出来的么。
不多不
少,正好10个键!这
种扫键方式比较少见
吧!这样猥琐的办法
也行!扫键流程:设
IO1输出为“0”,检测
IO2…IO5,若判断有相应健按下,则可知有健;若无键,则继续扫键:设IO2输出为“0”,检测IO3,IO4,IO5,判断有无键按下,如此类推。
这里应注意:当扫某一IO口(输出为“0”)时,不要去检测已经扫过的IO口。
如:此时设置IO2输出为“0”,依次检测IO3,IO4,IO5,但不要去检测IO1,否则会出错(亲爱的同学们,别光说我一个人在想啊,你们好歹也想一下为什么不能检测已经扫描过的IO口呢)。
这个办法猥琐吧,亲们,别激动,还有更猥琐的想法呢。
继续看原理图:
来看看扫描了多少个
按键呢?真强!被您看
出20个键!多了一个
对称的三角形。
可是,
像这样的排列能正确
扫20个键吗?回答
是肯定的:不能!上下三角形相互对称,其对称扫出的键无法区别。
有没有注意到分析图
三时提到的注意点?(继续友情提示:当扫某IO口时,不要去检测已经扫过的IO口,否则会出错”)我们分析一下原理图:当IO1输出“0”时,按下K11或K11’键都能被IO2检测到,但IO2检测却无法区别K11和K11’键!同理,不管扫哪个IO口,都有两个对称的键不能区分。
我们假想,如果能把对称键区分开来,我们就能正常地去判断按键。
亲,办法总是被逼出来的呢,仔细想想怎么区分开来呢,怎么使左右对称的不受对方的干扰呢,或者是有没有单向导通的器件呢?见下图:相当巧妙的思路!利用二极管的单向导通性,区别两个对称键。
扫键思路:对逐个IO口扫键,其他四个IO口可以分别检测其所
在的四个按键。
这样就可以使两个对称区互不干扰喽。
很酷吧,键盘扫描竟然能这么有趣,多么有成就感。
可是别满足于现状啊,前文说的5个IO口扫描25个按键哪去了,别着急啊,慢慢想,办法总是有滴!我怎么可能说大话呢,来一起看看下图:
25个键!5个IO口扫出25个键!先别激动,我们再分析一下它的可行性,分析通得过才能真正使用。
假设扫键流程:先扫对地的5个键,再如图五扫键。
先扫对地5个键,判断没有按键,接着对逐一对IO 口进行扫键。
但当对某一IO口扫键时,如果有对地的键按下,这时
有可能会误判按键,因为对地键比其他键有更高的响应优先级。
例如:扫IO1,IO1输出“0”,恰好此时K62按下,IO2检测到有按键,那就不能判断是K11还是K62。
我们可以在程序上避免这种按键误判:若IO2检测到有按键,那下一步就去判断是否有对地键按下,如果没有,那就可以正确地判断是K11了。
好啦,5个IO口终于能扫描出25个按键喽,帅气吧,连最终的原理图中都透露出了一种帅气。
好我们来总结下N个按键到底能扫描出多少个按键。
按键数用S表示。
我们发现在不使用二极管等单向导通元件的基础上S = (N-1)*N /2 + N 在使用二级管时S = (N-1)*N + N 怎么样,电子设计的世界是不是很有趣。
没有做不到的,只有想不到的。