Caractéristiques

  • Type d’écran: LCD 84×48.
  • 48 lignes, 84 colonnes.
  • Alimentation: de 2.7 à 3.3V

Avis

  • Peu couteux
  • Facile d’utilisation
  • De petite taille

Lien vers la DATASHEET

Branchement

  • ECRAN -> ARDUINO
  • CLK -> PIN 3
  • MOSi -> PIN 4
  • DC Data/Command select -> PIN 5
  • CS -> PIN 7
  • RST -> PIN 6
  • VCC -> 3.3V
  • BL -> 3.3V
  • GND -> GND

Code V1

J’ai cherché a modifier / Décomposer / « Simplifier » les codes sources. Etant débutant, je les trouvais un peu compliqué.

Dans ce code, on va écrire « test » et le positionner en haut à gauche de l’écran. Copiez / collez le code dans votre IDE Arduino et rendez-vous dans la fonction loop

il y a 4 lignes que l’on va traduire:

  • LcdClear(); // Efface ce qu’il y a de présent sur l’écran
  • gotoXY(0,0); // Allez a la position x0, y0 (en haut à gauche de l’écran) Voir image.
  • LcdString(« test »);// Ecrire la phrase « test »
  • delay(200); // délai de 1/5 de seconde.

NOTE: Le positionnement en X se fais en pixel (donc sur une largeur de 84px et depend aussi de la longueur de votre texte qu’il faut déduire) par contre le positionnement en Y se fais en colonne (sur 6 colonnes: de 0 à 5).

5110_goto goto_4

              #define PIN_SCE   7
              #define PIN_RESET 6
              #define PIN_DC    5
              #define PIN_SDIN  4
              #define PIN_SCLK  3

              #define LCD_C     LOW
              #define LCD_D     HIGH

              #define LCD_X     84
              #define LCD_Y     48

              #define BL 9
              static const byte ASCII[][5] =
              {
               {0x00, 0x00, 0x00, 0x00, 0x00} // 20  
              ,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21 !
              ,{0x00, 0x07, 0x00, 0x07, 0x00} // 22 "
              ,{0x14, 0x7f, 0x14, 0x7f, 0x14} // 23 #
              ,{0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24 $
              ,{0x23, 0x13, 0x08, 0x64, 0x62} // 25 %
              ,{0x36, 0x49, 0x55, 0x22, 0x50} // 26 &
              ,{0x00, 0x05, 0x03, 0x00, 0x00} // 27 '
              ,{0x00, 0x1c, 0x22, 0x41, 0x00} // 28 (
              ,{0x00, 0x41, 0x22, 0x1c, 0x00} // 29 )
              ,{0x14, 0x08, 0x3e, 0x08, 0x14} // 2a *
              ,{0x08, 0x08, 0x3e, 0x08, 0x08} // 2b +
              ,{0x00, 0x50, 0x30, 0x00, 0x00} // 2c ,
              ,{0x08, 0x08, 0x08, 0x08, 0x08} // 2d -
              ,{0x00, 0x60, 0x60, 0x00, 0x00} // 2e .
              ,{0x20, 0x10, 0x08, 0x04, 0x02} // 2f /
              ,{0x3e, 0x51, 0x49, 0x45, 0x3e} // 30 0
              ,{0x00, 0x42, 0x7f, 0x40, 0x00} // 31 1
              ,{0x42, 0x61, 0x51, 0x49, 0x46} // 32 2
              ,{0x21, 0x41, 0x45, 0x4b, 0x31} // 33 3
              ,{0x18, 0x14, 0x12, 0x7f, 0x10} // 34 4
              ,{0x27, 0x45, 0x45, 0x45, 0x39} // 35 5
              ,{0x3c, 0x4a, 0x49, 0x49, 0x30} // 36 6
              ,{0x01, 0x71, 0x09, 0x05, 0x03} // 37 7
              ,{0x36, 0x49, 0x49, 0x49, 0x36} // 38 8
              ,{0x06, 0x49, 0x49, 0x29, 0x1e} // 39 9
              ,{0x00, 0x36, 0x36, 0x00, 0x00} // 3a :
              ,{0x00, 0x56, 0x36, 0x00, 0x00} // 3b ;
              ,{0x08, 0x14, 0x22, 0x41, 0x00} // 3c <
              ,{0x14, 0x14, 0x14, 0x14, 0x14} // 3d =
              ,{0x00, 0x41, 0x22, 0x14, 0x08} // 3e >
              ,{0x02, 0x01, 0x51, 0x09, 0x06} // 3f ?
              ,{0x32, 0x49, 0x79, 0x41, 0x3e} // 40 @
              ,{0x7e, 0x11, 0x11, 0x11, 0x7e} // 41 A
              ,{0x7f, 0x49, 0x49, 0x49, 0x36} // 42 B
              ,{0x3e, 0x41, 0x41, 0x41, 0x22} // 43 C
              ,{0x7f, 0x41, 0x41, 0x22, 0x1c} // 44 D
              ,{0x7f, 0x49, 0x49, 0x49, 0x41} // 45 E
              ,{0x7f, 0x09, 0x09, 0x09, 0x01} // 46 F
              ,{0x3e, 0x41, 0x49, 0x49, 0x7a} // 47 G
              ,{0x7f, 0x08, 0x08, 0x08, 0x7f} // 48 H
              ,{0x00, 0x41, 0x7f, 0x41, 0x00} // 49 I
              ,{0x20, 0x40, 0x41, 0x3f, 0x01} // 4a J
              ,{0x7f, 0x08, 0x14, 0x22, 0x41} // 4b K
              ,{0x7f, 0x40, 0x40, 0x40, 0x40} // 4c L
              ,{0x7f, 0x02, 0x0c, 0x02, 0x7f} // 4d M
              ,{0x7f, 0x04, 0x08, 0x10, 0x7f} // 4e N
              ,{0x3e, 0x41, 0x41, 0x41, 0x3e} // 4f O
              ,{0x7f, 0x09, 0x09, 0x09, 0x06} // 50 P
              ,{0x3e, 0x41, 0x51, 0x21, 0x5e} // 51 Q
              ,{0x7f, 0x09, 0x19, 0x29, 0x46} // 52 R
              ,{0x46, 0x49, 0x49, 0x49, 0x31} // 53 S
              ,{0x01, 0x01, 0x7f, 0x01, 0x01} // 54 T
              ,{0x3f, 0x40, 0x40, 0x40, 0x3f} // 55 U
              ,{0x1f, 0x20, 0x40, 0x20, 0x1f} // 56 V
              ,{0x3f, 0x40, 0x38, 0x40, 0x3f} // 57 W
              ,{0x63, 0x14, 0x08, 0x14, 0x63} // 58 X
              ,{0x07, 0x08, 0x70, 0x08, 0x07} // 59 Y
              ,{0x61, 0x51, 0x49, 0x45, 0x43} // 5a Z
              ,{0x00, 0x7f, 0x41, 0x41, 0x00} // 5b [
              ,{0x02, 0x04, 0x08, 0x10, 0x20} // 5c ¥
              ,{0x00, 0x41, 0x41, 0x7f, 0x00} // 5d ]
              ,{0x04, 0x02, 0x01, 0x02, 0x04} // 5e ^
              ,{0x40, 0x40, 0x40, 0x40, 0x40} // 5f _
              ,{0x00, 0x01, 0x02, 0x04, 0x00} // 60 `
              ,{0x20, 0x54, 0x54, 0x54, 0x78} // 61 a
              ,{0x7f, 0x48, 0x44, 0x44, 0x38} // 62 b
              ,{0x38, 0x44, 0x44, 0x44, 0x20} // 63 c
              ,{0x38, 0x44, 0x44, 0x48, 0x7f} // 64 d
              ,{0x38, 0x54, 0x54, 0x54, 0x18} // 65 e
              ,{0x08, 0x7e, 0x09, 0x01, 0x02} // 66 f
              ,{0x0c, 0x52, 0x52, 0x52, 0x3e} // 67 g
              ,{0x7f, 0x08, 0x04, 0x04, 0x78} // 68 h
              ,{0x00, 0x44, 0x7d, 0x40, 0x00} // 69 i
              ,{0x20, 0x40, 0x44, 0x3d, 0x00} // 6a j 
              ,{0x7f, 0x10, 0x28, 0x44, 0x00} // 6b k
              ,{0x00, 0x41, 0x7f, 0x40, 0x00} // 6c l
              ,{0x7c, 0x04, 0x18, 0x04, 0x78} // 6d m
              ,{0x7c, 0x08, 0x04, 0x04, 0x78} // 6e n
              ,{0x38, 0x44, 0x44, 0x44, 0x38} // 6f o
              ,{0x7c, 0x14, 0x14, 0x14, 0x08} // 70 p
              ,{0x08, 0x14, 0x14, 0x18, 0x7c} // 71 q
              ,{0x7c, 0x08, 0x04, 0x04, 0x08} // 72 r
              ,{0x48, 0x54, 0x54, 0x54, 0x20} // 73 s
              ,{0x04, 0x3f, 0x44, 0x40, 0x20} // 74 t
              ,{0x3c, 0x40, 0x40, 0x20, 0x7c} // 75 u
              ,{0x1c, 0x20, 0x40, 0x20, 0x1c} // 76 v
              ,{0x3c, 0x40, 0x30, 0x40, 0x3c} // 77 w
              ,{0x44, 0x28, 0x10, 0x28, 0x44} // 78 x
              ,{0x0c, 0x50, 0x50, 0x50, 0x3c} // 79 y
              ,{0x44, 0x64, 0x54, 0x4c, 0x44} // 7a z
              ,{0x00, 0x08, 0x36, 0x41, 0x00} // 7b {
              ,{0x00, 0x00, 0x7f, 0x00, 0x00} // 7c |
              ,{0x00, 0x41, 0x36, 0x08, 0x00} // 7d }
              ,{0x10, 0x08, 0x08, 0x10, 0x08} // 7e ←
              ,{0x78, 0x46, 0x41, 0x46, 0x78} // 7f →
              };

              void LcdCharacter(char character)
              {
                LcdWrite(LCD_D, 0x00);
                for (int index = 0; index < 5; index++)
                {
                  LcdWrite(LCD_D, ASCII[character - 0x20][index]);
                }
                LcdWrite(LCD_D, 0x00);
              }

              void LcdClear(void)
              {
                for (int index = 0; index < LCD_X * LCD_Y / 8; index++)
                {
                  LcdWrite(LCD_D, 0x00);
                }
              }

              void LcdInitialise(void)
              {
                pinMode(PIN_SCE, OUTPUT);
                pinMode(PIN_RESET, OUTPUT);
                pinMode(PIN_DC, OUTPUT);
                pinMode(PIN_SDIN, OUTPUT);
                pinMode(PIN_SCLK, OUTPUT);
                digitalWrite(PIN_RESET, LOW);
                digitalWrite(PIN_RESET, HIGH);
                LcdWrite(LCD_C, 0x21 );  // LCD Extended Commands.
                LcdWrite(LCD_C, 0xB1 );  // Set LCD Vop (Contrast). 
                LcdWrite(LCD_C, 0x04 );  // Set Temp coefficent. //0x04
                LcdWrite(LCD_C, 0x14 );  // LCD bias mode 1:48. //0x13
                LcdWrite(LCD_C, 0x0C );  // LCD in normal mode.
                LcdWrite(LCD_C, 0x20 );
                LcdWrite(LCD_C, 0x0C );
              }

              void LcdString(char *characters)
              {
                while (*characters)
                {
                  LcdCharacter(*characters++);
                }
              }

              void LcdWrite(byte dc, byte data)
              {
                digitalWrite(PIN_DC, dc);
                digitalWrite(PIN_SCE, LOW);
                shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
                digitalWrite(PIN_SCE, HIGH);
              }

              void LCDWrite(byte data_or_command, byte data) {
                //Indiquer au LCD si on lui écrit soit des données soit une commande
                digitalWrite(PIN_DC, data_or_command); 

                //Envoi des data
                digitalWrite(PIN_SCE, LOW);
                shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
                digitalWrite(PIN_SCE, HIGH);
              }

              void gotoXY(int x, int y) {
                LCDWrite(0, 0x80 | x);  // Column.
                LCDWrite(0, 0x40 | y);  // Row.  ?
              }

              void setup(void)
              {
                LcdInitialise();
                LcdClear();
                pinMode(BL,OUTPUT);
                analogWrite(BL,255);
                
              }

              void loop(void)
              {
                LcdClear();
                gotoXY(0,0);
                LcdString("test");
                delay(200);
              }

              

SOURCE SOURCE 2