7 segment dısplay ve dijital çıkış

Başlatan Mali-88, 06 Kasım 2015, 11:38:37

Mali-88

Arkadaşlar merhaba,
Ete hocamızın 7 segment display programını kullanmaya çalışıyorum buraya kadar sıkıntı yok ama 1 adet dijital çıkış eklediğimde çıkış filip-filop yapıyor sürekli çıkış vermiyor ne yapmam gerekir.

PORTA=0:TRISA=%00000011
PORTB=0:TRISB=%00000000
OPTION_REG=%00000100     
CMCON=7           

SYMBOL DCIKIS=PORTA.4
SAYAC    var WORD
SAYAC1 VAR WORD
SIRA    var BYTE 
BIRLER  var BYTE 
ONLAR    VAR BYTE
YUZLER  VAR BYTE
BINLER  VAR BYTE
I        VAR BYTE
SAYI    VAR BYTE
X        VAR BYTE

SYMBOL Disp0=PORTA.2
SYMBOL Disp1=PORTA.3
     
PAUSE 100
BASLA:
SAYAC=3
IF SAYAC>2 THEN
PORTA.4=1
ELSE
PORTA.4=0
ENDIF

'7 SEGMENT DİSPLAY SÜRME PROGRAMI
SIRA=SIRA+1:IF SIRA>3 then SIRA=0 

IF SIRA=0 then
PORTB=BIRLER 
DISP0=1

ENDIF

IF SIRA=1 THEN
DISP0=0
PORTB=ONLAR
DISP1=1
ENDIF

IF SIRA=2 THEN
DISP1=0
PORTB=YUZLER
ENDIF



X=SAYAC DIG 0 :GOSUB  AL:BIRLER=SAYI
X=SAYAC DIG 1 :GOSUB AL:ONLAR=SAYI
X=SAYAC DIG 2 :GOSUB AL:YUZLER=SAYI
X=SAYAC DIG 3 :GOSUB AL:BINLER=SAYI
GOTO BASLA

AL:    LOOKUP  X,[63,6,91,79,102,109,125,7,127,111,99,57],SAYI :RETURN
DELAY:
for I=0 to 35000
PAUSEUS 5
Next

RETURN
DISABLE
END


--------------------------------------------------------
Lütfen konu mesajlarınızda paylaşacağınız kodları kod ekle #sembolü ile paylaşınız..
İyi forumlar dileriz ..

Moderatör

ete

Eklediğin digital çıkış hangisi?
DCIKIS=PORTA.4 şeklinde tanımladığın PORTA.4 pini ise programda hiç bir yerde kullanmamışsınki?
Yanlış programmı verdin yoksa? Zira bu programda bir sürü yanlışlık var.
PORTA.4 Open Collector bir pindir. Kendi başına HIGH çıkartamaz. Pullup yapılması gerekir. Belkide sorunun budur.
Ne yazıkki şema olmadığı için daha fazla yorum yapamıyoruz.

Ete


Mali-88

hocam sayıcı devresi yapmaya çalışıyorum sayıyor display'de gösteriyor ama porta4 veya portb.7 pinlerinden birinde çıkış almaya çalışıyorum ama direk çıkış alamadım

@ __config _CONFIG1, _XT_OSC & _WDT_ON & _LVP_OFF & _CP_OFF 
PORTA=0:TRISA=%00000011
PORTB=0:TRISB=%00000000
OPTION_REG=%00000100     
CMCON=7           
TIMER VAR BYTE
symbol DCIKIS=PORTA.4
SAYAC    var WORD
SAYAC1 VAR WORD
SIRA    var BYTE 
BIRLER  var BYTE 
ONLAR    VAR BYTE
I        VAR BYTE
SAYI    VAR BYTE
X        VAR BYTE

SYMBOL Disp0=PORTA.2
SYMBOL Disp1=PORTA.3
     
PAUSE 100
BASLA:
TIMER=TIMER+1

IF TIMER=1 THEN
SAYAC=SAYAC+1
ENDIF
IF SAYAC>99 THEN SAYAC=0
IF TIMER>100 THEN TIMER=0

IF SAYAC=>10 THEN
DCIKIS=1
else
DCIKIS=0
ENDIF

SIRA=SIRA+1:IF SIRA>3 then SIRA=0 

IF SIRA=0 then
PORTB=BIRLER 
DISP0=1

ENDIF

IF SIRA=1 THEN
DISP0=0
PORTB=ONLAR
DISP1=1
ENDIF




X=SAYAC DIG 0 :GOSUB  AL:BIRLER=SAYI
X=SAYAC DIG 1 :GOSUB AL:ONLAR=SAYI

GOTO BASLA

AL:    LOOKUP  X,[63,6,91,79,102,109,125,7,127,111,99,57],SAYI :RETURN
DELAY:
for I=0 to 35000
PAUSEUS 5
Next

RETURN
DISABLE
END



ete

Çok merak ediyorum neden bu işlemciyi (16F688) seçtin ve kullandın.?
Hadi kullandın diyelim hiç data sheet'i açıp şöyle bir göz gezdirdinmi bu işlemcinin ne gib iözellikleri var diye.
Bu işi çıkış alamadığın zaman zaten hemen yapman gerekirdi. Var bir terslik deyip şu işlemciyi bir inceleyeyim demen gerekirdi.
Neden dediğini duyar gibiyim. Madem çıkış vermiyor demekki kullandığın pinlerin başka işlevleride var demektir. Zaten şemada da görülüyor.
PORTA pinlerinde An0-An1-An2... dye isimlendirmeler var ve bunlar o pinlerin aynı zamanda Analog olarak kullanılabildiklerini gösteriyor.
Peki programda bu konu ile ilgili bir şey yapmışmısın? yok elbette. Bende ilk defa baktım data sheetine.
Bu işlemcide A portu öncelikle Komparatör olarak açılıyormuş. İptal etmek için;
CMCON0=7 vermen gerekiyor
Analog pinlerin iptali için ise ;
ANSEL=0 komutunu vermen gerekiyor.
Ancak bu iki komutdan sonra PORTA.4 sana Digital çıkış olarak hizmet edebilir.
Ama PORTA.4 'ün bir başka sorunuda Open Collector olmasıdır. Dolayısıyla PORTA.4=1 dediğin zaman o pinden HIGH çıkmaz. Açık olan çıkış transistörünün Collectoruna bir Pullup direnci bağlaman gerekir. Kısaca madem o pinden led yakacaksın O pine 330 Ohm ile bir pullup yap.
Led direk pine bağlı olsun. Pin  330 Ohm ile +5V ta bağlı olsun. Bu şekilde PORTA.4=1 dediğin zaman pin 330 ohm üzerinden Artı beslemeyi alıp lede verir ve led yanar. Low yapıncada led söner hepsi bu.

Ete


Mali-88


Powered by EzPortal