Download Usando Display Grafico Com c18 e c30

7
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. www.exsto.com.br 1

description

Display PIC

Transcript of Download Usando Display Grafico Com c18 e c30

Usando Display Grfico com C18 e C30

Elaborado por:Tiago Coelho Magalhes

Marcelo M. M. do Couto

Revisado por:Jos Domingos Adriano

1. Introduo

O presente documento um descritivo tcnico do firmware denominado LCDGRAFICO desenvolvido pela equipe de engenharia da Exsto Tecnologia.

O LCDGRAFICO uma aplicao do Lcd Grfico 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 programao o MPLAB 7.43, tambm da Microchip. Foi escolhida como linguagem de programao a C.

Todos os documentos aqui referidos neste material encontram-se na pasta destinada aplicao do LCD Grfico.2. Hardware

O hardware necessrio para a aplicao 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. Alm dele, o portal E e A tm acesso ao bits de controle. Para ajuste do contraste do LCD necessrio um potencimetro de 10K no pino Vl do Display. O canal 0 do conversor AD l o potencimetro de 10K.

O hardware do cdigo do C30 foi baseado no Sigma128, que baseado no dsPIC33F128 e sua aplicao feita para mostrar algumas figuras geomtricas, um logo da exsto e uma string com o site da empresa.

3. Firmware

O firmware tem como objetivo principal apresentar uma aplicao do kit NEO201 e do Sigma128 utilizando o LCD Grfico. Para o NEO 210 apresentada a leitura do potencimetro R26 com a escala de resistncia mostrada em barras no LCD. Alm disso, desenhado o logo da empresa Exsto Tecnologia. No Sigma128 somente o logo visualizado. A parte onde se aplica o cdigo do usurio est contida no arquivo main.c. Alm dele, existem trs outros arquivos. Dois contm as definies de hardware chamado definitions.h e o outro contm as definies para a biblioteca do GLCD chamado GLCD.h. O outro contm as rotinas grficas e especficas para o LCD e se chama GLCD.c. Os arquivos com extenso .h so chamados de arquivos cabealhos, sendo que no possui nenhuma lgica implementada. Os arquivos com extenso .c so os que executam alguma lgica.Como citado anteriormente, o firmware dividido em vrias partes, em vrios arquivos e em vrias sub-rotinas, procura-se nos itens posteriores descrever todas esses citados. Como a biblioteca padro para todos os dois compiladores, necessrio, no inicio do programa, especificar o compilador. Usa-se: #define _C30_ para os cdigos do Sigma128 e #define _C18_ para o NEO por exemplo.2.1 Programa principalO programa principal se divide em:1. Configurao dos Portais2. Inicializao dos Portais3. Cdigo do usurio2.1.1 Configurao dos PortaisNesta etapa o firmware configura os portais do microcontrolador como entrada e sada e seus estados iniciais. Esta configurao feita no prprio main. Mas h tambm as definies de pinagem para o hardware, onde esto 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 cabealho definitions.h.

2.1.3 Cdigo do usurio

o espao destinado ao usurio para colocar seu cdigo.2.2 Sub-RotinasEssas sub-rotinas so utilizadas pelo programa para fazer determinadas funes, como apagar o display, desenhar retngulos e crculos, etc. Elas esto includas no arquivo GLCD.c.2.2.1 void delay10us (void)Esta funo gera um atraso de 10us. Esta funo prpria para o C18.

2.2.2 void delay100us (void)Esta funo gera um atraso de 100us. Esta funo prpria para o C18.

2.2.3 void delay5ms (void)Esta funo gera um atraso de 5ms. Esta funo prpria para o C18.

2.2.4 void glcdDat (unsigned char DAT)Esta funo envia um dado ao Display Grfico.

2.2.5 void glcdInst (unsigned char INST)

Esta funo envia uma instruo ao Display Grfico.

2.2.6 void glcdWaitBusy (void)

Esta funo espera at que o Display Grfico esteja pronto para receber mais instrues ou dados.

2.2.7 void glcdInit (void)

Esta funo inicia o LCD Grfico. Os comandos so:

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

* 0x40 -> Este o endereo de coluna. Ele especifica uma das 64 colunas possveis. Esta a coluna 0.

* 0xB8 -> Este o endereo de pginas. Ele especifica uma das 8 pginas possveis. Esta a pgina 0.

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

2.2.8 void glcdClear (void)

Esta funo limpa a tela do LCD Grfico.

2.2.9 void glcdPrintImage (rom unsigned char *Msg)

Esta funo desenha uma imagem na tela do LCD Grfico a partir da posio inicial da tela.

2.2.10 void glcdRead (VOID)Esta funo l um dado na posio especificada do LCD Grfico. Exemplo de cdigo:

glcdInst (64);

//Posiciona em X

glcdInst (0xB8);//Posiciona em Y

readDat = glcdRead ( );//Recebe os dados em readDat2.2.11 void glcdPixel (unsigned char X, unsigned char Y, unsigned char COLOR)

Esta funo acende ou apaga um Pixel em qualquer posio do LCD Grfico. Os parmetros de entrada contm a posio de coluna (X) e de linha (Y), e se o pixel aceso (COLOR=1) ou apagado (COLOR=0). Exemplo de cdigo:

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 funo escreve uma mensagem no LCD Grfico. Os parmetros de entrada contm a posio de coluna (X) e de linha (Y), onde a frase comear; 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 cdigo:

rom const char Msg1 [ ] = Hello world again;

//Declarao da mensagemglcdPrintImage (Msg1);

2.2.13 void rectangle (unsigned char LENGTH, unsigned char WIDTH, unsigned char ORIGENX, unsigned char ORIGENY, unsigned char FILL)

Esta funo desenha um retngulo no LCD Grfico. Os parmetros de entrada contm a posio de coluna (ORIGENX) e de linha (ORIGENY), correspondente coordenada central do retngulo; LARGURA (WIDTH) e COMPRIMENTO (LENGTH) informam as dimenses do retngulo; e se o retngulo ter o fundo apagado (FILL=0) ou fundo aceso (FILL=1). Exemplo de cdigo:

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 aparecero.

2.2.14 void circle (char RAY, charX, char Y)

Esta funo desenha um crculo no LCD Grfico. Os parmetros de entrada contm a posio de coluna (X) e de linha (Y), correspondente coordenada central do crculo; RAY informa o raio do crculo. Exemplo de cdigo:

circle (10, 50, 30);//Faz um crculo 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 funo desenha uma reta no LCD Grfico. Os parmetros de entrada contm a posio de coluna (X1) e de linha (Y1), correspondente coordenada inicial da reta e a posio de coluna (X2) e de linha (Y2), correspondente coordenada final da reta. Exemplo de cdigo:

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 gerao do cdigo .HEX da imagem a ser desenhada no display, utiliza-se o software conversor BmptoAsm. Para converter a imagem, necessrio 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 converso. O cdigo gerado dado na prpria janela do software.5. Anexos

Junto a este arquivo se encontram o manual do Display Grfico e um material que auxilia o entendimento quanto ao funcionamento do display.6. Organizao dos Arquivos

6.1 Arquivos main.c: Este arquivo contm a iniciao do microcontrolador e aplicao do usurio.

GLCD.c: contm as funes do display grfico.

definitions.h: contm as definies de hardware, variveis globais, prottipos e incluses de bibliotecas de funes.

GLCD.h: contm as definies para a biblioteca do GLCD.

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 telecomunicaes

Tiago Coelho Tcnico em Eletrnica pela ETE Francisco Moreira da Costa e cursa Engenharia de Telecomunicaes no INATEL. Atualmente encontra-se nos EUA participando de um programa de intercmbio.

www.exsto.com.br

2