LCD Nokia 5110 (ref: 0028)

3,95 

Hay existencias

Cantidad Descuento
1 - 5 -
6 - 10 3%
11 - 15 5%
16 + 10%
SKU: 0028 Categorías: , Etiquetas: , , ,

Descripción

Esta pantalla, usada en algunos de los legendarios móviles Nokia, es un modelo gráfico monocromo fácil de usar con Arduino. Es una pantalla matricial de 84×48 píxeles de 1,5″ sin grandes prestaciones, pero con aire «retro» irresistible. Además, su consumo es muy reducido, algo de interés en aplicaciones alimentadas desde batería.

Utiliza el controlador PCD8544, que permite el control individual de cada píxel, facilitando el trazado de gráficos. Dispone de retroiluminación para mejorar la visualización.

Este módulo se alimenta a 3,3V, aunque las líneas de datos son compatibles con 5V, lo que posibilita su conexión directa a Arduino.

Conexiones:

  • GND de la pantalla: a GND de Arduino
  • Vcc de la pantalla: a 3,3V de Arduino
  • BL/Light de la pantalla: a 3,3V de Arduino ( se puede regular la intensidad de la retroiluminación realizando PWM sobre este pin, o bien bajando su tensión con un potenciómetro (I=20mA).
  • Pin CLK de la pantalla: a D7 de Arduino
  • Pin IN/DIN de la pantalla: a D6 de Arduino
  • Pin DC de la pantalla: a D5 de Arduino
  • Pin CE de la pantalla: a D4 de Arduino
  • Pin RST de la pantalla: a D3 de Arduino

En caso de tener problemas, probar a añadir una resistencia de 1k en cada línea de datos entre Arduino y la pantalla (aunque no suele ser necesario).

Dimensiones: 43.6 x 43.1 mm

En caso de querer usar librería, se recomienda usar la PCD8544 5110 LCD Library, que incluye algunos ejemplos (atención al consumo de memoria usando esta librería).

Código de ejemplo (sin librería):

const int PIN_RESET = 3;  // Pin Reset
const int PIN_SCE = 4;    // Pin Chip Select
const int PIN_DC = 5;     // Pin Dat/Command
const int PIN_SDIN = 6;   // Pin Data in
const int PIN_SCLK = 7;   // Pin Clk

// Invertir para conseguir blanco sobre negro/negro sobre blanco
const int LCD_C = LOW;
const int LCD_D = HIGH;
const int LCD_X = 84; // Dimensiones de la pantalla
const int LCD_Y = 48;
const int LCD_CMD = 0;

// Tabla para visualizar caracteres Ascii
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 ?
   ,{ 0x00, 0x06, 0x09, 0x09, 0x06 } // 7f ?
};

void LcdInitialise(void) { // Función para inicializar la pantalla
   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_CMD, 0x21);  // LCD Extended Commands.
   LcdWrite(LCD_CMD, 0xBf);  // Set LCD Vop (Contrast). //B1
   LcdWrite(LCD_CMD, 0x04);  // Set Temp coefficent. //0x04
   LcdWrite(LCD_CMD, 0x14);  // LCD bias mode 1:48. //0x13
   LcdWrite(LCD_CMD, 0x0C);  // LCD in normal mode. 0x0d for inverse
   LcdWrite(LCD_C, 0x20);
   LcdWrite(LCD_C, 0x0C);
}

void LcdWrite(byte dc, byte data){ //Función para enviar un dato a 5110
   digitalWrite(PIN_DC, dc);
   digitalWrite(PIN_SCE, LOW);
   shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
   digitalWrite(PIN_SCE, HIGH);
}

void gotoXY(int x, int y){ // Ubicar cursor...
   LcdWrite(0, 0x80 | x);  // Columna
   LcdWrite(0, 0x40 | y);  // Fila
}

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

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

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

void DrawBox() { // Dibujar caja (dos lineas horizontales y dos verticales)
   unsigned char j;
   for (j = 0; j<84; j++){ // top
      gotoXY(j, 0);
      LcdWrite(1, 0x01);
   }
   for (j = 0; j<84; j++){ //Bottom
      gotoXY(j, 5);
      LcdWrite(1, 0x80);
   }
   for (j = 0; j<6; j++){ // Right
      gotoXY(83, j);
      LcdWrite(1, 0xff);
   }
   for (j = 0; j<6; j++){ // Left
      gotoXY(0, j);
      LcdWrite(1, 0xff);
   }
}
// *** CONFIGURACIÓN ***
void setup() {
   LcdInitialise();
   LcdClear();
}
// *** CÓDIGO PRINCIPAL ***
void loop() {
   int a, b;
   char Str[15];
   for (b = 1000; b > 0; b--) {
      DrawBox();  // Dibuja una caja
      for (a = 0; a <= 5; a++) {
         gotoXY(4, 1);
         LcdString("TestDisplay");// Texto en la caja
         gotoXY(24, 3);
         LcdCharacter('H');
         LcdCharacter('E');
         LcdCharacter('L');
         LcdCharacter('L');
         LcdCharacter('O');
         LcdCharacter(' ');
         LcdCharacter('=');

         // Draw + at this position
         gotoXY(10, 3);
         LcdCharacter('=');
         delay(500);

         gotoXY(24, 3);
         LcdCharacter('h');
         LcdCharacter('e');
         LcdCharacter('l');
         LcdCharacter('l');
         LcdCharacter('o');
         LcdCharacter(' ');
         LcdCharacter('-');

         // Draw - at this position
         gotoXY(10, 3);
         LcdCharacter('-');

         delay(500);
      }
   }
}

TFT, LCD, pantalla, screen

 

También te recomendamos…