资源简介
使用STM32搭建的矩阵薄膜键盘,固件库版本,..C.H拉过去,就可以用了
![](http://www.nz998.com/pic/50100.jpg)
代码片段和文件信息
/************************************************************
正面朝上黑引脚为行,白引脚为列
A、B 、C 、D 分别返回 10 11 12 13
*为 14
#为 15
0为 16
无按键按下返回0
*************************************************************/
#include “key.h“
#include “delay.h“
//矩阵键盘引脚初始化
void Key_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOGENABLE);//使能PORTBPORTD,PORTG时钟
//GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable ENABLE);//关闭jtag,使能SWD,可以用SWD模式调试,引脚比较可能存在占用
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_14; //键盘输出
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOD&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_4|GPIO_Pin_6; //键盘输出
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOG&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_14; //键盘输入
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIOB&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_10|GPIO_Pin_12; //键盘输入
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIOD&GPIO_InitStructure);
}
//mode:0不支持连续按;1支持连续按;
u8 KEY_Scan(u8 mode)
{
static u8 key0_up=1;//按键按松开标志
static u8 key1_up=1;//按键按松开标志
static u8 key2_up=1;//按键按松开标志
static u8 key3_up=1;//按键按松开标志
static u8 key4_up=1;//按键按松开标志
static u8 key5_up=1;//按键按松开标志
static u8 key6_up=1;//按键按松开标志
static u8 key7_up=1;//按键按松开标志
static u8 key8_up=1;//按键按松开标志
static u8 key9_up=1;//按键按松开标志
static u8 keyA_up=1;//按键按松开标志
static u8 keyB_up=1;//按键按松开标志
static u8 keyC_up=1;//按键按松开标志
static u8 keyD_up=1;//按键按松开标志
static u8 keyX_up=1;//按键按松开标志
static u8 keyJ_up=1;//按键按松开标志
if(mode)
{
key0_up=1;
key1_up=1;
key2_up=1;
key3_up=1;
key4_up=1;
key5_up=1;
key6_up=1;
key7_up=1;
key8_up=1;
key9_up=1;
keyA_up=1;
keyB_up=1;
keyC_up=1;
keyD_up=1;
keyX_up=1;
keyJ_up=1;
}
//第一行
Hang_00_L;//把第一行输出低电平
Hang_01_H;
Hang_02_H;
Hang_03_H;
if(key1_up&&Lie_00_V==0)
{
delayMs(jpys); //延时20秒,软件消抖
key1_up=0;
if(Lie_00_V==0) //如果第一列是低电平,说明有键被按下,如果没有直接退出if语句
{
return 1;
}
}else if(Lie_00_V==1)key1_up=1;
if(key2_up&&Lie_01_V==0)//如果第二列是低电平,
{
delayMs(jpys);//延时20秒,软件消抖
key2_up=0;
if(Lie_01_V==0)//如果第二列是低电平,说明有键被按下,如果没有直接退出if语句
{
return 2;
}
}else if(Lie_01_V==1)key2_up=1;
if(key3_up&&Lie_02_V==0)
{
delayMs(jpys);
key3_up=0;
if(Lie_02_V==0)
{
return 3;
}
}else if(Lie_02_V==1)key3_up=1;
if(keyA_up&&Lie_03_V==0)//如果第四列是低电平
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 399 2011-05-09 18:17 TopApex_4x4矩阵键盘\keilkill.bat
文件 6575 2017-08-08 00:14 TopApex_4x4矩阵键盘\key.c
文件 969 2017-08-08 00:20 TopApex_4x4矩阵键盘\key.h
文件 514 2017-11-23 14:26 TopApex_4x4矩阵键盘\ReadMe.txt
文件 17273 2010-06-07 10:25 TopApex_4x4矩阵键盘\控制类程序框架\Core\core_cm3.c
文件 85714 2011-02-09 14:59 TopApex_4x4矩阵键盘\控制类程序框架\Core\core_cm3.h
文件 15503 2017-01-03 16:38 TopApex_4x4矩阵键盘\控制类程序框架\Core\startup_stm32f10x_hd.s
文件 2342 2017-03-23 08:08 TopApex_4x4矩阵键盘\控制类程序框架\Driver\adc.c
文件 1204 2016-10-13 10:05 TopApex_4x4矩阵键盘\控制类程序框架\Driver\adc.h
文件 2702 2017-05-03 14:29 TopApex_4x4矩阵键盘\控制类程序框架\Driver\delay.c
文件 1877 2017-04-02 21:55 TopApex_4x4矩阵键盘\控制类程序框架\Driver\delay.h
文件 2303 2017-04-05 00:12 TopApex_4x4矩阵键盘\控制类程序框架\Driver\gpio.c
文件 3979 2017-04-05 00:12 TopApex_4x4矩阵键盘\控制类程序框架\Driver\gpio.h
文件 375 2017-04-04 21:48 TopApex_4x4矩阵键盘\控制类程序框架\Driver\iic1.c
文件 0 2017-04-04 21:34 TopApex_4x4矩阵键盘\控制类程序框架\Driver\iic1.h
文件 12008 2017-07-15 08:36 TopApex_4x4矩阵键盘\控制类程序框架\Driver\iicSoft.c
文件 7775 2017-07-15 08:36 TopApex_4x4矩阵键盘\控制类程序框架\Driver\iicSoft.h
文件 1648 2017-05-12 19:57 TopApex_4x4矩阵键盘\控制类程序框架\Driver\iwdg.c
文件 1353 2017-05-12 16:07 TopApex_4x4矩阵键盘\控制类程序框架\Driver\iwdg.h
文件 6575 2017-08-08 00:14 TopApex_4x4矩阵键盘\控制类程序框架\Driver\key.c
文件 969 2017-08-08 00:20 TopApex_4x4矩阵键盘\控制类程序框架\Driver\key.h
文件 9437 2017-07-15 08:34 TopApex_4x4矩阵键盘\控制类程序框架\Driver\MPU9250.c
文件 9712 2017-07-15 08:34 TopApex_4x4矩阵键盘\控制类程序框架\Driver\MPU9250.h
文件 5379 2017-05-11 08:34 TopApex_4x4矩阵键盘\控制类程序框架\Driver\pid.c
文件 2805 2017-05-11 16:12 TopApex_4x4矩阵键盘\控制类程序框架\Driver\pid.h
文件 11663 2017-05-09 10:48 TopApex_4x4矩阵键盘\控制类程序框架\Driver\pwm.c
文件 3259 2017-04-01 08:55 TopApex_4x4矩阵键盘\控制类程序框架\Driver\pwm.h
文件 11077 2017-07-16 21:37 TopApex_4x4矩阵键盘\控制类程序框架\Driver\uart1.c
文件 3072 2017-07-14 08:55 TopApex_4x4矩阵键盘\控制类程序框架\Driver\uart1.h
文件 8982 2011-03-10 10:47 TopApex_4x4矩阵键盘\控制类程序框架\Libraries\inc\misc.h
............此处省略178个文件信息
评论
共有 条评论