CCS C ile ADC okuma ve lcd de gösterme sorunu!!!

Başlatan eemuratozan, 31 Mart 2012, 11:57:53

eemuratozan

I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.

serhat1990

Demek istedigim cıkısını gözlemle , anlatmak istediğim 8bit adc yaptın diyelim. Potun cıkısında yani picin analog girişi ile şase arasındaki gerilim 1 volt olsun adc'de okuman gereken deger 51'dir. Demek istedigim bu eger pot cıkısında bu gerilim varken sen bunu görmüyorsan sorun pot ile değil  senin yazılımda yada baska bir yerde.

justice_for_all

bende o devreyi boarda kur ve oyle dene proteusa pek guvenme proteusda debug yaptin mi peki hic?bekli adc dogru okuyodur ama lcd yalnis yaziyodur.
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

serhat1990

#18
adc'nin kac bit oldugunu girince kabul etmiyor diyordun girdigin yer yanlıs bölüm olabilir. Su sekilde yapmanı tavsiye ederim.


/*____Serhat____*/
/* 10 bit adc, lcd kullanımı*/
/* __24.03.2012__*/

#include <16f877A.h>
#DEVICE ADC=10 //10 BİT ADC
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,NOBROWNOUT
#use delay(clock=4000000)
#use fast_io(b)
#use fast_io(d)



unsigned int16 adcbilgi=0; //16 bitlik işaretsiz adcbilgi adında bir degisken tanımladık...
float voltajdeger=0;    //ondalıklı voltaj adında bir degisken tanımladık



#define LCD_ENABLE_PIN     PIN_d3      //lcd enable pini e0
#define LCD_RS_PIN         PIN_d1      //lcd rs pini pin e2
#define LCD_RW_PIN         PIN_d2      //lcd rw pini pin e1

#define LCD_DATA4    PIN_d7         //lcdnin data4 pini pina5 
#define LCD_DATA5    PIN_d6         //lcdnin data5 pini pina4 
#define LCD_DATA6    PIN_d5         //lcdnin data6 pini pina3 
#define LCD_DATA7    PIN_d4         //lcdnin data7 pini pina2

#include <lcd.c>                    // lcd dosyalarını yükler

void main()

{
   set_tris_a(0b000001);   //a0 pini giriş ...
   setup_adc(adc_clock_div_32);    //adc clock frekansı fosc/32
   setup_adc_ports(AN0);   //AN0 ANALOG GİRİŞ
   port_b_pullups(1);   //portb'tün pinleri pull up 
   set_tris_b(0xff);    //b portu giriş
   set_tris_d(0x00);    //d portu cıkıs
   output_d(0x00);      //d portunu sıfırla
   output_b(0xff);      //b portunun tüm pinlerine lojik 1 yükle
   lcd_init();          //lcd dosyalarını yükle
   printf(lcd_putc,"\f");           //lcd'yi temizle
   lcd_gotoxy(2,1);printf(lcd_putc,"CCS OGRENIYORUZ ");  //lcd 1.satır 2.sütundan YAZ.
   lcd_gotoxy(2,2);printf(lcd_putc," LCD DENEMESI ");delay_ms(2000); //2.SATIR 2.sütundan itibaren yaz.2 sn bekle
   printf(lcd_putc,"\f");           //lcd'yi temizle
   
   while(1)    //sonsuz döngüye giriliyor..
   
   {

      
         set_adc_channel(0);  //adc kanalı 0 aktıf
         delay_us(20);  //20 us bekle 
         adcbilgi=read_adc(); //adc oku adc bilgiye ata
         
         voltajdeger=adcbilgi*0.0048828125;    //5/1024=0.0048828125 ADIM voltajı...
         
         lcd_gotoxy(2,1);printf(lcd_putc,"VOLTAJ=%3f ",voltajdeger);  //voltaj bilgisini göster...
         lcd_gotoxy(2,2);printf(lcd_putc,"ADCBILGI=%4Lu",adcbilgi);    //adcbilgisi altsatırda yaz.
         
         
         Delay_Ms(100);    //100 Ms BEKLE
      
      
      printf(lcd_putc,"\f");           //lcd'yi temizle
      
   }   
      
   
}
   
   

eemuratozan

evet include un altına yerleştirdim olmadı ama dediklerinizi bi deniycem şimdi yazarım biraz sonra
I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.

eemuratozan

yok hocam adc girişine doğru şeyler geliyor ama lcd de yanlış şeyler var adc girişi 5 ise bu 255 demektir lcd de bunu göstermesi gerek ben programda hiç bi işlem yaptırmadan lcd ye yolluyorum zaten yani aldığını göstermesi  gerek lanet olasıca göstermio
I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.

serhat1990

yazılımını ve devre semanı upload edersen inceleyebilirim. İyi çalışmalar.

eemuratozan

I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.

eistain_54

Alıntı yapılan: justice_for_all - 31 Mart 2012, 16:08:19
bende o devreyi boarda kur ve oyle dene proteusa pek guvenme proteusda debug yaptin mi peki hic?bekli adc dogru okuyodur ama lcd yalnis yaziyodur.
Evet kesinlikle imkanın varsa kur devreyi.Ben aynı programımı proteusta çalıştıramadım ama kit ile test ettim hemen çalıştırdım.
Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!

eemuratozan

eninde sonunda tek çözüm oymuş gibi duruyor teşekkürler görüşleriniz için
I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.

justice_for_all

verdigin dosyayi derledim 0 ile 255 arasinda degisiyor sorun nerede ki
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

serhat1990

Senin yazılımla ugrasırken benim ccs hata vermeye basladı kendi programlarımı bile derlemiyo naptın sen :) düzeltip bakacam.

eemuratozan

bilmeden virüs mü yazdım acep sizde sorunsuz çalıştı yani :)
I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.

justice_for_all

bide pot koydugun zaman saseye bagladigin uca kucuk degerde bir direnc koy pot minimuma dusunde yanmasin ok  ;)
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

eemuratozan

ya tabiki de ama bu bi simülasyon gerçeklerken koycam tabi:)
I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.