Readme First PDF
Readme First PDF
Readme First PDF
libLCD_hk_v1.0.1.a
Interfaces de Conexões I2C, I2CRGB, P4BITS e P8BITS
Autorizado o uso público, sem modificações
Desenvolvida por : Prof. Hegler Rocha
PUC Minas - 05/2019
Departamento de Engenharia Versão : v1.0.1
Eletrônica e de Telecomunicação Problemas : hk4@pucminas.br
APENAS PARA O MCU ATMEGA328P
1) Como usar
Siga os passos a seguir para o uso da biblioteca de acesso ao display de LCD. Esta biblioteca foi
desenvolvida para trabalhar com um display de LCD padrão 1x16, 2x16, 4x16, 2x20, 4x20, 2x40 ou
4x40, controlados pelo circuito integrado HD44780 da Hitachi, usando interfaces de conexões serial
I2C ou paralela de 4 ou 8 bits.
a. Defina no início do arquivo principal, normalmente main.c, o tipo de interface a ser utilizada
entre o AVR ATmega328P e o LCD, ou seja, Serial I2C, Serial I2C com RGB, Paralela de 4
Bits ou Paralela de 8 Bits, conforme abaixo:
#include <LCD_app_hk.h>
2) Funções
As funções a seguir foram implementadas de forma a serem transparentes quanto à interface de
conexão entre o LCD e o MCU, exceto a função Config_dsp(), usada para redefinir essa interface,
caso seja necessário. Todas as funções são do tipo void, ou seja, não devolvem qualquer valor.
Exemplos de uso:
LCD de 2 linhas e 16 colunas
init_dsp (2,16);
LCD de 1 linha e 16 colunas
init_dsp (1,16);
LCD de 4 linhas e 40 colunas
init_dsp (4,40);
Descrição : Configura a interface de conexão com o display, exceto para o display com RGB,
cuja interface não pode ser alterada. No caso do I2C, esta conexão se faz entre o expansor
I2C, existente na placa montada junto ao display e o próprio LCD. O valor -1 para qualquer um
dos parâmetros, mantém o valor padrão (default). Se os valores padrões não puderem ser
usados, esta função deverá ser chamada antes da função init_dsp(), contendo os parâmetros
abaixo:
Parâmetros de entrada:
• i → Para a interface I2C, este parâmetro corresponde ao Endereco e para as demais
interfaces não é necessário, podendo conter qualquer valor. O endereço padrão
(default) para a interface I2C é 0x3F.
• k → Para a interface de conexão I2C, este parâmetro define o pino EN, entre o expansor
e o LCD e para as interfaces de conexões P4BITS ou P8BITS, define as linhas de
controles RS e EN entre o MCU e o LCD. Veja abaixo:
1 → PB1-EN, PB0-RS
2 → PB2-EN, PB1-RS
3 → PB3-EN, PB2-RS
4 → PB4-EN, PB3-RS
5 → PB5-EN, PB4-RS
6 → PC1-EN, PC0-RS - default (-1)
7 → PC2-EN, PC1-RS
8 → PC3-EN, PC2-RS
9 → PD3-EN, PD2-RS
10 → PD4-EN, PD3-RS
11 → PD5-EN, PD4-RS
12 → PD6-EN, PD5-RS
13 → PD7-EN, PD6-RS
• l → Para a interface de conexão I2C, este parâmetro define o pino RS, entre o expansor
e o LCD e para as interfaces de conexões P4BITS ou P8BITS, não tem função, podendo
ser qualquer valor.
• m → Para a interface de conexão I2C, este parâmetro define o pino BK, entre o
expansor e o LCD e para as interfaces de conexões P4BITS ou P8BITS, não tem
função, podendo ser qualquer valor.
Exemplos de uso:
Interface de Conexão I2C, com alteração de endereço apenas:
config_dsp (0x27,-1,-1,-1,-1); → Endereço 0x27
Interface de Conexão I2C, com alteração de barramento de dados apenas :
config_dsp (-1,2,-1,-1,-1); → P3-D7, P2-D6, P1-D5, P0-D4
Interface de Conexão I2C, com alteração do endereço e da linha de controle RS:
config_dsp (0x27,-1,-1,3,-1); → Endereço 0x27 e RS → Pino 3
Interface de Conexão P4BITS, com alteração de barramento de dados apenas:
config_dsp (0,3,-1,0,0); → PD7-D7, PD6-D6, PD5-D5, PD4-D4
Interface de Conexão P8BITS, com alteração de barramento de controle apenas:
config_dsp (0,-1,5,0,0); → PB5-EN, PB4-RS
Parâmetros de entrada:
• l → número da linha, entre 0 e linhas-1, onde se deseja posicionar o cursor, para
imprimir o caracter. Se este parâmetro for igual a -1, a impressão se dará na posição
atual do cursor.
• c → número da coluna, entre 0 e colunas-1, onde se deseja posicionar o cursor, para
imprimir a mensagem. Se o parâmetro anterior for igual a -1, este não terá função,
podendo ser qualquer valor.
• ch → caracter em código ASCII a ser impresso, ou algum especial
Obs.: O número da linha e coluna para a impressão sempre começam em ‘0. Assim
imprimir na segunda linha, significa imprimir na linha 1.
Exemplos de uso:
Imprime o caracter ‘H’ na sexta coluna da quarta linha, de um LCD de 40 colunas.
put_c(3,5,’H’); → Será impresso a letra H
Imprime o conteúdo da variável char v = ‘2’ no início da segunda linha do LCD de 20 colunas:
put_c(1,0,v); → Será impresso a letra ‘2’
Imprime o conteúdo do caracter ‘%’ na posição atual do cursor, considerando a impressão
anterior:
put_c(-1,0,’%’); → Será impresso o caracter % na posição atual do cursor, ficando 2%
Parâmetros de entrada:
• l → número da linha, entre 0 e linhas-1, onde se deseja posicionar o cursor, para
imprimir a mensagem. Se este parâmetro for igual a -1, a impressão se dará a partir da
posição atual do cursor.
• c → número da coluna, entre 0 e colunas-1, onde se deseja posicionar o cursor, para
imprimir a mensagem ou -1 para centralizar a mensagem na linha, ficando deslocada
uma posição para a esquerda se o número de caracteres da mensagem for ímpar. Se
o valor do parâmetro ‘l’ for igual a -1 o valor desse parâmetro não terá função.
• s → apontador que contém o endereço da mensagem, podendo ser de uma string ou
de um vetor.
Exemplos de uso:
Imprime a mensagem “Hora Certa”, centralizada na primeira linha do LCD de 16 colunas:
putmessage(0,-1,”Hora Certa”);
Imprime o conteúdo do vetor v[ ] = “Laboratorio” no início da terceira linha do LCD de 40
colunas:
putmessage(2,0,v);
Descrição : Imprime um valor numérico inteiro no LCD, a partir da posição do cursor, dada
por l (linha) e c (coluna).
Parâmetros de entrada
• l → número da linha, entre 0 e linhas-1, onde se deseja posicionar o cursor, para
imprimir o valor numérico. Se este parâmetro for igual a -1, a impressão se dará a partir
da posição atual do cursor.
• c → número da coluna, entre 0 e colunas-1, onde se deseja posicionar o cursor, para
imprimir o valor numérico ou -1 para centralizar este número na linha, ficando deslocado
uma posição para a esquerda se o número de dígitos do valor for ímpar. Se o valor do
parâmetro ‘l’ for igual a -1 o valor desse parâmetro não terá função.
• n → valor numérico inteiro que se deseja imprimir.
• d → número de dígitos que se deseja imprimir deste valor numérico, se não desejar
imprimir 0’s a esquerda, deve-se passar o parâmetro -1. Assim o número será impresso
sempre com todos os seus dígitos e sem 0’s a esquerda.
Exemplos de uso:
Imprime o valor da variável inteira aux com 5 dígitos, tendo esta variável o valor 2734, no início
da segunda linha de um LCD de 2 linhas.
putnumber_i (1,0,aux,5); → será impresso no display o valor o valor 02734
Imprime o valor da variável inteira aux sem 0’s a esquerda, tendo esta variável o valor 2734,
no início da segunda linha de um LCD de 2 linhas.
putnumber_i (1,0,aux,-1); → será impresso no display o valor o valor 2734
Imprime o valor da variável inteira aux sem 0’s a esquerda, tendo esta variável o valor 2734,
centralizado na linha de um LCD de 2 linhas.
putnumber_i (1,-1,aux,-1); → será impresso o valor o valor 2734 no centro da linha
Parâmetros de entrada
• l → número da linha, entre 0 e linhas-1, onde se deseja posicionar o cursor, para
imprimir o valor numérico. Se este parâmetro for igual a -1, a impressão se dará a partir
da posição atual do cursor.
• c → número da coluna, entre 0 e colunas-1, onde se deseja posicionar o cursor, para
imprimir o valor numérico ou -1 para centralizar este número na linha, ficando deslocado
uma posição para a esquerda se o número de dígitos do valor mais o ponto for ímpar.
Se o valor do parâmetro ‘l’ for igual a -1 o valor desse parâmetro não terá função.
• n → valor numérico em ponto flutuante que se deseja imprimir.
• d → número de casas decimais que se deseja imprimir deste valor numérico
Exemplos de uso:
Imprime o valor da variável do tipo ponto flutuante adc com 3 casas decimais, tendo esta
variável o valor -3.875742, no início da primeira linha de um LCD de 2 linhas.
putnumber_f (0,0,adc,3); → será impresso no display o valor o valor -3.875
Imprime o valor da constante M_PI com 4 casas, na terceira coluna da quarta linha de um
LCD de 4 linhas.
putnumber_i (3,2,M_PI,4); → será impresso no display o valor o valor 3.1416
Parâmetros de entrada
• l → número da linha, entre 0 e linhas-1, onde se deseja posicionar o cursor
• c → número da coluna, entre 0 e colunas-1, onde se deseja posicionar o cursor
Exemplo de uso:
Posiciona o cursor na linha 0, coluna 5 de um LCD de 2 linhas.
setCursor (0,5);
h. void dspHome(void)
Parâmetros de entrada
• não requer parâmetros de entrada
Exemplo de uso:
Posiciona o cursor na linha 0, coluna 0 de qualquer LCD.
dspHome ();
i. void dspClear(void)
Descrição : Limpa o LCD e retorna o cursor para a posição de linha 0 e coluna 0 (0,0).
Parâmetros de entrada
• não requer parâmetros de entrada
Exemplo de uso:
Limpa o LCD e posiciona o cursor na linha 0, coluna 0 de qualquer LCD.
dspClear ();
Parâmetros de entrada
• dir → movimento à direita (RIGHT) ou movimento a esquerda (LEFT)
Exemplos de uso:
Movimenta o cursor à direita. Considerando a posição atual em linha 1, coluna 2 de qualquer
LCD.
moveCursor (RIGHT); → nova posição do cursor será linha 1, coluna 3
Movimenta o cursor à esquerda. Considerando a posição atual em linha 1, coluna 2 de
qualquer LCD.
moveCursor (LEFT); → nova posição do cursor será linha 1, coluna 1
Parâmetros de entrada
• dir → deslocamento à direita (RIGHT) ou deslocamento à esquerda (LEFT)
Exemplos de uso:
Desloca o conteúdo do LCD à direita. Considerando a posição atual em linha 1, coluna 2 de
qualquer LCD.
scrollDisplay (RIGHT); → mensagem deslocada e nova posição do cursor será linha
1, coluna 3
Desloca o conteúdo do LCD à esquerda. Considerando a posição atual em linha 1, coluna 2
de qualquer LCD.
scrollDisplay (LEFT); → mensagem deslocada e nova posição do cursor será linha 1,
coluna 1
Parâmetros de entrada
• dir → imprime no LCD da esquerda para a direita (LEFT) ou da direita para esquerda
(RIGHT)
Exemplo de uso:
Coloca o LCD no modo de inserção da direita para esquerda.
entrymode (RIGHT); → as impressões ocorrerão da direita para a esquerda
Parâmetros de entrada
• dir → cursor ligado (ON) ou cursor desligado (OFF)
Exemplo de uso:
turncursor (ON); → cursor ligado
turncursor (OFF); → cursor desligado
Parâmetros de entrada
• mode → liga (ON) ou desliga (OFF) o backlight.
Exemplos de uso:
turnbacklight (ON); → backlight ligado
turnbacklight (OFF); → backlight desligado
o. void turndisplay (uint8_t dsp, uint8_t bck)
Parâmetros de entrada
• dsp → liga LCD (ON) ou desliga LCD (OFF).
• bck → liga (ON) ou desliga (OFF) o backlight. Apenas para as interfaces de conexões
I2C e I2CRGB. Para as interfaces de conexões P4BITS e P8BITS este parâmetro não
tem função, podendo ser qualquer valor.
Exemplos de uso:
turndisplay (ON,OFF); → display ligado e backlight desligado
turndisplay (ON,ON); → display e backlight ligados
turndisplay (OFF,ON); → display desligado e backlight ligado
Parâmetros de entrada
• mode → liga cursor piscante (ON) ou desliga cursor piscante (OFF).
Exemplos de uso:
turncursorBlink (ON); → cursor piscante ligado
turncursorBlink (OFF); → cursor piscante desligado
Descrição : Define as intensidade das cores dos LED’s RED, GREEN e BLUE do backlight
do LCD de interface de conexão I2CRGB, combinando-os para definir a cor final da iluminação
de backlight.
Parâmetros de entrada
• r → define a intensidade de cor do led RED, entre 0 (desligado) e 255 (totalmente
vermelho).
• g → define a intensidade de cor do led GREEN, entre 0 (desligado) e 255 (totalmente
verde).
• b → define a intensidade de cor do led BLUE, entre 0 (desligado) e 255 (totalmente
azul).
Exemplos de uso:
setRGB (0,0,0); → backlight apagado
setRGB (255, 255,0); → combinação de cores vermelha e verde, formando o amarelo.