terça-feira, 31 de maio de 2011

Controlando um Display LCD 16x2 com PIC 16F84A

Segue um exemplo de como controlar um LCD 16x2 modo 4Bits utilizando microcontrolador PIC16F84A (Pode ser alterado para outro microcontrolador PIC com poucas alterações).

Utilizando uma biblioteca de controle, facilmente configuramos e enviamos caracteres ao LCD, essa biblioteca prepara o PORTB para efetuar essa função.

Características da biblioteca:


Estrutura de configuração do PORTB:

[PINOS PORTB]-----------[PINOS LCD]
[  8    RB2 ]-----------[  4   RS ]
[  9    RB3 ]-----------[  6   E  ]
[  10   RB4 ]-----------[ 11   D4 ]
[  11   RB5 ]-----------[ 12   D5 ]
[  12   RB6 ]-----------[ 13   D6 ]
[  13   RB7 ]-----------[ 14   D7 ]
Comandos disponíveis:

Lcd_Config - Configura e inicializa o display
Lcd_Cmd - Envia um comando ao display
Lcd_Chr - Envia um caracter ao display

Montagem do circuito:







Segue um exemplo de aplicação, e a biblioteca do LCD:

° main.asm
° lcd.inc
° lcd4bit.DSN (Proteus ISIS)
° main.hex

Qualquer dúvida, fico a disposição! Abraços!


24 comentários:

  1. Olá estou desenvolvendo um projeto do qual presiso de um display de 39 colunas por 8 linhas, vc sabe me dizer onde posso encontrar um display que atenda minhas necessidades bem como qual pic seria melhor para utilizar ...grato...

    Sena.

    ResponderExcluir
  2. Bom dia Sena, acredito que a solução para seu projeto seria um display gráfico.
    Utilizando um PIC18F452 por exemplo.

    Vou tentar postar um exemplo mais rapido possível aqui, assim pode ajudar um pouco mais...

    Abraços.

    ResponderExcluir
  3. Olá amigo!

    Preciso adaptar isso para usar com PIC16F690, sou novato nesta área de PICs, você poderia me dar uma força?

    abraços,

    ResponderExcluir
  4. ah esqueci de mencionar, estou usando usando um display MGD1602B..

    ResponderExcluir
  5. Ola Saberia me dizer o que poderia acontecer para um lcd 16x2 não receber comando com PIC16F84A? O lcd fica em estado de espera, porem nao acontece mais nada com ele, ja tentei em assemble e em c com sdcc porem não conseguir fazer funcionar. Já testei com varios schemas inclusive com um parecido com esse que você usou.

    Se tiver alguma dica e puder me enviar por email eu agradeceria.
    Batista johnibat@yahoo.com.br

    ResponderExcluir
  6. Amigo, por acaso vc não teria este programa em C?

    ResponderExcluir
    Respostas
    1. Qual compilador vc vai utilizar amigo ? CCS ?

      Excluir
    2. Isso, CCS. Estou utilizando o Proteus para testar o circuito.

      Excluir
    3. Amigo, conseguiria disponnibilizar o programa?

      Excluir
  7. BOA TARDE!,DESCULPA A PERGUNTA, MAS ONDE ESTÁ O ARQUIVO .HEX

    ResponderExcluir
    Respostas
    1. Boa tarde! Não estava disponível o HEX, havia deixado apenas o código fonte, está disponível agora ;)

      Abraços.

      Excluir
  8. Amigo, estou reaprendendo a trabalhar com pic. Você teria alguma apostila detalhando a programação em C? A minha dificuldade está no cabeçalho do programa, em "setar" as portas.

    ResponderExcluir
  9. Bom dia, gostaria de saber se pode me ajudar!? Preciso mostrar em um Display 16x2 para mostrar uma palavra na linha de cima e um contador na linha de baixo. Realmente não sei como e por onde começar, mas estou vendo os exemplos e percebo que não parece tão difícil assim!
    e me diga como faço para visualizar o exemplo que vc disponibilizou aqui no blog, qual programa eu devo usar? Desde já te agradeço Everton (Atividade Tecnológica)
    Obrigado!

    ResponderExcluir
    Respostas
    1. Helio, boa tarde. Desculpe a demora em responder, estou preparando novas postagens para o site.

      Para visualizar o projeto lcd4bit.DSN , você deve instalar o programa Proteus ISIS (http://www.baixebr.org/softwares/ferramentas-pc/proteus-professional-suite-design-7-7)

      Qual compilador você está utilizando? MPLAB, CCS?
      Fico a disposição para ajudar no que for possível, se preferir entre em contato eletronica@email.com

      Abraços

      Excluir
  10. Não conseguir compilar. Onde adiciono a biblioteca LCD.INC no MPLAB?

    ResponderExcluir
    Respostas
    1. Bom dia Raquel. A biblioteca LCD.INC deve estar na mesma pasta (diretório) que o arquivo MAIN.ASM

      Se estiver ocorrendo erros ao compilar, desative o "case sensitive" do MPLAB:

      http://www.micro-examples.com/pics/095-ASM-TRANSLATOR-mplaboption.JPG

      Abraços.


      Excluir
    2. Obrigada amigo, agora deu certo. O "Case sensitive" já estava desabilitado e continuou o erro. Então habilitei-o e tudo ok. Valeu as dicas, nem sabia que tinha que mexer nessas coisas rsrs!

      Excluir
    3. CORRIGINDO A BESTEIRA QUE ESCREVI ACIMA: DESABILITEI O CASE SENSITIVITY E FUNCIONOU.

      Excluir
    4. Tudo bem Raquel!
      Não disse besteira alguma, as configurações são um pouco confusas no início, mas aos poucos vc pega o jeito.
      Qualquer dúvida é só perguntar.
      Abraços.

      Excluir
  11. Este comentário foi removido pelo autor.

    ResponderExcluir
  12. boa tarde amigo...cara, to com uma duvida aqui..fiz um circuito usando o mesmo pic e tambem o mesmo display que você usou no projeto, liquei as mesmas portas de um em outro, porem não aparece nada escrito...o display acende, e so ocorre isso..nada mais..tem como me da essa força...estou desesperado...
    lembrando que a programação usada foi essa que você postou em .HEX
    flw

    ResponderExcluir
    Respostas
    1. Boa tarde amigo! Desculpe a demora em responder.
      Você montou o mesmo esquema eletrônico deste exemplo?

      Lembre-se que o pino 4 do 16F84A deve estar em pull-up , ou seja, liga-lo ao positivo, caso contrário não irá funcionar ok.

      Excluir
  13. Oi, estou usando um pic18f2580 com um LCD 16x2 e não estou conseguindo fechar a comunicação, posso usar esse mesmo esquema de pinos que você usou com o pic16F84A ?? Caso esta não dê, você pode me indicar quais usar!!

    ResponderExcluir