久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4481|回復: 0
收起左側

arduino_4*4矩陣鍵盤掃描_oled(i2c)顯示_串口顯示程序

[復制鏈接]
ID:517517 發表于 2019-7-18 20:50 | 顯示全部樓層 |閱讀模式
arduino的4*4矩陣鍵盤的掃描程序oled(i2c)的簡單應用顯示

單片機源程序如下:
  1. #include <Wire.h>  //oled SCL——A5 SDA——A4
  2. #include <Adafruit_GFX.h>
  3. #include <Adafruit_SSD1306.h>
  4. #define OLED_RESET 4
  5. Adafruit_SSD1306 display(OLED_RESET);
  6. #define NUMFLAKES 10
  7. #define XPOS 0
  8. #define YPOS 1
  9. #define DELTAY 2
  10. #define LOGO16_GLCD_HEIGHT 16
  11. #define LOGO16_GLCD_WIDTH  16
  12. #if (SSD1306_LCDHEIGHT != 64)
  13. #error("Height incorrect, please fix Adafruit_SSD1306.h!");
  14. #endif

  15. int R1 = 4;//行引腳  
  16. int R2 = 5;
  17. int R3 = 6;
  18. int R4 = 7;
  19. int C1 = 8;//列引腳
  20. int C2 = 9;
  21. int C3 = 10;
  22. int C4 = 11;
  23. int key_Scan();
  24. void pinHigh();
  25. void setup() {
  26.   pinMode(R1, OUTPUT);
  27.   pinMode(R2, OUTPUT);
  28.   pinMode(R3, OUTPUT);
  29.   pinMode(R4, OUTPUT);
  30.   
  31.   pinMode(C1, INPUT_PULLUP);
  32.   pinMode(C2, INPUT_PULLUP);
  33.   pinMode(C3, INPUT_PULLUP);
  34.   pinMode(C4, INPUT_PULLUP);
  35.   
  36.   Serial.begin(115200);
  37.   delay(100);
  38.   display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  39.   display.fillScreen(WHITE);
  40.   display.display();
  41.   delay(1000);//全屏顯示,檢查是否有壞點
  42.   display.fillScreen(BLACK);
  43.   display.display();
  44.   
  45. }
  46. int i;
  47. void loop(){
  48.     i = key_Scan();
  49.     if(i){
  50.       Serial.print("按下第");
  51.       Serial.print(i);
  52.       Serial.println("個按鍵");
  53.       display.clearDisplay();
  54.       display.setTextSize(2);
  55.       display.setTextColor(WHITE);
  56.       display.setCursor(0,0);
  57.       display.print("NO.key= ");
  58.       display.print(i);
  59.       display.display();  
  60.     }     
  61. }
  62.   
  63. int key_Scan(){
  64.   pinHigh();//掃描第一行
  65.   digitalWrite(R1, LOW);
  66.   if(digitalRead(C1) == LOW){
  67.     while(digitalRead(C1) == LOW);
  68.     return 1;
  69.   }
  70.   if(digitalRead(C2) == LOW){
  71.     while(digitalRead(C2) == LOW);
  72.     return 2;
  73.   }
  74.   if(digitalRead(C3) == LOW){
  75.     while(digitalRead(C3) == LOW);
  76.     return 3;
  77.   }
  78.   if(digitalRead(C4) == LOW){
  79.     while(digitalRead(C4) == LOW);
  80.     return 4;
  81.   }

  82.   pinHigh();//掃描第二行
  83.   digitalWrite(R2, LOW);
  84.   if(digitalRead(C1) == LOW){
  85.     while(digitalRead(C1) == LOW);
  86.     return 5;
  87.   }
  88.   if(digitalRead(C2) == LOW){
  89.     while(digitalRead(C2) == LOW);
  90.     return 6;
  91.   }
  92.   if(digitalRead(C3) == LOW){
  93.     while(digitalRead(C3) == LOW);
  94.     return 7;
  95.   }
  96.   if(digitalRead(C4) == LOW){
  97.     while(digitalRead(C4) == LOW);
  98.     return 8;
  99.   }

  100.   pinHigh();//掃描第三行
  101.   digitalWrite(R3, LOW);
  102.   if(digitalRead(C1) == LOW){
  103.     while(digitalRead(C1) == LOW);
  104.     return 9;
  105.   }
  106.   if(digitalRead(C2) == LOW){
  107.     while(digitalRead(C2) == LOW);
  108.     return 10;
  109.   }
  110.   if(digitalRead(C3) == LOW){
  111.     while(digitalRead(C3) == LOW);
  112.     return 11;
  113.   }
  114.   if(digitalRead(C4) == LOW){
  115.     while(digitalRead(C4) == LOW);
  116.     return 12;
  117.   }

  118.   pinHigh();//掃描第四行
  119.   digitalWrite(R4, LOW);
  120.   if(digitalRead(C1)== LOW){
  121.     while(digitalRead(C1) == LOW);
  122.     return 13;
  123.   }
  124.   if(digitalRead(C2) == LOW){
  125.     while(digitalRead(C2) == LOW);
  126.     return 14;
  127.   }
  128.   if(digitalRead(C3) == LOW){
  129.     while(digitalRead(C3) == LOW);
  130.     return 15;
  131.   }
  132.   if(digitalRead(C4) == LOW){
  133.     while(digitalRead(C4) == LOW);
  134.     return 16;
  135.   }
  136.   return 0;
  137. }

  138. void pinHigh(){
  139.   digitalWrite(R1, HIGH);
  140.   digitalWrite(R2, HIGH);
  141.   digitalWrite(R3, HIGH);
  142.   digitalWrite(R4, HIGH);
  143. }
復制代碼

所有資料51hei提供下載:
4x4矩陣鍵盤.rar (25.6 KB, 下載次數: 37)
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲 成人 在线 | 亚洲精品在线看 | 国产精品亚洲精品 | 欧美日韩视频网站 | 亚洲精品久久久久久久不卡四虎 | 福利av在线| 亚洲三区视频 | 久久精品久久精品久久精品 | 欧美一区二区三区高清视频 | 美美女高清毛片视频免费观看 | 亚洲欧洲成人av每日更新 | 精品国产乱码久久久久久丨区2区 | 国产成人高清在线观看 | 日韩国产欧美视频 | 久久国产精品一区二区三区 | 精品综合久久久 | 成年人免费在线视频 | 香蕉一区| 一区二区成人 | 国产精品久久久久久久久久 | 91精品国产综合久久久久 | 美美女高清毛片视频免费观看 | 中文字幕一区二区三区日韩精品 | 日韩视频一区 | 中国黄色毛片视频 | 久久久久亚洲精品中文字幕 | 亚洲一二视频 | 不卡的av在线 | 日韩免费 | 亚洲欧美综合 | 国产最新视频在线 | 黑人巨大精品欧美一区二区免费 | 一区二区在线看 | 大象视频一区二区 | 综合二区 | 超碰日韩| 草久久| 日日综合| 欧美一区二区三区在线 | 99色综合 | 91精品国产乱码久久久久久久久 |