• Nenhum resultado encontrado

Usando Display Gráfico com C18 e C30

N/A
N/A
Protected

Academic year: 2021

Share "Usando Display Gráfico com C18 e C30"

Copied!
5
0
0

Texto

(1)

Usando Display Gráfico com C18 e C30

Elaborado por: Tiago Coelho Magalhães Marcelo M. M. do Couto Revisado por: José Domingos Adriano

1. Introdução

O presente documento é um descritivo técnico do firmware denominado LCDGRAFICO desenvolvido pela equipe de engenharia da

Exsto Tecnologia.

O LCDGRAFICO é uma aplicação do Lcd Gráfico para os compiladores C18 e C30. Estes firmwares de exemplo foram desenvolvidos focados nos KIT NEO 201 e Sigma128 para os microcontroladores 18F452 e dsPIC33F128 da Microchip respectivamente. Foi usado como plataforma de programação o MPLAB 7.43, também da Microchip. Foi escolhida como linguagem de programação a C.

Todos os documentos aqui referidos neste material encontram-se na pasta destinada à aplicação do LCD Gráfico.

2. Hardware

O hardware necessário para a aplicação do C18 é o da figura seguinte, composto pelo GLCD e por um microcontrolador PIC18F452. O oscilador do circuito é de 12MHz. O portal “D” do microcontrolador tem acesso aos bits de dados do GLCD. Além dele, o portal “E” e A têm acesso ao bits de controle. Para ajuste do contraste do LCD é necessário um potenciômetro de 10K no pino Vl do Display. O canal 0 do conversor AD lê o potenciômetro de 10K.

O hardware do código do C30 foi baseado no Sigma128, que é baseado no dsPIC33F128 e sua aplicação é feita para mostrar algumas figuras geométricas, um logo da exsto e uma string com o site da empresa.

(2)

3. Firmware

O firmware tem como objetivo principal apresentar uma aplicação do kit NEO201 e do Sigma128 utilizando o LCD Gráfico. Para o NEO 210 é apresentada a leitura do potenciômetro R26 com a escala de resistência mostrada em barras no LCD. Além disso, é desenhado o logo da empresa Exsto Tecnologia. No Sigma128 somente o logo é visualizado. A parte onde se aplica o código do usuário está contida no arquivo main.c. Além dele, existem três outros arquivos. Dois contêm as definições de hardware chamado definitions.h e o outro contém as definições para a biblioteca do GLCD chamado GLCD.h. O outro contém as rotinas gráficas e específicas para o LCD e se chama GLCD.c. Os arquivos com extensão .h são chamados de arquivos cabeçalhos, sendo que não possui nenhuma lógica implementada. Os arquivos com extensão .c são os que executam alguma lógica.

Como citado anteriormente, o firmware é dividido em várias partes, em vários arquivos e em várias sub-rotinas, procura-se nos itens posteriores descrever todas esses citados. Como a biblioteca é padrão para todos os dois compiladores, é necessário, no inicio do programa, especificar o compilador. Usa-se: #define _C30_ para os códigos do Sigma128 e #define _C18_ para o NEO por exemplo.

2.1 Programa principal

O programa principal se divide em:

1. Configuração dos Portais 2. Inicialização dos Portais 3. Código do usuário

2.1.1 Configuração dos Portais

Nesta etapa o firmware configura os portais do microcontrolador como entrada e saída e seus estados iniciais. Esta configuração é feita no próprio main. Mas há também as definições de pinagem para o hardware, onde estão descritos os pinos do microcontrolador e seus respectivos nomes, por exemplo, o pino A2 é o CS1 do LCD, portanto usa-se a diretiva:

#define CS1 PORTAbits.RA2 para definir o

nome do pino. Utiliza para isso o arquivo de cabeçalho definitions.h.

2.1.3 Código do usuário

É o espaço destinado ao usuário para colocar seu código.

2.2 Sub-Rotinas

Essas sub-rotinas são utilizadas pelo programa para fazer determinadas funções, como apagar o display, desenhar retângulos e círculos, etc. Elas estão incluídas no arquivo GLCD.c.

2.2.1 void delay10us (void)

Esta função gera um atraso de 10us. Esta função é própria para o C18.

(3)

2.2.2 void delay100us (void)

Esta função gera um atraso de 100us. Esta função é própria para o C18.

2.2.3 void delay5ms (void)

Esta função gera um atraso de 5ms. Esta função é própria para o C18.

2.2.4 void glcdDat (unsigned char

DAT)

Esta função envia um dado ao Display Gráfico.

2.2.5 void glcdInst (unsigned

char INST)

Esta função envia uma instrução ao Display Gráfico.

2.2.6 void glcdWaitBusy (void)

Esta função espera até que o Display Gráfico esteja pronto para receber mais instruções ou dados.

2.2.7 void glcdInit (void)

Esta função inicia o LCD Gráfico. Os comandos são:

* 0xC0 -> Especifica a linha da RAM que deve ser mostrada no topo da tela. Esta é a linha 0.

* 0x40 -> Este é o endereço de coluna. Ele especifica uma das 64 colunas possíveis. Esta é a coluna 0.

* 0xB8 -> Este é o endereço de páginas. Ele especifica uma das 8 páginas possíveis. Esta é a página 0.

* 0x3F -> Display On/Off. 0x3F liga dislay e 0x3E o desliga.

2.2.8 void glcdClear (void)

Esta função limpa a tela do LCD Gráfico.

2.2.9 void glcdPrintImage (rom

unsigned char *Msg)

Esta função desenha uma imagem na tela do LCD Gráfico a partir da posição inicial da tela.

2.2.10 void glcdRead (VOID)

Esta função lê um dado na posição especificada do LCD Gráfico. Exemplo de código:

glcdInst (0xB8); //Posiciona em Y readDat = glcdRead ( ); //Recebe os dados em “readDat”

2.2.11 void glcdPixel (unsigned

char X, unsigned char Y,

unsigned char COLOR)

Esta função acende ou apaga um Pixel em qualquer posição do LCD Gráfico. Os parâmetros de entrada contêm a posição de coluna (X) e de linha (Y), e se o pixel é aceso (COLOR=‘1’) ou apagado (COLOR=‘0’). Exemplo de código:

glcdPixel (64, 34, 1); //Pixel aceso na coordenada (64, 34).

glcdPixel (74, 24, 0); //Pixel apagado na coordenada (74, 24).

2.2.12 void glcdWriteMsg

(unsigned char *MSG, unsigned

char X, unsigned char Y,

unsigned char COLOR)

Esta função escreve uma mensagem no LCD Gráfico. Os parâmetros de entrada contêm a posição de coluna (X) e de linha (Y), onde a frase começará; os dados da mensagem a serem enviados ao display (*MSG); e se a frase terá o fundo apagado (COLOR=’0’) ou fundo aceso (COLOR=’1’). Exemplo de código:

rom const char Msg1 [ ] = ”Hello world again”; //Declaração da mensagem glcdPrintImage (Msg1);

2.2.13 void rectangle (unsigned

char LENGTH, unsigned char

WIDTH, unsigned char ORIGENX,

unsigned char ORIGENY,

unsigned char FILL)

Esta função desenha um retângulo no LCD Gráfico. Os parâmetros de entrada contêm a posição de coluna (ORIGENX) e de linha (ORIGENY), correspondente à coordenada central do retângulo; LARGURA (WIDTH) e COMPRIMENTO (LENGTH) informam as dimensões do retângulo; e se o retângulo terá o fundo apagado (FILL=’0’) ou fundo aceso (FILL=’1’). Exemplo de código:

(4)

rectangle (10, 10, 50, 30, 0); //Faz um quadrado com centro em (50, 30) e laterais de raio igual a 10 unidades de comprimento. Ele terá seu fundo apagado, ou seja, somente as bordas aparecerão.

2.2.14 void circle (char RAY,

charX, char Y)

Esta função desenha um círculo no LCD Gráfico. Os parâmetros de entrada contêm a posição de coluna (X) e de linha (Y), correspondente à coordenada central do círculo; RAY informa o raio do círculo. Exemplo de código:

circle (10, 50, 30); //Faz um círculo com centro em (50, 30) e raio igual a 10 unidades de comprimento.

2.2.15 void line (char X1, char Y1,

char X2, char Y2)

Esta função desenha uma reta no LCD Gráfico. Os parâmetros de entrada contêm a posição de coluna (X1) e de linha (Y1), correspondente à coordenada inicial da reta e a posição de coluna (X2) e de linha (Y2), correspondente à coordenada final da reta. Exemplo de código: line (10, 10, 50, 30); //Faz uma reta com origem em (10, 10) e fim em (50, 30)..

2.2.16 Delay (int tempo)

É uma rotina de atraso em milisegundos, determinado pelo valor tempo. Esta rotina é exclusiva para o C30.

2.2.17 Delay_Us (int tempo)

É uma rotina de atraso em microsegundos, determinado pelo valor tempo. Esta rotina é exclusiva para o C30.

4. Software

Para a geração do código .HEX da imagem a ser desenhada no display, utiliza-se o software conversor “BmptoAsm“. Para converter a imagem, é necessário primeiramente editá-la para um formato de 128x64 pixels, que corresponde ao tamanho do GLCD. Depois, basta carregar a imagem no software e fazer a conversão. O código gerado é dado na própria janela do software.

5. Anexos

Junto a este arquivo se encontram o manual do Display Gráfico e um material que auxilia o entendimento quanto ao funcionamento do display.

6. Organização dos Arquivos

6.1 Arquivos

 main.c: Este arquivo contém a iniciação do microcontrolador e aplicação do usuário.

 GLCD.c: contém as funções do display gráfico.

 definitions.h: contém as definições de hardware, variáveis globais, protótipos e inclusões de bibliotecas de funções.

 GLCD.h: contém as definições para a biblioteca do GLCD.

(5)

7. Sobre os autores

Marcelo M. M. do Couto, graduado no Inatel, é engenheiro de desenvolvimento atuante nas áreas de software e hardware utilizando sistemas microcontrolados. Atualmente cursando mestrado em redes de telecomunicações

Tiago Coelho é Técnico em Eletrônica pela ETE “Francisco Moreira da Costa” e cursa Engenharia de Telecomunicações no INATEL. Atualmente encontra-se nos EUA participando de um programa de intercâmbio.

Referências

Documentos relacionados

O segundo artigo versa sobre como se dá o estudo da ética, da deontologia e da bioética no curso, em quatro categorias: (1) Características gerais das disciplinas que envolvem

Segundo Cerqueira (2004) não só as escolas têm um papel importante no desenvolvimento das capacidades e criação de competências nestes jovens, também o.. mundo

The lagrangian particle tracking model was used to stu- dy the dispersion of particles released in different lagoon channels, the advection of particles released

62 daquele instrumento internacional”, verifica-se que não restam dúvidas quanto à vinculação do Estado Brasileiro à jurisdição da Corte Interamericana, no que diz respeito a

O CES é constituído por 54 itens, destinados a avaliar: (a) cinco tipos de crenças, a saber: (a1) Estatuto de Emprego - avalia até que ponto são favoráveis, as

Dessa forma, os níveis de pressão sonora equivalente dos gabinetes dos professores, para o período diurno, para a condição de medição – portas e janelas abertas e equipamentos

Portanto, o nome de domínio disputado infringe as marcas registradas há quase 60 (sessenta) anos pela Reclamante no Brasil e, como demonstrado acima, está configurada a

¾ Segundo nível • Terceiro nível – Quarto nível A FAMÍLIA PROFIBUS A FAMÍLIA PROFIBUS PROFIBUS-FMS PROFIBUS-FMS é a solução de propósito geral para comunicação de