Olá galera, tudo certo?

Estou com um problema na exibição de um display lcd 20x4 utilizando PIC18f4550. 

O display inicialmente mostra o que declarei no código, em seguida, a frase escrita começa  a aparecer em lugares aleatórios do display ou então caracteres diferentes dos escolhidos começam a aparecer randomicamente no display.

Estou utilizando o mikroc e sua biblioteca pronta. Já fiz com o MPLAB e continua do mesmo jeito.

Inicialmente estava utilizando um PIC16f886 e dava o mesmo erro até que resolvi migrar pro PIC18f4550 para utilizar a função de LATCH dele, mas nada desse erro sumir, então deu na mesma.

Lembrando que no proteus tudo funciona normalmente. O problema acontece quando faço as coisas na prática.

Informações gerais:

cristal 4Mhz

 

Em anexo deixo o código do mikroc e do MPLAB (já com os fuses, sendo os mesmos do MPLAB utilizados no mikroc)  e uma imagem exemplificando o que está acontecendo:

Exibições: 444

Anexos

Responder esta

Respostas a este tópico

No arquivo do mikroc, onde está escrito:

CMCON |= 0x07;
ADCON1 |= 0x0f;

Desconsiderar este " | " que está aí.

Desde já obrigado pela atenção de todos" 

Posso dar uma olhada no arquivo se vc compactar como .zip. Não instalo o winrar por inumeras razões e não recomendo a ninguem usar/instalar, uma vez que o zip é universal, gratuito e compatível a todas as plataformas (sistemas operacionais).

O .rar não se justifica. Foi popular nos anos 90 em que o zip também não era nativo e ele tinha uma função interessante de quebra de arquivos. Vc podia por ex quebrar um arquivo de 1Gb em varios de 100Mb. Para outros casos o zip foi adotado.

Mas diria as opções mais comuns:

- O microcontrolador do display é bastante lento, é preciso respeitar as larguras mínimas de pulso. Algum delay() é preciso entre o subir e descer dos pulsos, especialmente do pino enable.

- Os niveis lógicos precisam estar bem definidos. Ele não tolera bem saidas com pullups elevados ou sem eles. Use pullups.

Arquivos.zip

Entendo, coloco à disposição o arquivo compactado no formato .zip

No caso do mikroc, como estou utilizando a biblioteca pronta, posso estar errado mas acredito que a biblioteca já ficaria responsável por esse tramite da largura de pulso.

Sobre os pull ups, quando estava utilizando o 16f886 utilizava eles, ainda não testei no 18f4550, vou testar e já dou a resposta.

Edit: Testei com resistores de pull down entre as ligações de dados do display e nada mudou.

Desde já, muito obrigado pela atenção!

Boa tarde SMP,

pelo que pude ver no seu código (mikroC) e pelo que aparece na imagem,

infiro que seja um problema do display. Pois o código está correto.

Só pra tirar qq dúvida, coloca um delay no inicio da impressão das 3 linhas.

Vc tem outro display deste pra fazer teste?

RV

Tenho um outro display igualzinho, já fiz o teste, infelizmente dá o mesmo problema.

Colocou o delay que recomendei?
Qual foi o resultado?

RV

Desculpe a demora.

Fica do mesmo jeito, nada muda, aparentemente, é problema com os tempos do display que o fabricante parece ter feito de forma diferente dos displays mais usuais

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço