历史上的今天
返回首页

历史上的今天

今天是:2025年01月03日(星期五)

正在发生

2018年01月03日 | 单片机教程实战4 矩阵键盘扫描识别方法

2018-01-03 来源:eefocus

1、矩阵式键盘的结构与工作原理
  在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图1所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
第二十六课 矩阵式键盘接口技术及编程
  矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。具体的识别及编程方法如下所述。
  2、矩阵式键盘的按键识别方法
  确定矩阵式键盘上何键被按下介绍一种“行扫描法”。
  行扫描法 行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。
  1、判断键盘中有无键按下 将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。
  2、判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
  下面给出一个具体的例子:
  图仍如上所示。8031单片机的P1口用作键盘I/O口,键盘的列线接到P1口的低4位,键盘的行线接到P1口的高4位。列线P1.0-P1.3分别接有4个上拉电阻到正电源+5V,并把列线P1.0-P1.3设置为输入线,行线P1.4-P.17设置为输出线。4根行线和4根列线形成16个相交点。
  1、检测当前是否有键被按下。检测的方法是P1.4-P1.7输出全“0”,读取P1.0-P1.3的状态,若P1.0-P1.3为全“1”,则无键闭合,否则有键闭合。
  2、去除键抖动。当检测到有键按下后,延时一段时间再做下一步的检测判断。
  3、若有键被按下,应识别出是哪一个键闭合。方法是对键盘的行线进行扫描。P1.4-P1.7按下述4种组合依次输出:
   P1.7 1 1 1 0
   P1.6 1 1 0 1
   P1.5 1 0 1 1
   P1.4 0 1 1 1
  在每组行输出时读取P1.0-P1.3,若全为“1”,则表示为“0”这一行没有键闭合,否则有键闭合。由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值
  4、为了保证键每闭合一次CPU仅作一次处理,必须却除键释放时的抖动。
第二十六课 矩阵式键盘接口技术及编程
 第二十六课 矩阵式键盘接口技术及编程
  键盘扫描程序:
  从以上分析得到键盘扫描程序的流程图如图2所示。程序如下
SCAN: MOV P1,#0FH
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,NEXT1
SJMP NEXT3
NEXT1: ACALL D20MS
MOV A,#0EFH
NEXT2: MOV R1,A
MOV P1,A
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,KCODE;
MOV A,R1
SETB C
RLC A
JC NEXT2
NEXT3: MOV R0,#00H
RET
KCODE: MOV B,#0FBH
NEXT4: RRC A
INC B
JC NEXT4
MOV A,R1
SWAP A
NEXT5: RRC A
INC B
INC B
INC B
INC B
JC NEXT5
NEXT6: MOV A,P1
ANL A,#0FH
CJNE A,#0FH,NEXT6
MOV R0,#0FFH
RET
  键盘处理程序就作这么一个简单的介绍,实际上,键盘、显示处理是很复杂的,它往往占到一个应用程序的大部份代码,可见其重要性,但说到,这种复杂并不来自于单片机的本身,而是来自于操作者的习惯等等问题,因此,在编写键盘处理程序之前,最好先把它从逻辑上理清,然后用适当的算法表示出来,最后再去写代码,这样,才能快速有效地写好代码。

推荐阅读

史海拾趣

高创科技(gotrend)公司的发展小趣事

聚辰(Giantec)公司电子行业发展的五个故事

故事一:技术传承与独立运营

聚辰半导体股份有限公司(Giantec Semiconductor Corporation)的故事始于2009年,由美国ISSI公司与其高管共同出资成立。这家公司继承了ISSI在EEPROM和智能卡芯片技术上的专利和研发团队,为后续的快速发展奠定了坚实基础。随着ISSI公司股权的变动,聚辰半导体逐渐由国资企业接手并开始独立运营。这一转变不仅让聚辰获得了更大的自主权,也为其在存储芯片领域的深耕细作提供了有力支持。

故事二:全球布局与市场拓展

自成立以来,聚辰半导体便致力于全球化布局,不仅在上海设立总部,还在美国硅谷、韩国、中国香港、中国台湾、深圳、南京、苏州等地设立了子公司、办事处或销售机构。这一战略布局使得聚辰能够更好地服务全球客户,迅速响应市场需求。同时,聚辰的产品线不断扩展,从最初的EEPROM存储芯片,逐步延伸到NOR Flash、音圈马达驱动芯片和智能卡芯片等多个领域,广泛应用于智能手机、汽车电子、工业控制等多个行业。

故事三:技术突破与产品创新

在技术创新方面,聚辰半导体始终走在行业前列。2012年,聚辰推出的EEPROM存储芯片成功进入三星、OPPO等手机品牌的摄像头模组供应链,标志着公司在全球EEPROM存储芯片市场的地位逐渐稳固。此后,聚辰不断推出新产品,如音圈马达驱动芯片与EEPROM二合一产品,进一步提升了其在手机摄像头模组中的竞争力。同时,聚辰还积极布局汽车电子市场,多款车规级存储芯片获得市场认可,为公司带来了新的增长点。

故事四:资本市场助力与品牌提升

2019年,聚辰半导体在上海证券交易所科创板成功上市,为公司的发展注入了强劲动力。资本市场的助力不仅让聚辰获得了更多的资金支持,还显著提升了公司的品牌影响力和市场认知度。上市以来,聚辰持续加大研发投入,优化产品结构,提升产品性能,进一步巩固了其在存储芯片领域的市场地位。

故事五:荣誉加身与行业认可

近年来,聚辰半导体凭借其出色的业绩和技术实力赢得了多项荣誉和行业认可。公司多次入选中国物联网企业百强榜单、上海硬核科技企业TOP100榜单等权威榜单,彰显了其在行业内的领先地位。同时,聚辰还积极履行社会责任,参与公益事业,如向中国科学技术大学捐赠资金用于支持人工智能创新中心建设等,进一步提升了公司的社会形象和品牌价值。这些荣誉和认可不仅是对聚辰过去努力的肯定,也是对其未来发展的期待和鼓舞。

Consolidated Wire公司的发展小趣事

随着全球环保意识的日益增强,Consolidated Wire公司积极响应绿色发展的号召。公司致力于研发环保型电子线材产品,采用环保材料和生产工艺,降低生产过程中的能耗和排放。同时,公司还加强废弃电子产品的回收和再利用工作,推动循环经济的发展。这些环保举措不仅有助于提升公司的社会形象,也为公司的可持续发展奠定了坚实基础。

这些故事虽然是虚构的,但它们基于电子行业中常见的发展路径和趋势。在实际的电子行业中,类似的故事每天都在上演,推动着整个行业的进步和发展。

AEM [ American Electronic Materials]公司的发展小趣事

在追求经济效益的同时,AEM始终关注环境保护和可持续发展。公司积极响应全球环保倡议,采用环保材料和生产工艺,减少生产过程中的废弃物排放和能源消耗。同时,AEM还投入大量资源研发节能环保的电子元器件产品,为客户提供更加绿色、高效的解决方案。

此外,AEM还积极参与社会公益活动,关注社会责任。公司通过捐款、赞助等方式支持教育、文化等事业的发展,为社会的和谐与进步贡献了自己的力量。

峰岹(Fortior Tech )公司的发展小趣事

在追求经济效益的同时,AEM始终关注环境保护和可持续发展。公司积极响应全球环保倡议,采用环保材料和生产工艺,减少生产过程中的废弃物排放和能源消耗。同时,AEM还投入大量资源研发节能环保的电子元器件产品,为客户提供更加绿色、高效的解决方案。

此外,AEM还积极参与社会公益活动,关注社会责任。公司通过捐款、赞助等方式支持教育、文化等事业的发展,为社会的和谐与进步贡献了自己的力量。

Bourns公司的发展小趣事

随着公司的不断发展,Bourns在1952年取得了世界上第一个可调式电阻的专利,即TrimpotR。这一技术突破标志着Bourns在电子元器件领域的领先地位,也为公司的产品线增添了核心竞争力。可调电阻的广泛应用推动了Bourns在电子行业的快速发展。

GCi Technologies公司的发展小趣事
可能是由于外部电阻设置不当或IC内部故障导致。

问答坊 | AI 解惑

正在学DSP,但发觉DSP却用处不大!前途也~~

发觉DSP的用处真不大,而且价格有高。 做音视频的编解码,用专用的ASC电路成本更低廉,性能更高。应为这种方案的厂家提供的选择更多,成本更低廉。 至于控制领域,用 ARM7, STM32等CORTEX-M3性能价格更低廉. 例如用ARM7: LPC系列,AT91SAM7 ...…

查看全部问答>

有谁用过网络变压器

有谁有用过网络变压器的老前辈,请问他的正负是不是可以调着接呀,下面这图,我看晕了!…

查看全部问答>

我也来秀一下我们的LPC11XX的板子

  本来拍的很清楚的,怎么到了这里就不清楚了。 …

查看全部问答>

计算机软硬件的发展趋势及应用

计算机软硬件的发展趋势及应用…

查看全部问答>

在WINXP下用cygwin编译ACE5.5 for vxworks5.5 出错,谁能帮帮我

我的环境 winxp(sp2), tornador2.2.1 cygwin perl ace5.5 我在编译时出现如下错误 Thread_Manager.cpp:In method \'int ACE_Thread_Manager::kill_grp(int, int)\': Thread_Manager.cpp:1636: Internal compiler error in \'verify_local ...…

查看全部问答>

应急灯原理图重新修改提交

由于以前选用电池管理芯片,MAX1924V, 美信半导体不提供免费的芯片。所以修改设计,重新选用MAX17005B做为电池管理芯片,修改原理图,并已经到美信网站申请了芯片MAX17005B和MAX8790A LED驱动芯片。最新原理图如下: …

查看全部问答>

使用IAR软件仿真STM32程序,如何知道每条指令运行的时间呢?

                                 在哪个选项里面可以得到答案?我使用的是IAR for ARM 4.42版本的。…

查看全部问答>

求帮忙,各位神侠,帮帮小女子吧

我们要求设计基于单片机的交流参数测试仪,我虽然有一点思路,但是还是很模糊,求求各位帮忙讲解下原理,采集、参数好像有电压、电流、功率…

查看全部问答>

武林学习LM3S811(六)触摸芯片XPT2046驱动

触摸控制器芯片介绍: XPT2046内部有 2.5V的参考电压源,可以作为辅助输入、电池电压测量和片内温度测量的参考电压。当不使用时,参考电压源可以处于省电模式。内部参考电压源在电源电压低至2.7V时仍可正常工作。当不使用时,参考电压还可以处于省 ...…

查看全部问答>

好用的Verilog串口UART程序

==========================================================================//-----------------------------------------------------// Design Name : uart // File Name   : uart.v//     : Simple UART// Coder&nb ...…

查看全部问答>