analog giriş

Başlatan asi67670, 10 Mayıs 2011, 19:54:19

asi67670

merhaba arkadaşlar.ben pic ile 4 tane analog girişi digitale çevirmek istiyorum ve bunu ayrı ayrı yapıyorum işin kalan kısmı ise bu parametreleri tek bir grafik lcd de göstermek istiyorum bunun için proton da program yazıyorum. takıldığım nokta ise a portunun hepsini nasıl analog giriş yapabilirim. benim yaşadığım kode ve devre şemamı aşağıdaki link de de bulabilirsiniz.

ayrıca ben normal sinüs çizerken bile ekran ortada bitiyor yani
proteus şemasını da bulabilirsiniz ek de neden bu yarıda bitiyor


cevaplarınızı beklemekteyim arkadaşlar

https://rapidshare.com/files/461757363/son_hali.rar

Maxim

All_Digital=TRUE derseniz öyle olur, yani tüm girişler digital olur, bunu kaldırın

birde baş tarafa CMCON =7 eklemek lazım 16F877A için

ADCON1=%10000010 satırı tüm portA girişini analog yapar

son olarak bu özelliği neden kullanmıyorsunuz, gene işlemci program satırında hex var
https://www.picproje.org/index.php/topic,32123.0.html

asi67670

dediğiniz gibi yaptım ama yine de grafiği ortadan çizmeye başlıyor. ve yine de ortada sonlandırıyor.

nasıl olacak o giriş tarafı da düzeltilecek mümkünse o kısmı bana düzeltip verir misiniz bende yanlışımı görürüm

Maxim

o kısmı bende bilmiyorum araştırmam bakmam lazım

teknikelektronikci

 RAMPTR=0  ile degeri niye sifirladinizki ? ekrana cizdikten sonra sifirlamaniz gerekmezmi ?
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

asi67670

o değişkeni kaldırdım sıfırlamasını ama yine de aynı görünüyor

ipek

Chip Select pinleri yanlış gibi
CS1 ve CS2 'yi yerini değiştirerek dene....

Maxim

dediğiniz doğru ipek hocam

ferit06

#8
CS1 ve CS2 nin yeri değiştiğinde normal gösterim yapıyor. Ancak 4 girişten okuma yapacağım diyorsunuz bu durumda diğer 3 girişten yapacağınız okumaları kaydedecek RAM alanınız pek kalmamış gibi. Ben sizin kullandığınız değişkenler ve sabitlerden bir kaçı ile oynama yaptım. İhtiyaç duymayacağınız büyüklükte değişkenler tanımlamayın. Zorunlu olmadıkça float işlemler yapmayın....

sizin verdiğiniz şekli ile 1315 program, ve 318  RAM kullanılırken

yapılacak küçük değişiklikler ile

974 program ve 186 RAM kullanılarak aynı sonuca ulaşabilirsiniz.


Xtal=4
LCD_DTPort=PORTD
LCD_RSPin=PORTC.1
LCD_ENPin=PORTE.0
LCD_RWPin=PORTC.0
LCD_CS1Pin=PORTE.1
LCD_CS2Pin=PORTE.2
LCD_Type=Samsung
Internal_Font=On
Device 16F877A
All_Digital=TRUE
Cls
Dim RAMPTR As Byte 'RAM indeksi

Dim SAMPLES[128] As Byte 'EKG sinyalleri
Dim olcum As Word
Dim x As Byte
Dim y As Dword
Dim xx As Byte
Dim xmax As Byte
Dim ymax As Float
'PORTlar
TRISA=%11111111
TRISC=%00000000
TRISD=%00000000
TRISE=%00000000
'AD cevirici
Adin_Res=10 'AD cevirici 10 bit
Adin_Tad=FRC 'Ic RC osilatoru kullan
Adin_Stime=5000 '50 us ornekleme zaman.
ADCON1=%10000010 'PORTA saga kaydilir
DelayMS 1000
Cls
RAMPTR=0 'indeks sifirlanir
'
'ANA PROGRAM
'
Loop:
   
    For RAMPTR=0 To 127
    olcum=ADIn 0   'AN0 kanalindan oku
    SAMPLES[RAMPTR]=olcum/4
'    RAMPTR=RAMPTR + 1
'    If RAMPTR=128 Then GoSub GLCD
    DelayMS 10
    Next
'   GoTo Loop
GLCD:
    DelayMS 1000
    Cls
    RAMPTR=0
    ymax=256
    xmax=128
    'Ekrana sinyal cizilir
    For xx=0 To 127
    y=63*SAMPLES[xx]/ymax
    y=63-y
'   x=xx*128/xmax
x=xx
    Plot y,x
    Next
'    Return
GoTo Loop
    End

teknikelektronikci

ben daha yeni farkina variyorum soruyu anlamamisim :D ben ekrana sinyali cizdiremiorsunuz(yani hep 0) diye anladim

ayrica diger sorun ise arkadaslarin dedigi gibi cs1 cs2 olma ihtimali yüksek
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

asi67670

çok teşekkür ederim cevaplarınız için
tez sunumunda bu sitenin de yardımlarını söyleyeceğim inşallah