74HC595 İLE ASSEMBLY DİLİNDE SAYICI

Başlatan kamil318, 10 Ağustos 2014, 15:50:43

kamil318

Merhabalar.

5 adet 74HC595 ile 5 digit 7 segment display sürmem gerekiyor.
Önce saniyeleri saydırıp sonra dakikayı 1'de sabitleyip (kesme kullanarak) sonra tekrar saniye şeklinde mi gitmem gerekiyor?
Saniye saydırırken tek tek rakamların binary kodlarını mı PIC'in çıkışına mı vermem gerekiyor?
Önce PIC'in saatiyle yapabilirsem sonra DS1307 gerçek zamanlı saati ile geliştirmek istiyorum.

Şimdiden teşekkürler.

Kabil ATICI

Timer ayarlarak 1 saniye elde ediyorsun.
Bundan sonra her 1 saniye geldiğinde
1-saniye sayacını 1 artır,
2-saniye 0x5a olmuş mu bak
3-saniye 0x5a oluş ise saniyeyi 0x00 yap dakika sayacının 1 artır.
4-saniye 0x5a olmamış ise
5-saniye yedeğini alıp  10  hanesini sıfır yaparak saniye 1 hanesi 0x0a olmuş mu bak.
6-değil ise göstege bölümüne git
7-olmuş ise saniye 1 hanesini sıfırla saniya 10 hanesini 1 artır.
8-göstege bölümüne git.

3 nolu adımdan aynı şeyleri dakika için yap ve dakika sayacı 0x5A ise aynı şekilde saat içinde yapılacak.


led ekran için bacak bağlantılarına göre bir bit haritası oluşturman gerekiyor. sayaç hanelerindeki rakama göre bu değerleri göndermeniz gerekiyor.Ekrana sırasına göre gönderilecek. Bir tanesine rakamları bir gönder bu soruyu sormana gerek kalmaz.
Bu ara saat yapıyorsun ki 6 haneli bir sayıya denk düşer.
ambar7

kamil318

Alıntı yapılan: ambar7 - 10 Ağustos 2014, 17:22:54
Timer ayarlarak 1 saniye elde ediyorsun.
Bundan sonra her 1 saniye geldiğinde
1-saniye sayacını 1 artır,
2-saniye 0x5a olmuş mu bak
3-saniye 0x5a oluş ise saniyeyi 0x00 yap dakika sayacının 1 artır.
4-saniye 0x5a olmamış ise
5-saniye yedeğini alıp  10  hanesini sıfır yaparak saniye 1 hanesi 0x0a olmuş mu bak.
6-değil ise göstege bölümüne git
7-olmuş ise saniye 1 hanesini sıfırla saniya 10 hanesini 1 artır.
8-göstege bölümüne git.

3 nolu adımdan aynı şeyleri dakika için yap ve dakika sayacı 0x5A ise aynı şekilde saat içinde yapılacak.


led ekran için bacak bağlantılarına göre bir bit haritası oluşturman gerekiyor. sayaç hanelerindeki rakama göre bu değerleri göndermeniz gerekiyor.Ekrana sırasına göre gönderilecek. Bir tanesine rakamları bir gönder bu soruyu sormana gerek kalmaz.
Bu ara saat yapıyorsun ki 6 haneli bir sayıya denk düşer.


Cevabınız için çok teşekkür ederim.
Aslında tam saat değil 45dk sayıp sonra 5. digit'te 2 yazsın istiyorum.
74HC595 mantığını biraz anladım aslında (lojik 1/0 vererek 4 digit sayı yazdırabiliyorum).
PIC'in tek portundan seri 8 bit gönderemedim. Bu konuyu biraz açıklayabilir misiniz?

Kabil ATICI

#3
MR=1 (reset)
buradaki (SHCP) seri saat girişi 0->1 geçişinde (DS) seri girişteki bilgisi alıyor ve kaydırıyor. Buna göre önce veriyi seri giriş (ds) hazırlanıyor sonra  (SHCP) seri saat girişi 0->1 yapılıyor. 8 tane veri alındıktan sonra  (OE=1 yapılabilir) STCP 0->1 yapılıyor. seri olarak alınan veri registere atanıyor. Son olarak OE=0 yapılıp alınan veri çıkışlara veriliyor.

OE ucu ile uğraşılmak istenmez ise bu giriş sürekli lojik 0 konumunda tutulabilir.

Bunlar aslında veri kağıdında var
http://www.nxp.com/documents/data_sheet/74HC_HCT595.pdf
ambar7

kamil318

doğru hocam bu kısmı biliyordum fakat asıl sormak istediğim PIC'ten 8 bitlik datayı nasıl göndereceğim. Ayrıca her datadan sonra SHCP'ye bir sinyal göndermem gerekli (bu kısım 1 saniye içinde tamamlanmalı) ve ardından yazdırmak için STCP'ye sinyali göndermeliyim.
Yani SHCP ve STCP için 2 ayrı frekansta sinyal üretmem gerekiyor. Bu 8 bitlik bilgiyi ve ardından gelecek SHCP sinyalini 1 saniyeye sığdırmalıyım ve STCP'nin frekansı 1 olacak. Bu şekilde her saniyede 1 artacak.

Kabil ATICI

RRF ve RLF komutları zaten bu iş için.
C'nin değerine göre  veri pini olarak kullacağın bacağa atama yapacak sonra
SHCP bacağın 0-->1-->0 darbesi oluşturacaksın sonra  tekrar verini kaydrrıp işlemi 8 kez tekrarlayıp ondan sonra STCP 0-->1-->0 oluşturacaksın ki bu 0.1 saniye bile sürmez. 74HC595 entegresi 40MHz'de çalışabilir.
Kalan süre senin veri hazırlaman için gereken süreyi oluşturur.
ambar7

kamil318

Sağolun hocam verdiğiniz bilgiler üzerine yarına kadar çalışacağım.