Display LCD e conversor A/D com PIC18F4550 e MikroC

Neste artigo será apresentado como ler o conversor A/D (analógico para digital) interno do microcontrolador PIC18F4550 e exibir o valor da conversão em um display LCD 16x2, os quais são periféricos amplamente aplicados em projetos envolvendo sistemas embarcados. Abordaremos como utilizar as bibliotecas disponibilizadas pelo compilador MikroC para o PIC e os registradores para configuração do conversor A/D.

 

Para este tutorial, serão utilizadas as ferramentas:

 

Obs: Foram utilizadas versões de avaliação que possuem limitações. 

 

 

Criando o projeto no MikroC para PIC

 

Uma vez instalado o MikroC, basta abrir o programa e iniciar a criação do projeto clicando em File -> New -> New Project.

 

Criando novo projeto para PIC18F4550
Figura 1 - Criando novo projeto

 

Em seguida, o programa solicitará informações referentes ao nome do projeto, microcontrolador empregado, pasta de destino dos arquivos e a frequência de trabalho, a qual deverá ser selecionada 20 MHz (20.000.000), uma vez que será utilizado um cristal oscilador externo no circuito de simulação:

  

Selecionando configurações do projeto
Figura 2 - Selecionando configurações do projeto

 

Logo em seguida, caso o usuário deseje incluir algum projeto desenvolvido anteriormente, basta informar a localização do arquivo, caso contrário, apenas selecione Next. Uma vez realizada esta etapa, deve-se agora selecionar se o usuário deseja adicionar todas as bibliotecas disponibilizadas pelo MikroC selecionando a opção Include All (recomendado) ou deseja não adicionar nenhuma selecionando a opção Include None. Por fim selecione Finish para que o programa possa abrir a tela em que será desenvolvida a programação.

 

display-LCD- conversor-AD-PIC18F4550-03
Figura 3 - Selecionando a inclusão de bibliotecas

 

 

Selecionando fusíveis de configuração do PIC

 

Após criar o projeto, deve-se clicar em Edit Project para configurar adequadamente os fusíveis do microcontrolador, os quais são registradores empregados para selecionar os recursos que se deseja utilizar em relação ao hardware do dispositivo, tais como tipo de oscilador, utilização de comparadores internos, habilitação de master clear, entre outros. Neste projeto deve-se atentar-se aos fusíveis: 

 

Fusível

Seleção

Descrição

PLL Prescaler Selection

Divide by 5 (20 MHZ oscillator input)

Divide a frequência do oscilador por 5 (utilizado para oscilador de 20 MHZ)

Oscillator Selection

HS oscillator (HS)

Oscilador High Speed externo ( 4 ~ 20 MHz)

PORTB A/D

Disabled

Seleciona RB0 até RB4 como portas I/O

MCLR Pin

Enabled

Habilita master clear do microcontrolador

 

 

Biblioteca LCD

 

O MikroC PRO for PIC fornece uma biblioteca de comunicação de 4 bits para controle de displays LCD paralelos. Dentre as características desse recurso, sobressai-se a simplicidade e a denominação sugestiva das funções disponibilizadas. Para utilizar esta biblioteca é necessário que se configure primeiramente as I/Os empregadas para comunicação com o display, o próprio MikroC disponibiliza em sua guia Help o acesso às informações pertinentes a esta biblioteca. Para acessar esse recurso, basta pressionar F1 no teclado, clicar em Pesquisar e digitar display LCD. Uma vez realizado este procedimento, o programa listará todos os tópicos referentes a displays LCD, selecione Lcd Library.

 

Figura 4 - Consultando informações referentes a biblioteca do display LCD

 

Uma vez realizado o procedimento, será disponibilizado para o usuário as informações referentes às funções da biblioteca e a configuração das I/Os empregadas.

  

Figura 5 - Consultando a configuração das I/Os utilizadas para comunicação

 

Serão utilizadas as configurações disponibilizadas pelo MikroC, cada linha de código em que houver um sbit termo1 at termo2, significa que está havendo uma vinculação entre o termo1 e o termo2. Por exemplo, a primeira linha de código consiste em sbit LCD_RS at RB4_bit, isso quer dizer que sempre que alguma das funções da biblioteca utilizar a palavra LCD_RS ela estará na verdade se referindo a RB4_bit, que por sua vez consiste ao acesso a um bit do registrador que altera o nível lógico de um pino PORTB (no caso). Porém, se fosse sbit LCD_RS at RC4_bit, estaríamos acessando um bit do registrador que altera o nível lógico de um pino no PORTC. Portanto consiste em "apelidos" empregados para que o código se torne mais favoravelmente interpretado por parte do usuário.

 

 

Funções da biblioteca display LCD

 

Vale salientar que a exibição de informações no display LCD por meio da biblioteca se dá apenas por meio de strings, dessa forma mensagens pré definidas podem facilmente serem exibidas. Todavia qualquer forma de dado que não corresponda a um caractere (char) ou uma string necessita ser convertido para posteriormente ser exibido. Consequentemente, para que seja possível exibir valores obtidos de sensores, ou contadores, haverá a necessidade de se utilizar o recurso de conversão disponibilizado pelo MikroC. Abaixo é exibida uma tabela contendo informações referentes às funções provenientes da biblioteca e das funções de conversão aplicadas no código.

 

Função

Descrição

Lcd_Init()

Inicializa biblioteca.

Lcd_Cmd(_LCD_CLEAR)

Limpeza de tela do dispositivo.

Lcd_Cmd(_LCD_CURSOR_OFF)

Desliga cursor do display.

Lcd_Out(linha,coluna,mensagem)

Exibe uma mensagem ou conteúdo de uma string na linha e coluna especificada.

Lcd_Out_Cp(mensagem)

Exibe uma mensagem ou conteúdo de uma string na linha e coluna em que se encontra o cursor o display.

 

 

 

Funções de conversão e manipulação de string

 

Função

Descrição

IntToStr(var int,string)

Função empregada para realizar a conversão valores inteiros para strings.

Ltrim(string)

Função utilizada para recortar espaços vazios situados a esquerda do primeiro caractere que compõe a string.

 

 

 

Biblioteca conversor A/D

 

O microcontrolador PIC 18F4550 dispõe de 13 entradas analógicas, em que 5 se encontram no PORTA, 5 localizadas no PORTB, das quais 4 podem ser habilitadas pelo fusível de configuração PORTB A/D, 3 localizadas no PORTE. Todas estas entradas analógicas são direcionadas para o conversor A/D de 10 bits do microcontrolador por meio do multiplexador interno, o qual seleciona o canal para obter o sinal analógico proveniente do dispositivo periférico (sensor), por meio dos bits CHS0, CHS1, CHS2, CHS3 do registrador ADCON0.

 

Módulo analógico interno microcontrolador PIC18F4550
Figura 6 - Módulo analógico interno microcontrolador PIC18F4550

 

Para acessar as informações referentes à biblioteca do conversor A/D, basta repetir os passos executados para acessar as informações disponibilizadas sobre a biblioteca de manipulação de displays LCD, porém digitando ADC em pesquisar.

 

Consultando as funções disponíveis para o módulo analógico do microcontrolador
Figura 7 - Consultando as funções disponíveis para o módulo analógico do microcontrolador

 

 

Funções da biblioteca de conversor A/D

 

A biblioteca fornecida pelo MikroC para a utilização do módulo analógico dos microcontroladores apresenta 3 funções, das quais 2 serão empregadas no projeto. Vale salientar que, embora uma das funções seja destinada à configuração do módulo analógico, haverá a necessidade de consultar o datasheet do dispositivo para consultar os registradores referentes à configuração deste recurso, uma vez que a quantidade de portas analógicas aplicadas ao projeto está em função da necessidade do usuário. Será disponibilizada abaixo uma tabela referente às funções contidas no projeto.

 

Função

Descrição

ADC_Init()

Inicializa o módulo analógico do microcontrolador.

ADC_Get_Sample(short canal)

Recebe o valor analógico proveniente da porta analógica indicada pela variável "canal", podendo ser também utilizado o respectivo número do canal.


Ex:  ADC_Get_Sample(0) : recebe valor analógico do canal 0.

 

 

Registrador ADCON1

 

O ADCON1 consiste em um registrador importante para a configuração do módulo analógico do microcontrolador PIC18F4550, uma vez que por meio dos bits PCFG0, PCFG1, PCFG2, PCFG3, serão selecionadas as respectivas portas configuradas como entradas analógicas. É disponibilizado no datasheet do componente uma tabela referente ao valor que os 4 bits devem assumir para configurar as portas analógicas.

 

Bits utilizados na configuração de seleção das portas analógicas.
Figura 8 - Bits utilizados na configuração de seleção das portas analógicas.

 

No projeto em questão serão utilizadas as portas analógicas AN0, AN1 e AN2, consequentemente, observando a tabela disponibilizada abaixo. Deve-se estabelecer os bits PCFG3:PCFG0 do registrador ADCON1 como:

  • PCFG0: 0
  • PCFG1: 0
  • PCFG2: 1
  • PCFG3: 1

 

Tabela de estados dos bits para seleção de portas analógicas
Figura 9 - Tabela de estados dos bits para seleção de portas analógicas

 

Obs: As entradas analógicas também devem ser configuradas como entradas digitais por meio do registrador TRIS.

 

 

Circuito utilizado para simulação

 

A seguir é exibido o circuito utilizado para simulação no Isis Proteus:

 

Hardware para simulação no Proteus
Figura 10 - Hardware para simulação no Proteus

 

Montando o Circuito no Proteus

 

A localização dos componentes empregados na composição do circuito, consiste na tarefa inicial para viabilização da simulação. Visto que não é algo que possa se desempenhado de maneira intuitiva, será disponibilizado como realizar a busca e os respectivos termos-chave a serem utilizados.

 

Localizando menu de busca de componentes
Figura 11 - Localizando menu de busca de componentes

 

Uma vez aberto o software ISIS Proteus, deve-se acessar o menu de busca de componentes por meio da opção Component Mode e em seguida clicar no ícone azul “P”Um método alternativo de acesso ao menu ocorre por meio do pressionar da tecla “P”, a qual corresponde a um atalho de teclado.

 

Acesso ao menu de busca de componentes
Figura 12 - Acesso ao menu de busca de componentes

 

Após acessar o menu de busca de componentes através dos métodos citados anteriormente, devemos agora inserir na barra de pesquisa (Keywords) os termos-chave:

 

Termo-chave

Componente

Descrição presente no Software

Capacitor

Capacitor cerâmico de 22pF

Capacitor primitive

Crystal

Cristal oscilador externo de 20MHz

Quartz crystal

Resistor

Resistor de pull up do pino MCLR

Analog resistor primitive

Pot

Potenciômetros (sensores S1,S2,S3 e ajuste de contraste do display).

High Granularity Interactive Potentiometer (Lin,Log or Antilog Law)

Push

Botão para reset do microcontrolador

SPST Push Button

PIC18F4550

Microcontrolador utilizado

PIC18Microcontroller (32kB code 20488 data…)

16x2

Display LCD 16x2

16x2 Alphanumeric LCD

 

Observação: Sempre ao selecionar um componente após efetuar uma busca, deve-se atentar-se ao quesito “Preview” (prévia), localizado na parte superior direita do menu de seleção de componentes, uma vez que este parâmetro indica se o dispositivo em questão pode ser empregado em simulações, ou apenas para confecção de layouts de placas de circuito impresso.

 
Exemplo: Tomaremos como exemplo o amplificador operacional LM358. Após buscar o componente na barra de pesquisa do menu de seleção de componentes, será disponibilizada uma prévia indicando a sua simbologia e seu encapsulamento para confecção da placa de circuito impresso. Nesses quesitos devemos observar o “Preview” e identificar se este componente pode ser utilizado para simulação. Caso apresente “No Simulator Model”, devemos buscar na lista outro que não apresente esta característica.

 

Verificando capacidade de simulação do dispositivo
Figura 13 - Verificando capacidade de simulação do dispositivo

 

 

Código

 

 

 

Compilando o código e inserindo hex para simulação

 

Após utilizar o código disponibilizado, devemos compilar clicando na opção “Build” no MikroC, para que possa ser gerado o arquivo hex, o qual será inserido no microcontrolador empregado e consequentemente interpretado pelo ISIS Proteus para que a simulação possa ser executada.

 

Compilando código a ser simulado
Figura 14 - Compilando código a ser simulado

 

Uma vez selecionada a opção “Build”, o arquivo hex será gerado na pasta em que se encontra o projeto. Pode-se verificar o endereço do arquivo utilizando: 

 

Localização do arquivo hex.
Figura 15 - Localização do arquivo hex.

 

Após localizar o arquivo, devemos importá-lo para o ISIS Proteus para efetivamente realizar a simulação. Uma vez que todos os componentes se encontrem devidamente conectados conforme o diagrama fornecido, devemos clicar no microcontrolador PIC18F4550 com o botão direito do mouse, selecionar a opção “Edit Properties”, ou acessar utilizando o atalho CTRL+E.

 

Seleção do menu de modificação de parâmetros do microcontrolador
Figura 16 - Seleção do menu de modificação de parâmetros do microcontrolador

 

Devemos agora ajustar alguns parâmetros referentes ao funcionamento do microcontrolador, um deles corresponde à frequência de trabalho, a qual deve ser selecionada em função da frequência do oscilador inserido no projeto. Neste caso será configurado para 20MHz, que por sua vez corresponde à frequência do cristal oscilador utilizado na barra “Processor Clock Frequency”. Para realizar a inserção do arquivo devemos selecionar o ícone da pasta presente na barra Program File e posteriormente selecionar a pasta em que se encontra o arquivo hex.

 

Selecionando arquivo hex
Figura 17 - Selecionando arquivo hex

 

Uma vez selecionado o arquivo hex, basta clicar no ícone “Run the simulation” localizado na parte inferior esquerda da tela, logo em seguida o software iniciará a simulação e será possível verificar os resultados obtidos.

 

Ícone para iniciar a simulação
Figura 18 - Ícone para iniciar a simulação

 

 

Conclusão

 

A aplicação de displays LCDs em conjunto com o módulo analógico de um microcontrolador correspondem a uma alternativa simples e eficiente, uma vez que a interação do microcontrolador com os mais diversos segmentos de sensores analógicos existentes no mercado ocorre por meio do conversor A/D interno do próprio microcontrolador.

O monitoramento das grandezas mensuradas e tratadas pelo projeto ocorre por meio da exibição dos valores na tela do display, que por sua vez, embora esteja limitado pelas dimensões reduzidas, possibilita que as informações possam ser exibidas em sequência, assim possibilitando a exibição de múltiplas mensagens, as quais podem ser simultâneas ou não, em função de seus respectivos comprimentos.

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Enrique Santos
Possui formação técnica no âmbito de Eletroeletrônica pelo Serviço Nacional de Aprendizagem Industrial. Atualmente é graduando do curso de Engenharia Eletrônica e aluno pesquisador no Laboratório de Sistemas Inteligentes da Universidade Tecnológica Federal do Paraná.

5
Deixe um comentário

avatar
 
5 Comment threads
0 Thread replies
2 Followers
 
Most reacted comment
Hottest comment thread
4 Comment authors
ALDANISIOSergio FinkLuiz Antonio Vargas Pintomacr Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
ALDANISIO
Visitante
ALDANISIO

BOA TARDE GOSTARIA DE IMPLEMENTAR UM CONTROLE DE NIVEL DE CAIXA DAGUA COM PIC12F675 PARA MEU TCC USANDO PARA ACIONAR UMA BARRA DE LED PARA VISUALIZAÇÃO E O PIC PARA ACIONAR A BOMBA DAGUA

Sergio Fink
Membro
Sergio Fink

Boa tarde pessoal.
Fiz tudo de acordo com as instruções e funcionou bem.
Parabéns pelo projeto.

Luiz Antonio Vargas Pinto
Membro

Embora ainda não tenha testado, este é um projeto interessante. Boa proposta.
As vezes as pessoas não percebem os valores embutidos em um projeto. Neste caso, conversão A/D e Acesso ao LCD. Parabéns.
Quem queira falar mais a respeito comigo pode enviar email para [email protected] Sei que parece estranho, mas leio minha inbox diariamente, também gostaria de conversar com outros autores, mas a comunicação não fica visível. Grande abraço

macr
Visitante
macr

Fiz tudo como descrito, porem não funcionou.:
O display acende no proteus mas não escreve nada.

macr
Visitante
macr

Olá Amigos,
O Barramento azul com fazê-lo.
obrigado.