久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
4x4矩陣按鍵stm32程序源碼
[打印本頁]
作者:
sunfangming
時間:
2018-11-18 09:51
標(biāo)題:
4x4矩陣按鍵stm32程序源碼
4x4矩陣按鍵stm32程序源碼 keil程序
單片機(jī)源程序如下:
#include "key.h"
/**
** PB5-PB8,列,輸出。 PB10-PB14,行,輸入
**/
void Key_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
/********4行輸出*********/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
/********4列輸入*********/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
int KeyScan(void)
{
uchar KeyVal;
GPIO_Write(GPIOB, (GPIOB->ODR & 0xf0ff | 0x0f00)); //不管其余12位0xf0ff,先讓PB8到PB11全部輸出高。
if((GPIOB->IDR & 0xf000)==0x0000) //如果PB12到PB15全為零則沒有按鍵按下
return -1;
else
{
Delay_ms(5); //延時5ms去抖動
if((GPIOB->IDR & 0xf000)==0x0000)
return -1;
}
GPIO_Write(GPIOB,(GPIOB->ODR & 0xf0ff | 0x0100)); //僅將PB8置高
switch(GPIOB->IDR & 0xf000) //第一行,由低到高,同理,不贅述
{
case 0x1000: KeyVal=0; break;
case 0x2000: KeyVal=1; break;
case 0x4000: KeyVal=2; break;
case 0x8000: KeyVal=3; break;
}
while((GPIOB->IDR & 0xf000) > 0); //等待按鍵釋放
GPIO_Write(GPIOB,(GPIOB->ODR & 0xf0ff | 0x0200)); //僅將PB9置高
switch(GPIOB->IDR & 0xf000)
{
case 0x1000: KeyVal=4; break;
case 0x2000: KeyVal=5; break;
case 0x4000: KeyVal=6; break;
case 0x8000: KeyVal=7; break;
}
while((GPIOB->IDR & 0xf000) > 0);
GPIO_Write(GPIOB,(GPIOB->ODR & 0xf0ff | 0x0400)); //僅將PB10置高
switch(GPIOB->IDR & 0xf000)
{
case 0x1000: KeyVal=8; break;
case 0x2000: KeyVal=9; break;
case 0x4000: KeyVal=10; break;
case 0x8000: KeyVal=11; break;
}
while((GPIOB->IDR & 0xf000) > 0);
GPIO_Write(GPIOB,(GPIOB->ODR & 0xf0ff | 0x0800)); //僅將PB11置高
switch(GPIOB->IDR & 0xf000)
{
case 0x1000: KeyVal=12; break;
case 0x2000: KeyVal=13; break;
case 0x4000: KeyVal=14; break;
case 0x8000: KeyVal=15; break;
}
while((GPIOB->IDR & 0xf000) > 0);
return KeyVal;
}
/************************************
按鍵表盤為: 0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
************************************/
void GetKeyVal(void)
{
int num;
num = KeyScan();
switch(num)
{
case 0: printf("0\n"); break;
case 1: printf("1\n"); break;
case 2: printf("2\n"); break;
case 3: printf("3\n"); break;
case 4: printf("4\n"); break;
case 5: printf("5\n"); break;
case 6: printf("6\n"); break;
case 7: printf("7\n"); break;
case 8: printf("8\n"); break;
case 9: printf("9\n"); break;
case 10: printf("10\n"); break;
case 11: printf("11\n"); break;
case 12: printf("12\n"); break;
case 13: printf("13\n"); break;
case 14: printf("14\n"); break;
case 15: printf("15\n"); break;
}
}
復(fù)制代碼
所有資料51hei提供下載:
KEY4x4.rar
(294.53 KB, 下載次數(shù): 146)
2018-11-18 15:12 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
51黑科技1314
時間:
2019-9-19 10:20
不行的啊
,還缺了一些東西
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲午夜小视频
|
国产伦精品一区二区三区高清
|
亚洲一区二区av在线
|
成人在线观看免费爱爱
|
国产免费xxx
|
国产高清无av久久
|
亚洲精品在
|
国产精品成av人在线视午夜片
|
日韩欧美视频
|
黄色国产在线播放
|
欧美日韩视频在线第一区
|
国产探花在线精品一区二区
|
韩国主播午夜大尺度福利
|
人人澡视频
|
在线观看av中文字幕
|
91精品国产91久久久久游泳池
|
欧美无乱码久久久免费午夜一区
|
九九九久久国产免费
|
麻豆久久久久
|
免费观看黄色片视频
|
午夜影院在线观看
|
国产精品日产欧美久久久久
|
国产精品不卡
|
久久精品小视频
|
国产欧美一区二区三区免费
|
欧美一区中文字幕
|
中文字幕日韩欧美
|
黄色av网站在线免费观看
|
人人鲁人人莫人人爱精品
|
91久久北条麻妃一区二区三区
|
91国内精品久久
|
国产亚洲精品a
|
亚洲高清在线免费观看
|
亚洲一区二区三区四区五区中文
|
av香港经典三级级 在线
|
亚洲综合五月天婷婷
|
在线精品亚洲欧美日韩国产
|
国产在线精品一区二区
|
欧美日韩一区在线观看
|
日本精品视频
|
亚洲永久免费观看
|