quarta-feira, 4 de setembro de 2019

Leitura de uma entrada analógica(AN0) do microcontrolador PIC18F4520 e escrevendo o valor no LCD, afim de monitorar a entrada de valores.

Olá pessoal, nessa interface da figura abaixo, montada no proteus, usando o microcontrolador PIC18F4520, temos um potenciômetro (POT-HG no Proteus), que simula a entrada de 0 a 5V no pino AN0 do microcontrolador e um LCD (LM16 no Proteus) que mostrará o valor lido de 0 a 5V,  convertido pelo conversor interno analógico/digital de 10 Bits, para um número de 0 a 1023. 
Assim se o potenciômetro for zerado (zero volts) o LCD mostrará 0 e se o potenciômetro estiver no máximo (cinco volts) o LCD mostrará 1023.

Interface de simulação montada no PROTEUS


A programação para fazer a leitura e escrever no LCD pode ser vista abaixo na figura, nela o número gerado pela conversão, deve ser convertido para texto antes de ser enviado para o LCD e podemos ver isso no comando de conversão, que converte o número inteiro em string.
Nessa programação feita no MIKROC e necessário habitar a biblioteca do LCD, CONVERÇÃO, ADC.

//definição dos pinos de ligação do LCD
sbit LCD_RS at Rc0_bit;
sbit LCD_EN at Rc1_bit;
sbit LCD_D4 at Rc2_bit;
sbit LCD_D5 at Rc3_bit;
sbit LCD_D6 at Rc4_bit;
sbit LCD_D7 at Rc5_bit;

sbit LCD_RS_Direction at TRISc0_bit;
sbit LCD_EN_Direction at TRISc1_bit;
sbit LCD_D4_Direction at TRISc2_bit;
sbit LCD_D5_Direction at TRISc3_bit;
sbit LCD_D6_Direction at TRISc4_bit;
sbit LCD_D7_Direction at TRISc5_bit;
// fim das configurações dos pinos

char text[6];
unsigned int leituraADC=0;
void main()
{
  adcon1=15;  //define todas as entradas e saídas como digitais
  trisc=0;//define o portc com saída
  trisb=255;//define o portb como entrada
  portc=0;//desliga todas as saídas do portc

  Lcd_Init();//inicializa o lcd
  Lcd_Cmd(_LCD_CLEAR);//limpa o display
  
  Lcd_Cmd(_LCD_CURSOR_OFF);//desliga o cursor, 
  ADC_init();//inicializa o leitor analogico
  while(1)
  {
    leituraADC = ADC_Read(0);
    WordtoStr(leituraADC,text);
    LCD_out(1,1,"O valor lido e:");
    delay_ms(10);
    LCD_out(2,1,text);
    Delay_ms(100);
  }
}

Espero que ajude de alguma forma em algum projeto que seja necessária a leitura analógica e escrita no LCD, tais como sensores de temperatura. Qualquer dúvida poste o comentário ou encaminhe um e-mail.


Nenhum comentário:

Postar um comentário