CN107168542A - 一种简单高效的矩阵键盘按键定位方法 - Google Patents
一种简单高效的矩阵键盘按键定位方法 Download PDFInfo
- Publication number
- CN107168542A CN107168542A CN201710333373.4A CN201710333373A CN107168542A CN 107168542 A CN107168542 A CN 107168542A CN 201710333373 A CN201710333373 A CN 201710333373A CN 107168542 A CN107168542 A CN 107168542A
- Authority
- CN
- China
- Prior art keywords
- key
- equal
- lowest order
- variable
- key assignments
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/02—Input arrangements using manually operated switches, e.g. using keyboards or dials
- G06F3/0202—Constructional details or processes of manufacture of the input device
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M11/00—Coding in connection with keyboards or like devices, i.e. coding of the position of operated keys
- H03M11/20—Dynamic coding, i.e. by key scanning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Input From Keyboards Or The Like (AREA)
Abstract
本发明公开了一种简单高效的矩阵键盘按键定位方法,将该方法应用于4*4矩阵键盘时,依次包括以下步骤:步骤一,获取4*4矩阵键盘的RC行列值;步骤二,自定义变量RC_2等于输入值RC,键值变量KEY等于0;步骤三,读取并判断RC_2的最低位是否为0;步骤四,再次令变量RC_2等于输入值RC;步骤五,将RC_2的高四位和低四位进行互换,并判断RC_2的最低位是否为0;步骤六,输出当前键值KEY。本发明流程简单,在汇编环境下代码量比逐一键值判断法和逐行(列)扫描法的代码量减少了约四分之三,由此节约了程序存储空间,降低了程序维护成本。
Description
技术领域
本发明涉及键盘按键的定位方法,具体涉及一种简单高效的矩阵键盘按键定位方法。
背景技术
随着嵌入式系统、便携式设备的大量涌现,矩阵键盘作为其常见的输入设备使用场合也随之不多增加。为此许多人提出了对于矩阵键盘电路设计的改进方案,但目前使用最广的依然是传统的矩阵键盘设计。
根据传统的矩阵键盘设计中RC值的规律,目前最常见的矩阵键盘按键定位方法共两种:逐一键值判断法和逐行(列)扫描法。其中,逐一键值判断法将输入的RC值与表1中16个不同的值进行逐一对比,判断按下的按键。这种方法常用在C语言编程的嵌入式系统,因为只需要一个switch-case组合语句就能实现。而逐行(列)扫描法则常用在汇编语言编程的嵌入式系统,因为其执行速度较逐一键值判断法要高,而且汇编程序的代码量与逐一键值判断法相差不大。其算法思想是:先逐一判断按键在哪一行,再逐一判断按键在那一列,最后根据行和列的判断结果输出对应的键值。对于逐一键值判断法和逐行(列)扫描法均有各自的缺点。逐一键值判断法的优点是算法简单,而缺点是效率低,程序存储空间消耗大。逐行(列)扫描法的优点是效率高,而缺点是算法流程复杂,程序存储空间消耗大。
发明内容
为了克服上述的两种方法的缺点,本发明提出一种简单高效的矩阵键盘按键定位方法,本发明拥有简单、高效、ROM消耗小的优点。
本发明采用以下技术方案:
一种简单高效的矩阵键盘按键定位方法,应用于4*4矩阵键盘时,依次包括以下步骤:
步骤一,首先获取4*4矩阵键盘的16个行列值,即RC值,并且匹配16个相应的KEY值;
步骤二,自定义变量RC_2等于输入值RC,自定义键值变量KEY等于0;
步骤三,读取并判断RC_2的最低位是否为0;如果为0,进入步骤四;如果不为0,将KEY加1,同时RC_2右移一位,继续读取并判断右移之后的RC_2的最低位是否为0,直至判断为0,进入步骤四;
步骤四,再次令变量RC_2等于输入值RC;
步骤五,将RC_2的高四位和低四位进行互换,然后读取并判断RC_2的最低位是否为0;如果为0,进入步骤六;如果不为0,将KEY加4,同时RC_2右移一位,继续读取并判断右移之后的RC_2的最低位是否为0,直至判断为0,进入步骤六;
步骤六,输出当前键值KEY,按键定位结束。
所述矩阵键盘按键定位方法在应用更高阶的5*5、6*6矩阵键盘时,本方法仅需调整变量位数宽度和累加值,无需新增代码。
所述4*4矩阵键盘RC值的获取方法包括以下步骤:
1)COL[0~3]置为高阻(输入),ROW[0~3]输出0000B(二进制);
2)将COL[0~3]的输入保存到变量A;
3)COL[0~3]输出0000B,ROW[0~3]置为高阻(输入);
4)将ROW[0~3]的输入作为高四位,与变量A的低四位合并,保存至变量RC(RC为8bit);
5)输出RC的值;
得到的RC值如下:
从上述16个RC值可以看出,每一个RC值的高四位与低四位中分别只有一位为0,其他三位均为1。假设在RC值的高四位中,第X位(从0开始计数,故整个字节第5位为高四位的第0位)为0,在低四位中,第Y位(从第0位开始计数)为0,可得该RC值对应的键值等式:键值 =X*4 + Y*1 (0≤ X,Y ≤3)。
基于键值等式的规律,本发明提出来如上述的切实可行的高效的矩阵键盘案件定位方法。
本发明的有益效果:
1.本方法流程简单,在汇编环境下代码量比逐一键值判断法和逐行(列)扫描法的代码量减少了约四分之三,由此节约了程序存储空间,降低了程序维护成本。
2.本方法最后的累加结果KEY就是所需键值,这让我们省去预先定义键值的麻烦,并节省了存储空间。
3.从判断语句运行的次数看,本方法的判断次数与逐行(列)扫描法相同(判断2到8次),比逐一键值判断法(判断1到16次)少。可见本方法的效率与逐行(列)扫描法相近,优于逐一键值判断法。
4.当应用于更高阶的5*5、6*6矩阵键盘时,本方法仅需调整变量位数宽度和累加值,无需新增代码。
附图说明
图1为本发明的一种简单高效的矩阵键盘按键定位方法的矩阵键盘程序流程示意图。
图2为本发明的一种简单高效的矩阵键盘按键定位方法的获取矩阵键盘行列(RC)值流程图。
图3为本发明的一种简单高效的矩阵键盘按键定位方法的位移累加计算流程图。
具体实施方式
下面对本发明进一步说明。
实施例:
如图所示,提供一种简单高效的矩阵键盘按键定位方法,步骤如下:
步骤一,首先获取4*4矩阵键盘的16个行列值,即RC值,并且匹配16个相应的KEY值;
步骤二,自定义变量RC_2等于输入值RC,自定义键值变量KEY等于0;
步骤三,读取并判断RC_2的最低位是否为0;如果为0,进入步骤四;如果不为0,将KEY加1,同时RC_2右移一位,继续读取并判断右移之后的RC_2的最低位是否为0,直至判断为0,进入步骤四;
步骤四,再次令变量RC_2等于输入值RC;
步骤五,将RC_2的高四位和低四位进行互换,然后读取并判断RC_2的最低位是否为0;如果为0,进入步骤六;如果不为0,将KEY加4,同时RC_2右移一位,继续读取并判断右移之后的RC_2的最低位是否为0,直至判断为0,进入步骤六;
步骤六,输出当前键值KEY,按键定位结束。
在将本实施例的矩阵键盘按键定位方法应用到更高阶的5*5、6*6矩阵键盘时,本方法仅需调整变量位数宽度和累加值,无需新增代码。
需要指出的是,上述实施例仅为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
Claims (1)
1.一种简单高效的矩阵键盘按键定位方法,其特征在于:将该方法应用于4*4矩阵键盘时,依次包括以下步骤:
步骤一,首先获取4*4矩阵键盘的16个行列值,即RC值,并且匹配16个相应的KEY值;
步骤二,自定义变量RC_2等于输入值RC,自定义键值变量KEY等于0;
步骤三,读取并判断RC_2的最低位是否为0;如果为0,进入步骤四;如果不为0,将KEY加1,同时RC_2右移一位,继续读取并判断右移之后的RC_2的最低位是否为0,直至判断为0,进入步骤四;
步骤四,再次令变量RC_2等于输入值RC;
步骤五,将RC_2的高四位和低四位进行互换,然后读取并判断RC_2的最低位是否为0;如果为0,进入步骤六;如果不为0,将KEY加4,同时RC_2右移一位,继续读取并判断右移之后的RC_2的最低位是否为0,直至判断为0,进入步骤六;
步骤六,输出当前键值KEY,按键定位结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710333373.4A CN107168542A (zh) | 2017-05-12 | 2017-05-12 | 一种简单高效的矩阵键盘按键定位方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710333373.4A CN107168542A (zh) | 2017-05-12 | 2017-05-12 | 一种简单高效的矩阵键盘按键定位方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107168542A true CN107168542A (zh) | 2017-09-15 |
Family
ID=59815568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710333373.4A Pending CN107168542A (zh) | 2017-05-12 | 2017-05-12 | 一种简单高效的矩阵键盘按键定位方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107168542A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1034650A (zh) * | 1988-01-19 | 1989-08-09 | Rca许可公司 | 键盘识别装置 |
CN101958717A (zh) * | 2010-09-29 | 2011-01-26 | 惠州Tcl移动通信有限公司 | 一种按键扫描的方法及按键扫描装置 |
-
2017
- 2017-05-12 CN CN201710333373.4A patent/CN107168542A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1034650A (zh) * | 1988-01-19 | 1989-08-09 | Rca许可公司 | 键盘识别装置 |
CN101958717A (zh) * | 2010-09-29 | 2011-01-26 | 惠州Tcl移动通信有限公司 | 一种按键扫描的方法及按键扫描装置 |
Non-Patent Citations (2)
Title |
---|
刘爱荣 等: "《微型计算机原理与接口技术》", 31 October 2014, 重庆大学出版社 * |
黄丽英 等: "浅析基于AT89C51矩阵键盘检测的编程技巧", 《科技创业家》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101515335A (zh) | 具有高压缩比汉字编码能力的彩色二维条码及其编码、解码方法 | |
DE60136478D1 (de) | Chstaben. | |
WO2003058512A3 (en) | Enhanced multiway radix tree | |
CN106326377A (zh) | 序列化方法、反序列化方法、装置和系统 | |
CN107547201B (zh) | 一种提高椭圆曲线密码体制中的标量乘计算效率的方法 | |
CN107016223B (zh) | 一种抗硬件木马芯片设计方法及系统 | |
CN104090865B (zh) | 文本相似度计算方法及装置 | |
CN107851007A (zh) | 宽数据类型的比较 | |
CN107168542A (zh) | 一种简单高效的矩阵键盘按键定位方法 | |
CN104572994A (zh) | 用于搜索数据的方法和装置 | |
CN101470527A (zh) | 一种可减少输入输出口的键盘电路 | |
CN104079147B (zh) | 一种模块化多电平变流器的功率模块动态分组均压控制方法 | |
CN103428502B (zh) | 一种解码方法及解码系统 | |
CN110765730A (zh) | 一种组合逻辑电路简化方法 | |
Kajstura et al. | Binary tree-based low power state assignment algorithm | |
US20040117416A1 (en) | Integrated circuit and process for identifying minimum or maximum input value among plural inputs | |
CN102270110A (zh) | 一种改进的基16Booth编码器 | |
WO2003055076A3 (en) | Analog-to-digital converter and method of generating an intermediate code for an analog-to-digital converter | |
CN100394365C (zh) | 数字快拼汉字输入法 | |
CN107340992A (zh) | 一种定点数据筛选电路 | |
US4837791A (en) | Counter | |
CN107402974B (zh) | 基于多种二进制HoG描述符的草图检索方法 | |
CN107807963B (zh) | 一种基于分治策略的输电网线路汇集区快速搜索的方法 | |
CN100535837C (zh) | 一种汉字笔数形号输入法 | |
CN103677731A (zh) | 一种二进制数的双向移位方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170915 |
|
WD01 | Invention patent application deemed withdrawn after publication |