8 Comentários

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.

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

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

Software » Display LCD e conversor A/D com PIC18F4550 e MikroC
Talvez você goste:
Comentários:

8
Deixe um comentário

avatar
8 Comentários
0 Respostas
2 Seguidores
 
Discussão de maior alcance
Discussão mais quente
6 Autores de comentários
Willian da FonsecaJoao BatistaALDANISIOSergio FinkLuiz Antonio Vargas Pinto Comentários recentes
  Notificações  
recentes antigos mais votados
Notificar
Willian da Fonseca
Visitante
Willian da Fonseca

Me ajudou demais, eu estava tendo dificuldades para fazer o projeto rodar no Proteus, mas com essa ajuda facilitou bastante! Parabéns pelo conteúdo!

Joao Batista
Visitante
João Batista

Olá pessoal, bom dia!
Pessoal, alguém ai tem o arquivo hex. deste projeto, é estou com dificuldades para gerar o arquivo hex.
Sou iniciante e tenho muita dificuldades em programação.

Joao Batista
Visitante
João batista

Olá bom dia! Eu estou tendo dificuldades para gerar o arquivo hex, estou usando o Mikro c 7.6 vejam o erro que estou obtendo. 0 1 mikroCPIC1618.exe -MSF -DBG -pP18F4550 -DL -O11111114 -fo20 -N"B:\Projetos\adc_lcd\adc_lcd.mcppi" -SP"C:\Users\Public\Documents\Mikroelektronika\mikroC PRO for PIC\Defs\" -SP"C:\Users\Public\Documents\Mikroelektronika\mikroC PRO for PIC\uses\P18\" -SP"B:\Projetos\adc_lcd\" -IP"C:\Users\Public\Documents\Mikroelektronika\mikroC PRO for PIC\uses\P18\" "adc_lcd.c" "__Lib_Math.mcl" "__Lib_MathDouble.mcl" "__Lib_System.mcl" "__Lib_Delays.mcl" "__Lib_ADC_A_D.mcl" "__Lib_LcdConsts.mcl" "__Lib_Lcd.mcl" 0 1139 Available RAM: 2027 [bytes], Available ROM: 32768 [bytes] 0 122 Compilation Started P18F4550.c 1606 123 Compiled Successfully P18F4550.c 0 122 Compilation Started __Lib_Delays.c 172 123 Compiled Successfully __Lib_Delays.c 0 122 Compilation Started adc_lcd.c 53 324 Undeclared identifier 'IntToStr' in expression adc_lcd.c 54 324… Leia mais »

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.

Séries

Menu