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:
Tags:
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.
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por