Página 1 de 2
GLCD + ARM

Enviado:
10 Dez 2008 06:38
por Paulo
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.

Enviado:
10 Dez 2008 08:13
por MarcusPonce
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.

Enviado:
10 Dez 2008 08:21
por Paulo
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é +...

Enviado:
10 Dez 2008 12:43
por styg
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??

Enviado:
10 Dez 2008 23:50
por MarcusPonce
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.

Enviado:
14 Abr 2009 15:43
por bfccardoso
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!

Enviado:
15 Abr 2009 08:57
por MarcusPonce
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.

Enviado:
15 Abr 2009 16:51
por tcpipchip

Enviado:
16 Abr 2009 14:53
por bfccardoso
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?

Enviado:
17 Abr 2009 13:45
por styg
eu só uso aterrando o r/w. tranquilo.

Enviado:
22 Abr 2009 10:57
por bfccardoso
é 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);
}
}
}

Enviado:
23 Abr 2009 20:59
por styg
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


Enviado:
23 Abr 2009 21:20
por Sergio38br
Este display tem a fonte de tensão negativa para o contraste ou vc tem de fornecer externamente?
[ ]`s
Sergio

Enviado:
27 Abr 2009 14:21
por bfccardoso
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.

Enviado:
27 Abr 2009 14:34
por Sergio38br
Posta o esqueminha desta parte....
[ ]'s
Sergio