3x3矩阵键盘扫描原理及扫描程序

发布者:JoyfulExplorer最新更新时间:2024-06-26 来源: elecfans关键字:矩阵键盘  扫描程序 手机看文章 扫描二维码
随时随地手机看文章

3x3矩阵键盘简介

矩阵键盘,3×3矩阵键盘,数码管显示对应按键,动态扫描,中断实现。

3x3矩阵键盘扫描原理及扫描程序

其中上拉电阻属性需设置为“digital”。


3x3矩阵键盘扫描原理及扫描程序

将9个按键排成3行3列,第一行将每个按键的一端连接在一起构成行线,第一列将每个按键的另一端连接在一起构成列线,这样一共有3行3列一共6根线,我们将这六根线连接到STM32的6个IO口上,通过程序扫描键盘就可检测9个键。

无论独立键盘还是矩阵键盘,单片机检测其是否被按下的原理都是一样的,也就是检测与该键对应的I/O口是否为低电平。独立按键有一端固定为低电平,单片机写程序检测时比较方便。而矩阵键盘两端都与单片机I/O口相连,因此在检测时需要人为通过单片机I/O口送出低电平。检测时,先送一列为低电平,其余几列为高电平(此时我们确定了列数),然后立即轮流检测一次各行是否有低电平,若检测到某一行为低电平(此时我们又确定了行数),则我们便可确认当前按下的键是哪一行哪一列的,用同样的方法轮流送各列一次低电平,再轮流检测一次各行是否变为低电平,这样既可检测完所有的按键。当然我们也可将行线置低电平,扫描列是否有低电平。这就是矩阵键盘的检测原理和方法。

3x3矩阵键盘扫描原理及扫描程序

SETB P1.0 ;首先各位先置一

SETB P1.1

SETB P1.2

SETB P1.3

SETB P1.4

SETB P1.5

KEY: CLR P1.0 ;行线均清零

CLR P1.1 CLR P1.2

JNB P1.3 , KEY0 ;判断是否有按键按下

JNB P1.4, KEY0

JNB P1.5 , KEY0

SJMP KEY ;无按键按下回到KEY继续查询是否有按键按下

KEY0: LCALL DELAY ;调用延时函数

CLR P1.0 ;P1.0清零,P1.1、P1.2置一

SETB P1.1

SETB P1.2

JNB P1.3 , KEY1 ;P1.3为零则按键一被按下,跳转到按键一KEY1处

JNB P1.4 , KEY2

JNB P1.5 , KEY3

SETB P1.0 ;P1.1清零,P1.0、P1.2置一 CLR P1.1

SETB P1.2

JNB P1.3 , KEY4

JNB P1.4 , KEY5

JNB P1.5 , KEY6

SETB P1.0 ;P1.2清零,P1.0、P1.1置一

SETB P1.1

CLR P1.2

JNB P1.3 , KEY7

JNB P1.4 , KEY8

JNB P1.5 , KEY9

SJMP KEY ;如果无按键按下重新跳回到按键查询程序

KEY1: LCALL PRO1 ;调用按键一的处理子程序

LJMP KEY ;返回继续查询按键是否被按下

KEY2: LCALL PRO2

LJMP KEY

KEY3: LCALL PRO3

LJMP KEY

KEY4: LCALL PRO4

LJMP KEY

KEY5: LCALL PRO5

LJMP KEY

KEY6: LCALL PRO6

LJMP KEY

KEY7: LCALL PRO7

LJMP KEY

KEY8: LCALL PRO8

LJMP KEY

KEY9: LCALL PRO9

LJMP KEY

PRO1: 。 ;按键一的处理子程序

RET ;子程序返回

PRO2:

。 RET

PRO3:

RET

PRO4:

RET

PRO5:

RET

PRO6:

RET

PRO7:

RET

PRO8:

RET

PRO9:

RET


关键字:矩阵键盘  扫描程序 引用地址:3x3矩阵键盘扫描原理及扫描程序

上一篇:51单片机编程在不同内存空间(data xdata bdata)定义变量的注意事项
下一篇:基于单片机的FM收音机设计

推荐阅读最新更新时间:2024-11-21 18:46

51单片机 矩阵键盘
uchar code KEY_TABLE = { 0x77,0xB7,0xD7,0xE7 0x7B,0xBB,0xDB,0xEB 0x7D,0xBD,0xDD,0xED 0x7E,0xBE,0xDE,0xEE };//高四位是列,低四位是行 uchar code TABLE = { '1', '2', '3', '4', '5', '6', '7', '8', '9', 'C', '0', 'A', };
[单片机]
51单片机 <font color='red'>矩阵键盘</font>
矩阵式键盘扫描c程序
把每个键都分成水平和垂直的两端接入,比如说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个bit,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,经过比对之后就可知道是哪个键被按下。 比如说扫描码送入01111111,前面的0111是代表此时扫描第一行P1.0列,而后面的1111是让读取的4行接脚先设為VDD,若此时第一行的第三列按键被按下,那读取的结果就会变成01111101(注意1111变成1101),其中LSB的第三个bit会由1变成0,这是因為这个按键被按下之后,会被垂直的扫描码电位short,而把读取的LSB的bit电位拉到0,此即為扫描原理。 * 描述:
[单片机]
Proteus C51仿真学习板8——矩阵键盘
矩阵键盘,Proteus提供了多种矩阵键盘,有计算器,电话机,以及自定义的布局,封装多个按键更形象生动。为了理清内部连线图,还是使用按键进行搭建。 再讲矩阵键盘的原理前,还是讲讲为什么用矩阵键盘? 当按键数量很多时,为了节约IO的资源,通常会将按键排列成矩阵形式,每个按键通过行和列来识别,例如8个IO可识别4*4=16个按键,比直接驱动8个按键多了一倍。 原理1-反转扫描法: 默认状态P10-7全部输出高电平1; 首先P1=0x0F,行线输出为0,如果按键7按下后,P10=P14=0,再读行的值&0x0F=0x0E;再读列的值&0xF0=0xE0,2个值相加=0xEE,就可以检测到16个按键中的一个按键按下。
[单片机]
Proteus C51仿真学习板8——<font color='red'>矩阵键盘</font>
按键扫描程序
******************************************************************************** * 描述: * * 按键扫描程序 * * 上电时, 点亮P00口 LED * * 按下K1时, LED向右移一位 * * 按下K2时, LED向左移一位 * ******
[单片机]
Stm32矩阵键盘扫描程序分析
我们知道在51单片机中,通过扫描某个口的电平高低得知那个按键按下,比如,控制两行4列, 假如让P1=0xCf;低位都置1 (pb0-pb3),pb4-pb5置0;然后我们就扫描P1口就行了,如果有按键被按下的,高电平会被强制拉低的。 假如按键返回的值为0xce,可知是pb0被拉低了,由此可判断是S1或者S2按下了,其他的同理。 当然只让P1=0xcf,是不能判断出具体的按键是哪个的,此时,如果我们取反既P1=0x30; 当按键返回值为0x10时,我们可得知01 0000,pb5=0,s1或者s2被按下,这个时候我们将0xce|0x10=0xde,就是唯一的值了。以此类推,得出其他的值来。 在stm32中是同样的大道
[单片机]
Stm32<font color='red'>矩阵键盘</font><font color='red'>扫描</font><font color='red'>程序</font>分析
MSP430F5529与常见的矩阵键盘
键盘外观 键盘外观一般是这个样子的,淘宝上常见的有4x4和4x3的,也有不是薄膜而是按键矩阵的键盘,但是原理都大同小异。 键盘原理图 一般来说,键盘有多少行多少列,就有行数+列数这么多的管脚。当按钮按下后,按钮所在行列开关合上,行列之间的管脚就连通了。 单片机实现 4x3键盘 根据键盘的原理图,不难想到我们要用管脚扫描的方式来检测哪个键按下。 将行管脚设为输入,列管脚设为输出(当然也可以反着来),每次只让一个列管脚为高电平,再检测行管脚的电平高低情况,即可检测键盘是哪个键按下了。 初始化管脚 void keyboard_init(){ //设置行管脚为输入 P3DIR &= ~BIT6; //P3.6端口
[单片机]
MSP430F5529与常见的<font color='red'>矩阵键盘</font>
STM32笔记(二)(寄存器)——矩阵键盘
矩阵键盘是我第一个需要动手焊接东西的实验,是3*3的键盘,焊了一个下午。因为是第一次焊东西,有多处不足,但最后也勉强能用。键盘的电路是组长设计的,希望下一次我能自己独立设计电路。 键盘外观 正面 背面 外观略显粗糙。。。。 主要代码 矩阵键盘最主要的一部分代码就是按键扫描部分,通过一个扫描函数对高低电平进行判断,从而确定按键的位置。用过串口输出案件编号1~9。 key.c代码 void KEY_Init1(void) { RCC- APB2ENR|=1 3; JTAG_Set(SWD_ENABLE); GPIOB- CRL&=0X000FFFFF; //PB5,6,
[单片机]
STM32笔记(二)(寄存器)——<font color='red'>矩阵键盘</font>
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved