dotmatrıx saat

Başlatan rhoca68, 01 Ocak 2026, 14:55:40

rhoca68

Merhaba tüm aradaşlarımın yeni yılını kutlar sağlıklı mutlu bir ömür dilerim.
sevgili kardeşlerim sizden bir ricam var. bu üçüncü saat oldu hepsinde saat çalışırken kırpışma oluyor. eğer vakit ayırıp bakar ve düzeltip hex kodunu paylaşırsanız çok memnun olurum. ben yazma derleme işini bilmiyorum isterseniz videosunu eklerim. yaptığım üçüncü saat doyası bu.

aRci

Merhaba;
Programda saat okuma ve derece okuma sırasında beklemeler ekranda titremeye sebep olacaktır. Kesme kullanmakta fayda vardır. Kesme kullanırken kodda hiç bekleme komutu kullanmaman gerekir. Ayrıca ekranda kalma süresini mümkün olduğu kadar uzun tutarak bu bekleme sırasında yapılması gereken işlemleri yaparak ekran titremesinde iyileşme olabilir.

Tara adlı etiket de her adım için kısa bir kod yazdım. 74hc595 latch palsi için pause kullanmana gerek yok portc yi neden kullandığını anlamadım eğer satır seçmek için kullandıysan 74HC595 e data yüklerken bu çıkışı karartman gerekmiyor. karartmayı latch palsi vermeden hemen önce yapsanda olur.

Ekranın titremesi nasıl ne şekilde olduğunu göremediğim için tahmin edebiliyorum sadece

TARA:
    for B = 0 to 6
        PORTC = 0
        for G = 0 to 39
            SATIR = DIZI[G]
            Dta=SATIR.0(B)
            high Clk:Low CLK
        next G
        high VER: low Ver
        PortC = DCD B
        Gosub Bekle
    next B 

ete

Daha öncede aynı konu üzerinde tatışmış ve bu tür saatlerde kesme kullanarak displaylerin sürülmesi gerektiğini söylemiş idik. Sen ise ısrarla manuel tarama yöntemi ile displayleri sürmeye devam ediyorsun ve her defasında da aynı sonucu alıyorsun.

İşin prensibini sana söylemem gerek. Matrix tarama sistemi gözü aldatmaya yönelik çalışan bir sistemdir. Anlık olarak da olsa matrix ledlerden yalnızca bir tanesi yanık olur ve sıralı olarak bu yakıp söndürme işi devam eder. İki yakıp söndürme süresi 1ms civarlarında olur ise göz bunu farkedemez ve o ledlerin hepsi yanıyor gibi görür. Ancak iki yakıp söndürme aralığı 3 ms nin üzerine çıkarsa arada bir kırpışma olduğunu göz farkeder. Hele ki bu aralık dahada büyük olursa göz direk kırpışmayı fark eder. Bu sorunu düzeltmenin tek bir yolu var. O da düzenli ve sabit aralıklarla o ledleri yakıp söndürmektir.
Şimdi programında sadece sensör okuma kısmına bir bak istersen. Yalnızca orada pause 100 şeklinde bir komutun var ki bu 100 ms lik gecikme demektir ve diğer komut gecikmeleri ile birlikte matrix ledlerin en azından 100-105 ms süre sönük kalacağı anlamına gelir bu gecikme ve buda matrixlerde kırpışma olması anlamına gelir.
Diğer büyük hatalardan birisi aşağıda,
BASLA:

    gosub TEMIZLE
    GOSUB HAFIZA_SIL
    
    LED=1
    GOSUB SENSOR_OKU      ;SENSORU OKU
    GOSUB ZAMAN_OKU       ;RTC YI OKU
    LED=0
    
    GOSUB SAAT_AL_G       ;SAATİ GÖSTER
    GOSUB ISI_AL_G        ;SICAKLIĞI GÖSTER
    GOSUB HAFTA_GUN_AL_G  ;HAFTANIN GÜNÜNÜ GÖSTER
    GOSUB TARIH_AL_G      ;GÜN VE AYI GÖSTER
    ;GOSUB YIL_AL_G       ;YILI GÖSTER
    
    ANIME=ANIME+1
    IF ANIME>9 THEN ANIME=0
    
GOSUB BASLA
En son satırdaki GOSUB BASLA çok yanlış bir komut. GOSUB komutu programı bir ALT_PROGRAM'a yollama komutudur. Program bu komutla o alt programa gider ve oradan kesin olarak RETURN ile döner yada dönmelidir. Senin BASLA etiketi ile başlayan program parçan bir alt program değildir ve kullandığın GOSUB komutu bu nedenle yanlıştır. Bu komut program çalışırken stack taşmasına sebep olur ve bir müddet sonra kilitlenir. Önceki programlarında da benzer hatayı yapmış idin ve seni bu konuda uyarmış idim. Ama işe yaramamış anlaşılan yine aynı hatayı yapmışsın. O satırda kullanılması gereken komut GOTO BASLA olmalıdır.

Program için yapılacaklara gelince.Özellikle TARA isimli alt programda yer alan matrix tarama (sürme) satırları bir KESME alt programına alınmalıdır. Kesme altında hepsini bir anda yapmaya da gerek kalmayacak her kesme olduğunda bir satır sürülecek şekilde düzenleme yapılmalıdır.
Ayrıca program içinde yer alan GOSUB TARA isimli komutlarda kaldırılmalıdır.
Kesme süresi 1ms dolayında ayarlanabilir.

Programdaki bütün PAUSE (PAUSEUS ler kalabilir) gecikmeleri kaldırılmalıdır.

Hacım olarak bakıldığında yapılacak bir sürü iş gözüküyor. Sen ucundan tut ve yapmaya başla biz kontrol edelim istersen. Umarım birisi bunları yapmayı üstlenir.

Ete

rhoca68

hocam bilgi verdiğiniz ve kısa zamanda döndüğünüz için çok teşekkür ederim. hocam vallahi bu üçüncü oldu aynı şey sadece saat çalışırken göz yumup açıyor. ben yazma ve derleme bilmem. eğer düzeltip hex kodunu yollarsanız çok memnun olurum.
belki sizin zamanınız olmaya bilir. başka yapacak arkadaşlar yardımcı olurlarsa çok minnettar kalırım. selamlar.

ete

Birşeyler yapabilirmiyim diye programa bakıyorum.
Mantığı tamamen manuel tarama mantığına göre kurulmuş.
Bu nedenle kesmeye çevrilebilir ama göz kırpma devam eder gibi geliyor bana.
Emin olamıyorum çünki bu mantıkla hiç program yazmadım.
Bana ters gelen yer 5 adet 74HC595 shift Registere bilgi bit-bit yazılıyor. Yani 40 adet clk palsi verilerek bunlara satır bilgisi veriliyor. Bunun için 0-39 arasında döngü kuruluyor. Bu döngünün bir komut gecikmesi var ve göz kırpamda etkili olabilir. Bu sistemi değiştirmek gerek ama o zamanda programda etkin rol oynayan animasyonların bir çoğu bozulacaktır.
Önceden de söyledim Bu programı yazan kişi her kimse animasyona önem vermiş ama matrix tarama işine gereken önemi vermemiş.
Bu programda yapılacak iş bir iki deneme yapmak. Mümkün olduğunca tarama sayısını çoğaltmak. Böylece göz kırpam olabilecek yerlerde yeniden tarama yaptırılarak bunun önüne geçebilmek.
Bu amaçla bazı düzenlemeler yaptım. Umarım işe yarar. Yaramaz ise yapacak başka şey yok maalesef.

Ete

rhoca68

ETE hocam ilgin için çok teşekkür ederim. bu verdiğiniz hex yükledim değişen bişey olmadı.
Hocam tarih olsun derece olsun burada bir şey yok. ama saat saymya başladığında pıt pıt şeklinde mütemadiyen kapanıp açılır gibi göz yumuyor. buda bu şekilde rahatsız ediyor.
selamlar hocam.

ete

Ekranda saat (yada saniye) değişimi işlemlerine bakacak olursak,
-Önce , Gosub Saat_Al etiketine gidiliyor. Burada önce 80 adet mevcut karekter hafızası döngü ile siliniyor.
Sonra ekrana yazılacak her bir saat rakamları belirleniyor. Saat-Dakika ve sn olarak.
Bunların matrix karşılıkları tablodan okunup hafızaya yani dizi değişkenine aktarılıyor.
Bana göre çok uzun bir işlem bu. Üstelik yalnızca SN değeri değişecek iken hem saat hem dakika değeride yeniden alınıp değişkene yükleniyor son derece gereksiz bir işlem. Değiştirilebilirmi evet ama program mantığı bunun üzerine kurulmuş değiştirmek çok kolay değil.
- Sonra GEL isimli alt programa gidilerek o andaki animasyon değerine göre ekrana getiriliş şekli belirleniyor. Buda ayrı bir gecikme konusu.
- Sonra MEM değişkenine atanmış satır bilgileri bu sefer ekranda göstermede kullanılan DIZI isimli değişkene aktarılıyor. Aktarma işinden sonra program ekran taramasına geçiyor ki zaten oraya gelinceye kadar ekranın bir kapanma durumu oluşmuş oldu bile.

Buradan yazılanlara bakılınca Mem değişkeninden Dizi isimli değişkene aktarılma işi bana kalırsa daha önce yapılmalı ve sonrasında diğer alt programlarda tarama işi ayrıca gerçekleştirilmeli.
Saatin gösterildiği noktada yeniden bazı düzenlemeler yaptım. Amacım mümkün olduğunca fazla tarama yaptırmak. İlişiktekini bir dene bakalım sonuç değişiyormu.

Ete

 

rhoca68

hocam bu verdiğin hex dosyayı attım ama titreme şeklinde daha fazla yaptı.
pcde simülasyonda her şey normal ama gerçek devrede daha değişik oluyor. bu arada krıstalden olabilir mi diye 8 mhz bağladım hepsinde titreme meydana geldi.

rhoca68

ETE hocam. selamlar. hocam benim bilgisayar çok eski windows 7 kurulu başka proğram kuramıyorum.
elimde pıckıt3 var 3 veya 4 ay önce almıştım pcye kurup kullanamadım. eğer adres verirsen sana
kargosuda benden olsun göndereyim siz kullanın. sizde daha iyisi varsa lazım olan arkadaşlara verin kullansınlar. selamlar


ete

Simulasyonda her şey normal gözüküyor. Aslında ekrandaki matrix titremelerini simulasyon simule edemiyor. Buna çok defa şahit oldum. Birde kısa bir video koysan da bir görsek nasıl bir titremedir bu acaba?
Bu son verdiğim programdan epeyce umutlu idim ama daha fazla titremeside enteresan.


Ete

rhoca68

ETE hocam video istediniz ama becerebildimmi bilmiyorum.
hocam nacizane affına sığınarak bişey demek istiyorum.
bu sayfada eğer geriye giderseniz
sonmoikan arkadaşımızın yaptığı saat var orada 3 adet dotmatrıx ve 3 adet 595 kullanmış.herşey aynı yalnız orada saniye ve ondalıklı derece yok. ordakilere 2 adet dotmatrıx ekleme yapılabilir mi. ben yıllar önce o saati yapmıştım. çok güzel ve stabil çalışıyordu. eğer sizi fazla meşgul edip yoracaksa ben diger ledleri ve 595 leri iptal edip sonmoikan kardeşimin o saate döneyim. şunu da söyleyim bu devre hem ondalıklı derece ve saniyeli olduğundan ilgimi çekmişti. selamlar.



https://streamable.com/x18yj6

dnaci

#11
74HC595 alternatifi daha hızlı 74AHC595 veya 74VHC595 deneyebilirsiniz.

ete

#12
Bu sayfada geriye gidince bir saat projesi göremedim.
En iyisi sen bul ve linkini ver.

Hemen belirteyim bir projede tadilat yapmak yeniden program yazmaktan zordur.
Öncelikle mevcut programa hakim olman gerekir ki buda ancak programı uzunca bir süre inceleme ile oluyor. İkincisi iki display ilave etmek deyince kolaymış gibi gözükebilir ama programın bir çok yeri değişmek zorunda kalabilir. Bunları daha saat projesine bakmadan tecrübelerime dayanarak söyledim.

Aslında link vermeye gerek yok. O proje bende vardır mutlaka arar bulurum. Elimdekilere de baktım ve senin devrene birini uydurayım dedim ama hem DS1302 kullanıyorsun hemde bir sürü terslik var senin şemanda. Butonlar B protuna bağlanmalıydı. Bu sayede pullup direnci kullanmaya gerek olmaz idi. DS1302 şu anda en berbat RTC. Saatin kesin olarak bu RTC ile ya ileri gider yada geri kalır. Bana kalırsa DC3231 modül kullanılması gerekir.Böylece saatin daha dakik çalışır. Benim projelerde hep DS3231 vardır. Yine de devrene şöyle bir bakınca 5 adet matrix in olduğunu görüyorum. Bu donanım saniyesiz (saat:dak) şeklinde bir saate uyar. Tabiiki bu noktada sana sormak lazım Bu yaptığın saat için bir PCB hazırladınmı? cevabın evet ise bu pcb yi mi kullanmak istiyorsun yoksa farklı bir şemaya uygun bir PCB de hazırlayabilirmisin yada bu seçeneği tercih edermisin.? Yoksa illaki saniyeli bir devre mi istiyorsun. Bütün bunları cevaplarsan üzerinde düşünürüm.
Her koşulda devreni değiştirmen gerekecek bunu en baştan söyleyeyim de kararında etkisi olabilir belkide.

Ete

rhoca68

hocam link nasıl verilir bilmiyorum bu sizin forumda üye projeleri diye ararsanız
5X7 Dotmatrix Saat Projesi var oraya bir bakarmısınız. ben yıllar önce bunu yapmıştım çok güzel vede stabil çalışıyordu. ben ise saniyeli ve ondalık değer gösteren projeyi yapmak istedim maalesef olmadı.
hocam delikli plakete yaptım videoda gördüyseniz dotmatrıx ledleri kendim döşedim.
hocam eger 2 adet 595 ilavesi ve yazma derleme işi zor ise hiç kendinizi yorup zaman harcamayın. ben olmazsa iki 595 ve ledleri söker yukarıda gösterdiğim projeyi kullanırım.
bu kadar ilgi ve alakan için teşekkür ederim.
ben emekliyim boş zamanlarımı bu şekilde değerlendiriyorum. saygılarımla. selamlar

ete

Linke gerek yok benzer saatler yaptım zaten. Senin saat üzerinde biraz çalışayım dedim. Öncelikle bu programı Kesme ile çalışacak hale getireyim ve bir bakayım nasıl çalışacak diye . Çevirdim de ancak derlemede sorun çıktı. Programın boyutu zaten yüksek ve kesmeye çevirince bir sürü satırı kaldırmama rağmen derleyici hata veriyor. Bu hataların sebebi program hafızasının aşılması. Hemde fazlaca bir miktar aşılmış oluyor.

Daha sonra elimdeki projelere baktım. 5 adet matriks ile yapılmış saniye gösteren bir projem yok maalesef. Öncedende söyledim. genelde 5 matriks ile saniyesiz projeler yaptım.
Teferruatlı projeler ama senin sisteme uydurulabilir sanırım.
Bu durumda senin bahsettiğin ve daha önce yapmış olduğun o eski projeyi kullnman daha mantıklı gibi gözüküyor.

Ete

Powered by EzPortal
▲