PIC ile Display pin konfigürasyonunda sıkıntı yaşıyorum. Lütfen Yardım!!!!

Başlatan artapon, 16 Aralık 2012, 14:48:42

artapon

Sa hocam kolay gelsin hocam aşağıdaki konuda yardımcı olurmusunuz...


Arkadaşlar ben PIC16F877 ile display sürmek istyorum. displayi resim 1 de olduğu zaman kolaylıkla sürebiliyorum. ama displayin pinlerinin yerini değiştirirnce PIC ile nasıl sürebilirim. PIC'i nasıl konfigüre edebilirim. bir türlü işin içinden çıkamadım... Lütfen acil yardımlarınıza ihtiyacım var...

Bu şekilde bağladığım zaman çok güzel çalışıyor... ama 2. resimde bağladığım zaman picin pinlerini nasıl konfigüre edeceğimi bilmiyorum .
(Resim - 1)

A      ----          RB0
B      ----          RB1
C      ----          RB2
D      ----          RB3
E      ----          RB4
F      ----          RB5
G      ----          RB6
Dp      ----        RB7

Aşağıdaki şekilde bir bağlantı ile displayi kullanamk istiyorum. sizce programda nasıl bir değişiklik yapmam gerekiyor...
(resim - 2)

C      ----          RB0
A      ----          RB1
D      ----          RB2
B      ----          RB3
G      ----          RB4
E      ----          RB5
F      ----          RB6
Dp      ----        RB7
Aldanma İnsanların Samimiyetine, Menfaatleri İçin Gelirler Vecde, Vaad Etmeseydi Allah cenneti, O'na Bile Etmezlerdi Secde!   (NFK)

jrcapa

D portuna gelen 8 bitlik sayıyı desimal formatta mı yazdırmak istiyorsunuz? Öylseyse 0-128 arası sayılar için en az 3 digitlik display gerekir.Sizin bağlantı yanlış; 2 digitlik 2 displayi paralel bağlamışsınız,ikisi de aynı değerleri gösterir.Picler arası bağlantıda sorunlu,ledleri kaldırmalısınız aradan.Şu sayılar hangi formatı temsil ediyor?

int digit[16]={192,249,164,176,153,146,130,248,128,144,136,199,198,161,134,142};

artapon

D portuna gelen 8 bitlik sayıyı desimal formatta mı yazdırmak istiyorsunuz? Öylseyse 0-128 arası sayılar için en az 3 digitlik display gerekir.Sizin bağlantı yanlış; 2 digitlik 2 displayi paralel bağlamışsınız,ikisi de aynı değerleri gösterir.Picler arası bağlantıda sorunlu,ledleri kaldırmalısınız aradan.Şu sayılar hangi formatı temsil ediyor?

int digit[16]={192,249,164,176,153,146,130,248,128,144,136,199,198,161,134,142};

ewet Dportuna 8 bitlik veri geliyor ama sadece ilk 5 biti 1 oluyor. gerisi hep 0 da kalıyor. bu nedenle 2 digit display kullandım. iki digitli 2 display bağladım. biri ortak anot biri ortak katot. aslında ilk başta sadece ortak katot bağlamıştım ama ortak anotta ne görürüm diye merak ettiğimden öyle bağladım. ledleri neden aradan kaldırmam gerekiyor. ayrıca o ledleri yine veriyi görmek için bağlamıştım. formatını açıkca söylemek gerekirse bilmiyorum. ama ben bir sayıcı devresine bakmıştım orda bu kodlar vardı ben çözümledim ve kullandım.

h     g      f      e      d      c       b      a
1     1     1      1      1      0      0      1    = 249 = 1
Aldanma İnsanların Samimiyetine, Menfaatleri İçin Gelirler Vecde, Vaad Etmeseydi Allah cenneti, O'na Bile Etmezlerdi Secde!   (NFK)

jrcapa

ok, o sayılar da desimal formatta. Ledleri kaldırmalısın çünkü 877'ye giden gerilimi düşürüyorlar ,877 lojik 0 görüyor sürekli. 4 digitlik display koyup yapmak lazım,gerisi programa kalıyor.Programı yeniden düzenlemek lazım.

artapon

ewet hocam. tespitiniz çok doğru. ledleri kaldırınca program en azından yanıt vermeye başladı. peki hocam bunun düzgün çalışması için bana yardımcı olabilrmisniz acaba. acilen buna ihtiyacım var... şimdiden elinize ve emeğinize sağlık....
Aldanma İnsanların Samimiyetine, Menfaatleri İçin Gelirler Vecde, Vaad Etmeseydi Allah cenneti, O'na Bile Etmezlerdi Secde!   (NFK)

artapon

Aldanma İnsanların Samimiyetine, Menfaatleri İçin Gelirler Vecde, Vaad Etmeseydi Allah cenneti, O'na Bile Etmezlerdi Secde!   (NFK)

artapon

Ortak ANOT display için veri değerleri
int digit[15]={24,   187,  148,  145,  51,   81,   80,   155,  16,   17,   247,  108,  96,   70};
                     [0,    1,      2,     3,     4,     5,     6,     7,      8,    9,     -,      L.     b.     F.]

bu satırdaki kodları değiştirerek sorunu çözdük. çözüm için bana yardım arkadaşa teşekkür ederim...
çözüm şu şekilde oluyor arkadaşlar...
kullandığım display 7 segment ortak anot display;
burda her segmentin normal değerinisegmentin yanına yazdım.
A        -       1
B        -       2
C        -       4
D        -       8
E        -       16
F        -       32
G        -       64
H        -       128

Normal bağlantıda "3" görebilmem için yanmasını istediğim segmentlere "0" bilgisi göndermemiz gerekiyor. yanmasını istemediğimiz segmentlere ise "1"  bilgisi göndermemiz gerekiyor. bu şekilde displayde "3" görebilmemiz için segment  değerlerini toplayacağız.

Displayde "3" yazması için yanmaması gereken segmentler "E", "F", "H" tır. bunların toplamı ise 176 dır. digit dizisinde 3. sıraya 176 yazarsak displayde 3 sayısını pice kodlamış oluruz.

Eğer benim yaptığım bağlantıda "3" sayısını görmek istiyorsak yine aynı şekilde yanmasını istemediğimiz segmenlerin decimal değerini toplayıp toplamı digit dizisine yazıyoruz...

YardımıcI olan arkadaşlara ve PROF AHMET BEY'e tekrar TEŞEKKÜR EDERİM...


Aldanma İnsanların Samimiyetine, Menfaatleri İçin Gelirler Vecde, Vaad Etmeseydi Allah cenneti, O'na Bile Etmezlerdi Secde!   (NFK)