Вы находитесь на странице: 1из 2

#include<16F877A.h> //Aqui incluso o header (*.

h) para o microcontrolador
//utilizado.
#device ADC = 10 //Define 10 bits para o resultado da converso AD
#use delay (clock=4000000) //Aqui definimos a frequncia do cristal para clculo dos
//delays
#fuses XT, NOWDT, PUT, BROWNOUT, NOLVP //Configurao dos fusveis
#include "LCD8B.c"

int16 ad; //Varivel que armazenar a converso AD

void main()
{
lcd_ini(); /*Chamada funo lcd_ini()... Esta funo para a inicializao
do LCD e est no arquivo LCD8B.c*/
SETUP_ADC_PORTS(RA0_ANALOG); //Configurada a entrada analgica, somente a
//entrada RA0
SETUP_ADC(ADC_CLOCK_INTERNAL); //Configurado o conversor AD interno
SET_ADC_CHANNEL(0); //Configura leitura do canal analgico 0
setup_timer_2(T2_DIV_BY_1, 249, 1); //Inicia o PR2 em 249 e o prescaler do Time
//2 em 1
setup_ccp1(CCP_PWM); //Seleciona o modo CCP para PWM
printf(lcd_escreve,"\fDuty = "); //Escreve na primeira linha a palavra Duty =

while(true)
{
ad = READ_ADC(); //Faz a leitura do ADC e armazena em ad
set_pwm1_duty(ad); //Ajusta o Duty_Cycle
//ad = ((ad /4) * 100) / 255; //Faz o clculo para converso de 0 a 100%
lcd_pos_xy(8,1); //Posiciona o cursor na coluna 8, linha 1
printf(lcd_escreve," " ); //Limpa o espao para mostrar
//corretamente o ad
lcd_pos_xy(8,1); //Posiciona o cursor na coluna 8, linha 1
printf(lcd_escreve,"%lu",ad); //Escreve a converso ad no LCD
}
}

Вам также может понравиться