2xpcf8574 7segment tarama deneme

Başlatan Ömerkaya, 03 Aralık 2022, 20:36:16

Ömerkaya




herkese iyi aksamlar,iyi günler 2adet pcf8574 kullanarak 4x7segment tarama yapmaya çalıştım.
dosyaları ekledim bazı sorunlar var titreme vs.elimde pcf8574 olmadığı için gerçek ortamda deneme şansım olmadı.sorunun ne olduğunu bilen yardımçı olabilirmi.teşekkürler

Bu eki görüntüleyemezsiniz.

aRci

simulasyon yapmadım ancak şu varki mevcutta ekranda değer gösterirken siz yenı digite geçip daha sonra datayı değiştirmişsiniz tarama yönteminde geçiş yaparken her zaman digitleri kapatmalısınız ve sonra veriyi yükleyip digiti aktif etmelisiniz.
    I2COUT SDA, SCL, $42,[%11111111]   
    I2COUT SDA, SCL, $40,[DISPLAY1]
    I2COUT SDA, SCL, $42,[%11111110]

Ömerkaya

eski haline göre düzeldi ama yinede dalgalanma yapıyor .teşekkürler

Ömerkaya


bu şekilde düzelttim.

Disable 'INT'lara izin verme
KESME:
    SIRA=SIRA+1:If SIRA>3 Then SIRA=0 ; (0-1-2-3 ve 15 olunca yeniden sıfır nolu ortak uç sürülecek)
    If SIRA=0 Then
    I2COUT SDA, SCL, $42,[%11111111]  
    I2COUT SDA, SCL, $40,[DISPLAY1]
    I2COUT SDA, SCL, $42,[%11111110]
    EndIf 
    
    If SIRA=1 Then
    I2COUT SDA, SCL, $42,[%11111111]   
    I2COUT SDA, SCL, $40,[DISPLAY2]
    I2COUT SDA, SCL, $42,[%11111101] 
    EndIf 
    
    If SIRA=2 Then 
    I2COUT SDA, SCL, $42,[%11111111]   
    I2COUT SDA, SCL, $40,[DISPLAY3]
    I2COUT SDA, SCL, $42,[%11111011] 
    EndIf 
    
    If SIRA=3 Then  
    I2COUT SDA, SCL, $42,[%11111111]  
    I2COUT SDA, SCL, $40,[DISPLAY4]
    I2COUT SDA, SCL, $42,[%11110111] 
    EndIf

  
    TMR0=99
    INTCON.2=0 'TMR0 Kesme bayragı sıfırlanıyor
    Resume
    Enable
End 

Ömerkaya

#4
aRci bu şekilde dediğin gibi yaptım. displeyde yazılar geliyor ama dalğalanma yapıyor. scl sda çıkıslarını pıcde olması gereken pinlere aldım yine aynı


    
    
    Device 16F877
    XTAL=4
    TRISA=%00000000
    TRISB=%00000000
    TRISC=%00000000
    TRISD=%00000000
    TRISE=%00000000          
    PORTA=0
    PORTB=0
    PORTC=0
    PORTD=0
    PORTE=0 
  
    
    Symbol SCL = PORTC.3  ' Bus I2C SCL (clock)
    Symbol SDA = PORTC.4   ' Bus I2C SDA (data)
    
    Symbol SCL1 = PORTC.5  ' Bus I2C SCL (clock)
    Symbol SDA1 = PORTC.6   ' Bus I2C SDA (data)
    
    Dim DISPLAY1    As Byte 
    Dim DISPLAY2    As Byte 
    Dim DISPLAY3    As Byte 
    Dim DISPLAY4    As Byte 
    Dim DISPLAY5    As Byte 
    Dim DISPLAY6    As Byte 
    Dim DISPLAY7    As Byte 
    Dim DISPLAY8    As Byte 
    
    Dim I         As Byte 
    Dim D         As Byte 
    Dim SIRA      As Byte
    Dim ortaled   As Byte 
    Dim ZAMAN     As Word 
 
    Dim sayi     As Byte 
    On Interrupt GoTo KESME   'kesme oluşursa KESME adlı etikete git.
    OPTION_REG=%10000001 'Pull up dirençleri İPTAL- Bölme oranı 1/64.
    INTCON=%10100000  'Kesmeler aktif ve TMR0 kesmesi aktif
    TMR0=0
    ADCON1=7   

basla:
    D=29            :GoSub AL :DISPLAY1=sayi  ;                                                                                  
    D=14           :GoSub AL :DISPLAY2=sayi    ;E 
    D=26            :GoSub AL :DISPLAY3=sayi  ;T                                                                                   
    D=14            :GoSub AL :DISPLAY4=sayi  ;E
    
    D=24            :GoSub AL :DISPLAY5=sayi  ;P                                                                                  
    D=19            :GoSub AL :DISPLAY6=sayi  ;I 
    D=12            :GoSub AL :DISPLAY7=sayi  ;C                                                                                   
    D=29           :GoSub AL :DISPLAY8=sayi   ; 
    
  GoTo basla 


  
;************************DİSPLAY NUMARA VE HARFLER****************************   

AL:                                       ;  10  11  12 13  14  15  16  17  18 19  20  21 22 23  24  25  26 27  28 29
          ; 0 1  2  3   4   5   6 7   8   9   a   b   C  d   E   f   g   H   h  I   J   L  n  o   p   r   t  u   y
LookUpL D,[63,6,91,79,102,109,125,7,127,111,119,124, 57,94,121,113,125,118,116, 6, 30, 56,84,92,115, 80,120,28,110,0],sayi
Return 
;*****************************************************************************   
  
;************************KESME ALT PROGRAMI***********************************                                                                                                                        
Disable 'INT'lara izin verme
KESME:
    SIRA=SIRA+1:If SIRA>8 Then SIRA=0 ; (0-1-2-3 ve 15 olunca yeniden sıfır nolu ortak uç sürülecek)
    If SIRA=0 Then
    I2COUT SDA, SCL, $42,[%11111111]  
    I2COUT SDA, SCL, $40,[DISPLAY1]
    I2COUT SDA, SCL, $42,[%11111110]
    EndIf 
    
    If SIRA=1 Then
    I2COUT SDA, SCL, $42,[%11111111]   
    I2COUT SDA, SCL, $40,[DISPLAY2]
    I2COUT SDA, SCL, $42,[%11111101] 
    EndIf 
    
    If SIRA=2 Then 
    I2COUT SDA, SCL, $42,[%11111111]   
    I2COUT SDA, SCL, $40,[DISPLAY3]
    I2COUT SDA, SCL, $42,[%11111011] 
    EndIf 
    
    If SIRA=3 Then  
    I2COUT SDA, SCL, $42,[%11111111]  
    I2COUT SDA, SCL, $40,[DISPLAY4]
    I2COUT SDA, SCL, $42,[%11110111] 
    EndIf
    
    If SIRA=4 Then
    I2COUT SDA, SCL, $42,[%11111111]  
    I2COUT SDA, SCL, $40,[DISPLAY5]
    I2COUT SDA, SCL, $42,[%11101111]
    EndIf 
    
    If SIRA=5 Then
    I2COUT SDA, SCL, $42,[%11111111]   
    I2COUT SDA, SCL, $40,[DISPLAY6]
    I2COUT SDA, SCL, $42,[%11011111] 
    EndIf 
    
    If SIRA=6 Then 
    I2COUT SDA, SCL, $42,[%11111111]   
    I2COUT SDA, SCL, $40,[DISPLAY7]
    I2COUT SDA, SCL, $42,[%10111111] 
    EndIf 
    
    If SIRA=7 Then  
    I2COUT SDA, SCL, $42,[%11111111]  
    I2COUT SDA, SCL, $40,[DISPLAY8]
    I2COUT SDA, SCL, $42,[%01111111] 
    EndIf
   
  
    TMR0=99 
    INTCON.2=0 'TMR0 Kesme bayragı sıfırlanıyor
    Resume
    Enable
End 
 
 



ete

Kesme kısmında her sıra için verdiğin;
I2COUT SDA, SCL, $42,[%11111111]   komut satırını KESME etiketinin hemen altına yaz. Diğer sıra seçeeneklerinden bu satırın aynısını sil. Kesmeye girdiğinde her halukarda bu komut verilecek. Bir kere versen hepsi için geçerli olacaktır

Kesme süren ekrandaki görüntüyü izleyecek kadar uzun değil maalesef ben öyle düşünüyorum.
Kesme içindeki TMR0=99 komutu yerine TMR0=7 değerini ver. Böylece iki kesme arası 1ms ye ye ulaşacaktır buda ekranı izleme açısından yeterli olur sanırım.

Ete



mehmet

Proteus 'daki display zamanını biraz
düşürürseniz titreme kısmı azalır.
Gerçek devrede biraz kısık yandığını
görebilirsiniz diye düşünüyorum.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

ete

PBP da programı yeniden yazdım. Kesme süresini 2 ms verdim.
Rakamlar ekranda titremeden duruyor.
Çok merk ettim aşağıdakai kodu çevirip yeniden denermisin bakalım sende de rakamlar sabit duracakmı.

Ete


Ömerkaya

Alıntı yapılan: ete - 05 Aralık 2022, 17:26:45PBP da programı yeniden yazdım. Kesme süresini 2 ms verdim.
Rakamlar ekranda titremeden duruyor.
Çok merk ettim aşağıdakai kodu çevirip yeniden denermisin bakalım sende de rakamlar sabit duracakmı.

Ete





tamam hocam deniyorum.

Ömerkaya

#9
Ete hocam söylediğiniz gibi yaptım ilk açılışta 3.5 sn sabit kalıyor sonra titreme ve dalğalanma başlıyor derlenmiş dosyayı yükledim tekrar. sizin gönderdiğiniz PBP da yazdığınız hex dosyası ile denediğimde de 1.2 sn sabit sonra titreme ve dalgalanma oldu. benim bilğisarayın hızı ile alakalı bir durum olabilir mi acaba bilgim olmadığı için soruyorum.

ete

Simulasyon üzerinden konuşuyor isek elbette PC nin hızı , simule versiyon no gibi faktörler bu işte etkli. Ortada gerçekler var bende hiç oynama yok sende bir müddet sonra başlıyor.
Gerçek devrede denemen gerekir.

Ete

Ömerkaya

teşekkürler hocam pcf8574 alıp deneyeceğim. dediğiniz gibi olabilir

Powered by EzPortal