4 DIGIT 7 SEGMENT DISPLAY TARAMA

Başlatan oyhan, 16 Ağustos 2004, 17:23:34

oyhan

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..
BİRLİKTEN KUVVET DOĞAR:

fsan

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..

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
Bilgi paylaştıkça artar..

zeren51

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

FormUser

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

mehmet

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.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

FormUser

74hc595 ile ortak anot 7 segmetlerin 4 digit olarak kullanılabileceğinden mi bahsedilmektedir.