#include <16f877.h>
#device ADC=10 // 10 bitlik ADC kullanýlacaðý belirtiliyor.
// Denetleyici konfigürasyon ayarlarý
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000) // Gecikme fonksiyonu için kullanýlacak osilatör frekansý belirtiliyor.
#define use_portb_lcd TRUE // LCD B portuna baðlý
#include <lcd.c> // lcd.c dosyasý tanýtýlýyor
unsigned long int bilgi; // Ýþaretsiz 16 bitlik tam sayý tipinde deðiþken tanýmlanýyor
float voltaj; // ondalýklý tipte voltaj isminde deðiþken tanýtýlýyor
void main ( )
{
set_tris_c(0x00); // C portu komple çýkýþ
set_tris_e(0x0F); // E portu komple giriþ
output_c(0x00); // C portu çýkýþýný sýfýrla
setup_adc(adc_clock_div_32); // ADC clock frekansý fosc/32
setup_adc_ports(ALL_ANALOG); // Tüm AN giriþleri analog
lcd_init(); // LCD hazýr hale getiriliyor
printf(lcd_putc,"\f ADC "); // LCD'ye yazý yazdýrýlýyor
delay_ms(1500);
while(1) // sonsuz döngü
{
set_adc_channel(5); // RE0/AN5 ucundaki sinyal A/D iþlemine tabi tutulacak
delay_us(20); // Kanal seçiminde sonra bu bekleme süresi verilmelidir
bilgi=read_adc(); // ADC sonucu okunuyor ve bilgi deðiþkenine aktarýlýyor
voltaj=0.0048828125*bilgi; // Dijitale çevirme iþlemine uðrayan sinyalin gerilimi hesaplanýyor
printf(lcd_putc,"\fAN5 Kanali");
delay_ms(1500);
printf(lcd_putc,"\fDijital=%lu",bilgi); // AN5 ucundaki sinyalin dijital karþýlýðý LCD'ye aktarýlýyor
printf(lcd_putc,"\nVoltaj=%fV",voltaj); // AN5 ucundaki sinyalin gerilim deðeri LCD'ye aktarýlýyor
delay_ms(2500);
set_adc_channel(6); // RE1/AN6 ucundaki sinyal A/D iþlemine tabi tutulacak
delay_us(20); // Kanal seçiminde sonra bu bekleme süresi verilmelidir
bilgi=read_adc(); // ADC sonucu okunuyor ve bilgi deðiþkenine aktarýlýyor
voltaj=0.0048828125*bilgi; // Dijitale çevirme iþlemine uðrayan sinyalin gerilimi hesaplanýyor
printf(lcd_putc,"\fAN6 Kanali");
delay_ms(1500);
printf(lcd_putc,"\fDijital=%lu",bilgi); // AN6 ucundaki sinyalin dijital karþýlýðý LCD'ye aktarýlýyor
printf(lcd_putc,"\nVoltaj=%fV",voltaj); // AN6 ucundaki sinyalin gerilim deðeri LCD'ye aktarýlýyor
delay_ms(2500);
set_adc_channel(7); // RE2/AN7 ucundaki sinyal A/D iþlemine tabi tutulacak
delay_us(20); // Kanal seçiminde sonra bu bekleme süresi verilmelidir
bilgi=read_adc(); // ADC sonucu okunuyor ve bilgi deðiþkenine aktarýlýyor
voltaj=0.0048828125*bilgi; // Dijitale çevirme iþlemine uðrayan sinyalin gerilimi hesaplanýyor
printf(lcd_putc,"\fAN7 Kanali");
delay_ms(1500);
printf(lcd_putc,"\fDijital=%lu",bilgi); // AN7 ucundaki sinyalin dijital karþýlýðý LCD'ye aktarýlýyor
printf(lcd_putc,"\nVoltaj=%fV",voltaj); // AN7 ucundaki sinyalin gerilim deðeri LCD'ye aktarýlýyor
delay_ms(2500);
}
}