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.
Linhas e colunas de uma matriz de um caractere.
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:
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.
Visão da parte Inferior 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.
Tabela de Caracteres disponíveis internamente na memória do LCD.
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
Gerador de Caractere para display 16×2
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.
VIDEO
Parte 1 do experimento do The 8bit Guy (vídeo em Inglês, possui legenda em Português)
Pinagem
Pinagem do LCD 16×2 (créditos: components101.com)
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.
Esquema de ligação modo 4bits (Créditos: www.filipeflop.com)
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
Além do modo 4bits temos o modo 8 bits este modo só é útil 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
Comparação entre os modos 8bits e 4 bits (créditos: www.microcontroller-project.com)
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)
Esquema de ligação modo 8bit (Créditos: www.electronicwings.com)
#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.
Esquema de ligação com o modulo I2C
#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");
}
Creative Commons O trabalho “Display LCD 16×2 – 1602” de JailsonBR está licenciado com uma Licença Creative Commons Atribuição 4.0 Internacional.