GLCD + ARM

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

GLCD + ARM

Mensagempor Paulo » 10 Dez 2008 06:38

Pessoal,

Nunca trabalhei com display gráfico e pretendo iniciar um projeto utilizando um.

Gostaria de saber dos colegas se existe algum ARM ou melhor, fabricante de ARM que disponibilize bibliotecas, pacotes para trabalhar com esses caras? Precisaria carregar imagens nesses displays, textos...

É tranquilo de trabalhar com esses displays?

Vocês sugerem algum modelo e/ou fabricante que tenha uma resolução próxima a 128x64.

Pessoal, qq dica é muita válida, como já falei, nunca usei esses caras...

Até +...
Paulo D.
"Se o teu sonho for maior que ti, Alonga tuas asas, Esgarça os teus medos, Amplia o teu mundo, Dimensiona o infinito, E parte em busca da estrela... " (Trecho de Voa - Ivan Lins / Leda Selma)
Avatar do usuário
Paulo
Byte
 
Mensagens: 421
Registrado em: 07 Nov 2006 07:26

Mensagempor MarcusPonce » 10 Dez 2008 08:13

Um ARM7 consegue desenhar rápido mesmo que seja um controlador KS0108. Como a RAM interna é de tamanho razoável, separamos 1kByte para manter uma cópia do que está sendo exibido no display e usamos esta cópia na hora de setar um pixel, por exemplo. Assim fica mais rápido desenhar.
Usar um LCD com KS0108 tende a ser mais lento, pois ele não contém as fontes das letras internamente, ou seja, para mostrar um "A" é preciso que o LCD receba alguns bytes que formam o desenho do "A". Se for uma letra grande (digamos uns 16 pixels de altura), então são mais bytes e as rotinas também precisam informar o LCD onde colocar o cursor interno para ir colocando os bytes no lugar certo, no meio de cada letra.

Para simplificar a programação também existem LCDs com controladores
que já contám fontes de letras, mas pelo que lembro não podem colocar letras grandes sozinhos.

Existem algumas rotinas free na Internet para controladores diversos, portanto procure pelo nome do controlador do seu display. Já dá para desenhar e escrever no LCD com elas, mas as bibliotecas mais completas são pagas.
MarcusPonce
Byte
 
Mensagens: 166
Registrado em: 12 Fev 2007 13:58
Localização: Campinas - SP

Mensagempor Paulo » 10 Dez 2008 08:21

MarcusPonce escreveu:Um ARM7 consegue desenhar rápido mesmo que seja um controlador KS0108. Como a RAM interna é de tamanho razoável, separamos 1kByte para manter uma cópia do que está sendo exibido no display e usamos esta cópia na hora de setar um pixel, por exemplo. Assim fica mais rápido desenhar.
Usar um LCD com KS0108 tende a ser mais lento, pois ele não contém as fontes das letras internamente, ou seja, para mostrar um "A" é preciso que o LCD receba alguns bytes que formam o desenho do "A". Se for uma letra grande (digamos uns 16 pixels de altura), então são mais bytes e as rotinas também precisam informar o LCD onde colocar o cursor interno para ir colocando os bytes no lugar certo, no meio de cada letra.

Para simplificar a programação também existem LCDs com controladores
que já contám fontes de letras, mas pelo que lembro não podem colocar letras grandes sozinhos.

Existem algumas rotinas free na Internet para controladores diversos, portanto procure pelo nome do controlador do seu display. Já dá para desenhar e escrever no LCD com elas, mas as bibliotecas mais completas são pagas.


Muito obrigado pelas dicas MarcusPonce.

Pessoal, aguardo mais dicas se possível.

Vlw.
Até +...
"Se o teu sonho for maior que ti, Alonga tuas asas, Esgarça os teus medos, Amplia o teu mundo, Dimensiona o infinito, E parte em busca da estrela... " (Trecho de Voa - Ivan Lins / Leda Selma)
Avatar do usuário
Paulo
Byte
 
Mensagens: 421
Registrado em: 07 Nov 2006 07:26

Mensagempor styg » 10 Dez 2008 12:43

MarcusPonce escreveu:Para simplificar a programação também existem LCDs com controladores
que já contám fontes de letras, mas pelo que lembro não podem colocar letras grandes sozinhos.



Marcus, sabes informar um modelo de glcd que ja tenha as fontes internamente??
Lucas
Avatar do usuário
styg
Word
 
Mensagens: 799
Registrado em: 16 Out 2006 08:24
Localização: Floripa abaixo de zero.

Mensagempor MarcusPonce » 10 Dez 2008 23:50

Controladores de LCDs gráficos com fonte de caracteres internas, que você poderá encontrar com relativa facilidade: T6963C para displays menores, SED1335 para displays maiores. O LC7981 também tem.
MarcusPonce
Byte
 
Mensagens: 166
Registrado em: 12 Fev 2007 13:58
Localização: Campinas - SP

Mensagempor bfccardoso » 14 Abr 2009 15:43

Bem galera,

está será minha primeira experiência com GLCD e já tenho um que usa o controlador KS0107B.

o grande problema que venho enfrentando logo de início é que não achei nem um datasheet decente, alguém saberia me dizer onde achar um ou caso tenha possa me enviar.

estou usando um ARM da NXP, LPC2368 e como IDE estou utilizando o uVision3 da Keil. caso alguém já tenha passado por essa experiência e saiba onde eu também possa achar alguns exemplos seria interessante.

valeu galera!
bfccardoso
Bit
 
Mensagens: 23
Registrado em: 23 Jan 2007 15:38

Mensagempor MarcusPonce » 15 Abr 2009 08:57

O KS0107B normalmente é usado com o KS0108B. O KS0107B é mais simples, tem uma função auxiliar. O ARM vai se comunicar com o KS0108B, que armazena a imagem sendo exibida.

Portanto, precisa procurar pelo KS0108 no Google.
Há mais de uma biblioteca free para ele na Internet, podem escrever e desenhar.
MarcusPonce
Byte
 
Mensagens: 166
Registrado em: 12 Fev 2007 13:58
Localização: Campinas - SP

Mensagempor tcpipchip » 15 Abr 2009 16:51

Talvez ajude
Botei a criancada para trabalhar com o KS
http://www.inf.furb.br/~maw/asm51/GraphicLCD.bas
http://www.inf.furb.br/~maw/asm51/velhagrafico.DSN
T+
TCPIPCHIP
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor bfccardoso » 16 Abr 2009 14:53

valeu pela ajuda galera!

mas...

por acaso alguém já conseguiu usar o GLCD sem verificar se ele não está mais ocupado, ou seja, aterrando o R/W?
bfccardoso
Bit
 
Mensagens: 23
Registrado em: 23 Jan 2007 15:38

Mensagempor styg » 17 Abr 2009 13:45

eu só uso aterrando o r/w. tranquilo.
Lucas
Avatar do usuário
styg
Word
 
Mensagens: 799
Registrado em: 16 Out 2006 08:24
Localização: Floripa abaixo de zero.

Mensagempor bfccardoso » 22 Abr 2009 10:57

é galera...
está complicado, não consigo colocar esse GLCD pra funcionar de jeito nenhum, as rotinas que estou usando estão abaixo, se alguém poder dar uma olhadinha pra ver se estou esquecendo de algo ou fazendo algo que não devo...

void lcd_init(void) {

Código: Selecionar todos
//  INT8U d;
  GLCD_DATA_DIR_IN()
  GLCD_CONTROL_DIR_OUT();

  CLR (PIN_RW_GLCD);
  CLR (PIN_DI_GLCD);
  CLR (PIN_E_GLCD);
  SET (PIN_CS1_GLCD);
  SET (PIN_CS2_GLCD);

  CLR (PIN_RESET_GLCD);
  DelayMiliSegundo(100);
  SET (PIN_RESET_GLCD);
  DelayMiliSegundo(100);
 
  DelayMiliSegundo(500);

  lcd_wait(0);
           
  lcd_wait(1);
  lcd_write_wait(0, LCD_INST, LCD_POWERON(1));
  lcd_write_wait(1, LCD_INST, LCD_POWERON(1));
  lcd_write_wait(0, LCD_INST, LCD_STARTLINE(0));
  lcd_write_wait(1, LCD_INST, LCD_STARTLINE(0));

  lcd_clear();
}


Código: Selecionar todos
void lcd_wait(INT8U chip) {
  while((lcd_read(chip, LCD_INST)) & (LCD_BUSY | LCD_RESET)){};
}


Código: Selecionar todos
void lcd_write_wait(INT8U chip, INT8U reg, INT8U data) {
  lcd_write(chip, reg, data);
  lcd_wait(chip);
}


Código: Selecionar todos
void lcd_clear() {
  INT8U x, y;
   
  for(x = 0; x < 8; ++x) {
    lcd_write_wait(0, LCD_INST, LCD_YADDR(0));
    lcd_write_wait(0, LCD_INST, LCD_XADDR(x));
    for(y = 0; y < 64; ++y) {
      lcd_write_wait(0, LCD_DATA, 0x00);
    }
  }
 
  for(x = 0; x < 8; ++x) {
    lcd_write_wait(1, LCD_INST, LCD_YADDR(0));
    lcd_write_wait(1, LCD_INST, LCD_XADDR(x));
    for(y = 0; y < 64; ++y) {
      lcd_write_wait(1, LCD_DATA, 0x00);
    }
  }
}
bfccardoso
Bit
 
Mensagens: 23
Registrado em: 23 Jan 2007 15:38

Mensagempor styg » 23 Abr 2009 20:59

da uma comentada nesse codigo que ajuda.
e parece que tas usando macros, entao coloca a definiçao delas tb né

mas de antemão, da uma boa olhada se tu ta respeitando todos os delays de inicializaçao e talz, que se nao respeita nao funfa mesmo.
ainda mais que tas aterrando o rw.

da uma simulada nisso.

e outra:

- qual display tas usando (o partnumber)
- tu tas começando com arm? se a resposta for sim, o problema pode estar em algum errinho na configuração do arm mesmo.
- testa o contraste antes, porque pode ta tudo funcionando e tu que nao ta vendo :?
Lucas
Avatar do usuário
styg
Word
 
Mensagens: 799
Registrado em: 16 Out 2006 08:24
Localização: Floripa abaixo de zero.

Mensagempor Sergio38br » 23 Abr 2009 21:20

Este display tem a fonte de tensão negativa para o contraste ou vc tem de fornecer externamente?

[ ]`s
Sergio
Avatar do usuário
Sergio38br
Word
 
Mensagens: 759
Registrado em: 22 Nov 2007 13:39
Localização: São Paulo - SP

Mensagempor bfccardoso » 27 Abr 2009 14:21

Valeu Sergio e Styg...

O problema estava no contraste, quer dizer, ainda está. Estou usando um pot de 10k e a tensão negativa fornecida pelo GLCD, mas quando ligo o backlight, o contraste fica muito fraco.
bfccardoso
Bit
 
Mensagens: 23
Registrado em: 23 Jan 2007 15:38

Mensagempor Sergio38br » 27 Abr 2009 14:34

Posta o esqueminha desta parte....
[ ]'s
Sergio
Avatar do usuário
Sergio38br
Word
 
Mensagens: 759
Registrado em: 22 Nov 2007 13:39
Localização: São Paulo - SP

Próximo

Voltar para ARM

Quem está online

Usuários navegando neste fórum: Google [Bot] e 1 visitante

x