Escolar Documentos
Profissional Documentos
Cultura Documentos
Neste ponto veremos as principais funções e ferramentas para manipular displays LCD. Para implementar
nossos projetos é interessante a utilização de um display, capaz de tornar mais simples a visualização de
informações e a interação com nosso equipamento, escolhemos para tratar nesta obra de um display de
utilização muito comum em sistemas microcontrolados, suas características são as seguintes:
Um display LCD desse tipo, possui embutido em seu circuito um outro microcontrolador, e para podermos
utilizá-lo temos que entender um pouco
de seus comandos e funções. Dessa
forma, da mesma maneira com que
trabalhamos com o PIC, para utilizar um
display LCD temos que seguir uma
sequência de procedimentos.
Hardware e Pinagem
1
Microcontroladores
CGROM: Memória não volátil onde estão gravados os códigos para escrita dos caracteres, isso é muito
útil, pois apenas enviamos o código ASCII do caracter e esse já é escrito no display.
DDRAM: É uma área de memória volátil, onde escrevemos o que queremos que apareça no display, cada
endereço dessa memória equivale a um endereço de caracter dos display, podemos fazer a seguinte
analogia para facilitar, cada caracter do display é como uma “janela” que exibe o conteúdo que escrevemos
na DDRAM.
CGRAM: É uma pequena área de memória onde podemos “desenhar” caracteres diferentes (apenas 8
caracteres). Ela é muito utilizada quando precisamos criar caracteres que não são comuns a todas as
línguas como por exemplo o caracter “ç” do português.
Abaixo está o endereço em hexadecimal de cada caracter no display LCD 16 x 2, assim fica mais fácil a
movimentação do cursor e das letras a serem escritas:
LCD 16x2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Linha 1 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
Linha 2 C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
2
Microcontroladores
A seguir o código que devemos enviar para o LCD a fim de obtermos um determinado caracter:
Endereços e Instruções
Agora conhecemos a pinagem desse LCD, vamos conhecer seu modo de funcionamento e saber um
pouco mais das instruções e dados que precisaremos utilizar.
É interessante atentarmos para a seguinte característica, a via de dados e instruções é a mesma, dessa
forma a sinalização, que indica se o Byte que chega no display é dado ou instrução é proveninte do sinal
encontrado no pino 4 (RS):
RS = 0 -> Instrução
RS = 1 -> Dado
Outra característica importante é que precisamos transitar (de 1 para 0) o sinal Enable (pino 6) para que
a informação que chega aos terminais do LCD seja interpretada pelo controlador do display.
Em nosso estudo manteremos o pino 5 (R/W) em zero, pois apenas escreveremos no LCD. Podemos ligar
este pino do LCD no PIC também.
3
Microcontroladores
Para utilizarmos esse novo dispositivo em nossos projetos, devemos seguir alguns passos:
1º Inicializar o LCD: Primeiramente criar uma rotina em nosso programa, que envie para o display uma
sequência de informações que determinará o modo com o qual trabalharemos, com por exemplo:
- Definição do cursor
- Definição da direção de deslocamento (mensagem ou cursor)
- Limpeza do display.
O mikroC automaticamente carrega as rotinas de inicilização do LCD na compilação de um programa. O
programador não precisa se preocupar em inicilizar o LCD desde que o hardware do dispositivo esteja
configurado no programa corretamente no modo 4 ou 8 bits.
Inicialização do LCD
Toda vez que alimentarmos o LCD, devemos executar um procedimento de inicialização, o qual consiste
em enviar comandos que configuram o modo de operação para execução de um dado programa: fixação
das condições de utilização, fixação do modo de controle ativo/inativo do display e limpeza da tela.
No MikroC Pro não precisamos nos preocupar em programar todos os comandos de inicialização do LCD,
pois, através de simples funções, o compilador se encarrega de programá-lo para nós. Por esse motivo
devemos informar ao sistema o “tipo” de LCD que estamos utilizando por meio de linhas de comando. A
seguir, vamos conhecer e estudar as instruções de controle de LCD usadas no mikroC.
O exemplo a seguir ilustra o uso da função LCD_Init(). As variáveis globais seguintes devem ser
declaradas antes do uso da função.
// ajuste da dinagem do LCD
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D4 at RB0_bit;
Lcd_Init();
4
Microcontroladores
Parametros:
linha: número da linha da posição inicial
coluna: numero da coluna da posição inicial.
texto: texto a ser escrito
void main()
{
ADCON1=15;
// Inicializacao do LCD
Lcd_Init();
Lcd_cmd(_LCD_CLEAR); //Apaga o LCD(Limpa)
Lcd_cmd(_LCD_CURSOR_OFF); //desliga o cursor
// Escrever no LCD
Lcd_Out(1,4,"Etec P.V.");
Lcd_Out(2,5, " 2 ENT ");
Delay_ms(2000);
Lcd_cmd(_LCD_CLEAR);
Lcd_Out(1,1,"CHAVE- ");
while(1)
{
if (!PORTC.F0) //verifica se a chave ligada ao RC0 esta
//fechada (RC0 em nível 0).
Lcd_Out(1,8,"FECHADA"); //Se estiver, escreve no display "FECHADA"
else
Lcd_Out(1,8,"ABERTA "); //Se não, escreve "ABERTA"
}
}
O comando Lcd_cmd(comando_LCD):
No MikroC Pro podemos configurar o LCD de formas diferentes. Através da função Lcd_cmd(), podemos
determinar diversas "tarefas" que o LCD deverá executar.
5
Microcontroladores
LCD1
LM016L
R1
10k
U1
2 15
V DD
V SS
V EE
RW
RA0/AN0/C1IN- RC0/T1OSO/T13CKI
RS
D1
D2
D4
D0
D5
D3
D6
D7
3 16
E
RA1/AN1/C2IN- RC1/T1OSI/CCP2B
4 17
RA2/AN2/C2IN+/VREF-/CVREF RC2/CCP1/P1A
5 18
9
7
1
2
12
3
5
6
10
13
11
14
RA3/AN3/C1IN+/VREF+ RC3/SCK/SCL
6
RA4/T0CKI/C1OUT RC4/SDI/SDA
23 SW1
7 24 SW-SPST
RA5/AN4/SS/HLVDIN/C2OUT RC5/SDO
14 25
RA6/OSC2/CLKO RC6/TX/CK
POT 13
RA7/OSC1/CLKI RC7/RX/DT
26
33 19
RB0/AN12/FLT0/INT0 RD0/PSP0
34 20
10K RB1/AN10/INT1 RD1/PSP1
35 21
RB2/AN8/INT2 RD2/PSP2
36 22
RB3/AN9/CCP2A RD3/PSP3
37 27
RB4/KBI0/AN11 RD4/PSP4
38 28
RB5/KBI1/PGM RD5/PSP5/P1B
39 29
RB6/KBI2/PGC RD6/PSP6/P1C
40 30
RB7/KBI3/PGD RD7/PSP7/P1D
8
RE0/RD/AN5
9
RE1/WR/AN6
10
RE2/CS/AN7
1
R4
RE3/MCLR/VPP
10k
PIC18F4520
Circuito de teste
PODEMOS ATERRAR O PINO R/W DO LCD, POIS AS FUNÇÕES DE CONTROLE DO LCD NO MIKROC
PRO NÃO UTILIZA ESTE PINO SIMPLESMENTE DEIXAM ESTE PINO EM NIVEL LÓGICO 0. CASO
VENHAMOS A ATERRAR O PINO RW, ECONOMIZAREMOS 1 PINO DE I/O DO PIC.