久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
STM32單片機矩陣按鍵程序
[打印本頁]
作者:
A2102179814
時間:
2022-4-28 15:55
標題:
STM32單片機矩陣按鍵程序
單片機源程序如下:
/************************************************************
正面朝上黑引腳為行,白引腳為列
A、B 、C 、D 分別返回 10 11 12 13
*為 14
#為 15
0為 16
無按鍵按下返回0
*************************************************************/
#include "key.h"
#include "delay.h"
//矩陣鍵盤引腳初始化
void delayMs(u8 t)
{
while(t--)
{
delay_ms(20);
}
}
void KEY_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE);//使能PORTB,PORTD,PORTG時鐘
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; //鍵盤輸出
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度為50MHz
GPIO_Init(GPIOF,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; //鍵盤輸入
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //輸入模式
GPIO_Init(GPIOF,&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)//如果第四列是低電平
{
delayMs(jpys);
keyA_up=0;
if(Lie_03_V==0)//如果第四列是低電平,說明有鍵被按下,如果沒有直接退出if語句
{
return 4;
}
}else if(Lie_03_V==1)keyA_up=1;
//第二行
Hang_00_H;
Hang_01_L;//把第二行拉低
Hang_02_H;
Hang_03_H;
if(key4_up&&Lie_00_V==0)//如果第一列是低電平
{
delayMs(jpys);
key4_up=0;
if(Lie_00_V==0)//說明有鍵被按下,如果沒有直接退出if語句
{
return 5;
}
}else if(Lie_00_V==1)key4_up=1;
if(key5_up&&Lie_01_V==0)
{
delayMs(jpys);
key5_up=0;
if(Lie_01_V==0)
{
return 6;
}
}else if(Lie_01_V==1)key5_up=1;
if(key6_up&&Lie_02_V==0)
{
delayMs(jpys);
key6_up=0;
if(Lie_02_V==0)
{
return 7;
}
}else if(Lie_02_V==1)key6_up=1;
if(keyB_up&&Lie_03_V==0)
{
delayMs(jpys);
keyB_up=0;
if(Lie_03_V==0)
{
return 8;
}
}else if(Lie_03_V==1)keyB_up=1;
//第三行
Hang_00_H;
Hang_01_H;
Hang_02_L;//把第三行置低
Hang_03_H;
if(key7_up&&Lie_00_V==0) //如果第一列是低電平
{
delayMs(jpys);//延時20秒
key7_up=0;
if(Lie_00_V==0)//說明有鍵被按下,如果沒有直接退出if語句
{
return 9;
}
}else if(Lie_00_V==1)key7_up=1;
if(key8_up&&Lie_01_V==0)
{
delayMs(jpys);
key8_up=0;
if(Lie_01_V==0)
{
return 10;
}
}else if(Lie_01_V==1)key8_up=1;
if(key9_up&&Lie_02_V==0)
{
delayMs(jpys);
key9_up=0;
if(Lie_02_V==0)
{
return 11;
}
}else if(Lie_02_V==1)key9_up=1;
if(keyC_up&&Lie_03_V==0)
{
delayMs(jpys);
keyC_up=0;
if(Lie_03_V==0)
{
return 12;
}
}else if(Lie_03_V==1)keyC_up=1;
//第四行
Hang_00_H;
Hang_01_H;
Hang_02_H;
Hang_03_L;//把第四行置低
if(keyX_up&&Lie_00_V==0)//如果第一列是低電平
{
delayMs(jpys);
keyX_up=0;
if(Lie_00_V==0)//說明有鍵被按下,如果沒有直接退出if語句
{
return 13;
}
}else if(Lie_00_V==1)keyX_up=1;
if(key0_up&&Lie_01_V==0)
{
delayMs(10);
key0_up=0;
if(Lie_01_V==0)
{
return 14;
}
}else if(Lie_01_V==1)key0_up=1;
if(keyJ_up&&Lie_02_V==0)//如果第三列是低電平
{
delayMs(jpys);
keyJ_up=0;
if(Lie_02_V==0)//說明有鍵被按下,如果沒有直接退出if語句
{
return 15;
}
}else if(Lie_02_V==1)keyJ_up=1;
if(keyD_up&&Lie_03_V==0)
{
delayMs(jpys);
keyD_up=0;
if(Lie_03_V==0)
{
return 16;
}
}else if(Lie_03_V==1)keyD_up=1;
return 0;
}
Keil代碼下載:
矩陣按鍵程序.7z
(224.45 KB, 下載次數: 38)
2022-4-28 16:44 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产91在线播放精品91
|
成人做爰9片免费看网站
|
久久精品久久久久久
|
欧美一级免费
|
超碰人人91
|
色综合色综合色综合
|
亚洲一区二区三区免费观看
|
久久成人免费观看
|
玖玖视频网
|
成人伊人
|
正在播放国产精品
|
亚洲免费在线观看视频
|
日本 欧美 国产
|
国产精品a久久久久
|
欧美aⅴ
|
成人一区二区三区在线观看
|
欧美午夜视频
|
一区二区精品
|
欧美国产精品一区二区三区
|
99在线视频观看
|
日韩精品一区二区三区中文在线
|
91人人视频在线观看
|
国产精品久久久久久久久久久久
|
九九在线视频
|
精品久久不卡
|
日日拍夜夜
|
青青草国产在线观看
|
国产成人精品a视频一区www
|
成人免费大片黄在线播放
|
99久久久无码国产精品
|
亚欧精品一区
|
国产精品国产馆在线真实露脸
|
久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新
|
黄色亚洲
|
国产综合在线视频
|
亚洲一级av毛片
|
91亚洲国产成人久久精品网站
|
欧美日韩a
|
精品亚洲一区二区三区
|
97视频在线观看免费
|
夜夜操操操
|