16 de jan. de 2012

Caracteres especiais no LCD


Olá galera, ano novo, férias, nada melhor que começar 2012 com um post bacana para dar uma alegrada... E em breve novidades sobre o curso da PK2Lab em C... Aguardem!!!

Hoje vamos conhecer um pouco mais sobre os displays LCDs e aprender a criar nossos próprios caracteres customizados.

Bom, mais qual é a utilidade disto???

Imaginem o quão interessante seria mostrar o valor de uma grandeza, como o valor de tensão correspondente a um sensor, ou mesmo o tempo restante de um processo, em uma escala de barras customizada no display LCD. Para isto podemos utilizar vários caracteres disponíveis na tabela de caracteres do próprio controlador do LCD que contém muitos simbolos interessantes, porém, quando realmente a criatividade aflora, vimos que esta tabela não resolve muita coisa e ai é que entra a criação de caracteres na CGRAM do display.

O Controlador HD44780, possui internamente uma área destinada a criação de 8 caracteres especiais, estes caracteres situam se a partir do endereço 0 da CGRAM e são formados por um conjunto de 8 bytes cada, dispostos a formar a imagem apresentada no LCD.

O compilador MikroC PRO, possui uma ferramenta muito útil para a criação destes caracteres e está localizada na aba Tools -> Lcd Custon Caracter.


 



Vamos utilizar esta ferramenta para criar duas setas laterais que formarão o cursor de ajuste de um sistema de som em que as funções serão ajustadas pelo teclado e os valores poderão ser visualizados em uma barra no LCD.

Para começar a criar nosso caractere, basta clicar nos pontos em que desejamos que o display acenda, até formar a imagem pretendida, assim que terminar, devemos clicar em generate code para que o software gere a função que é responsável pela criação e envio dos dados para a CGRAM do controlador.

Esta ferramenta pode gerar códigos em C, Pascal e Basic, para tanto basta selecionar a linguagem antes de clicar em generate code.

Depois de gerado, o código deve ser inserido como uma função qualquer dentro do programa que ira utilizá-la. Normalmente neste ponto eu altero um pouco este procedimento para facilitar a escrita do código, porém, nada impede de utilizar a função criada pela ferramenta de forma direta.


//**********************************************************************************************************
// Rotinas Auxiliares

const char character1[] = {24,28,30,30,30,28,24,0};  // Seta Esquerda
const char character2[] = {3,7,15,15,15,7,3,0};         // Seta Dir eita

void Caracter_Especial()       // Função que cria os caracteres especiais na CGRAM.    
{
  char i;
    Lcd_Cmd(64);                  // Entra em modo de criação de caracter e...         
    for (i = 0; i<=7; i++) Lcd_Chr_CP(character1[i]);  // Envia os bytes que formam o...
    for (i = 0; i<=7; i++) Lcd_Chr_CP(character2[i]);  // caracter um a um sequencialmente.
}


Para apresentação dos caracteres apenas posicione o cursor do display onde o caracter deverá aparecer e use a função Lcd_Chr_CP(ENDEREÇO DA CGRAM).


Exemplo:

while(1)
{
 Caracter_Especial();         // Chama a função que cria os caracteres na CGRAM.
 Lcd_Out(2,1,"---");
 Lcd_Chr_CP(1);                // Insere seta para esquerda. (Endereço 0 da CGRAM)
 Lcd_Chr_CP(0);               
// Insere seta para direita.    (Endereço 1 da CGRAM)
 Lcd_Out(2,6,"-----------");
 ....

}//while(1)


Veja como fica o resultado:

 
Bom, esta é apenas uma das situações onde os caracteres especiais podem ser utilizados, com o tempo vocês verão como é importante este recurso.

Por falar nisto... alguém já viu um LCD que escreve palavras com acentuação como no bom e velho português??? fica a idéia !!!

Grande abraço a todos...

 EM BREVE...

Curso de microcontroladores PIC em linguagem C !!!



Nenhum comentário:

Postar um comentário