Menus de configuração no Painel de Administração

GVensino - fome de saber!

Interface de Display de LCD com Microcontrolador PIC


Neste tutorial, vamos aprender como fazer, passo a passo, a ligação de um display de lcd alfanumérico com um microcontrolador PIC, da Microchip.

 

Gravamos duas vídeo-aulas ensinando a escrever no display de LCD. Você pode acessá-las pelos links abaixo:

Usando Display de LCD no PIC passo-a-passo via CCS

Usando Display de LCD no PIC passo-a-passo via CCS – Parte 2

Esta é uma versão em texto dessas vídeo-aulas.

 

Softwares Utilizados:

  • PIC C Compiler + CCS versão 5, para escrever o código e compilá-lo;
  • ISIS Proteus 7.8

 

Displays de LCD Alfanuméricos

LCD é a sigla para Liquid Crystal Display, o que em português significa Display de Cristal Líquido.

lcd-42426_640

Esses displays, como o próprio nome diz, são alfanuméricos, ou seja: alfa (alfabeto) numéricos (números. Só trabalham exibindo caracteres, letras, números e símbolos como @!#$%*&, que também são caracteres.

Em contraste, existem os LCDs gráficos, que são maiores e capazes de exibir desenhos mais complexos. Os LCDs gráficos podem ser monocromáticos (2 cores, como o dos celulares antigos) ou coloridos (como o dos smartphones modernos). Entretanto, nosso foco neste tutorial é tratar apenas dos LCDs alfanuméricos.

Os displays de LCD alfanuméricos são bastante utilizados para mostrar informações. Podemos encontrá-los em aparelhos de telefone/fax, em centrais de alarmes, equipamentos industriais, como IHMs (Interface Homem-Máquina), relógios, equipamentos de redes, bem como em projetos eletrônicos em geral.


Hardware – Pinagem do LCD

A maioria dos displays de LCD alfanuméricos presentes no mercado utilizam o controlador HD 44780, que é um chip da Hitachi responsável por controlar o display. Esse controlador já vem embutido no próprio display e é ele quem controla cada pixel (pontinho) do display. Ou seja, o HD 44780 é quem faz realmente o trabalho difícil, que é controlar cada pontinho do display para que, combinados, possam exibir as informações que queremos. Por isso mesmo, esse chip possui em sua memória o desenho de todos os caracteres ocidentais (alfabeto A-Z, números 0-9 e símbolos mais usados, como @!#.,$%&*()[]{};) que são conhecidos como caracteres ASCII, e também alguns caracteres do alfabeto japonês kana. Outros controladores de displays de LCD, como o ST7065C, são plenamente compatíveis com o HD44780, de forma que a pinagem que veremos a seguir, pode-se dizer, é um padrão adotado por quase todos os fabricantes:

Screen Shot 08-16-15 at 02.31 PM

Pino Função
1 VSS – Deve ser ligado ao GND
2 Vdd – Alimentação do display, de +3,3V a +5V
3 Vo (também chamado de Vee) é o contraste do display. Deve ser ligado ao cursor de um potenciômetro de 10k.
4 RS
5 RW
6 E (Enable)
7 D0
8 D1
9 D2
10 D3
11 D4
12 D5
13 D6
14 D7
15 Anodo do Backlight (luz de fundo do Display) (+5V)
16 Catodo do Backlight (luz de fundo do display) (GND)

Atenção: Em alguns displays, a localização dos pinos 16 e 15 vem antes do pino 1. Isso acontece para que os pinos da luz de fundo (Backlight) fiquem próximos dos pinos de alimentação do display, facilitando a conexão entre eles. Quando estiver trabalhando com um display de LCD alfanumérico na prática, preste muita atenção na posição correta da numeração dos pinos. Veja um exemplo na foto abaixo:

Exemplo de display com a pinagem começando em 16, 15 e indo p/ 1, 2, 3...
Exemplo de display com a pinagem começando em 16, 15 e indo p/ 1, 2, 3…

 


Hardware – Conexão com o PIC

A ligação padrão do display de LCD no PIC se dá através dos pinos do PORTD (RD0…RD7) e em casos de PICs menores, que não chegam até o PORTD, o padrão é ligar o display no PORTB. Entretanto, é possível conectar o LCD em outros PORTs, alterando, para isto, a configuração do Driver de LCD (veremos como fazer isto mais adiante).

Usaremos em nosso tutorial os seguintes componentes, dentro do ISIS Proteus:

  • PIC16F88 (Microcontrolador escolhido);
  • LM016L (Display de LCD Alfanumérico 16×2);
  • POT-HG (Potenciômetro de 10k);

Como o microcontrolador PIC16F88 não possuí PORTD, o PORT padrão para o Display é o B.

E faremos as ligações conforme a imagem abaixo:

Screen Shot 08-16-15 at 02.42 PM

Pino Display Pino PIC PORTB Pino PIC PORTD
4 – RS RB1 RD1
5 – RW RB2 RD2
6 – E RB0 RD0
7 – D0
8 – D1
9 – D2
10 – D3
11 – D4 RB4 RD4
12 – D5 RB5 RD5
13 – D6 RB6 RD6
14 – D7 RB7 RD7

Repare 3 coisas:

  • A pinagem é a mesma se ligarmos o LCD no PortB ou no PortD; Lembre-se: o padrão é o PORTD. Se o PIC não tiver, o padrão passa a ser o PORTB. Porém podemos alterar livremente na programação depois. Neste tutorial, usaremos a ligação padrão;
  • Os pinos D0, D1, D2 e D3 do display ficam sem conexão alguma;
  • No ISIS Proteus, não há os pinos 15 e 16, para ligação do Backlight. Porém na prática, devemos ligá-lo, ou o display ficará escuro.

 

Software – Configurando o PIC C

Finalmente, chegou a hora de escrevermos alguma coisa no nosso display! Para isso, vamos criar um novo projeto no PIC C Compiler, versão 5, através do PIC Wizard:

CCS PIC Wizard

Então, vamos escolher um nome e um local para salvar o projeto e clicar em Salvar. No meu caso, criei uma pasta chamada LCD 01 e um projeto com o mesmo nome. Você é livre para escolher a pasta e o nome que quiser:

PIC C - Onde Salvar o Projeto

Aparecerá, então, o nosso assistente, o PIC Wizard. Vamos escolher, em Device, o modelo do microcontrolador que estamos trabalhando, o PIC 16F88.

Vamos aproveitar também e selecionar o oscilador interno (Internal) e colocar a frequência (Crystal Clock Speed) em 4MHz, que é a frequência padrão do oscilador interno. Veja:

Pic Wizard01

Agora, no menu do lado esquerdo, desça até o final, na opção Fuses, e desmarque “Master Clear Pin Enabled”, uma vez que não utilizaremos o pino RA5 como pino de Reset:

Screen Shot 08-16-15 at 03.06 PM

Feito isso, a configuração básica do PIC está pronta. Agora, vamos configurar o display de LCD.

Para isto, no menu do lado esquerdo, vá até LCD (External) e marque a opção Use LCD:

PIC C Use LCD

Repare que, quando você marcou a opção Use LCD, os 7 pinos do LCD foram habilitados como None.

Se você deixar os pinos como None, os pinos estarão configurados, conforme a ligação padrão, que vimos acima (E -> RB0, RS -> RB1, RW-> RB2, etc).

Bastará então clicar em Create Project.


 

E se eu quiser usar outros pinos? (opcional)

Se você quiser mudar os pinos nos quais o PIC será ligado no display, basta alterar nessa tela. Por exemplo, ao invés de usar a ligação padrão, vou fazer a minha própria ligação, dessa forma:

En -> RA2
RS -> RA0
RW -> RA1
D4 -> RB4
D5 -> RB5
D6 -> RB6
D7 – RB7

Às vezes, mudar a ligação padrão facilita as ligações das trilhas da placa, especialmente quando vamos confeccionar uma PCB para nosso projeto. Para fazer a ligação que fiz acima, bastaria configurar da seguinte forma:

PIC C LCD pinagem personalizada

Viu como é fácil? Você só precisa tomar cuidado porque, em alguns microcontroladores PICs, alguns pinos só funcionam como entrada e não como saída. Consulte o datasheet do microcontrolador para ter certeza que todos os pinos que você usou para o LCD podem ser utilizados como pinos de saída. No PIC 16F88, por exemplo, o pino RA5 é apenas entrada e o pino RA4, se usado como saída, precisa de um resistor de pull-up.

 


Software – Programando

Finalmente, após clicar em Create Project, iremos começar a programar. Veja como ficou a nossa tela de código:

Screen Shot 08-16-15 at 03.21 PM

 

Em código textual:

 

Repare que foi inserido:

  • Linha 3: A Biblioteca do LCD, que é um arquivo chamado lcd.c e que contém todas as informações necessárias para a comunicação do PIC com o Display;
  • Linha 8: O comando lcd_init();,executado apenas uma vez (por isso, fora do while), para inicializar a comunicação do PIC com o LCD.

Está tudo pronto! Vamos agora, escrever uma mensagem no display.

Para isso, usaremos os comandos printf e lcd_putc. Veja:

printf (       );
O comando printf imprime alguma coisa em algum lugar. Normalmente é usado para enviar dados para a serial (USART) do PIC, mas também pode ser usado para enviar caracteres para um display de LCD, como é o nosso caso.
printf ( lcd_putc, "         " );
O comando lcd_putc, associado ao printf, diz que vamos imprimir algo no LCD. Entre as aspas duplas, inserimos a frase que enviaremos ao display.

Podemos enviar caracteres especiais para o display de LCD, com funções específicas:

  • \a – Coloca o cursor na primeira posição, no topo, à esquerda;
  • \f – Limpa o display, voltando o cursor à primeira posição;
  • \n – Vai para a segunda linha;
  • \b – Volta o cursor uma posição para trás.

No nosso exemplo, vamos limpar o display e então escrever a frase Olá Mundo. Veja como fica:

 

Escrevendo no LCD

 

Explicação do código acima:

LCD Explicação comandos

Em código textual:

Compile o código, apertando F9, e caso não tenha dado nenhum erro, vamos testar no Proteus.

No Proteus, clique duas vezes no microcontrolador. Em Program File, vá até onde está a pasta do programa que você criou. Deverá aparecer 2 arquivos. Escolha o com menor tamanho dos dois. E em Processor Clock Frequency, coloque a frequência que colocamos anteriormente, ou seja, 4MHz. Veja:

Configuração Proteus

Dê OK e dê o Play. Se tudo estiver certo, a nossa frase deverá aparecer no display:

PIC C LCD Funcionou

Parabéns!

 

1Respostas em "Interface de Display de LCD com Microcontrolador PIC"

Deixe sua mensagem

©GVensino - Todos os Direitos Reservados
css.php