Pic LCD 20x4

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Pic LCD 20x4

Mensagempor falcaum » 01 Set 2009 22:14

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
Editado pela última vez por falcaum em 02 Set 2009 15:48, em um total de 1 vez.
Avatar do usuário
falcaum
Bit
 
Mensagens: 10
Registrado em: 31 Ago 2009 15:04
Localização: Espírito Santo - Vitória

Mensagempor ze » 02 Set 2009 07:39

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ç
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor falcaum » 02 Set 2009 15:47

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
Avatar do usuário
falcaum
Bit
 
Mensagens: 10
Registrado em: 31 Ago 2009 15:04
Localização: Espírito Santo - Vitória

Mensagempor falcaum » 21 Set 2009 10:42

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
Avatar do usuário
falcaum
Bit
 
Mensagens: 10
Registrado em: 31 Ago 2009 15:04
Localização: Espírito Santo - Vitória

Mensagempor Djalma Toledo Rodrigues » 21 Set 2009 11:07

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?
.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x