SELAM
ARKADAŞLAR ARANIZDA HIC 4 DIGIT 7 SEGMENT LED DISPLAYI TARAYARAK SUREN ARKADAS VARMI AMA PIC BASIC ILE CUNKU ASSEMBLER ILE BEN DAHA ONCE YAPTIM. BASIC ILE BUNU NASIL YAPARIZ BIR FIKRI OLAN VARMI?
SAYGILARIMLA..
Alıntı YapPIC BASIC ILE 4 DIGIT 7 SEGMENT LED DISPLAYI TARAYARAK SURMEK
mehaba oyhan,
picbasic pro ile suan tarama yöntemli bir clock/countdown-timer yapiyorum..
(bir "mode" button var, ileride bununla Termometre, Up-down counter, ve baska özelliklerde eklemeyi düsünüyorum)Proteus ile simülasyon yapinca gayet güzel calisiyor, en kisa zamanda pratik olarak da kurup deneyecegim..
Daha önceki 7-seg. disp. ile ilgili yazdigim mesajlari bulursan oradaki verdigim kodlardan örnek alabilirsin. + displaylerin common pinlerini transistörler ile sürüyorum.
saygilar, sevgiler..
aşağıdaki program işini görür sanırım çalışıyor
'PROGRAMIN ADI: DIGITAL SAAT
I VAR BYTE
SAAT VAR BYTE
DAKIKA VAR BYTE
DIGIT VAR BYTE
SN VAR BYTE
DK VAR BYTE
YEDEK VAR BYTE
SYMBOL SCAN=$6
SYMBOL DISPLAY=$5
P_YED VAR BYTE
LED VAR BYTE
YUK VAR BYTE
YUK=%00000000
LED=%00000
SN=0
DK=0
PORTB=0
PORTA=0
SAAT=12
DAKIKA=00
I=0
DIGIT=0
@ device pic16F84, XT_OSC, wdt_off, pwrt_on, protect_off
OPTION_REG=$55
INTCON=$A0
ON INTERRUPT GOTO TMR_INT
BASLA: '-----------------PORT TANIMLAMALARI YAPILIYOR--------------
TRISB=%11100000
TRISA=%00000
'---------------- -------ANA PROGRAM KESİMİ--------------------
MAIN:
GOSUB TARA
IF (PORTB.5=0) THEN
PAUSE 50
DAKIKA=DAKIKA+1
gosub DK_TEST
ENDIF
IF (PORTB.6=0) THEN
PAUSE 50
SAAT=SAAT+1
GOSUB SA_TEST
ENDIF
IF (dakika=02) then
YUK=%00010000
IF (DAKIKA=03) THEN
YUK=%00000000
ENDIF
ENDIF
GOTO MAIN
'---------SAAT AYARI İÇİN DAKIKA VE SAAT TEST ALT PROGRAMLARI------
DK_TEST:
IF (DAKIKA>=60) THEN
DAKIKA=0
ENDIF
RETURN
SA_TEST:
IF (SAAT>=24) THEN
SAAT=0
ENDIF
RETURN
TARA:'------------------DAKIKA TARAMA----------------------
YEDEK=%00000001
FOR I=1 TO 2
P_YED=DAKIKA DIG DIGIT
PORTA=LED | P_YED
POKE SCAN,YEDEK
PAUSE 2
YEDEK=YEDEK | YUK
PEEK SCAN,YEDEK
PORTB=0
DIGIT=DIGIT+1
YEDEK=YEDEK << 1
NEXT I
DIGIT=0
I=0
'------------------------SAAT TARAMA--------------------------
FOR I=1 TO 2
P_YED=SAAT DIG DIGIT
PORTA=LED | P_YED
POKE SCAN,YEDEK
PAUSE 2
YEDEK=YEDEK | YUK
PEEK SCAN,YEDEK
PORTB=0
DIGIT=DIGIT+1
YEDEK=YEDEK << 1
NEXT I
DIGIT=0
RETURN
TMR_INT:'---------INTERRUPT ALT PROGRAMI--------------------------
DISABLE
SN=SN+1
IF (SN>=30) THEN
LED=%00000
IF (SN>=61) then
SN=0
LED=%10000
DK=DK+1
else
gosub INT_CIK
ENDIF
ENDIF
IF (DK>=60) THEN
DK=0
DAKIKA=DAKIKA+1
ENDIF
INT_CIK:
GOSUB TEST
INTCON.2=0
RESUME
TEST:'----------DAKIKA VE SAAT TEST ALT PROGRAMI----------------------
IF (DAKIKA>=60) THEN
DAKIKA=0
SAAT=SAAT+1
IF (SAAT>=24) THEN
SAAT=0
ENDIF
ENDIF
RETURN
END'-----------------PROGRAM SONU------------------------------
'PROGRAMI HAZIRLAYAN: YUSUF YİĞİT
'İYİ EĞLENCELER
'PROGRAMIN AMACI GERÇEK ZAMANLI BİR DİGİTAL SAAT GERÇEKLEŞTİRMEK
kolay gelsin
Alıntı yapılan: "picman"aşağıdaki program işini görür sanırım çalışıyor
'PROGRAMIN ADI: DIGITAL SAAT
I VAR BYTE
SAAT VAR BYTE
DAKIKA VAR BYTE
DIGIT VAR BYTE
SN VAR BYTE
DK VAR BYTE
YEDEK VAR BYTE
SYMBOL SCAN=$6
SYMBOL DISPLAY=$5
P_YED VAR BYTE
LED VAR BYTE
YUK VAR BYTE
YUK=%00000000
LED=%00000
SN=0
DK=0
PORTB=0
PORTA=0
SAAT=12
DAKIKA=00
I=0
DIGIT=0
@ device pic16F84, XT_OSC, wdt_off, pwrt_on, protect_off
OPTION_REG=$55
INTCON=$A0
ON INTERRUPT GOTO TMR_INT
BASLA: '-----------------PORT TANIMLAMALARI YAPILIYOR--------------
TRISB=%11100000
TRISA=%00000
'---------------- -------ANA PROGRAM KESİMİ--------------------
MAIN:
GOSUB TARA
IF (PORTB.5=0) THEN
PAUSE 50
DAKIKA=DAKIKA+1
gosub DK_TEST
ENDIF
IF (PORTB.6=0) THEN
PAUSE 50
SAAT=SAAT+1
GOSUB SA_TEST
ENDIF
IF (dakika=02) then
YUK=%00010000
IF (DAKIKA=03) THEN
YUK=%00000000
ENDIF
ENDIF
GOTO MAIN
'---------SAAT AYARI İÇİN DAKIKA VE SAAT TEST ALT PROGRAMLARI------
DK_TEST:
IF (DAKIKA>=60) THEN
DAKIKA=0
ENDIF
RETURN
SA_TEST:
IF (SAAT>=24) THEN
SAAT=0
ENDIF
RETURN
TARA:'------------------DAKIKA TARAMA----------------------
YEDEK=%00000001
FOR I=1 TO 2
P_YED=DAKIKA DIG DIGIT
PORTA=LED | P_YED
POKE SCAN,YEDEK
PAUSE 2
YEDEK=YEDEK | YUK
PEEK SCAN,YEDEK
PORTB=0
DIGIT=DIGIT+1
YEDEK=YEDEK << 1
NEXT I
DIGIT=0
I=0
'------------------------SAAT TARAMA--------------------------
FOR I=1 TO 2
P_YED=SAAT DIG DIGIT
PORTA=LED | P_YED
POKE SCAN,YEDEK
PAUSE 2
YEDEK=YEDEK | YUK
PEEK SCAN,YEDEK
PORTB=0
DIGIT=DIGIT+1
YEDEK=YEDEK << 1
NEXT I
DIGIT=0
RETURN
TMR_INT:'---------INTERRUPT ALT PROGRAMI--------------------------
DISABLE
SN=SN+1
IF (SN>=30) THEN
LED=%00000
IF (SN>=61) then
SN=0
LED=%10000
DK=DK+1
else
gosub INT_CIK
ENDIF
ENDIF
IF (DK>=60) THEN
DK=0
DAKIKA=DAKIKA+1
ENDIF
INT_CIK:
GOSUB TEST
INTCON.2=0
RESUME
TEST:'----------DAKIKA VE SAAT TEST ALT PROGRAMI----------------------
IF (DAKIKA>=60) THEN
DAKIKA=0
SAAT=SAAT+1
IF (SAAT>=24) THEN
SAAT=0
ENDIF
ENDIF
RETURN
END'-----------------PROGRAM SONU------------------------------
'PROGRAMI HAZIRLAYAN: YUSUF YİĞİT
'İYİ EĞLENCELER
'PROGRAMIN AMACI GERÇEK ZAMANLI BİR DİGİTAL SAAT GERÇEKLEŞTİRMEK
kolay gelsin
sayın arkadşım sende bu programın şeması varmı ben bu saat devresini yapmak istiyorum yardımcı olabilirmisin
elimde 4 tane 7 segment display var bunları kullanarak 4 digit 7 segment display yapabilir miyim. bacak bağlantıları nasıl olacak ek başka bir devre elemanına ihtiyaç duyulmakta mıdır
ilginiz ve yardımlarınız için teşekkürler
Ortalama okur-yazar birisi "Türkçe Yazım Kuralları" na dikkat eder
değil mi?
-----------------------------------------------------------------------------------------
Display tipleriniz nedir? Kataloğu veya bilgileri, resimleri var mıdır?
Mcu çıkış akımı ~20-25mA. sayılır. Buna göre sürme şeklinizin ortaya
çıkması gerekli.
Bence en güzeli MAX7219, TPIC6B595 veya 74HC595 ile sürmektir.
74hc595 ile ortak anot 7 segmetlerin 4 digit olarak kullanılabileceğinden mi bahsedilmektedir.