Teoria linguagem c


Descrição da Pinagem dos LCD’s



Baixar 2.75 Mb.
Página26/30
Encontro30.10.2016
Tamanho2.75 Mb.
1   ...   22   23   24   25   26   27   28   29   30

Descrição da Pinagem dos LCD’s

O LCD possui um barramento de dados de 8 bits (DB0 a DB7) que é responsável pela transferência de dados para o LCD; possui dois pinos de controle (E e RS) e outros pinos, cuja função é alimentar o LCD, luz de fundo (backlight) e fazer o ajuste de contraste.

Veja como é composto o LCD gráfico baseado no controlador HD44780 da Hitachi



Descrição

Função

DB0 a DB7

Barramento de dados

E

Chip Enable (Clock)

R/W

Read(1) ou Write(0)

RS

Reset (0)

VO

Contraste

VDD

+5Vcc

VSS

Terra (GND)

Figura 11.2 – Pinagem do LCD.

Dependendo do modelo, a pinagem do LCD pode sofrer uma ligeira variação. Estas variações se devem às conexões com o backlight (pinos 15 e 16) e por isso não estão na figura anterior. Apesar das diferenças na pinagem, todos LCD’s trazem sua respectiva pinagem no verso do dispositivo.






GND +Vcc


Figura 11.3 – Pinagem do display LCD.


    1. Funcionamento no Modo 8 bits

Após ligar o LCD, este precisará receber os comandos de inicialização, na qual é definido o modo de operação de 4 ou 8 bits. No modo 8 bits as informações são transmitidas através de 8 pinos do barramento de dados (D0 a D7). Além destes, são utilizados mais 2 pinos para o controle do LCD (E e RS), totalizando a conexão de 10 pinos entre o LCD e o 8051.

    1. Funcionamento no Modo 4 bits

No modo 4bits as informações são transmitidas através de 4 pinos do barramento de dados (D4 a D7) juntamente com 2 pinos para o controle do LCD (E e RS), totalizando a conexão de 6 pinos entre o LCD e o 8051. Neste modo, o LCD é configurado para receber o dado em duas partes: Primeiro recebe os 4 bits menos significativos (LSB – Less Significative bits) e depois, os 4 bits mais significativos (MSB – Most Significative bits). A utilização da comunicação entre LCD e microcontrolador neste modo é a mais comumente utilizada em projetos, devido a menor ocupação de I/O’s do chip e por isso, este livro abordará o uso de LCD’s no modo 4 bits.

Podemos trabalhar facilmente com displays de LCD utilizando o arquivo header LCD.h.


Este arquivo implementa os comandos de inicialização no modo 4 bits, bem como os comandos de envio de mensagens ao LCD.
A seguir temos o conteúdo do arquivo LCD.h, o qual deverá ser salvo em C:\8051\SDCC\INCLUDE.
#define LCD_en P2_4

#define LCD_rs P2_5

#define LCD_DELAY 335 /* atraso de 1 miliseg */

#define LCD_clear() LCD_command(0x1) /* Limpa display LCD

#define LCD_row1() LCD_command(0x80) /* inicia na Linha 1 */

#define LCD_row2() LCD_command(0xC0) /* inicia na Linha 2 */

void LCD_delay(unsigned char ms){

unsigned char n;

unsigned int i;

for (n=0; n

}
void LCD_enable(){

LCD_en = 0; /* desliga P2.4 */

LCD_delay(1);

LCD_en = 1; /* liga P2.4 */

}
void LCD_command(unsigned char command){

LCD_rs = 0; /* desliga P2.5 */

P2 = (P2 & 0xF0)|((command>>4) & 0x0F);

LCD_enable();

P2 = (P2 & 0xF0)|(command & 0x0F);

LCD_enable();

LCD_delay(1);

}
void LCD_putc(unsigned char ascii){

LCD_rs = 1; /* liga P2.5 */

P2 = (P2 & 0xF0)|((ascii>>4) & 0x0F);

LCD_enable();

P2 = (P2 & 0xF0)|(ascii & 0x0F);

LCD_enable();

LCD_delay(1);

}
void LCD_puts(unsigned char *lcd_string){

while (*lcd_string) LCD_putc(*lcd_string++);

}
void LCD_init(){

LCD_en = 1; /* liga P2.4 */

LCD_rs = 0; /* desliga P2.5 */

LCD_command(0x33);

LCD_command(0x32);

LCD_command(0x28);

LCD_command(0x0C);

LCD_command(0x06);

LCD_command(0x01); /* limpa LCD */

LCD_delay(256);

}

Figura 11.4 – Conteúdo do arquivo LCD.h

O header LCD.h utiliza 6 pinos do Port P2 para conexão com o LCD conforme o esquema a seguir:






8051


Figura 11.5 – Esquema de ligações entre LCD e 8051

    1. Instruções e Funções de Controle para o LCD

O header LCD.h oferece um conjunto completo de comandos para manipulação do LCD. Vamos estudá-las:

15.5.1. LCD_init()

Executa a rotina de inicialização do LCD no modo 4 bits. Durante a inicialização todos os caracteres são apagados da tela. Este comando também é uma alternativa eficiente para limpar o LCD e posicionar a escrita de informações na primeira linha do LCD.


15.5.2. LCD_row1( )

Posiciona a escrita de informações na primeira linha do LCD.



15.5.3. LCD_row2( )

Posiciona a escrita de informações na segunda linha do LCD.



15.5.4. LCD_putc()

Imprime um caractere na primeira posição disponível da coluna definida pelo comando LCD_row1() ou LCD_row2(). Cada novo caractere enviado ao LCD é posicionado ao lado direito do anterior, devendo-se respeitar o limite de 16 caracteres. Caso este limite seja ultrapassado, os caracteres posteriores serão ignorados pelo LCD, ou seja, não são exibidos na linha seguinte. Entretanto, através de estruturas if-else é possível produzir este efeito (troca de linha automática).

A seguir temos alguns exemplos de uso da função LCD_putc( ).


#include //contém as definições do chip

#include //contém as definições do LCD
void main(){

LCD_init(); //inicializa o LCD

LCD_row1(); //posiciona na linha 1

LCD_putc(‘A’); //imprime a letra A

LCD_putc(‘B’); //imprime a letra B ao lado de A

}
Programa 11.1 – Função LCD_putc()

O programa acima tem por finalidade, exibir as letras ‘AB’ lado a lado na primeira linha do display.

Devido ao fato da função LCD_putc( ) suportar apenas um caractere, esta é utilizada praticamente para a exibição de números seguindo a convenção da tabela ASCII. Vejamos como são compostos os algarismos nesta tabela.



Valor enviado ao LCD

Algarismo exibido no LCD

48

0

49

1

50

2

51

3

52

4

53

5

54

6

55

7

56

8

57

9

Tabela 11.1 – Tabela ASCII

O conjunto de algarismos (0 a 9) na tabela ASCII estão defasados em 48 unidades do valor decimal. Isto significa que para exibir um algarismo, o LCD deverá receber o numero acrescido de 48. Para exibir o número 1, o LCD deverá receber o valor 49 (48 + número) e assim por diante, ou seja, devemos somar o numero 48 ao algarismo que desejamos exibir no LCD.

Veja o programa de exemplo abaixo:


#include //contém as definições do chip

#include //contém as definições do LCD

#include


void main(){

int contagem=0;

LCD_init(); //inicializa o LCD

while(contagem<10){

LCD_row1(); //posiciona na linha 1

LCD_putc(contagem+48); //imprime a variável convertida

delay_ms(1000); //para ASCII

contagem++; //incrementa contagem

}

}


Programa 11.1 – Contador de zero a nove com exibição em LCD

O programa acima é iniciado com os arquivos de definições do microcontrolador, LCD e da base de tempo. Na função main temos a declaração de uma variável com o propósito de armazenar o valor da contagem e em seguida o display de LCD é inicializado (LCD_init). O comando while controla a quantidade de repetições da contagem, sendo que a cada repetição a exibição é posicionada na linha 1 (LCD_row 1), então a variável contagem é envidada ao LCD através do comando LCD_putc( ) juntamente com a soma de 48. Isto é necessário para que o valor da contagem seja convertido para o valor da tabela ASCII. O comando delay_ms é responsável por gerar uma pequena pausa no processamento e depois a contagem é incrementada, quando em seguida, temos o final do bloco while.



    1. Exercício Resolvido

Contador de 0 a 99 com exibição em display de LCD.


#include //contém as definições do chip

#include //contém as definições do LCD

#include


void main(){

int contagem=0;

LCD_init(); //inicializa o LCD

while(contagem<99){

LCD_row1(); //posiciona na linha 1

LCD_putc((contagem/10)+48);//imprime a dezena convertida

LCD_putc((contagem%10)+48);//imprime unidade convertida

delay_ms(1000); //para ASCII

contagem++; //incrementa contagem

}

}


Programa 11.2 – Contador com exibição em LCD
Neste programa, a diferença está em que a contagem vai até 99. Como a função LCD_putc suporta apenas um caractere, é necessário dividir o valor da variável contagem e armazenar cada um, numa variável distinta. Por exemplo:

Se contagem = 10, então: dezena=1, unidade=0

Se contagem = 34, então: dezena=3, unidade=4

Para obter a dezena da contagem: contagem/10;

Para obter a unidade contagem: contagem-(contagem/10); ou então, podemos utilizar a operação MOD, a qual retorna o resto da divisão de um número:

Contagem%10;



15.5.5. LCD_puts()

Imprime um texto na primeira posição disponível da coluna definida pelo comando LCD_row1() ou LCD_row2(). Cada nova mensagem enviada ao LCD é exibida ao lado da anterior.

Veja os programas de exemplo abaixo:


#include //contém as definições do chip

#include //contém as definições do LCD
void main(){

LCD_init(); //inicializa o LCD

LCD_row1(); //posiciona na linha 1

LCD_puts(“LCD Teste”); //exibe o texto

}
Programa 11.3 – Exibição de texto no LCD




#include //contém as definições do chip

#include //contém as definições do LCD

#include


void main(){

int contagem=0;

LCD_init(); //inicializa o LCD

while(contagem<10){

LCD_row1(); //posiciona na linha 1

LCD_puts(“Contagem: ”); //exibe o texto

LCD_putc(contagem+48); //imprime a variável convertida

delay_ms(1000); //para ASCII

contagem++; //incrementa contagem

}

}
Programa 11.4 – Contador com exibição em LCD




#include //contém as definições do chip

#include //contém as definições do LCD
void main(){

LCD_init(); //inicializa o LCD


while(1){

LCD_row1(); //posiciona na linha 1

if(P3_0==1) LCD_puts(“P3.0 nivel alto”);//se entrada P3.0

} //exibe mensagem no LCD



}
Programa 11.5 – Exibe mensagem se a entrada P3.0 receber nível lógico 1.

APÊNDICE



Baixar 2.75 Mb.

Compartilhe com seus amigos:
1   ...   22   23   24   25   26   27   28   29   30




©bemvin.org 2020
enviar mensagem

    Página principal
Prefeitura municipal
santa catarina
Universidade federal
prefeitura municipal
pregão presencial
universidade federal
outras providências
processo seletivo
catarina prefeitura
minas gerais
secretaria municipal
CÂmara municipal
ensino fundamental
ensino médio
concurso público
catarina município
Dispõe sobre
reunião ordinária
Serviço público
câmara municipal
público federal
Processo seletivo
processo licitatório
educaçÃo universidade
seletivo simplificado
Secretaria municipal
sessão ordinária
ensino superior
Relatório técnico
Universidade estadual
Conselho municipal
técnico científico
direitos humanos
científico período
espírito santo
pregão eletrônico
Curriculum vitae
Sequência didática
Quarta feira
prefeito municipal
distrito federal
conselho municipal
língua portuguesa
nossa senhora
educaçÃo secretaria
segunda feira
Pregão presencial
recursos humanos
Terça feira
educaçÃO ciência
agricultura familiar