Mikrodenetleyici kullanırken en çok rastlanan husus, bir fiziksel büyüklüğün ölçülmesi ya da ayarlanması şeklindedir. Mesela ortam sıcaklığının ölçülmesi ya da ayarlanması, ortam ışıklandırılması vb… Bu gibi durumlarda ADC kullanılması gerekmektedir. Birçok PIC serisi işlemcilerde kendi içerisinde ADC mevcuttur, ancak biz burada 18f452 ile analog dijital çevirici ile yapılabilecek işlemlere bakacağız. Uygulamada 3 farklı pinden alınan bilgiler karşılaştırılarak ekrana verilir. PortA içerisinde yer alan çevirici pinlerden hangisinden ölçüm yapılacaksa ilk olarak set_adc_channel(Pin_no) komutu ile pin seçilir daha sonrada read_adc() komutu ile o pindeki değer okunur.
Kaynak kodu inceleyiniz:
#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#include “lcd_8bit.c”main(void)
{
double value, value1, value2, enbuyuk;
setup_adc_ports( AN0_AN1_AN2_AN3_AN4 );
setup_adc( ADC_CLOCK_INTERNAL );
lcd_hazirla();
deneme();
for(;;)
{
output_a(0);
output_b(0);
output_c(0);
output_d(0);
output_e(0);
set_adc_channel( 0 );
value = read_adc();
printf(lcd_yaz, “\1value :%3.0Lf”, value);
set_adc_channel( 1 );
value1 = read_adc();
printf(lcd_yaz, “\2value1:%3.0Lf”, value1);
set_adc_channel( 2 );
value2 = read_adc();
printf(lcd_yaz, “\3value2:%3.0Lf”, value2);
if(value>value1 && value>value2)
printf(lcd_yaz, “\4 AN0 daha guclu”);
if(value1>value && value1>value2)
printf(lcd_yaz, “\4 AN1 daha guclu”);
if(value2>value && value2>value1)
printf(lcd_yaz, “\4 AN2 daha guclu”);
}
}
Dosyaları buradan indirebilirsiniz.







By hüseyin inceler on Eki 25, 2008 | Reply
proteusla bilgiler