Arkadaşlar ne kadar uğraştıysam yine yapamadım aşağıdaki resimde görülen kayan yazı 2 dot matrix(8x8)te çalışıyor.
Fakat ben bunu 4 e çıkarmaya ne kadar uğraştıysamda aşağıdakini paralel alıyor diğer ikisindede aynı görüntüyü gösteriyor.Veya hiç göstermiyor vs.
**Gerekli kodu veya eklenirse ayrı bir eleman ne varsa ayrıntılı bir şekilde açıklarsanız memnun olurum.
(http://d1201.hizliresim.com/t/x/27gmw.jpg) (http://bit.ly/c25MCx)
kod bu:
#include <16F628A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#use delay(clock=4000000)
int b,i,a; //döngüler için gerekli değişkenler
signed kayma;
int yazi_sutun;//yazının sütün sayısı
int matris_sutun; //matris sutun
char metin[]={
0x81, 0x42, 0x24, 0x18, 0x81, 0x42, 0x24, 0x18, // sola çift ok
0x00,
0x03, 0x07, 0x0E, 0xFC, 0xFC, 0x0E, 0x07, 0x03, //y
0x00,
0xFC, 0xFE, 0x13, 0x11, 0x11, 0x13, 0xFE, 0xFC, //a
0x00,
0x83, 0xC3, 0xE3, 0xF3, 0xDB, 0xCF, 0xC7, 0xC3, //z
0x00,
0xFF, 0xFF, 0x18, 0x3C, 0x66, 0xC3, 0x83, 0x00, //k
0x00,
0x00, 0x00, 0x88, 0xFB, 0xFB, 0x88, 0x00, 0x00, //i
0x00,
0x18, 0x24, 0x42, 0x81, 0x18, 0x24, 0x42, 0x81, // sağa çift ok
};
char kayan[8]; //kayan adında 16 elemanlı sahte dizi oluşturuldu.
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
yazi_sutun=62;//yazinin toplam sutun sayısı belirleniyor
//yazi1_sutun=64; //diğer yazının sutun sayısı belirleniyor
matris_sutun=16;//kullanılan matrisin sutun sayısı
for(;;)// sonsuz döngü oluşturluyor
{
for(kayma=-8;kayma<yazi_sutun;kayma++) // sütün sayısı kadar kayma işlemi gerçekleştiriliyor.
{
for(b=0;b<matris_sutun;b++) //kayan adlı dizinin elemanlarını döngü //sayesinde buluyoruz.
{
kayan[b]=metin[kayma+b]; // kaydırma işlemi hesaplanıyor
if(kayma+b<0) // şartlar
kayan[b]=0;
if(kayma+b>yazi_sutun)
kayan[b]=0;
}
for(a=0;a<30;a++) //tarama sayısı
{
for(i=0;i<matris_sutun;i++) //bulunan değerler teker teker portlara gönderiliyor.
{
output_a(i);
output_b(kayan[i]);
delay_us(6000); //kayma hızı
} //kaydırma işlemi sonu
} // portlara gönderme sonu
} //tarama sayısı sonu
} //sonsuz döngü sonu
} // ana program sonu
nasıl yapılacağı hakkında bir çok kişiye az çok sordum fakat yine olmadı :S
(http://d1201.hizliresim.com/t/x/27gtw.jpg) (http://bit.ly/c25MCx)
Yazılımdan anlamam!
Ama lakin şemada mantık hatası var.
74154 lerin E1 ve E2 girişlerini şaseye çekmemelisiniz.
74154lerin e1 ve e2 bacaklarını birleştirip ayrı ayrı iki boş iki pine bağlayın. Sonra datayı hangisine göndermek istiyorsanız onun e1ve e2 bacağını negatife çekin.
Bu şekilde yapmazsanız iki gurup displaydede aynı şeyleri görürsünüz.
Kodunu incelemedim. Oraya gelmeden önce yapısal hatanın düzeltilmesi gerek.
Kullandığın 74HC154 çipi 4x16 multiplexer. Sen iki çipi de paralel bağlamışsın. Bu durumda birinin çıkışı ne ise diğerinin çıkışı da aynı olur.
Enable uçlarını kullanman gerek. ilk 16 sütun bittikten sonra 1. çip pasif yapılıp 2. çip aktif yapılacak, kalan 16 sütun da öyle taranacak.
Şimdiki haliyle ilk iki gösterge ile 2. iki gösterge aynı şeyleri gösterir.
Mucit23 kardeş benim bildiğim e1 ler şase e2 ler ayrı ayrı pin Sizin değiniz doğrudur bişiy söyleyemem.
" Klein "
evt onu sadece 4 lü istediğimi belirtmek için yükledim.
asıl sorunum dediğiniz gibi ilk önce 1. çip aktif sonra pasif ve 2. çip aktif ve pasif sorun burada bunu düşünürken kafayı yedim yukarıda verdiğim kod 2 tanesini çalıştırıyor. 1.yi pasif 2.yi aktif yapacağım gerekli kodun nereye yazıldığını anlayamdım yazdıysamda mantığıma yatmadı sildim.
Ayriyetten 16f628 in pin_a4 ünü hiç bir şekilde çalıştıramıyorum basit basit led devrelerinde bile bu Ra4 ayrı bir kullanımı mı var acaba?
Şuanki halim karşımda 10 tane yol ayrımı bende ki de kararsızlık . Birisi tabiri caiz elimden tutsa bütün sorularımı sileceğim.Bu işin peşini bırakmak istemiyorum Kafaya koydum başta .
RA4 bacağı open collector tipindedir. 0 V veya sonsuz empedans gösterir. 10K lık bir dirençle +5V a bağlarsan 1 ve 0 alabilirsin.
çok çok teşekkür ederim kafamdan bir sorunumu sildin teşekkürler.ra6 ve 7 yide bu şekilde kullanabilirmiyiz
Evet kullanabilirsin.
tekrar teşekkürler.
Özelden yazmana gerek yok.
Ra6 ve RA7 yi pull-up yapmana gerek yoktur. Bu pinler normal I/O olarak kullanabilirsin yanlız İşlemciyi iç osc ile çalıştırmalısın.
--------------
Edit;
Sigortalara bunu eklemeyi dene
#FUSES INTRC_IO
özelden yazmanın bir sakıncası olduğunu bilmiyordum k.b.
Peki teşekkür ederim.
Karşında ki şahıs müsade ettiği sürece özelden yazmanın bir sakıncası yok. Siz buradan yazdığınızda hem konu çözülecek hemde sizin gibi bu tür hatalara düşenler için bu başlık kendilerine derman olacak ve ayrıca bir kişiye de bağlı kalmamış olacaksınız.
Bende şöyle bir şey söyleyeyim arkadaşa yanıt olarak
Alıntı yapılan: erkantr67 - 30 Ocak 2012, 14:23:15
çok çok teşekkür ederim kafamdan bir sorunumu sildin teşekkürler.ra6 ve 7 yide bu şekilde kullanabilirmiyiz
dedim oda evet dedi denedim olmadı ve tekrar yanıt atmak yerine(diğer forumlarda gördüğüm üzere üst üste ynt atmak yasak spam olarak değerlendiriliyor.Bu yüzden;) mesaj attım.Yoksa çok meraklı değilim mesaj atmaya, diyeceksiniz bir öncekini değiştir onuda düşündüm fakat bir öncekindeki o yazıyı dikkat çekmeyeceği için özelden attım.Evet sizin dediğinizede katılıyorum ama böyle gerekti.Ayriyetten bunu sizin yerine bilgi alışverişinde bulunduğum şahıs yazsa daha iyi olur.Kusura bakmazsınız artık.