- Material Necessário
- Diagrama de circuito
- 128 * 64 LCD gráfico
- Convertendo imagem em código hexadecimal:
- Código Arduino e explicação de trabalho
Existem muitos tipos de LCDs usados em projetos eletrônicos. Já usamos o LCD 16X2 em muitos de nossos projetos e também usamos o LCD TFT com Arduino. Você pode encontrar todo o nosso projeto relacionado ao LCD 16X2 seguindo este link, incluindo interface com 8051, AVR, Arduino e muitos mais.
O LCD gráfico ST9720 é totalmente diferente dos LCDs comuns. O LCD comum só pode imprimir texto simples ou números em um tamanho fixo. Mas em LCDs gráficos temos 128 * 64 que é igual a 8192 pontos ou 8192/8 = 1024 pixels, portanto, além do caractere, podemos exibir qualquer imagem gráfica neste GLCD.
Já fizemos a interface do GLCD com o 8051, hoje faremos a interface do LCD gráfico com o Arduino para exibir texto e imagens nele.
Material Necessário
- Arduino UNO
- 128 * 64 LCD gráfico ST9720
- Potenciômetro-10k
- Fios de conexão
- Tábua de pão
Diagrama de circuito
128 * 64 LCD gráfico
Este LCD gráfico está tendo baixo consumo de energia e também é adequado para dispositivos portáteis com bateria. Ele tem uma ampla faixa de voltagem operacional de 2.2v a 5.5v e suporta comunicação serial e paralela de 8/4 bits e vem com controlador / driver IC ST7290 LCD. O modo de comunicação da interface pode ser alternado entre paralelo e serial usando PSB PIN 15. Este LCD gráfico tem uma função de reinicialização de inicialização automática e pode ser facilmente controlado por MCU como 8051, AVR, ARM, Arduino e Raspberry Pi.
Você pode seguir com a folha de dados para obter informações detalhadas sobre o LCD gráfico ST7290 128 * 64
Configuração de Pin
Pin No. |
Nome do Pin |
Descrição |
1 |
Gnd |
Terminal térreo |
2 |
Vcc |
Tensão de alimentação de entrada (2,7 V a 5,5 V) |
3 |
Vo |
Contraste do LCD |
4 |
RS |
Registrar Selecione RS = 0: Registro de Instrução RS = 1: Registro de Dados |
5 |
R / W |
Controle de leitura / gravação |
6 |
E |
Habilitar |
7,8,9,10,11,12,13,14 |
DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7 |
Pinos de dados (usados no modo de comunicação paralela de 8/4 bits) |
15 |
PSB |
Seleção de interface: Baixo (0) para o modo de comunicação serial Alto (1) para modo de barramento paralelo de 8/4 bits. |
16 |
NC |
Não conectado |
17 |
RST |
Redefinir pino |
18 |
Vout |
Saída duplicadora de tensão do LCD. VOUT ≦ 7V. |
19 |
BLA |
Fornecimento positivo de luz de fundo |
20 |
BLK |
Suprimento negativo de luz de fundo |
Formulários
- Dispositivo industrial
- Sistemas Embarcados
- Segurança
- Médico
- Equipamento portátil
Convertendo imagem em código hexadecimal:
Para mostrar qualquer imagem no LCD gráfico, precisamos do código HEX dessa imagem, então aqui estão alguns passos para converter a imagem em código HEX. Antes disso, você deve se certificar de que o tamanho da imagem não deve exceder 128 * 64.
Passo 1: Diminua o tamanho da imagem normal para 128 * 64 ou menos, o que você pode fazer usando qualquer software de edição de imagem como o MS paint.
Conforme mostrado na imagem acima, estamos configurando a largura e a altura da imagem para 128 * 64.
Passo 2: Em seguida, você precisa salvar a imagem no formato “nome_da_imagem .bmp ”.
Selecione o formato mostrado na imagem acima e salve o arquivo para processamento posterior.
Passo 3: Depois de salvá-lo no formato “.bmp”, você precisa converter a imagem em código hexadecimal para impressão. Para isso, estou usando o software chamado GIMP 2, que converte arquivos Bmp em código hexadecimal.
Conforme mostrado na imagem acima, abrimos o arquivo de formato “.bmp” no software GIMP 2.
Etapa 4: Após baixar o software, abra o arquivo de imagem no formato BMP que deseja imprimir e salve -o no formato “ .xbm ” (X BitMap). Depois de salvá-lo, abra o arquivo usando o Bloco de notas e você obterá o código hexadecimal da imagem.
Conforme mostrado na imagem abaixo, escolha a opção Exportar para salvar o arquivo no formato xbm :
Selecione o formato mostrado na imagem abaixo e exporte o arquivo de imagem.
Após exportar o arquivo, você obterá o arquivo no formato “.xbm”. Abra o arquivo xbm usando o Bloco de Notas e você obterá o código HEX conforme mostrado na imagem abaixo.
Código Arduino e explicação de trabalho
Para fazer a interface do LCD gráfico com o Arduino, primeiro precisamos definir a biblioteca usada para o LCD gráfico. O Arduino não tem essa biblioteca, você deve baixar e instalar esta biblioteca a partir deste link. Então você pode incluir a biblioteca como abaixo:
#include "U8glib.h"
Aqui, ' u8g (10) ' está definindo a conexão do pino RS (Seleção de Registro) do LCD gráfico com o 10º pino do Arduino UNO. Pino RS usado como 'seleção de chip' e 'Seleção de registro' quando usado no modo Serial e Paralelo, respectivamente. Portanto, estamos usando o modo serial e o pino RS definido como High (1) para chip habilitado e Low (0) para chip desabilitado.
U8GLIB_ST7920_128X64_4X u8g (10);
Agora, para imprimir a imagem, precisamos colocar o código Hex da imagem no código abaixo. Você pode imprimir qualquer outra imagem, tudo o que você precisa fazer é colar o código hexadecimal da imagem.
const uint8_t rook_bitmap U8G_PROGMEM = { Cole o código Hex da imagem aqui };
Verifique o Código Arduino completo no final deste artigo.
A função abaixo é usada para imprimir imagem, o comando usado para imprimir é “u8g.drawXBMP (x, y, largura da imagem, altura da imagem)” . Onde, X e Y são a posição inicial da imagem no LCD e também precisamos escrever o tamanho da imagem que não deve exceder 128 * 64 e no argumento final chamamos a função na qual colocamos o código HEX da imagem.
void picture (void) {u8g.drawXBMP (0, 0, 128, 64, rook_bitmap); }
Fizemos duas funções chamadas “draw” e “next”, nas quais o código para imprimir o conteúdo é escrito usando o comando “u8g.drawStr (x, y,” abcd ”)”. Aqui, x e y são a posição no LCD onde o conteúdo será impresso e ' abcd ' é o conteúdo a ser impresso.
void draw (void) {u8g.setFont (u8g_font_unifont); u8g.drawStr (07, 35, "CIRCUIT DIGEST"); } void next (void) {u8g.setFont (u8g_font_unifont); u8g.drawStr (0, 15, "Interface"); u8g.drawStr (0, 35, "LCD gráfico"); u8g.drawStr (0, 55, "com Arduino"); }
A função clearLCD () é feita para limpar o LCD apenas fornecendo valor nulo para a função.
void clearLCD () {u8g.firstPage (); do {} while (u8g.nextPage ()); }
Configurando pixel, cor e intensidade usando o código abaixo
configuração de vazio (vazio) {if (u8g.getMode () == U8G_MODE_R3G3B2) {u8g.setColorIndex (255); // branco} else if (u8g.getMode () == U8G_MODE_GRAY2BIT) {u8g.setColorIndex (3); // intensidade máxima} else if (u8g.getMode () == U8G_MODE_BW) {u8g.setColorIndex (1); // pixel ligado} else if (u8g.getMode () == U8G_MODE_HICOLOR) {u8g.setHiColorByRGB (255,255,255); }}
O loop void continua a imprimir o texto e a imagem após um determinado atraso. Primeiro, imprimimos “Circuit Digest” usando a função draw e após 2 segundos. de atraso, limpamos a tela usando a função clearLCD e, em seguida, imprimimos " Interface do LCD gráfico usando Arduino " usando a próxima função. Depois imprimimos a imagem usando a função picture () que ficará na tela por 3 segundos. Isso continuará até que a fonte de alimentação seja ligada.
loop vazio (vazio) {u8g.firstPage (); fazer {desenhar (); } while (u8g.nextPage ()); atraso (2000); clearLCD (); u8g.firstPage (); faça {next (); } while (u8g.nextPage ()); atraso (2000); clearLCD (); u8g.firstPage (); faça {imagem (); } while (u8g.nextPage ()); atraso (3000); clearLCD (); atraso (50); }
Depois de programar o Arduino usando o código fornecido, conecte o LCD gráfico de acordo com o diagrama de circuito com o Arduino e forneça o Arduino usando adaptador ou USB. Você obterá o conteúdo e a imagem impressa no LCD gráfico, conforme mostrado no vídeo abaixo.
Verifique também a interface do LCD gráfico do Nokia 5110 com o Arduino,