max7219

Başlatan efsanepoldem, 16 Şubat 2012, 14:59:01

efsanepoldem

    Merhaba arkadaşlar. Bir konu hakkında yardımlarınıza ihtiyacım var. Gönderdiğim devre isis similasyonunda çalışmasına rağmen, devreyi kurup denediğimde displayde hiçbirşey görünmüyor. Yardımlarınızı bekliyorum

ete

Devreye ve programa baktım.

Birincisi devreyi eksik bağlamışsın. Segmentlerin 234 uçlarınıda 7219 a bağlaman gerek.
İkincisi programda hiç bir şey yazılmamış . Bir şey gösterecek durumda değil zaten yalnızca tek hanede sıfır gösterecek şekilde hazırlanmış.

Aşağıda programı biraz değiştirerek veriyorum. Bu şekilde ekranda 4321 şeklinde rakamları görmen gerekir.

Ancak İsisde çalışıp ta gerçek devrede çalışmayan devrler için önceden açıklamamız vardı. Bu açıklamaya göre İsis in varsayımlarını dikkatlice incelemek gerekiyor.
Nedir bunlar dersen;
1. İşlemcinin  13 ve 14 nolu bacakları kristal bağlama bacaklarıdır. Buraya 4 Mhz lik bir kristal bağlaman veya bir rezonatör bağlaman gerekir. İsis kristal bağlımı diye bakmaz var kabul eder. Sende bağlamadı isen işlemcin çalışmayacak ve sende displayde bir şey görmeyeceksin. Muhtemel kusur budur sanırım.

2. İsis işlemciye 5V besleme bağlı kabul eder. Zaten ekranda besleme bacaklarını göremezsin. Bu ndedenle işlemciye data sheet'e bakarak hangi bacakları besleme ise (2 adet VDD ve 2 adet GND olması gerekiyor) oralara besleme voltajını vermen gerekiyor. VDD yazan yere +5V GND yazan gerede şase bağlantısı yapman gerekiyor.

3. Yine benzer şekilde 7219 un besleme bacakları isis de gözükmüyorç Onlarada besleme bağlı kabul edilmektedir. Dolayısıyla senin besleme bacaklarını bulup onlara 5V beslemeyi bağlaman gerekiyor.

Unutmaman gereken bir husus da 7219 segment çıkışları 5V seviyesindedir. ve displayler yaklaşık 2V ile çalışır. O halde arada seri bir akım sınırlama direnci olması gerkekir. Aksi taktirde displayler 7219 dan aşırı akım çekmeye çalışırlar ve entegre bozulabilir. 7219 dan çıkan segment bacaklarını displaylere seri 220 Ohm direnç ile bağlaman gerekir.

Söyleyeceklerim bu kadar. Gelelim programın değişmiş haline;
Yalnızca Basla satırı ve sonrasınıveriyorum. Ondan öncekileri aynen kullanırsın.

BASLA:
FRQDATA=1234
'ADDRESS=5 : X = FRQDATA DIG 0     : GOSUB AL : GOSUB MAXYAZ
ADDRESS=4 : X = FRQDATA DIG 0     : GOSUB AL : GOSUB MAXYAZ
ADDRESS=3 : X = FRQDATA DIG 1     : GOSUB AL : GOSUB MAXYAZ
ADDRESS=2 : X = FRQDATA DIG 2     : GOSUB AL : GOSUB MAXYAZ
ADDRESS=1 : X = FRQDATA DIG 3     : GOSUB AL : GOSUB MAXYAZ
GOTO BASLA
'-----------------------------------------------------------------
AL:    LOOKUP X,[126,48,109,121,51,91,95,112,127,123,99,78,128],datareg :RETURN
'-----------------------------------------------------------------
MAXYAZ:
shiftout DIN,CLK,1,[ADDRESS,DATAREG]
PULSOUT LD,2
return
END


Kolay gelsin
Ete


efsanepoldem

    Sn. ete hocam. Bahsettiğiniz vurguları elbette yaptım. Fakat sizin verdiğiniz programı tekrar analiz ettim, benim yaptığımdan  farklı değil. Küçük bir nüans var orayı kaçırıyorum heralde. Çabalamaya devam edeceğim. Sizin aklınıza başka bir çözüm gelirse, tekrar yardımlarınızı bekl,yorum

Maxim

ete hocam konu yeni sayılmaz fakat size sormam gereken bir detay var

kod çalışıyor
fakat ben nokta işaretinde sıkıntı yaşıyorum, bir yada 2 noktanın sürekli yanması gerekiyor.
fakat bunu sabit olarak yakamadım, yanıyor sonra sönüyor gibi oluyor.

incelediğimde gönderilen data bilgisinin 7. biti DP olduğu yazıyor
bu da tabloda 128 olması lazım
işte bundan sonrası karanlık benim için :)


koduda vereyim birilerinin işine yarar
ben kodu protona çevirdim ve 12F675 kullandım
mesela 2. ve 6. digitlerdeki DP lerin sürekli yanmasını sağlayamadım hocam


Device 12F675
Declare Xtal=4
Config CPD_OFF,CP_OFF,BODEN_ON,MCLRE_OFF,PWRTE_ON,WDT_OFF,INTRC_OSC_NOCLKOUT

DEFINE OSCCAL_1K 1

TRISIO = %00001011
GPIO=%00000000
ADCON0=%10000101
ANSEL =%00000011

OPTION_REG.7=1
CMCON=7

Symbol CLK GPIO.2 ' Data is clocked on rising edge of this pin
Symbol DIN GPIO.4 ' Bits are shifted out of this pin
Symbol LD GPIO.5 ' Transfers data to LEDs when Pulsed


Dim ADDRESS As Word
Dim DATAREG As Word
Dim SAY1 As Word
Dim SAY2 As Word
Dim X As Byte

'-----------------------------------------------------------------
'MAX7219 AYAR
ADDRESS = $0C : DATAREG = $01   : GoSub MAXYAZ 'On/Off Register.
ADDRESS = $09 : DATAREG = $00   : GoSub MAXYAZ 'Decode register
ADDRESS = $0A : DATAREG = $07   : GoSub MAXYAZ 'Intensity register.
ADDRESS = $0B : DATAREG = $07   : GoSub MAXYAZ 'Scan-limit register.
ADDRESS = $0F : DATAREG = $00   : GoSub MAXYAZ 'Test mode register (all digits on, 100% bright)
'-----------------------------------------------------------------

                                               
BASLA:
SAY1= SAY1 + 1
SAY2= SAY2 + 3
DelayMS 50

ADDRESS=1 : X = Dig SAY1,0 : GoSub AL : GoSub MAXYAZ
ADDRESS=2 : X = Dig SAY1,1 : GoSub AL : GoSub MAXYAZ
ADDRESS=3 : X = Dig SAY1,2 : GoSub AL : GoSub MAXYAZ
ADDRESS=4 : X = Dig SAY1,3 : GoSub AL : GoSub MAXYAZ

ADDRESS=5 : X = Dig SAY2,0 : GoSub AL : GoSub MAXYAZ
ADDRESS=6 : X = Dig SAY2,1 : GoSub AL : GoSub MAXYAZ
ADDRESS=7 : X = Dig SAY2,2 : GoSub AL : GoSub MAXYAZ
ADDRESS=8 : X = Dig SAY2,3 : GoSub AL : GoSub MAXYAZ

GoTo BASLA
'-----------------------------------------------------------------


AL:
DATAREG = LookUp X,[126,48,109,121,51,91,95,112,127,123,99,78,128]
Return
'-----------------------------------------------------------------
MAXYAZ:
SHOut DIN,CLK,MsbFirst,[ADDRESS,DATAREG]
PulsOut LD,2
Return
End

ete

Data Sheet'e baktım da bir çelişki var sanki. Bir yerde (Tablo-5) register datasının 7. biti high olmalı demiş ama Tablo-6 da ise segment data sının 7. biti olarak gistermiş nokta bitini. Bu durumda sanki Adres registerinin 7. biti"1" olursa nokta yanar gibi algılanıyor. Ancak İsis de bu şekilde çalışmıyor.
Mantığım ise normal display sürerken yaptığımız gibi 7 segmentlere verilen değeirn 7. bitini high yaparsan nokta yanar diyor.
Enteresan bir şekilde isis de benim mantığıma uygun çalışıyor.
Görmek için şunu yap;
Aşağıdaki koda staırlarını bul ,
AL:
DATAREG = LookUp X,[126,48,109,121,51,91,95,112,127,123,99,78,128]
Return

bu satırları aşağıdakilerle değiştir,
AL:
DATAREG = LookUp X,[126,48,109,121,51,91,95,112,127,123,99,78,128]
IF (ADDRESS=2) OR (ADDRESS=6) THEN DATAREG=DATAREG+128
Return


Ete

Maxim

hemen denedim oldu
eline sağlık ete usta

Maxim

#6
bu nasıl bir entegredir?
displayleri takmadığım halde boşta 220mA çekiyor!

Powered by EzPortal