Os LCDs são utilizados em muitos projetos de eletrônica para facilitar a interação do usuário com o projeto, com o LCD você pode mostrar informações relevantes para a utilização do projeto, assim como retornar ao usuário resultados obtidos em algum tipo de processamento.
Existem diversos tipos de LCDs e o projetista deve escolher aquele que seja mais adequado ao seu projeto. Eles podem ter de 1 a 4 linhas e cada linha pode ter de 8 a 40 caracteres. Os atuais LCD têm um controlador, um circuito integrado que fica no próprio display, sendo o mais conhecio o HD44780. Este controlador possui alguns registradores especiais que veremos mais adiante como acessá-los.
A utilização dos LCDs é fácil se você já sabe utilizar um microcontrolador comum.
Aqui vamos utilizar PIC16f84 e um LCD de 16x1 para exemplificação.
A pinagem do LCD está descrita na tebela seguinte:
| Pino | Função |
| 1 | Terra |
| 2 | VCC |
| 3 | Controle do Contraste |
| 4 | R/S |
| 5 | R/W |
| 6 | E |
| 7 a 14 | Dados |
Onde:
Controle do Contraste é o pino que estará ligado a um potenciômetro de 10k e à
Tensão, e através do potenciômetro poderemos variar o contraste o LCD.
R/S é o pino que vai definir o tipo de informação que será enviada para
o controlador do LCD. Se o bit estiver em "0" a informação será tratada como um
comando(também chamado instrução) e se estiver em "1" a informação será tratada
como um caracter a ser lido ou escrito no LCD.
R/W é o pino que vai definir se será enviado ou recebido um dado do LCD.
Se estiver em "0" (write) estaremos enviando informações do microcontrolador para
o LCD, se estiver em "1"(read) estaremos obtendo dados do LCD.
E é o pino de Habilitação (Enable). Quando os dados (sejam instruções ou
caracteres) são enviados para o LCD eles ficam guardados em registradores. Para
que o LCD leia esses registradores devemos aplicar um pulso no pino de habilitação.
Dados são 8 pinos através dos quais serão enviadas as informações tanto do microcontrolador para o LCD como no sentido contrário. (Data Bus)
Neste Diagrama de Tempos de Escrita no LCD visualizamos a forma como se empregam pulsos nos pinos do LCD para enviarmos um caracter/instrução.

O item D0-D7 refere-se aos pinos que vão de 0 a 7. Neste exemplo estaremos utilizando o formato de 8bits
A seguir temos a Tabela de Instruções, onde cada trem de bit define uma
instrução específica a ser enviada para o LCD.
| RS | R/W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
| Apagar Display | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
| Retornar ao Home | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | * |
| Config. de Direção | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | I/D | S |
| Habil. Display/Cursor | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | B |
| Mover Display/Cursor | 0 | 0 | 0 | 0 | 0 | 1 | S/C | R/L | * | * |
| Nºde Linhas | 0 | 0 | 0 | 0 | 1 | DL | N | F | * | * |
| Endereços CGRAM | 0 | 0 | 0 | 1 | A | A | A | A | A | A |
| Endereços DDRAM | 0 | 0 | 1 | A | A | A | A | A | A | A |
| Indicação Busy Flag | 0 | 1 | BF | * | * | * | * | * | * | * |
| Enviar Caracter | 1 | 0 | D | D | D | D | D | D | D | D |
| Ler Caracter | 1 | 1 | D | D | D | D | D | D | D | D |
"*" é o "Don´t Care", que significa que tanto faz ser o bit 0 ou 1 naquela posição.
Configuração da Direção: Essa instrução define como os caracteres serão movidos no Display. Se o bit I/D estiver setado o Display irá incrementar o cursor depois de cada caracter escrito. O bit S, quando setado, dá um shift no Display ao escrever um caracter.
Habilitação do Display/Cursor: Com essa instrução podemos habilitar/desabilitar o Display pelo bit D (1/0) e o Cursor pelo bit C (1/0) e podemos também colocar o Cursor piscando através do bit B (1/0).
Mover Display/Cursor: Com o bit SC setado damos um shift no Display e com o bit RL definimos para que lado os caracteres se moverão, se 0 é para a esquerda e se 1 é para a direita.
Nº de Linhas: Essa instrução não faz somente a definição de quantidade de linhas do display, bit N (0=uma linha, 1=duas linhas), mas também define o tamanho do caracter, bit F (1=5x10 e 0=5x7), e tamanho, em bits, do modo de interação com o LCD, bit DL (1=8 e 0=4). Esse modo de interação merece maior atenção, pois ele define quantos bits o LCD lerá quando o pino de Habilitação for ativado. Com o tipo 8 bits, o LCD lê os 8 bits que estão nos registradores do controlador, se o tipo de interação for de 4 bits, é necessário enviar os quatro bits mais altos do byte (ou seja os bits 0, 1, 2 e 3, da direita p/ esquerda), aplicar um pulso no pino de habilitação, depois enviar os outros 4 bits e finalmente aplicar outro pulso no pino de habilitação.
Após ligar o LCD devemos executar um processo de inicialiazação do LCD antes
de enviar qualquer tipo de instrução ou caracter. Este processo está descrito no
passo-a-passo abaixo.
Clique aqui e veja o Esquema Elétrico do exemplo que veremos a seguir.
Agora clique aqui e pegue o programa que fará o LCD mostrar a mensagem "Ampere".