Página 1 de 1

Pic LCD 20x4

MensagemEnviado: 01 Set 2009 22:14
por falcaum
Olá a todos, comecei no fórum agora e mesmo pesquisando não consegui resolver o meu problema

Não consigo de maneira nenhuma fazer um lcd 4x20 funcionar num pic 16f877a
O erro pode ser bem simples, usando tentando usar no modo 4 bits, mas as ligações de dados foram
Código: Selecionar todos
D4 -> porta b0
D5 -> porta d7
D6 -> porta d6
D7 -> porta d5

Então, errei feio? é realmente necessário colocar todos as saídas de dados do lcd no mesmo conjunto de portas?
enable, rs e r/w estão nas portas b(7, 6 e 5)

Montei a placa antes por que pensei que a programação se adaptaria ao hardware, pelo menos nessa parte...
De resto já tentei vários drivers para o LCD, testei inclusive quase todos das páginas:
http://asm51.eng.br/phpBB/viewtopic.php?t=7812
http://asm51.eng.br/phpBB/viewtopic.php?t=7716

O controlador, pelo datasheet é ks0066(1º linha 0x00 terceira 0x40), mas não achei nenhum driver específico para ele então testei com todos que vi :shock:
Qualquer sugestão é valida, valeu

MensagemEnviado: 02 Set 2009 07:39
por ze
Oi. Pra posicionar os bits em portas diferentes é fácil. Veja:
Código: Selecionar todos
#define D4 RB0
#define D5 RD7
#define D6 RD6
#define D7 RD5

void coloca_byte_em_portas_separadas(unsigned char dado)
{
D4=dado;
D5=dado>>1;
D6=dado>>2;
D7=dado>>3;
}
com este artifício não precisa colocar o byte na mesma porta

e por favor diga que não usa ccs
abç

MensagemEnviado: 02 Set 2009 15:47
por falcaum
Pois é, css... com o PCW IDE 3.3, melhor mudar pra HITECH ou mikroC?
na verdade eu preferia em assembler, já programei para um atmega8 com o datasheet e bloco de notas, mas o parceiro de projeto não aceitou

sobre o problema boa parte dos drivers escrevem quase desse jeto
Código: Selecionar todos
void lcd_envia_nibble( byte dado )
{
output_bit(lcd_d4,bit_test(dado,0));
output_bit(lcd_d5,bit_test(dado,1));
output_bit(lcd_d6,bit_test(dado,2));
output_bit(lcd_d7,bit_test(dado,3));
}


corrigindo ks0066 com 1º linha 0x00 e 2º 0x40

MensagemEnviado: 21 Set 2009 10:42
por falcaum
Funcionou, fui testando a inicialização direto até funcionar
Depois tive(tenho) o problema do uC não ler o busyflag, trava no while de leitura que tem na inicialização, provável que eu tenha matado o pobre coitado
Não consegui testar o display sem r/w por que agora tem 1,64v no terra do pic... não sei se estava assim antes, pelo menos funcionava, vou encher a placa de capacitor
O Pic tá inteiro, 16f877a, gravando e lendo sem problema, já matei dois 628 -.-'
Se eu conseguir explodir um deles eu desisto até lá paciência

MensagemEnviado: 21 Set 2009 11:07
por Djalma Toledo Rodrigues
falcaum escreveu: ... Não consegui testar o display sem r/w por que agora tem 1,64v no terra do pic... não sei se estava assim antes, pelo menos funcionava, vou encher a placa de capacitor

Não estão interligados os Terras do PIC e do Display?
.