sexta-feira, 4 de julho de 2014

Simulação no Proteus - Arduino e LCD Gráfico 128x64 KS0108


     Exemplo prático e bem simples de como escrever uma mensagem em um display LCD Gráfico 128x64 KS0108 utilizando a Biblioteca Gráfica GLCD v3 e o circuito para simulação no Proteus 7.10 - SP0.


Circuito

Demonstração


Arquivos

Download - Arquivos e Library da Simulação

Em edit properties do componente Arduino Uno R3, configure o Clock Frequence em 16MHz.

Em edit properties do componente LGM12641BS1R, configure o LCD Clock Frequency em 1200kHz. 

    Ligações no Proteus:

    LCD           Arduino
-------------------------------
   1  -  CS1           A0
   2  -  CS2           A1
   3  -  GND       GND
   4  -  VCC          +5
   5  -  VO             +5
   6  -  DI              A3
   7  -  R/W          A2
   8  -  E               A4
   9  -  DB0             8
 10  -  DB1             9
 11  -  DB2           10
 12  - DB3            11
 13  - DB4             4
 14  - DB5             5
 15  - DB6             6
 16  - DB7             7
 17  - RST           +5
 18  -

                                                                           *  *  *

 

 

15 comentários:

  1. Parabéns, me ajudou bastante no projeto que estou fazendo!

    ResponderExcluir
  2. Obrigado, esta é a intenção. Compartilhar para ajudar.

    ResponderExcluir
  3. Existem vários exemplos na pasta x:\Arduino\libraries\glcd\examples\ utilizei o GLCDdemo.

    ResponderExcluir
  4. Como voce declarou a pinagem no codigo do arduino?? por favor me responda.

    ResponderExcluir
    Respostas
    1. /*
      - Matheus, segue exemplo com as instruções de declaração.

      - Glcd Teste da configuração - Placa Arduino Uno
      - Os arquivos de configuração estão na pasta "\config" da lib.
      - Basta declara no include o arquivo correspondente a sua placa

      Exemplo:
      #include "ks0108_Arduino.h" // Para Arduino Uno
      #include "config/ks0108_Mega.h" // Para Arduino Mega
      */
      // Obs: No include troque aspas " " por sinal de menor e maior < >

      #include "glcd.h"
      #include "ks0108_Arduino.h" // Para Arduino Un
      #include "fonts/allFonts.h" // Para acessar todas as fontes

      int count = 0;

      void setup()
      {
      GLCD.Init(NON_INVERTED); // inicializa a lib com fundo claro letras escuras
      //GLCD.Init(INVERTED); // inicializa a lib com fundo escuro letras claras
      GLCD.ClearScreen(); // Limpa o Lcd
      GLCD.SelectFont(System5x7); // seleciona esta fonte
      GLCD.print("Ola. Tudo Bem?"); // imprime uma mensagem
      delay(3000); // aguarda 3seg
      }

      void loop()
      {
      GLCD.ClearScreen(); // Limpa o Lcd
      GLCD.DrawRect(0, 0, 64, 61, BLACK); // retângulo no lado esquerdo da tela
      GLCD.DrawRoundRect(68, 0, 58, 61, 5, BLACK); // retângulo arredondado lado direito

      for(int i=0; i < 62; i += 4)
      {
      GLCD.DrawLine(1, 1, 63, i, BLACK); // desenhar linhas da esquerda para baixo lado superior direito do retângulo
      }

      GLCD.DrawCircle(32, 31, 30, BLACK); // círculo centrado no lado esquerdo da tela
      GLCD.FillRect(92, 40, 16, 16, WHITE); // limpa posição anterior
      GLCD.CursorTo(5, 5); // posiciona o cursor para impressão do texto
      GLCD.PrintNumber(count); // imprimir um número na posição atual do cursor
      count = count + 1;

      delay(1000); // aguarda 1seg
      }

      Excluir
  5. disculpe , cual es el codigo que utiliza en la simuacion?

    ResponderExcluir
  6. Hola, He actualizado el enlace para descargar la Biblioteca GLCD 3.0
    Yo uso el ejemplo GLCDdemo.ino que enconta en la carpeta \glcd\examples\GLCDdemo

    Zedequias

    ResponderExcluir
  7. Ya probe con la version 1.8.1, 1.6.5, 1.0.6 mas não funciona intento con un Arduino uno pero no lo puedo compilar

    ResponderExcluir
    Respostas
    1. Realmente características V3.0 GLCD no son compatibles con estos verções el Arduino IDE.
      Ejemplo de error que aparece:
      \glcd/fonts/SystemFont5x7.h:48:28: error: variable 'System5x7' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
      static uint8_t System5x7[] PROGMEM = {

      Para resolver este error modificado en todos los puntos que se producen declaración de error (estática) a (const)
      ejemplo para corregir el error:
      const static uint8_t System5x7[] PROGMEM = {

      Descargar los archivos de simulación de nuevo, esta incluido ahora briblioteca con estas correcciones.
      Gracias por comumivar estos errores.

      Zedequias Fonseca

      Excluir
  8. Hola gracias por tu respuesta, ya pude solucionarlo usando la librería "U8glib.h" y comunicando la pantalla por comunicación Serial, para esto se pone el PIN PSB a GND y se usa esta declaración en el sketch de arduino:

    U8GLIB_ST7920_128X64 u8g(13, 11, 12, U8G_PIN_NONE);

    Con esto se puede manejar la pantalla con tan solo 3 Pines del Arduino y trabaja muy bien.

    Muchas gracias amigo por tu ayuda.

    Un abrazo desde México.

    ResponderExcluir
    Respostas
    1. Hola, mi gráfica LCD no tienen comunicación en serie al igual que la pantalla LCD 128x64 - ST7920. Me alegro de haber ayudado. Abrazos.

      Zedequías Fonseca

      Ciudad del Prado, Bahia, Brasil.

      Excluir