Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
Denis Bopp

[RESOLVIDO] Problemas ao ligar display LCD no PIC

Recommended Posts

Bom dia pessoal, estou tendo problemas para fazer o meu circuito funcionar, que por sinal é muito simples, consiste num PIC 16F84A e um display LCD 2x16 trabalhando em 4 bits, estou usando o MPLAB para escrever o código, bom, na teoria ele funciona, mas quando gravo no PIC nada acontece, o display não dá sinal de vida, já troquei o display e o problema continua, o PIC está legal, pois já gravei outras rotinas e ele roda sem problema.

1 - Resolvido pessoal, a minha ligação do pino VEE estava errada! : (

2 - Melhorei a rotina de inicialização com tempos maiores!!

Editado por Denis Bopp
Resolvido!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

É vdd mostre o circuito fica melhor de ajudar.

1- o LCD ligado sem nada ligado só a alimentação deverá ficar com a linha 1 (a primeira de cima) com todos os quadradinhos ligados. Se assim estiver esta OK, se não, troque.

2- tem que ver a ligação dos pinos deles, por exemplo o 5 deve ser aterrado também, não pode esquecer de ajustar o contraste ou de ligar o pot de contraste.

3- outros...etc's

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tenho como enviar imagens, pois o nosso servidor bloqueia alguns sites, mas vou descrever o circuito:

PIC LCD

RBO D4

RB1 D5

RB2 D6

RB3 D7

RB4 E

RB5 RS

O pino RW está em GND, VDD e VEE em +5 e VSS em GND, como disse a comunicação é em 4 bits, e está rodando no MPLAB.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo Denis,

Já tentou colocar um capacitor cerâmico de 10 a 100pF entre os pinos VDD e GND do PIC?

P.S.: O mais próximo possível do PIC.

Grande Abraço,

R.Costa.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Amigo Denis,

Já tentou colocar um capacitor cerâmico de 10 a 100pF entre os pinos VDD e GND do PIC?

P.S.: O mais próximo possível do PIC.

Grande Abraço,

R.Costa.

Na verdade não, vou tentar isso também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Denis,

desculpe, mas informei o valor do capacitor ceramico errado!

voce deve utilizar valores de 10nF a 100nF!

Desculpe,

Abração,

R.Costa.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Denis, você conseguiria alterar o esquema para conectar o pino VEE ao terra (0V) e não ao +5V?

Oi Fernando, fiz melhor coloquei um trimpot para regular o contraste e resolveu o meu problema, esta ligação que você citou realmente era a causa do problema!

Obrigado pela atenção pessoal!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigos, um outro probleminha surgiu agora, quando pressiono o reset nem sempre o lcd é limpo, as vezes ficam caracteres, ou a mensagem pela metade e assim por diante, o código segue abaixo:

void main(void){

i = 0;

x = 0;

y = 0;

strcpy(a, "");//Limpa a cadeia principal

strcpy(buf, "");//Limpa a cadeia auxiliar

configura_pic();//Configuração do microcontrolador

configura_lcd();//Configuração do lcd

envia_comando(_LCD_CLEAR);//Limpar o lcd

__delay_ms(40);//Aguardar 40ms

strcpy(a, "Testando...");

envia_cadeia(a);//Imprime a primeira mensagem

ei();//habilita as interrupções

... continua

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conforme necessidade do autor, os tópicos foram fundidos...

Editado por Bcpetronzio
Corrigir falha na digitação do texto

Compartilhar este post


Link para o post
Compartilhar em outros sites
Olá amigos, um outro probleminha surgiu agora, quando pressiono o reset nem sempre o lcd é limpo...

Normal. O LCD é uma memória RAM externa visual. Enquanto nenhum novo comando de escrita for enviado, ele vai manter os últimos dados que foram enviados para ele.

Depois da inicialização do display, envie CLRSCR, e o LCD será limpo. Não tem outra solução, a não ser retirar a alimentação do display.

LCD não tem RESET.

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites
Normal. O LCD é uma memória RAM externa visual. Enquanto nenhum novo comando de escrita for enviado, ele vai manter os últimos dados que foram enviados para ele.

Depois da inicialização do display, envie CLRSCR, e o LCD será limpo. Não tem outra solução, a não ser retirar a alimentação do display.

LCD não tem RESET.

[]'s

Oi Maurício, se você notar o comando já está sendo enviado na rotina.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ah, tá! Nesse caso foi você quem escreveu as rotinas do LCD? Ou você está usando rotinas já prontas do compilador? Qual a velocidade que seu MCU tá processando? LCDs respondem bem à até uns 2MHz.

Quando você aterra R/W, não pode mais checar o flag BF. Nesse caso, entre uma instrução e outra pro LCD, é bom dar um delay de uns 2ms. Não precisa ser um tempo maior, porque a instrução que mais consome tempo é justamente a CLEAR SCREEN, que come 1,5ms na grande maioria. Isso, depois que o LCD já foi inicializado! Na inicialização, você precisa seguir os tempos entre instruções que o manual recomenda, e são bem maiores do que esses 2ms.

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×