1 Mart 2014 Cumartesi

C ile programlama uygulamaları-15

ADC Uygulaması-1



AMAÇ:



Mikrodeneleyicilerin çalışma sistemini öğrenmek, C dili ile program yazabilme ve 16F877A entegresini programlayabilme yeteneğini kazanmak.


YAPILACAK İŞ:



ADC uygulamasının nasıl yapıldığını öğrenmek.


DENEYİN BAĞLANTI ŞEMASI





    PROGRAM KODU:



#include <16f877a.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.



#device ADC=10 // 10 bitlik ADC kullanılacağı belirtiliyor.



#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD



#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.



#use fast_io(c) //Port yönlendirme komutları C portu için geçerli



#use fast_io(e) //Port yönlendirme komutları E portu için geçerli



#define use_portb_lcd TRUE // LCD B portuna bağlı



#include // lcd.c dosyası tanıtılıyor



#INT_AD // ADC çevrimi bitti kesmesi



void ADC_Kesmesi ( )





output_high(pin_c5); // RC5 çıkışı 1



delay_ms(200);



output_low(pin_c5); // RC5 çıkışı 0





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



//********** ANA PROGRAM FONKSİYONU*******



void main ( )





setup_psp(PSP_DISABLED); // PSP birimi devre dışı



setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı



setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı



setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı



setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı



set_tris_c(0×00); // C portu komple çıkış



set_tris_e(0x0F); // E portu komple giriş



output_c(0×00); // 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



enable_interrupts(INT_AD); // AD çevrimi bitti kesmesi tanıtılıyor



enable_interrupts(GLOBAL); // Tüm kesmeler aktif



lcd_init(); // LCD hazır hale getiriliyor



printf(lcd_putc,”f ADC UYGULAMASI “); // 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);







İŞLEM BASAMAKLARI



1.Devreyi bord üzerine kurunuz.



2. Kodu yazıp derleyiniz.Hex kodunu Pice yükleyiniz.



3.Devrenin çalışmasını inceleyiniz.




 




C ile programlama uygulamaları-15

Hiç yorum yok:

Yorum Gönder