zoukankan      html  css  js  c++  java
  • 驱动2.42吋的ssd1309的OLED屏幕

    代码:官方例程

      1 /*
      2 
      3   HelloWorld.pde
      4   
      5   "Hello World!" example code.
      6   
      7   >>> Before compiling: Please remove comment from the constructor of the 
      8   >>> connected graphics display (see below).
      9   
     10   Universal 8bit Graphics Library, https://github.com/olikraus/u8glib/
     11   
     12   Copyright (c) 2012, olikraus@gmail.com
     13   All rights reserved.
     14 
     15   Redistribution and use in source and binary forms, with or without modification, 
     16   are permitted provided that the following conditions are met:
     17 
     18   * Redistributions of source code must retain the above copyright notice, this list 
     19     of conditions and the following disclaimer.
     20     
     21   * Redistributions in binary form must reproduce the above copyright notice, this 
     22     list of conditions and the following disclaimer in the documentation and/or other 
     23     materials provided with the distribution.
     24 
     25   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
     26   CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
     27   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
     28   MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
     29   DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
     30   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
     31   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
     32   NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
     33   LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
     34   CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
     35   STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
     36   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
     37   ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
     38   
     39 */
     40 
     41 
     42 #include "U8glib.h"
     43 
     44 // setup u8g object, please remove comment from one of the following constructor calls
     45 // IMPORTANT NOTE: The following list is incomplete. The complete list of supported 
     46 // devices with all constructor calls is here: https://github.com/olikraus/u8glib/wiki/device
     47 //U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9);    // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     48 //U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9);    // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     49 //U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9);    // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     50 //U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9);    // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     51 //U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9);    // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     52 //U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9);    // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     53 //U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9);    // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     54 //U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9);    // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     55 //U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8);        // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     56 //U8GLIB_DOGM132 u8g(13, 11, 10, 9);        // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     57 //U8GLIB_DOGM128 u8g(13, 11, 10, 9);        // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     58 //U8GLIB_DOGM128_2X u8g(13, 11, 10, 9);        // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     59 //U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16);   // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
     60 //U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16);   // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
     61 //U8GLIB_ST7920_128X64_1X u8g(18, 16, 17);    // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
     62 //U8GLIB_ST7920_128X64_4X u8g(18, 16, 17);    // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
     63 //U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16);   // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
     64 //U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16);   // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
     65 //U8GLIB_ST7920_192X32_1X u8g(18, 16, 17);    // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
     66 //U8GLIB_ST7920_192X32_4X u8g(18, 16, 17);    // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
     67 //U8GLIB_ST7920_192X32_1X u8g(13, 11, 10);    // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10
     68 //U8GLIB_ST7920_192X32_4X u8g(10);        // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI
     69 //U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16);   // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
     70 //U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16);   // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
     71 //U8GLIB_ST7920_202X32_1X u8g(18, 16, 17);    // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
     72 //U8GLIB_ST7920_202X32_4X u8g(18, 16, 17);    // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
     73 //U8GLIB_LM6059 u8g(13, 11, 10, 9);        // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     74 //U8GLIB_LM6063 u8g(13, 11, 10, 9);        // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     75 //U8GLIB_DOGXL160_BW u8g(10, 9);        // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     76 //U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9);    // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     77 //U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9);    // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     78 //U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9);    // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     79 //U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8);        // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8
     80 //U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8);        // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8
     81 //U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16);         // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16
     82 //U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7,  18, 14, 15, 17, 16);     // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
     83 //U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7,  18, 14, 15, 17, 16);     // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
     84 //U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7,  18, 14, 15, 17, 16);     // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
     85 //U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 );              // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16
     86 //U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16);     // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16
     87 //U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9);    // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     88 //U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7);    // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED)
     89 //U8GLIB_SSD1306_128X64 u8g(10, 9);        // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are  SCK = 13 and MOSI = 11)
     90 //U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);    // I2C / TWI 
     91 //U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST);    // Fast I2C / TWI 
     92 //U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK);    // Display which does not send AC
     93 //U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9);    // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     94 //U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9);        // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are  SCK = 13 and MOSI = 11)
     95 //U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9);    // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     96 //U8GLIB_SSD1306_128X32 u8g(10, 9);             // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are  SCK = 13 and MOSI = 11)
     97 //U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE);    // I2C / TWI 
     98 //U8GLIB_SSD1306_64X48 u8g(13, 11, 10, 9);    // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
     99 //U8GLIB_SSD1306_64X48 u8g(10, 9);             // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are  SCK = 13 and MOSI = 11)
    100 //U8GLIB_SSD1306_64X48 u8g(U8G_I2C_OPT_NONE);    // I2C / TWI 
    101 //U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9);    // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
    102 //U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7);    // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED)
    103 //U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);    // I2C / TWI 
    104 //U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);    // Dev 0, Fast I2C / TWI
    105 //U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK);    // Display which does not send ACK
    106 U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9, 2);    // SPI Com: SCK/SCL = 13, MOSI/SDA = 11, CS = 10, A0/DC = 9, RST=2
    107 //U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE);    // I2C
    108 //U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE);    // I2C
    109 //U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE);    // I2C
    110 //U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9, 8);    // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
    111 //U8GLIB_UC1611_DOGM240 u8g(10, 9);        // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are  SCK = 13 and MOSI = 11)
    112 //U8GLIB_UC1611_DOGM240 u8g(10, 9);        // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are  SCK = 13 and MOSI = 11)
    113 //U8GLIB_UC1611_DOGM240 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 3, 17, 16);   // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=3, di/a0=17,rw=16
    114 //U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE);    // I2C
    115 //U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9, 8);    // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
    116 //U8GLIB_UC1611_DOGXL240 u8g(10, 9);        // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are  SCK = 13 and MOSI = 11)
    117 //U8GLIB_UC1611_DOGXL240 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 3, 17, 16);   // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=3, di/a0=17,rw=16
    118 //U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);    // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
    119 //U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8);    // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
    120 //U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8);    // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
    121 //U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8);    // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8  (SW SPI Nano Board)
    122 //U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8);    // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
    123 //U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8);    // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
    124 //U8GLIB_UC1608_240X64 u8g(10, 9, 8);    // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
    125 //U8GLIB_UC1608_240X64_2X u8g(10, 9, 8);    // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
    126 //U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8);    // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
    127 //U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8);    // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
    128 //U8GLIB_UC1608_240X64 u8g(10, 9, 8);    // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
    129 //U8GLIB_UC1608_240X64_2X u8g(10, 9, 8);    // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
    130 //U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
    131 //U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
    132 //U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
    133 //U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
    134 //U8GLIB_HT1632_24X16 u8g(3, 2, 4);        // WR = 3, DATA = 2, CS = 4
    135 //U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
    136 //U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
    137 //U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
    138 //U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
    139 //U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
    140 //U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
    141 //U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
    142 
    143 
    144 void draw(void) {
    145   // graphic commands to redraw the complete screen should be placed here  
    146   u8g.setFont(u8g_font_unifont);
    147   //u8g.setFont(u8g_font_osb21);
    148   u8g.drawStr( 0, 22, "Hello World!");
    149 }
    150 
    151 void setup(void) {
    152   // flip screen, if required
    153   // u8g.setRot180();
    154   
    155   // set SPI backup if required
    156   //u8g.setHardwareBackup(u8g_backup_avr_spi);
    157 
    158   // assign default color value
    159   if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
    160     u8g.setColorIndex(255);     // white
    161   }
    162   else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
    163     u8g.setColorIndex(3);         // max intensity
    164   }
    165   else if ( u8g.getMode() == U8G_MODE_BW ) {
    166     u8g.setColorIndex(1);         // pixel on
    167   }
    168   else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
    169     u8g.setHiColorByRGB(255,255,255);
    170   }
    171   
    172   pinMode(8, OUTPUT);
    173 }
    174 
    175 void loop(void) {
    176   // picture loop
    177   u8g.firstPage();  
    178   do {
    179     draw();
    180   } while( u8g.nextPage() );
    181   
    182   // rebuild the picture after some delay
    183   //delay(50);
    184 }

    几点说明:

    管脚和库里的不尽相同

    库里名称 ---------------- 实际管脚 ----------------- arduino

    SCK         SCL         13

    MOSI          SDA         11

    CS         CS            10

    A0          D/C           9

    RST          RES             RESET

    U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9, 2); // SPI Com:这里有个坑,就是库里原来只有4个参数,添加第5个参数时,接对应的管脚

    U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com:这里有个坑,就是库里原来只有4个参数,必须接RST引脚和reset

  • 相关阅读:
    c语言 12
    c语言中用结构体表示点的坐标,并计算两点之间的距离
    c语言 12
    c语言中结构体数组
    c语言 12-3
    c语言 12-2
    codevs3164 质因数分解
    codevs4438 YJQ Runs Upstairs
    codevs4439 YJQ Requires Food
    codevs4437 YJQ Arranges Sequences
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/14090661.html
Copyright © 2011-2022 走看看