STM32学习笔记——3*3矩阵键盘

这篇具有很好参考价值的文章主要介绍了STM32学习笔记——3*3矩阵键盘。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 键盘的焊接

键盘正面

STM32学习笔记——3*3矩阵键盘

键盘背面

STM32学习笔记——3*3矩阵键盘

键盘原理图:

3*3的矩阵键盘共计三行三列,所以共计需要六个阵脚,每一行/每一列连接相应的一个阵脚。

STM32学习笔记——3*3矩阵键盘

制作注意事项:

要注意开关的四个针脚,了解清楚哪两个针脚之间是连通的。

    四角按键开关原理可以参考博客: 四脚按键开关_四脚按键开关引脚图_四脚按键开关接线图_Surferqing_的博客-CSDN博客_四脚按键开关原理图

2. 线路连接

6个针脚分别连接PA2~PA7。 

STM32学习笔记——3*3矩阵键盘

键盘判断原理: 

       先扫瞄行,而后扫描列。当扫描行时,按下按钮,对应的行的电平就会发生变化,而后再变化端口的状态,扫描列,而后综合行和列的状态得出那个按键被按下。

3. 代码书写

//key.h

#ifndef __KEY_H
#define __KEY_H
#include "sys.h"

u8 KEY_Init(void);
#endif

//test.c

#include "sys.h"
#include "usart.h"        
#include "delay.h"    
#include "stm32f10x.h"

u8 key_scan()
{
    int i=0,j=0;
    
    RCC->APB2ENR|=1<<2;  //使能PORTA时钟(设置时钟时1的位移量时每种时钟是固定的)
    GPIOA->CRL&=0X000000FF;   //清除之前设置
    GPIOA->CRL|=0X33388800;  //设置模式(由右往左分别对应着PA0~PA7,且每一位对应着四位配置,故为16进制)
    
    GPIOA->ODR|=1<<2; //引脚PA2(1为上拉输入,0为下拉输入)
    GPIOA->ODR|=1<<3; //引脚PA3
    GPIOA->ODR|=1<<4; //引脚PA4
    
    PAout(5)=0;//(设置输出电平)
    PAout(6)=0;
    PAout(7)=0;
    
    if(PAin(2)==0||PAin(3)==0||PAin(4)==0)//检验行
    {
        delay_ms(10);//防止抖动
        if(PAin(2)==0)
            i=1;
        else if(PAin(3)==0)
            i=2;
        else if(PAin(4)==0)
            i=3;
    }
        else
            return 0;
        
    GPIOA->CRL&=0X000000FF;   //清除之前设置
    GPIOA->CRL|=0X88833300;    //等同之前操作(交换两组端口的输入输出顺序)
    
    GPIOA->ODR|=1<<5; //引脚PA5
    GPIOA->ODR|=1<<6; //引脚PA6
    GPIOA->ODR|=1<<7; //引脚PA7    
        
    PAout(2)=0;//设置输出点平
    PAout(3)=0;
    PAout(4)=0; 
    
    if(PAin(5)==0||PAin(6)==0||PAin(7)==0)//检验列
    {
        delay_ms(10);//防止抖动
        if(PAin(5)==0)
            j=1;
        else if(PAin(6)==0)
            j=2;
        else if(PAin(7)==0)
            j=3;
    }
    else
        return  0;
    
    if(i==1)
		{
			if(j==1)
				return 1;
			if(j==2)
				return 4;
			if(j==3)
				return 7;
		}
	
else if(i==2)
		{
			if(j==1)
				return 2;
			if(j==2)
				return 5;
			if(j==3)
				return 8;
		}
	
else if(i==3)
		{
			if(j==1)
				return 3;
			if(j==2)
				return 6;
			if(j==3)
				return 9;
		}
	else
		return 0;
}
        
int main(void)
{
    
    int h=0;
    Stm32_Clock_Init(9);//系统时钟初始化
    delay_init(72);      //延时初始化
    uart_init (72,9600);   //串口初始化    
    
    while(1)//死循环,使系统能够完成多次操作
    {
        
        h=key_scan();//获取返回值
        switch(h)
        {
            case 1:    
                printf("1\r\n");  delay_ms(300);  //在对行和列判断完后输出相对应的结果,延时的目的是避免按一次四角开关出现多次结果)          
                break;
            case 2:    
                printf("2\r\n");  delay_ms(300);            
                break;
            case 3:    
                printf("3\r\n");  delay_ms(300);            
                break;
            case 4:    
                printf("4\r\n");  delay_ms(300);            
                break;
            case 5:    
                printf("5\r\n");  delay_ms(300);            
                break;
            case 6:    
                printf("6\r\n");  delay_ms(300);            
                break;
            case 7:    
                printf("7\r\n");  delay_ms(300);            
                break;
            case 8:    
                printf("8\r\n");  delay_ms(300);            
                break;
            case 9:    
                printf("9\r\n");  delay_ms(300);            
                break;
            default:
                break;
            
        }
    }
}

4.结果

STM32学习笔记——3*3矩阵键盘

 文章来源地址https://www.toymoban.com/news/detail-510967.html

到了这里,关于STM32学习笔记——3*3矩阵键盘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于stm32Cubemx的矩阵键盘配置

    我这里使用的是某宝一块四包邮的4*4矩阵键盘,感觉对大部分简单工程的实现绰绰有余 一般设置为最大速率,之后点击OK可以实现一键配置,时钟源这里选择的是高速外部时钟源(HSE) 随便找几个引脚 根据自己单片机的引脚数量和操作的方便性配置矩阵键盘的引脚 一般为四

    2024年02月08日
    浏览(45)
  • 【STM32】 4X4矩阵键盘电路

    目录 一:矩阵键盘介绍 二:矩阵电路原理图设计 三:矩阵键盘模块特点 四:4X4矩阵键盘模块实物图 五:4X4矩阵键盘模块电路原理图设计 六:4X4矩阵键盘模块电路PCB图设计 轻触按键是按键产品下属的一款分类产品,它其实相当于是一种电子开关,只要轻轻的按下按键就可以

    2024年02月13日
    浏览(46)
  • STM32单片机4*4矩阵键盘相关代码

           矩阵键盘是我们学习32单片机中十分常见的模块。对于我们掌握32单片机的基本要求有很大的帮助。其核心原理是利用键盘按键按下时产生的电位变化来判断是否按下以及利用行列电平变化来得到按键在矩阵键盘位置的思路。本文简述其使用的相关代码。         

    2024年02月07日
    浏览(43)
  • STM32矩形(矩阵)按键(键盘)输入控制LED灯 ——4*4矩阵按键源码解析

    本文基于标准函数库的工程实现stm32F103C8T6使用4*4的矩阵按键控制LED灯的亮灭及闪烁等功能。 程序源码:链接:https://pan.baidu.com/s/1_MPhvMduKCTP0MPG-Gtw3A?pwd=2syk  提取码:2syk 文章目录 一、矩形键盘介绍 1、硬件电路基本原理 2、两种识别方法介绍 3、硬件接线即使用 二、程序源码

    2024年02月04日
    浏览(47)
  • 矩阵键盘之门锁小项目(stm32f103zet6)

    今天,给大家分享的是自己弄着玩的一个矩阵键盘控制控制舵机模拟一个智能门锁的功能。 用到的硬件: 开发板我用的是原子哥的精英板(杀鸡用宰牛刀了)。 矩阵键盘(宝上十几块买的): 外加一个舵机和一个0.96的oled显示屏。 矩阵键盘: 有VCC,GND,SCL,SDO四条线,这个矩阵键

    2024年02月10日
    浏览(50)
  • STM32F103系列 Proteus仿真 4*4矩阵键盘 串口+LCD1602显示

            最近一直在肝STM32系列芯片,这里我想要检验一下自己的初步学习成果,简单的运用一下IO口的配置,代码使用正点的库函数模板写的,仿真软件是Proteus 8.13,代码编写编译软件是Keil MDK5,仿真芯片是STM32F103R6小容量芯片。 目录 一、硬件设计  二、软件设计 1、L

    2024年02月03日
    浏览(45)
  • 【STM32扫描4x4矩阵键盘模块】 4x4 matrix keypad interface

    矩阵键盘是将多个按键排布成类似矩阵形式的键盘组。为了减少IO资源的占用,将键盘组的每一行和每一列接入到GPIO。如下图的薄膜型键盘模块,第一个键盘组是3行x4列,所以共使用了3+4=7个GPIO口,即用7个GPIO表现了12个按键的状态;第二个键盘组是4行x4列,共使用了4+4=8个

    2024年01月18日
    浏览(53)
  • STM32单片机学习3--STM32控制键盘

    单片机型号:STM32F103C8T6 开发环境:Keil5 4种输入模式 上拉输入模式:在默认状态下(GPIO引脚无输入),读取得的GPIO引脚数据为1,高电平(与Vdd相连的为上拉电阻); 下拉输入模式:在默认状态下(GPIO引脚无输入),读取得的GPIO引脚数据为0,低电平(与Vss相连的为下拉电

    2024年02月10日
    浏览(59)
  • STM32F103基础(寄存器)——(1)3*3矩阵键盘控制5161as数码管

    本篇介绍的是基于 STM32——寄存器 版本的矩阵键盘控制 5161as数码管 显示数字的实例。我们赋予每一个按键从1到9的数字,当我们按下对应的数字按键时,程序会检测出被按下的是哪一个按键并在5261as数码管上显示相应的数字。 (1)原理 为了读取每一个按键的状态,最简单

    2024年02月11日
    浏览(35)
  • 51单片机学习笔记-4矩阵键盘

    [toc] 注:笔记主要参考B站江科大自化协教学视频“51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。 注:工程及代码文件放在了本人的Github仓库。 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。采用逐行或逐列的“扫描”,就可以读

    2024年02月06日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包