Microcontroladores PIC Operação com Displays de Cristal Líquido LCDs
1
Sumário
Características dos módulos LCDs Tipos de LCDs Informações Comuns aos LCDs Conexão de LCDs com MCUs Programação de LCDs Exemplo em Linguagem C
2
Características dos Módulos LCDs
Displays LCDs: • Exibe informações alfa-numéricas (caracteres) e/ou gráficas (pontos, linhas, curvas, etc.). • Adequados a aplicações que não demandam alta visibilidade. Ângulo de observação limitado. • Na sua grande maioria: depende de iluminação externa. • Baixo consumo de energia (da ordem de 1 mA). • Elevado custo.
3
LCDs - Tecnologia TN Funcionamento Reflective twisted nematic w:liquid crystal display. 1. Vertical filter film to polarize the light as it enters. 2. Glass substrate with ITO electrodes. The shapes of these electrodes will determine the dark shapes that will appear when the LCD is turned on. Vertical ridges are etched on the surface so the liquid crystals are in line with the polarized light. 3. Twisted nematic liquid crystals. 4. Glass substrate with common electrode film (ITO) with horizontal ridges to line up with the horizontal filter. 5. Horizontal filter film to block/allow through light. 6. Reflective surface to send light back to viewer. Obtido em: http://en.wikipedia.org/wiki/LCD 07 de Julho de 2007.
Tipos de Displays LCDs
Alfanuméricos ou Gráficos. Número de Linhas. Resoluções variadas. Número de pinos para conexão. Com ou sem backlight. Tipo de caracteres. Tecnologias e Temporizações diversas.
PINAGEM DE UM LCD 16x2
Controle do contraste Controle do Backlight Pinos de dados do LCD
Pinos de controle para a comunicação do LCD com o MCU
5
Módulos LCDs Alfanuméricos mais Comuns
Pinagem Básica de um LCD Alfanumérico PINAGEM DE UM LCD 16 x 2 (caracteres x linhas)
Controle do contraste Controle do Backlight
Pinos de dados do LCD
Pinos de controle para a comunicação do LCD com o MCU 7
Pinagem Básica dos Módulos LCDs
Exemplo de um Esquema Elétrico de Conexão de um LCD com um MCU
Temporização dos LCDs
Ciclo de Escrita
Temporização dos LCDs
Ciclo de Leitura
Ciclo de Escrita e Leitura do MCU 16F877A
Programação de LCDs
Programar displays de LCDs: • • • •
Configurar PORTs adequadas ao uso de LCDs. Configurar (inicializar) o LCD. Enviar dados de comandos para o LCD. Enviar dados de leitura ou escrita (LCD).
Para escrever um caractere em uma determinada posição do LCDs:
• Envia-se ao LCD um comando com o endereço da posição onde se quer escrever. • Envia-se logo a seguir o caractere a ser escrito na posição.
Endereços: LCD 16x2
Programação de LCDs: Comandos mais Comuns
Programação de LCDs: Caracteres • O código de cada caractere é composto por 8 bits sendo: – nibble alto (upper bits) – nibble baixo (lower bits).
• LCDs tem em comum os caracteres entre 00h e 7Fh • O código dos caracteres em LCDs alfanuméricos podem variar conforme fabricante e o padrão: (ASCII, Unicode, etc.)
Exemplo em Linguagem C: Arquivo Header void lcd_delay(void); void lcd_comando(char); void lcd_dado(char); void lcd_init(void); void lcd_dado (char dado) { lcd_delay(); RS=1; lcd_delay(); swap(dado); DISPLAY = dado; lcd_delay(); EN=1; lcd_delay(); EN=0;
}
swap(dado); DISPLAY = dado; lcd_delay(); EN=1; lcd_delay(); EN=0;
void lcd_comando (char dado) { lcd_delay(); RS=0; lcd_delay(); swap(dado); DISPLAY = dado; lcd_delay(); EN=1; lcd_delay(); EN=0;
}
swap(dado); DISPLAY = dado; lcd_delay(); EN=1; lcd_delay(); EN=0;
Exemplo em Linguagem C: Arquivo Header (continuação) for(cont=0;cont<6;cont++){ aux =Inic[cont]; RS=0; delay_ms(5); swap(aux); DISPLAY = aux;
void lcd_init() { int cont; char aux; char Inic[6]; Inic[0] = 0x33; Inic[1] = 0x32; Inic[2] = 0x28; Inic[3] = 0x06; Inic[4] = 0x0C; Inic[5] = 0x01; set_tris_d(0xf0); set_tris_e(0x00); ADCON1 = 0x07; EN=0;
EN=1; delay_ms(5); EN=0; swap(aux); DISPLAY = aux; // desabilita entradas do ADC }
}
EN=1; delay_ms(5); EN=0;
void lcd_delay(void) { delay_us(50); }
Primeiro Exemplo em Linguagem C // *** Definições do Microcontrolador *** #include <16F877A.H> // arquivo de definições do microcontrolador usado #include #fuses XT,NOWDT,PUT,NOBROWNOUT,NOLVP // bits de configuração // Configurações do Projeto #use delay(clock=4000000) // informa ao sistema o frequência de clock, para temporização // Definições de Hardware #byte DISPLAY=PORTD
// Programa principal void main (void) { lcd_init(); for(;;){ lcd_comando(0x84); lcd_dado('E'); lcd_dado('x'); lcd_dado('s'); lcd_dado('t'); lcd_dado('o'); lcd_comando(0xc2); lcd_dado('T'); lcd_dado('e'); lcd_dado('c'); lcd_dado('n'); lcd_dado('o'); lcd_dado('l'); lcd_dado('o'); lcd_dado('g'); lcd_dado('i'); lcd_dado('a');
#bit RS=PORTE.0 #bit EN=PORTE.1 #include
}
}
Displays LCD Gráficos: Pinagem Básica
O que varia é a resolução, medida em pixels: Comum: 128 x 64 pixels
Onde encontrar mais informações…
http://www.microchip.com Desbravando o PIC – Editora Erica – David José de Souza Conectando o PIC 16F877A – Recursos Avançados – Editora Erica – David José de Souza e Nicholas C. Lavínia PIC – Programação em C – Fábio Pereira – Editora Érica John Peatman’s • And corresponding excellent book • http://www.picbook.com/index.html
http://www.piclist.com
http://www.geocities.com/picmaniaco/indice.html
20
Onde encontrar mais informações…
“Design with PIC Microcontrollers” by John B. Peatman, published by Prentice Hall, ISBN 0-13759259-0.
“Programming Embedded Systems, in C and C++”, M. Barr, publ. byO’Reilly, ISBN 1-56592-354-5
http://en.wikipedia.org/wiki/LCD
21