51单片机之矩阵按键

本文介绍了51单片机中矩阵按键的工作原理和两种识别方式:逐行扫描和行列扫描。通过实验代码展示如何实现,并强调矩阵按键在节省I/O接口上的优势。
摘要由CSDN通过智能技术生成

矩阵按键

2019年七月二十日

  1. 作用:控制电路的通断。
  2. 区别:矩阵按键为4*4即16个按键,如果都采用独立按键的解法,那么需要占用16个I/O接口,对于单片机而言是极大的浪费。
  3. 工作原理
    先见下图:
    在这里插入图片描述

他有两种识别方式:逐行扫描、行列扫描。
(1)逐行扫描:
通俗来讲就是1、2、3、4分别输出高电平(注意这里时间很短),然后观察5、6、7、8 pin脚上电平的情况。
5、6、7、8上电平的对应情况为24=16种;因为是分步完成符合乘法原理,1、2、3、4分别输出高电平可看成四步完成“任务”,每步都是24
总的情况为24*24*24*24=216种。
符合16个按键分别对应开关两种状态的总种数 216种。

(2)行列扫描
通俗来讲就是先判断哪一列被按下了,再判断哪一行被按下了,通过交叉可以得出哪一个按键被按下了。
具体过程
高四位(1、2、3、4)同时输出低电平,低四位(5、6、7、8)输出为高电平,根据低四位上电平的情况判断哪一列的按键被按下。根据原理图,当按键被按下时,该按键所在一列全为低电平。此处无法分辨是哪一行

然后高四位同时输出高电平,低四位同时输出低电平,再根据低四位上电平情况判断那一行被按下。

注意:高电平遇上低电平都变成低电平,相当于接地(GND)。

分析同理,故不多做分析。

实验代码如下:

注:P1=0xf0 是从高到低1111 0000 即P1.7-P1.0

#include <REGX52.H>
typedef unsigned int u16;
typedef unsigned char u8;
void delay10ms(void) //延时函数10ms
{
   
	unsigned char a, b, c
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值