Table of Contents

 

Mostrador LCD

Conhecimento necessário: [HW] Módulo de Interface do Utilizador, [LIB] LCD Alfanumérico, [LIB] LCD Gráfico,
[LIB] Espera

Teoria

O LCD gráfico
Uma figura composta por pixels num LCD gráfico

Os mostradores de LCD, que são utilizados com microcontroladores, podem ser divididos principalmente em dois tipos: LCDs de texto ou alfanuméricos e LCDs gráficos. O LCD alfanumérico é um display de cristal líquido, que tem como propósito exibir letras e números. Basicamente no LCD é usado cristal líquido, o qual é colocado entre eléctrodos transparentes, que altera a polarização da luz que passa no campo eléctrico. Os eletrodos são cobertos por filtros de polarização, que garantem que apenas uma maneira polarizada luz pode passar. Se o cristal líquido muda de polaridade devido ao campo elétrico, a luz não passa a tela ou parte (segmento) dela e aparece escurecido.

A principal característica de um LCD alfanumérico é a colocação de seus segmentos. A tela é dividida em vários indicadores. Cada indicador tem, ou segmentos suficientes para a exibição de letras e números, ou que é formada a partir de uma matriz de pequenos segmentos quadrados (pixels). Por exemplo, uma matriz de 5 x 7 pixels é o suficiente para exibir todos os números e letras do alfabeto latino. Há geralmente 1 - 4 filas de indicadores e 8 - 32 colunas. Cada indicador tem uma pequena diferença semelhante às diferenças das letras no texto.

Além do ecrã LCD alfanumérico existe também um controlador que controla os segmentos do ecrã de acordo com os comandos da interface de comunicação. Um controlador tem um cartão pré-programado de letras, em que cada letra, número ou símbolo tem o seu próprio índice. Exibir o texto na tela é feito basicamente enviando os índices para o controlador. Na realidade, existem mais instruções de controlo enviados para o controlador antes de qualquer coisa possa ser exibida. É importante obter conhecimento em cada data-sheet do LCD, porque há muitos tipos diferentes de LCDs e todos eles são controlados de forma diferente.

Os displays de LCD gráficos de cristal líquido são displays que permitem visualizar imagens e texto. A sua construção é semelhante aos LCDs alfanuméricos, com a diferença de que no visor gráfico todos os pixels são apresentados como uma matriz de grande dimensão. Se estamos a lidar com um LCD monocromático, então um pixel é um segmento quadrado. Os pixels de um LCD com cor são formados por três subpixels. Cada um dos três subpixels permite apenas uma passagem de luz colorida (vermelho, verde ou azul). Uma vez que os subpixels estão posicionados muito perto uns dos outros, parecem apenas um pixel.

Os displays monocromáticos gráficos têm geralmente uma matriz passiva, grandes monitores de cor, incluindo ecrãs de computador têm uma matriz ativa. Toda a informação relativa à cor do fundo e aos pixels gráficos dos LCDs são semelhantes à dos LCDs alfanuméricos. De forma similar às telas alfanuméricas, as telas gráficas também estão equipadas com controlador separado, que se encarrega de receber informações através da interface de comunicação e gera o campo elétrico para os segmentos.

Prática

No conjunto HomeLab III está presente um LCD TFT de 128 × 160 pixels a cores de 1,8 polegadas. O controlador ST7735 Sitronixi está ligado ao mostrador com o qual se pode comunicar através do interface serial SPI. A iluminação de fundo do módulo de visualização é controlada separadamente, e sem esta, não é possível a utilização da tela. A comunicação com o visor não é muito difícil, mas devido à grande quantidade de funções estas não serão explicadas aqui. A biblioteca Home-Labs tem funções para este efeito.

A principal diferença do HomeLab III para HomeLab II é um LCD monocromático gráfico de 84 × 48 pixels. É o mesmo ecrã utilizado no telemóvel Nokia 3310. O controlador Philips PCD8544 está ligado ao mostrador com o qual se pode comunicar através de um interface serial do género SPI. A iluminação de fundo do módulo visor é controlada separadamente.

Primeiro, a tela gráfica LCD deve ser iniciada com a função lcd_gfx_init. Há um mapa de letras na biblioteca com o alfabeto latino completo, números e com os sinais mais comuns de escrita. Para exibir uma letra ou texto, primeiro a sua posição deve ser determinada usando a função lcd_gfx_goto_char_xy. Para exibir letras usa-se a função é lcd_gfx_write_char e para exibir texto a função lcd_gfx_write_string.

O que se segue é um exemplo de contador de tempo. O programa conta segundos (aproximadamente), minutos e horas. Para converter tempo para texto a função sprintf é usada.

// Example of using the graphic LCD of the HomeLab
// Time of day is displayed on LCD since the beginning of the program
#include <stdio.h>
#include <homelab/module/lcd_gfx.h>
#include <homelab/delay.h>
 
// Main program
int main(void)
{
	int seconds = 0;
	char text[16];
 
	// Set-up of the LCD
	lcd_gfx_init();
 
	// Cleaning the screen
	lcd_gfx_clear();
 
	// Switching on the background light
	lcd_gfx_backlight(true);	
 
	// Displaying the name of the program
	lcd_gfx_goto_char_xy(1, 1);
	lcd_gfx_write_string("Time counter");
 
	// Endless loop	
	while (true)
	{
		// Converting the seconds to the form of clock
		// hh:mm:ss
		sprintf(text, "%02d:%02d:%02d",
			(seconds / 3600) % 24,
			(seconds / 60) % 60,
			 seconds % 60);
 
		// Displaying the clock text
		lcd_gfx_goto_char_xy(3, 3);
		lcd_gfx_write_string(text);
 
		// Adding one second
		seconds++;
 
		// Hardware delay for 1000 ms
		hw_delay_ms(1000);
	}
}