arduino的4*4矩陣鍵盤的掃描程序oled(i2c)的簡單應用顯示
單片機源程序如下:
- #include <Wire.h> //oled SCL——A5 SDA——A4
- #include <Adafruit_GFX.h>
- #include <Adafruit_SSD1306.h>
- #define OLED_RESET 4
- Adafruit_SSD1306 display(OLED_RESET);
- #define NUMFLAKES 10
- #define XPOS 0
- #define YPOS 1
- #define DELTAY 2
- #define LOGO16_GLCD_HEIGHT 16
- #define LOGO16_GLCD_WIDTH 16
- #if (SSD1306_LCDHEIGHT != 64)
- #error("Height incorrect, please fix Adafruit_SSD1306.h!");
- #endif
- int R1 = 4;//行引腳
- int R2 = 5;
- int R3 = 6;
- int R4 = 7;
- int C1 = 8;//列引腳
- int C2 = 9;
- int C3 = 10;
- int C4 = 11;
- int key_Scan();
- void pinHigh();
- void setup() {
- pinMode(R1, OUTPUT);
- pinMode(R2, OUTPUT);
- pinMode(R3, OUTPUT);
- pinMode(R4, OUTPUT);
-
- pinMode(C1, INPUT_PULLUP);
- pinMode(C2, INPUT_PULLUP);
- pinMode(C3, INPUT_PULLUP);
- pinMode(C4, INPUT_PULLUP);
-
- Serial.begin(115200);
- delay(100);
- display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
- display.fillScreen(WHITE);
- display.display();
- delay(1000);//全屏顯示,檢查是否有壞點
- display.fillScreen(BLACK);
- display.display();
-
- }
- int i;
- void loop(){
- i = key_Scan();
- if(i){
- Serial.print("按下第");
- Serial.print(i);
- Serial.println("個按鍵");
- display.clearDisplay();
- display.setTextSize(2);
- display.setTextColor(WHITE);
- display.setCursor(0,0);
- display.print("NO.key= ");
- display.print(i);
- display.display();
- }
- }
-
- int key_Scan(){
- pinHigh();//掃描第一行
- digitalWrite(R1, LOW);
- if(digitalRead(C1) == LOW){
- while(digitalRead(C1) == LOW);
- return 1;
- }
- if(digitalRead(C2) == LOW){
- while(digitalRead(C2) == LOW);
- return 2;
- }
- if(digitalRead(C3) == LOW){
- while(digitalRead(C3) == LOW);
- return 3;
- }
- if(digitalRead(C4) == LOW){
- while(digitalRead(C4) == LOW);
- return 4;
- }
- pinHigh();//掃描第二行
- digitalWrite(R2, LOW);
- if(digitalRead(C1) == LOW){
- while(digitalRead(C1) == LOW);
- return 5;
- }
- if(digitalRead(C2) == LOW){
- while(digitalRead(C2) == LOW);
- return 6;
- }
- if(digitalRead(C3) == LOW){
- while(digitalRead(C3) == LOW);
- return 7;
- }
- if(digitalRead(C4) == LOW){
- while(digitalRead(C4) == LOW);
- return 8;
- }
- pinHigh();//掃描第三行
- digitalWrite(R3, LOW);
- if(digitalRead(C1) == LOW){
- while(digitalRead(C1) == LOW);
- return 9;
- }
- if(digitalRead(C2) == LOW){
- while(digitalRead(C2) == LOW);
- return 10;
- }
- if(digitalRead(C3) == LOW){
- while(digitalRead(C3) == LOW);
- return 11;
- }
- if(digitalRead(C4) == LOW){
- while(digitalRead(C4) == LOW);
- return 12;
- }
- pinHigh();//掃描第四行
- digitalWrite(R4, LOW);
- if(digitalRead(C1)== LOW){
- while(digitalRead(C1) == LOW);
- return 13;
- }
- if(digitalRead(C2) == LOW){
- while(digitalRead(C2) == LOW);
- return 14;
- }
- if(digitalRead(C3) == LOW){
- while(digitalRead(C3) == LOW);
- return 15;
- }
- if(digitalRead(C4) == LOW){
- while(digitalRead(C4) == LOW);
- return 16;
- }
- return 0;
- }
- void pinHigh(){
- digitalWrite(R1, HIGH);
- digitalWrite(R2, HIGH);
- digitalWrite(R3, HIGH);
- digitalWrite(R4, HIGH);
- }
復制代碼
所有資料51hei提供下載:
4x4矩陣鍵盤.rar
(25.6 KB, 下載次數: 37)
2019-7-18 20:45 上傳
點擊文件名下載附件
源程序及函數庫
|