Display LCD 16×2 – 1602
Este e um dos displays mais baratos de todo o mundo e muito empregado em toda indústria e também na maioria dos equipamentos, este display é muito compacto e a maioria dos microcontroladores possuem bibliotecas para trabalhar com este display.
O display LCD 1602 possui 16 colunas e 2 linhas que pode exibir no total de 32 caracteres de informação simultaneamente e cada carácter possui 5 colunas e 8 linhas que funciona como uma matriz.
Modelo | 1602 ou 1602A |
Resolução | 16 colunas por 2 linhas Caractere: 5 colunas por 8 Linhas 40 pixel por caractere, 1280 pixel total |
Controlador IC | ST7066, HD44780, KS0066, AT89C51 ou equivalente |
Tensão de Alimentação | 3,3V ou 5V (depende do controlador) 3,3V (ST7066) 5V (HD44780 e KS0066) |
Corrente de Consumo Média | 2,5mA + 20mA (LED) |
Frequência de Operação | Máximo de 40MHz (ST7066) |
Temperatura de Operação | 0°C até +50°C (ST7066 -20°C até +70°C (HD44780) |
Dimensões | 80mm X 36mm X 12mm |
Modelos de Modulo LCD conhecidos: RT162-7, ADM1602K-NSW-FBS/3.3v, DG6894A0, Hitachi HD44780, WH1602W, JHD162A e etc. Abaixo segue os datasheets de alguns modelos:
Display 16×2 – ADM1602K-NSW-FBS/3.3v 896.67 KB 112 downloads
Datasheet do display monocromático 1602 modelo ADM1602K com o controlador ST7066 …Display 16×2 – JHD162A 260.83 KB 76 downloads
Datasheet do display monocromático 1602 modelo JHD162A com o controlador AT89C51…Display 16×2 – LCD-016M002B 89.29 KB 33 downloads
Datasheet do display monocromático 1602 modelo LCD-016M002B com o controlador KS…Display 16×2 – RT162-7 76.20 KB 47 downloads
Datasheet do display monocromático 1602 modelo RT162-7 com o controlador HD44780…Display 16×2 – 1602A-1 367.66 KB 92 downloads
Datasheet do display monocromático 16×2 modelo 1602A-1 com o controlador ST7066…O modelo mais comum é o com fundo verde e caracteres em preto. A luz de fundo (backlight) é um opcional desse tipo de display, porém a maioria vem com a luz de fundo que feita por um LED lateral que acionado pelo dois últimos pinos.
Existem diversos tipos de modelos no mercado com diversas cores, porém o preço varia conforme a cor, a cor azul é quase do mesmo preço que a verde, mas as outras cores como fundo preto e com caracteres de outras cores como branco, verde, laranja e vermelho chegam a custar mais que o triplo. E também uma novidade é o display com luz de fundo RBG onde você pode variar as cores da iluminação de fundo
Existem outras variações deste tipo de display monocromático como 20×4, 8×2, 40×2 e entre outros, alterando assim o tamanho do LCD.
Caracteres
É possível criar novos caracteres além dos caracteres que já vem na memória interna do LCD, estes caracteres tem que ser desenhado através do código de programação.
Para criar um novo caractere exitem sites onde é possível você desenhar seu caractere personalizado e obter o código facilmente como o maxpromer do Github que é um gerador de caractere e já lhe informa o código pronto para o arduino
O código é gerado em estilo matriz binária, onde cada 0 e 1 é uma coluna de cada linha escrita, para o desenho formado acima temos a matriz:
byte customChar[] = {
B10100,
B01000,
B10100,
B00000,
B00110,
B00101,
B00110,
B00100
};
o “customChar” pode ser personalizado para qualquer nome e você deve chamalo em seu código no void_loop(); ou void_setup(); através:
lcd.createChar(0, customChar);
lcd.write(0);
Outra informação interessante é que o display pode ser utilizado sem nenhum microcontrolador porém não há tanta serventia além de escrever em sua tela, pois ele não armazena nada em sua memória, quando desligando ele irá zerar as informações digitadas. Veja um vídeo que o YouTuber “The 8-Bit Guy” fez somente utilizado o LCD e alguns componentes eletrônicos sem nenhum microcontrolador.
Pinagem
Pino | Simbolo | Descrição |
---|---|---|
1 | VSS ou GND | Comum (Ground) (-) |
2 | VDD ou VCC | Alimentação (+) do Controlador |
3 | VO | Ajuste de Contraste |
4 | RS | Seleção de Sinal de Dados ou Instrução |
5 | R/W | Seleção de Sinal de Leitura ou Escrita |
6 | E | Habilitação de Sinal |
7~14 | DB0~DB7 | Entrada de dados Modo de 8bits |
15 | A | Alimentação Positiva do LED + |
16 | K | Alimentação Negativa do LED – |
Modo 4bits
O modo de 4bits utiliza poucos pinos do microcontrolador para executar as operações, porém tem o custo do desempenho ser menor do que o modo 8bits dependendo da tarefa em que irá ser empregada não é perceptível essa diferença.
Este modo utiliza no total de 6 pinos do microcontrolador tanto se for Arduíno, ESP32 ou um PIC, se comparado com o ST7920, temos dois pinos sendo utilizados a mais.
#include <Arduino.h> #include <LiquidCrystal.h> // inicializar a biblioteca associando qualquer pino de interface LCD necessário // com o número do pino arduino está ligado a const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { // configurar o número de colunas e linhas do LCD: lcd.begin(16, 2); // Imprima uma mensagem no LCD. lcd.print("ola, mundo!"); } void loop() { // coloque o cursor na coluna 0, linha 1 // (nota: a linha 1 é a segunda linha, já que a contagem começa com 0): lcd.setCursor(0, 1); // imprime o número de segundos desde a redefinição: lcd.print(millis() / 1000); }
Modo 8bits
Alem do modo 4bits temos o modo 8 bits esté modo só é util quando se precisa de uma resposta rápida no LCD, um exemplo é a exibição em tempo real de várias variáveis ao mesmo tempo
Este modo é 2x mais veloz do que o modo 8bits devido a ter mais dados sendo recebidos simultaneamente, porém o custo e que necessita mais pinos do microcontrolador que chega a 10 pinos, este ponto negativo pode ser contornado pelo uso de multiplexadores (I2C)
#include <LiquidCrystal.h> //Habilite a linha abaixo se for usar o display no modo 8 bits LiquidCrystal lcd(12, 11, 6, 7, 8, 9, 5, 4, 3, 2); //Modo 8 bits void setup() { // configurar o número de colunas e linhas do LCD: lcd.begin(16,2); } void loop() { // defina o cursor para (0,0): lcd.setCursor(0, 0); // imprimir de 0 a 9: for (int thisChar = 0; thisChar < 10; thisChar++) { lcd.print(thisChar); delay(500); } // defina o cursor para (16,1): lcd.setCursor(16,1); // defina a exibição para rolar automaticamente: lcd.autoscroll(); // print from 0 to 9: for (int thisChar = 0; thisChar < 10; thisChar++) { lcd.print(thisChar); delay(500); } // desativar a rolagem automática lcd.noAutoscroll(); // limpar a tela para o próximo loop: lcd.clear(); }
I²C
A multiplexação exige um conhecimento maior em programação ou então apelar para bibliotecas prontas para tornar a multiplexação mais fácil, um exemplo é o I2C do PCF8574A que é muito utilizado para diminuir para dois fios além de ser possível utilizar mais Displays nos mesmos pinos.
#include <Arduino.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> // Inicializa o display com o endereço 0x38 LiquidCrystal_I2C lcd(0x38,2,1,0,4,5,6,7,3, POSITIVE); void setup() { lcd.begin (16,2); lcd.setBacklight(HIGH); } void loop() { lcd.setCursor(0,0); lcd.print("XProjetos.net"); delay(1000); lcd.clear(); lcd.setCursor(0,1); lcd.print("Ola, Mundo"); }