STM32F407實現矩陣鍵盤程式
由於最近在做一個有關按鍵的專案,有用到矩陣鍵盤,因為網上有關矩陣鍵盤的程式很少,所以我就自己寫一個發上去供大家參考,該程式所用到的GPIO口是PD0--PD7,至於矩陣鍵盤的原理就不一一描述了,直接上程式,具體程式如下:
//GPIO初始化函式 void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructuress; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOA, ENABLE); //開啟時鐘 GPIO_InitStructuress.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; //初始化PD0-PD3 GPIO_InitStructuress.GPIO_Mode = GPIO_Mode_OUT ; GPIO_InitStructuress.GPIO_OType = GPIO_OType_PP; //設定為推輓輸出 GPIO_InitStructuress.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructuress.GPIO_PuPd =GPIO_PuPd_UP; //上拉 GPIO_Init(GPIOD, &GPIO_InitStructuress); GPIO_InitStructuress.GPIO_Pin =GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; //初始化PD4-PD7 GPIO_InitStructuress.GPIO_Mode =GPIO_Mode_OUT ; GPIO_InitStructuress.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructuress.GPIO_PuPd = GPIO_PuPd_DOWN ;//Ï下拉 GPIO_Init(GPIOD, &GPIO_InitStructuress); GPIO_SetBits( GPIOD,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3); GPIO_ResetBits( GPIOD,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7); } //按鍵函式 extern void Keyspress() { int KeyValue; int y=0; int f=5; while(f) { if((GPIO_ReadInputData(GPIOD)&0xff)!=0x0f) { Delay10ms(20); if((GPIO_ReadInputData(GPIOD)&0xff)!=0x0f) { GPIO_SetBits(GPIOD,GPIO_Pin_0); GPIO_ResetBits(GPIOD,GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3); switch(GPIO_ReadInputData(GPIOD)&0xff) { case 0x11:KeyValue=12;break; case 0x21:KeyValue=13;break; case 0x41:KeyValue=14;break; case 0x81:KeyValue=15;break; } GPIO_SetBits(GPIOD,GPIO_Pin_1); GPIO_ResetBits(GPIOD,GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_3); switch(GPIO_ReadInputData(GPIOD)&0xff) { case 0x12:KeyValue=8;break; case 0x22:KeyValue=9;break; case 0x42:KeyValue=10;break; case 0x82:KeyValue=11;break; } GPIO_SetBits(GPIOD,GPIO_Pin_2); GPIO_ResetBits(GPIOD,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_3); switch(GPIO_ReadInputData(GPIOD)&0xff) { case 0x14:KeyValue=4;break; case 0x24:KeyValue=5;break; case 0x44:KeyValue=6;break; case 0x84:KeyValue=7;break; } GPIO_SetBits(GPIOD,GPIO_Pin_3); GPIO_ResetBits(GPIOD,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2); switch(GPIO_ReadInputData(GPIOD)&0xff) { case 0x18:KeyValue=0;break; case 0x28:KeyValue=1;break; case 0x48:KeyValue=2;break; case 0x88:KeyValue=3;break; } GPIO_SetBits(GPIOD,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2 |GPIO_Pin_3); GPIO_ResetBits(GPIOD, GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 |GPIO_Pin_7); while((GPIO_ReadInputData(GPIOD)&0xff)!=0x0f); switch(KeyValue) { case 0:f=3;break; case 1:f=3;break; case 2:f=3;break; case 4: f=3;break; case 5: f=3;break; case 6: f=3;break; case 8:f=3;break; case 9: f=3;break; case 10: f=3; break; case 12: f=3;break; case 13: f=3;break;//由於專案只用到12個按鍵,所以有4個按鍵的掃描程式是沒有的 } } } } } //主函式: int main { GPIO_Configuration();
Keyspress();
}
相關推薦
STM32F407實現矩陣鍵盤程式
由於最近在做一個有關按鍵的專案,有用到矩陣鍵盤,因為網上有關矩陣鍵盤的程式很少,所以我就自己寫一個發上去供大家參考,該程式所用到的GPIO口是PD0--PD7,至於矩陣鍵盤的原理就不一一描述了,直接上程式,具體程式如下: //GPIO初始化函式 void GPIO_Con
基於STM32L151//STM32F407的矩陣鍵盤程式(不規則介面):
void KeyPress(void){ int KeyValues; while(1) { if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11)||GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)||GPIO_
51單片機實現矩陣鍵盤行掃描
order 方式 [] image 51單片機 char borde 矩陣鍵盤 結果 ———————————————————————————————————————————— 分類: 按結構原理分: 觸點式開關按鍵 無觸點開關按鍵 接入方式 獨立式
VHDL實現矩陣鍵盤檢測
矩陣鍵盤相比獨立鍵盤,其實就是起到節約IO口的作用,尤其在需要多個按鍵的時候。原理圖(摘自其他地方): 比如0鍵,沒按下時,ROW0因為上拉而為高電平。當0按下時,如果此時COL0為低電平,則ROW
MPI實現矩陣乘法程式--實現MPI傳遞連續陣列
怎麼樣用用MPI編寫兩個n階的方陣A和B的相乘程式,結果存放在方陣C中,A、B和C都在節點0中呢? //#include<stdio.h> //#include<math.h> //#pragma comment(lib,"mpi.lib") #
【按鍵】短按,長按,按鍵釋放,三種模式的按鍵掃描程式(軟體消抖動)--- 矩陣鍵盤
請先閱讀上篇: 短按,長按,按鍵釋放,三種模式的按鍵掃描程式(軟體消抖動) 上面的程式適用於單個按鍵,那是不是也可以適用於矩陣鍵盤呢? 答案是肯定的。 接下來在這裡做一個簡單的擴充套件,具體框架不用改變,所以具體的框架內容和思路在這裡不詳述了,自行參考上篇文章,這裡就說說擴充套件
51微控制器(AT89C52)矩陣鍵盤檢測程式
矩陣鍵盤檢測思路:行線設為輸出、列線設為輸入獲得列碼,行線設為輸入、列線設為輸出獲得行碼,由行列碼確定鍵值。 本程式可改進的地方:按鍵狀態機中,將等待按鍵釋放語句移到第三個狀態中,可進一步提高按鍵掃描程式效率。 #include<reg52.h> #define
4X4矩陣鍵盤掃描程式
4X4矩陣鍵盤掃描: 1. 4根行線的GIO均設為Output,根列線的GIO均設為Input; 2. 4根行線的GIO分別置為0111、1011、1101、1110,讀逐一讀取列線GIO的值,可確定是哪一個按鍵; 電路圖如下: 注意: 1. 圖中用作輸入的GIO,一
樹莓派的矩陣鍵盤掃描程式,python開發
樹莓派可以很方便的拓展矩陣鍵盤用做人機互動,今天教大家如何驅動4*4矩陣鍵盤。 先貼上程式碼: import time class keypad(object):KEYPAD=[['1','2','3','*'],['4','5','6','#'],['7','8','9
編寫程式,實現使用鍵盤上的上下左右箭頭控制介面上圖片的移動。
//MyFrame.java import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.Icon; import javax.swing.ImageIcon;
單片機入門-矩陣鍵盤控制數碼管顯示
矩陣 right 控制 入門 i/o num .cn mar oid 任務簡述:通過按下4X4矩陣鍵盤實現數碼管對應顯示數字 實現方式:通過行列分接法,可以節省使用單片機的I/O口,掃描矩陣鍵盤是否有按下,判斷P2端口得到的值。 protues 硬件系統 單片機晶振復位電
疑問----單片機矩陣鍵盤行列反轉掃描法
inux png src 網上 target nbsp 檢測 開發板 col 學到矩陣鍵盤這一塊對網上別人寫的C代碼有些疑問,希望有能看到的大牛幫助解答。 矩陣鍵盤和獨立鍵盤原理圖: 原理:對於圖右側的矩陣鍵盤,把P3口的低四位(P3.0 ~ P3.3)和高四位(P3
Oracle使用SQL實現矩陣轉置
row 多人 遇到 數據 number decode 分享 展示 mode 在使用數據庫使用報表時,往往會遇到矩陣轉置。這個需求在Excel是很容易實現的,但很多人都不知道怎麽用Oracle數據庫實現,下面給大家展示幾種使用SQL實現的方法。 需求:表1轉置成表2 測試數
java實現矩陣基本運算
+= asi return sta pack res ret matrix n) 1 package Math; 2 3 /** 4 * 矩陣基本運算 5 * @author woyouyihujiu 6 * 7 */ 8 pu
分治法實現矩陣乘法
name cout namespace size cas put 分治 ade add 整體的思路就是分,加&乘,拼 #include <iostream> #include <cstddef> #include <cstdlib&g
40.多線程實現矩陣相乘
分享圖片 num res 運行時 矩陣 for 統計 span fine 單線程運行時間: 多線程運行時間; 代碼: 1 #include <stdlib.h> 2 #include <stdio.h> 3 #include <pr
[Python Study Notes]實現對鍵盤控制與監控
實現 博客 pac rip art 字符串 line 一個 sys ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘ >
矩陣應用實例及js實現矩陣轉置算法
seda 返回 轉化 表示 矩陣轉置 sta 圖片 EDA 矩陣的轉置 場景: 後端返回的是[[‘2015-1-1’,1,1],[‘2015-1-2’,1,2]]這樣的Json數組,代表的意思是2015-1-1這個日期下新增的數據為1,減少的數據為1,2015-1-2這個日
TensorFlow實現遷移學習程式除錯問題彙總
1ValueError: The specified path: inception_v3.ckpt is a file. Please specify only the path prefix to the checkpoint files. 問題描述:模型放在程式的同一檔案路徑中,但是就
TCP實現簡單聊天程式
上次我們通過UDP來實現了簡單的聊天程式,這次我們用TCP協議來實現,TCP和UDP不同的是TCP需要建立連線。 //這是一個通過TCP協議來實現聊天的程式 //1.建立socket //2.為socket繫結地址 //3.向服務端傳送連結請求 //4.傳送資料 //