Você está na página 1de 31

Aula 07: Display LCD – modos de configuração,

acionamento e desenvolvimento de
funções para criação de bibliotecas.

Profº: Hovacker
São Paulo, 2019
DISPLAYS

• LCD Alfanumérico;

• LCD Gráfico;

• OLED Organic LED

• TFT Thin film transistor - Transistor de película fina

Profº Ricardo Hovacker


DISPLAY LCD

• Os displays são fornecidos em diversos formatos e tamanhos e são sempre


especificados em número de caracteres exibidos, no formato de colunas e
linhas.

• Os mais comuns são os 16X02 (16 colunas por 2 linhas). Mas também
existem muitos projetos com 08x02 (oito colunas por duas linhas), 16X01 (16
colunas por 1 linha), 16X04 (16 colunas por 4 linhas), 20X01 (20 colunas por
1 linha), 20X02 (20 colunas por 2 linhas) e 20X04 (20 colunas por 4 linhas).

Profº Ricardo Hovacker


DISPLAY LCD

• 08x02

• 16x01

Profº Ricardo Hovacker


DISPLAY LCD

• 16x02

• 20x01

Profº Ricardo Hovacker


DISPLAY LCD

• 20x02

• 20x04

Profº Ricardo Hovacker


DISPLAY LCD
Comparação de displays com e sem backlight:
COM BACKLIGHT SEM BACKLIGHT

Profº Ricardo Hovacker


DISPLAY LCD

• Formação dos Caracteres


Cada caractere do LCD é composto de *8 pixels na
vertical e de 5 pixels na horizontal:

Estes caracteres são conhecidos como 5X7, uma vez


que a linha inferior é reservada para o cursor.
*Existem os displays chamados “big numbers” (com 11 pixels de altura).

Profº Ricardo Hovacker


DISPLAY LCD
• Conexões:
São classificados em 4 grupos:
1-) 8 pinos de dados;
2-) 3 pinos de controle;
3-) 3 pinos de alimentação;
4-) 2 pinos de alimentação do backlight (se houver).

Alguns displays apresentam estas informações na serigrafia*:

* Caso contrário, obtenha essa informação através do datasheet do fabricante.

Profº Ricardo Hovacker


DISPLAY LCD
• Descrição dos pinos:

Profº Ricardo Hovacker


DISPLAY LCD
• Descrição dos pinos de Alimentação:
Pino 1 (Vss) é o GND, pode ser ligado juntamente com o pino Vss do PIC.

Pino 2 (Vdd) é o positivo, pode ser ligado juntamente com o Vdd do PIC.

Pino 3 (Vo) é onde controlamos o contraste do LCD. Para isso devemos


ligá-lo a um potenciômetro ou trimpot de 4k7 a 10kΩ conectado ao Vss e
Vdd (atuando como um divisor de tensão), de acordo com o esquemático
ao lado:

Profº Ricardo Hovacker


DISPLAY LCD 1 - Dados tratados como caractere
• Descrição dos pinos de Controle:
0 - Dados tratados como comandos

Pino 4 (RS) é o Seletor de Registros. Resumindo, quando este pino está em nível lógico baixo (0),
os dados enviados para o LCD são tratados como comandos. Quando este pino está em nível
lógico alto (1), os dados são tratados como caracteres.

Pino 5 (R/W) determina se os dados serão lidos ou escritos. Leitura (1) ou escrita (0).

Pino 6 (Enable) é a linha de habilitação para os comandos do LCD. É utilizado para iniciar a
transferência de comandos ou caracteres.
ATENÇÃO: Quando estiver enviando algo para o display, os dados só serão transmitidos a partir
de uma transição de high para low deste sinal!!!

delay_us(500);

Profº Ricardo Hovacker


DISPLAY LCD
• Descrição dos pinos de dados:
Pinos 7 a 14 (dados) Fazem parte do barramentos de dados. O display pode trabalhar com o
barramento em 8 vias em paralelo (8 bits - D0 a D7) ou ainda, pode trabalhar com um
barramento de 4 vias (4 bits - D4 a D7), mas os dados devem ser transmitidos em dois pacotes.
Cada pacote de 4 bits é conhecido como "nibble". Este é um excelente recurso para minimizar o
uso de pinos de I/O do microcontrolador, mas ocupa mais memória. A decisão de utilizar 8 vias
ou 4 vias é exclusiva do desenvolvedor do projeto.

Pinos 15 e 16 (Backlight) Se existirem, são os responsáveis por iluminar a tela de fundo do


display. Pinos de anodo e catodo são alimentados em Vdd e Vss respectivamente.

Profº Ricardo Hovacker


DISPLAY LCD
• Inicialização:
Ao ligar o LCD na alimentação, as linhas ficam todas preenchidas (borradas):

Para que ele fique operacional, precisamos inicializá-lo, passando diversas informações de
configuração.

Profº Ricardo Hovacker


DISPLAY LCD
• Inicialização – Configurando Funções do display LCD:

1 1 0

0x38

Profº Ricardo Hovacker


DISPLAY LCD
• Inicialização – Configurando Controle do display LCD:

1 0 0

0C

Profº Ricardo Hovacker


DISPLAY LCD
• Inicialização – Configurando Modo de deslocamento do display LCD:

06H

Profº Ricardo Hovacker


DISPLAY LCD
• Inicialização – “Limpando” a tela do display LCD:

Profº Ricardo Hovacker


DISPLAY LCD

• Exemplo de configuração de inicialização para display LCD 16x02 em modo 8 bits:

0x38 //Config. Funções (Nº de bits e Nº de linhas)


0x0C //Config. Display (On/Off e Cursor)
0x06 //Config. Cursor (Sentido deslocamento)
0x01 //Config. Tela (“limpa” tela do display)

Profº Ricardo Hovacker


DISPLAY LCD

• Endereçamento:

Repare que para escrever no início da


primeira linha de qualquer display é
necessário acessar o endereço 0x80.

Profº Ricardo Hovacker


DISPLAY LCD

• Desenvolvimento do código:

/*********************************************
Código de testes para display LCD
/*********************************************/
#include<16F628A.h>
#fuses XT, NOWDT, NOLVP
#use delay(clock = 4000000)
#use fast_io(b) //modo manual, porém mais rápido e eficaz... É necessário setar o tris.

Profº Ricardo Hovacker


DISPLAY LCD

/*********************************************
VARIÁVEIS E DEFINES
/*********************************************/
#define rs pin_a0 //Caractere/comando.
#define enable pin_a1 //Pulso de habilitação.
#define limpaLCD 0x01 //”Limpa” a tela.
#define Linha_2 0xC0 //Endereço da linha 2.
#define Linha_1 0x80 //Endereço da linha 1.

Profº Ricardo Hovacker


DISPLAY LCD

/*************************************
PROTÓTIPOS DE FUNÇÕES
*************************************/
void inicia_lcd(void);
void LCD_texto(char letra);
void LCD_comando(int comando);

Profº Ricardo Hovacker


DISPLAY LCD
/**************************************************
MAIN
**************************************************/
void main(){
set_tris_b(0x00); //Configura o PORTB como saída.
Inicia_lcd(); //chama função para inicializar o LCD.
while(TRUE){
LCD_comando(Linha_1);
LCD_texto(“Teste");
LCD_comando(Linha_2);
LCD_texto(“PIC e LCD");
delay_ms(2000);
LCD_comando(LimpaLCD);
delay_ms(5);
}
}

Profº Ricardo Hovacker


/**************************************************
FUNÇÃO INICIA LCD
**************************************************/
void inicia_lcd(){
output_low(rs); //coloca lcd no modo de comando.
output_b(0x38); //Configura modo 8 bits, 2 linhas e 5x7 pixels.
output_high(enable); //pulso no enable.
output_low(enable);
delay_ms(20); //timing do display
output_b(0x0c); //Configura o cursor.
output_high(enable); //pulso em enable.
output_low(enable);
output_b(0x06); //incremento a direita do cursor.
output_high(enable); //pulso em enable.
output_low(enable);
output_b(limpaLCD); //Limpa display.
output_high(enable); //pulso em enable.
output_low(enable);
delay_ms(5);
}
Profº Ricardo Hovacker
/**************************************************
FUNÇÃO LCD_TEXTO
**************************************************/
void LCD_texto( char letra) {
output_high(RS); //modo de dados.
output_b( letra); //coloca o caractere recebido no portB.
output_high(enable); //pulso no enable.
delay_us(500); //delay necessário para estabilizar no simulador Proteus
output_low(enable);
}

Profº Ricardo Hovacker


/**************************************************
FUNÇÃO LCD_COMANDO
**************************************************/
void LCD_comando( int comando){
output_low(RS); //modo de comando.
output_b( comando); //coloca o comando recebido no portB.
output_high(enable); //pulso no enable.
delay_us(500); //delay necessário para estabilizar no simulador Proteus
output_low(enable);
}
// FIM

Profº Ricardo Hovacker


VAMOS TESTAR NOSSO CONHECIMENTO

Montando Bibliotecas:

• Criar um novo arquivo com as funções específicas do LCD e salvar com a extensão .c
(c source files).
Porém, este arquivo deve ser adicionado na pasta other files.

• Também é necessário criar um arquivo com as configurações do PIC, protótipos,


defines e variáveis. Entretanto, este arquivo será salvo com a extensão .h (header
files), pois não contém rotinas e sim configurações e diretivas de pré-
processamento. Este arquivo será incluso na pasta header files de seu projeto.

Profº Ricardo Hovacker


VAMOS TESTAR NOSSO CONHECIMENTO
• Teste no Proteus VSM:

LCD: LM016L

Teste as configurações
de Linhas (1 ou 2)

Escreva:
Curso PIC - CTA
Display LCD

Apague e escreva:
SeuNome
SobreNome

Profº Ricardo Hovacker


Atividade do dia: Sistema para navegação (IHM) de uma máquina de vendas automática.

Objetivo: Compreender e fixar o conhecimento sobre display LCD (8 bits) e criação de bibliotecas.

1) Sistema para navegação (IHM) de uma máquina de vendas de refrigerante automática :

• Ao ligar o sistema, surge a mensagem “iniciando sistema” por 3 segundos, logo após, “selecione sua bebida”.

• Ao clicar no botão select, surge um menu com o nome do primeiro produto “Coca-Cola”, a cada novo pressionamento
surgem os nomes dos novos produtos, “Guaraná”, “Pepsi” e “Fanta”. Caso ocorra um novo pressionamento os produtos
voltam a se repetir.

• Quando o cliente selecionar o produto desejado, este pode pressionar o botão OK e a mensagem “Efetue o
pagamento” é exibida, até que o botão pg seja acionado, alterando a mensagem para “Retire seu produto “, que é
exibida por 4 segundos até o sistema retornar automaticamente para o menu principal (“selecione sua bebida”).

• Um último botão é inserido no projeto, botão CANCELA, caso esteja no menu de seleção de bebidas ou de pagamento,
(APENAS nestes dois menus), se o cancela for pressionado, a mensagem “operação cancelada” surge no display por 3
segundos antes do sistema retornar ao menu principal.

Profº Ricardo Hovacker


Obrigado!

Contato: ricardohovacker@hotmail.com

Profº Ricardo Hovacker

Você também pode gostar