久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
stm32的4*4矩陣鍵盤驅動程序
[打印本頁]
作者:
51heidianzil121
時間:
2017-8-28 23:10
標題:
stm32的4*4矩陣鍵盤驅動程序
用于4*4矩陣鍵盤的驅動,可直接修改
添加很簡單,直接把.c和.h加上去就可以
該驅動是針對4x4矩陣鍵盤的,支持連按和不連按兩種模式
a=KEY_Scan(0); 調用它 0是不連按 1是連按
引腳根據需要自己自改,為了讓大家盡量不改引腳我選擇了不常用的8個連續引腳
矩陣鍵盤直接就可以插到咱們統一購買的最小系統版上
有關返回值說明:
正面朝上黑引腳為行,白引腳為列
1-9返回 1-9
A、B 、C 、D 分別返回 10 11 12 13
*為 14
#為 15
0為 16
引腳說明:
PB14
PD8 10 12 14
PG2 4 6
順著插就可以
無按鍵按下返回0
0.png
(43.19 KB, 下載次數: 121)
下載附件
2017-8-29 00:10 上傳
單片機源程序如下:
/************************************************************
正面朝上黑引腳為行,白引腳為列
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_GPIOG,ENABLE);//使能PORTB,PORTD,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)//如果第四列是低電平
{
delayMs(jpys);
keyA_up=0;
if(Lie_03_V==0)//如果第四列是低電平,說明有鍵被按下,如果沒有直接退出if語句
{
return 10;
}
}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 4;
}
}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 5;
}
}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 6;
}
}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 11;
}
}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 7;
}
}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 8;
}
}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 9;
}
}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 14;
}
}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 16;
}
}else if(Lie_01_V==1)key0_up=1;
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
TopApex_4x4矩陣鍵盤.rar
(355.67 KB, 下載次數: 701)
2017-8-29 00:12 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
haizhixin
時間:
2018-3-29 15:47
stm32能用么
...
作者:
huangjiaqi1995
時間:
2018-4-5 09:59
為什么回復的人不多?
作者:
一波三折
時間:
2018-4-26 15:09
好嗎?
作者:
fengye5340
時間:
2018-5-15 14:52
下載看看,可能會有幫助
作者:
8023love
時間:
2018-6-4 10:18
謝謝分享
作者:
麥昆
時間:
2018-6-4 17:18
厲害,這么復雜,比51麻煩多了
作者:
hanmingxiu
時間:
2018-6-7 22:42
請問用的都是什么版本的開發軟件
作者:
sypsyp
時間:
2018-6-19 16:22
謝謝分享!!
作者:
tigerkiller
時間:
2018-6-27 12:00
不錯不錯
作者:
qq1074896286
時間:
2018-7-15 19:52
這個是STM32的代碼么??
作者:
cxiu
時間:
2018-8-17 15:00
謝謝分享
作者:
kevin82626
時間:
2018-8-22 18:08
嵌套在 SWITCH內就不行了
WHILE()
{
SCANKEY();
執行鍵盤輸入語句; //這個地方的程序可以正常實現鍵盤輸入功能
SWITCH(SCANKEY())
{
CASE 16: 執行鍵盤輸入語句;//這個地方的同樣的語句不能正常實現鍵盤輸入功能,值永遠都是16
}
}
作者:
tjx_24
時間:
2018-9-1 21:43
謝謝,這么好的代碼
作者:
tjx_24
時間:
2018-9-1 21:56
謝謝分享!
作者:
yxlei82
時間:
2018-9-3 17:52
謝謝分享!
作者:
青芒
時間:
2018-11-28 17:57
還行,有點復雜,但是功能看起來挺全
作者:
我踏浪而來
時間:
2018-11-29 16:00
下來看看
作者:
veraz97
時間:
2018-11-29 16:52
謝謝分享
作者:
1282834007
時間:
2019-3-24 00:54
怎么根本就不管用,我想知道主函數是什么
作者:
sh8hd
時間:
2019-4-12 19:16
試一下看看可以用嗎
作者:
lyseg
時間:
2019-4-13 10:05
謝謝分享!
作者:
1078595847
時間:
2019-5-5 20:54
謝謝分享!
作者:
瑾年Higher
時間:
2019-5-17 17:56
感覺太復雜了
作者:
snf
時間:
2019-6-1 17:44
謝謝分享
作者:
lz10091999
時間:
2019-7-11 20:43
為什么下不了呢
作者:
mengshen01
時間:
2019-8-8 09:26
感謝分享!
作者:
ice45862
時間:
2019-8-8 16:43
謝謝分享!
作者:
Conquring
時間:
2019-8-9 00:35
您好,請問如何使用矩陣鍵盤輸入任意值呀
作者:
899
時間:
2019-8-9 08:05
謝謝分享
作者:
111111111dewd
時間:
2019-8-9 13:07
厲害厲害
作者:
17856697336
時間:
2019-8-9 15:10
學習一下,謝謝分享
作者:
915572320
時間:
2019-8-9 21:01
謝謝學習一下,謝謝分享
作者:
915572320
時間:
2019-8-9 21:02
沒積分咋辦
作者:
15984935083
時間:
2019-12-18 10:29
915572320 發表于 2019-8-9 21:02
沒積分咋辦
感覺很好用,謝謝大佬分享
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国内自拍偷拍视频
|
亚洲精品久久久久久久久久久久久
|
视频二区在线观看
|
欧美精品综合
|
精品成人在线观看
|
91久久久久久久
|
中文字幕亚洲无线
|
国产午夜精品一区二区三区嫩草
|
国产成人a亚洲精品
|
国产精品国产精品国产专区不蜜
|
精品欧美一区二区在线观看
|
久久不射电影网
|
国产日韩欧美精品
|
国产精品日本一区二区不卡视频
|
2018天天干天天操
|
亚洲成人激情在线观看
|
99精品一区二区
|
久久蜜桃资源一区二区老牛
|
婷婷综合
|
天天干天天操天天射
|
一区二区三区免费
|
日韩在线精品强乱中文字幕
|
亚洲第一网站
|
久久91
|
久久久久国产精品一区二区
|
亚洲国产高清高潮精品美女
|
免费观看一级特黄欧美大片
|
国产真实精品久久二三区
|
欧美精品久久久久久久久老牛影院
|
国产欧美日韩视频
|
成人网av
|
日韩精品一区二区三区高清免费
|
亚洲日韩第一页
|
日韩国产在线观看
|
自拍偷拍第一页
|
日日操视频
|
久久亚洲天堂
|
一区二区视频在线观看
|
黄色片在线
|
久久久久久天堂
|
国产成人精品久久二区二区91
|