PIC16F628 ile 8X32 Kayan Yazı Grafik Panosu - 1
Son günlerde pekçok sitede kayan yazı devrelerine raslayınca bende de
bu konuda bir ürünümün olması isteği oluştu. Bu devrenin basit,
grafiksel ve PicBasic Pro hakkında açıklayıcı olmasına özen gösterdim.
Sonuçta bu, sadece bir gösteri devresi olduğundan ihtiyaç karşılayıcı
özelliğinin az olması da normal. Fakat fikir verici ve faydalı
olabilecek pekçok yönünün olduğunu düşünüyorum.
Devre, bir adet
PIC16F628, 2 adet 74HC154 ve bir adet 74HC00 Entegresi ve led matrixten
oluşmakta. Led matrixi kendiniz dizayn edeceğiniz gibi piyasada satılan
8x8 led matrixtende 4 tane alıp yapabilirsiniz. Devreyi en temel devre
olarak dizayn ettiğimden dolayı, kullanılacak ledlere göre 74HC154
entegresinin uçlarının transistörlerle sürülmesi gerekebilir. Ayrıca
ledlerlerle PORTB arasına 470R direnç bağlamak gerekir. Kristali 4
MHz'den büyük, mesela 10 MHz kullanırsanız p1 ve i1 değişkenlerinin
değerini daha büyük atamanız gerekmektedir. 74HC00 lojik entegresinin
yerine transistörle de gelen sinyali değilleyebilirsiniz. Ben devreyi
şemadaki şekliyle yaptım ve bredboard üzerinde çalıştırdım. Ama baskı
devresini hazırlamadım. Devre, şeması ve Pic Basic Pro program kodları
incelenince yeterince bilgi verecektir. Ek dosyalarda bulunan '.dsn'
uzantılı dosya, PROTEUS ISIS çizim dosyasıdır. Bu dosyada simulasyonu
çalıştırabilirsiniz.
Devrede görüntülenmesini istediğiniz
grafik ya da yazıyı d1-d32 değişkenlerine işliyorsunuz. 0'lar ledleri
yakmıyor, 1'ler ledleri yakıyor. Aşağıdaki kodlarla 'Teknoloji' kelimesi
kayan yazı olarak çıkmaktadır.
Devrenin Şeması:
Ek Dosyalar:
Devre şemasını büyük görmek için tıklayınız. Devrenin çalışması için gerekli olan bütün dosyaları indirmek için tıklayınız.
PIC16F628 dahili osilatörü ve dahili resetleme ile gerçekleştirilen ve
harici kristal osilatör kullanılmayan devre ektedir, indirmek için tıklayınız.
Bu yazıya yönelik sorular ve çözümleri şeklinde hazırlanan ve bu yazının devamı niteliğindeki yeni çalışma için tıklayınız.
Devrenin, Pic Basic Pro ile hazırlanmış kodları:
'PIC 16F628 ile 8X32 Matrix Pano Kayan Yazı Grafik 'Hazırlayan: Mehmet Yılmaz - mehmet.yilmaz@teknomerkez.net 'Tarih: 5 Nisan 2005 'Dosya adı: 8x32-d1.bas 'Kullanılan değişken fazlalığından dolayı PIC16F628 kullanıldı. 'd1-d32 değişkenlerini PORTB de gösterirseniz gerekli değişiklikleri 'yaparak PIC16F84 kullanabilirsiniz '------------------------------------------------------- 'PROTON Compiler kullanıyorsanız alt satırın başındaki tırnağı kaldırın 'DEVICE 16F628 '=====Değişkenler tanımlanıyor===== i VAR BYTE i1 VAR BYTE p1 VAR BYTE p2 VAR BYTE 'PORTA değişkenleri pa1 VAR BYTE pa2 VAR BYTE pa3 VAR BYTE pa4 VAR BYTE pa5 VAR BYTE pa6 VAR BYTE pa7 VAR BYTE pa8 VAR BYTE pa9 VAR BYTE pa10 VAR BYTE pa11 VAR BYTE pa12 VAR BYTE pa13 VAR BYTE pa14 VAR BYTE pa15 VAR BYTE pa16 VAR BYTE pa17 VAR BYTE pa18 VAR BYTE pa19 VAR BYTE pa20 VAR BYTE pa21 VAR BYTE pa22 VAR BYTE pa23 VAR BYTE pa24 VAR BYTE pa25 VAR BYTE pa26 VAR BYTE pa27 VAR BYTE pa28 VAR BYTE pa29 VAR BYTE pa30 VAR BYTE pa31 VAR BYTE pa32 VAR BYTE 'şekil değişkenleri d1 VAR BYTE d2 VAR BYTE d3 VAR BYTE d4 VAR BYTE d5 VAR BYTE d6 VAR BYTE d7 VAR BYTE d8 VAR BYTE d9 VAR BYTE d10 VAR BYTE d11 VAR BYTE d12 VAR BYTE d13 VAR BYTE d14 VAR BYTE d15 VAR BYTE d16 VAR BYTE d17 VAR BYTE d18 VAR BYTE d19 VAR BYTE d20 VAR BYTE d21 VAR BYTE d22 VAR BYTE d23 VAR BYTE d24 VAR BYTE d25 VAR BYTE d26 VAR BYTE d27 VAR BYTE d28 VAR BYTE d29 VAR BYTE d30 VAR BYTE d31 VAR BYTE d32 VAR BYTE '=====port giriş çıkış ayarları===== TRISA=000000 'tüm portlar çıkışa ayarlandı TRISB=000000 'zaten geride boş port kalmadı PORTB=0 'PORTB başlangıçta 0 olacak PORTA=1 '74HC154 tarama işleminde lojik 0 çıkışlı tarama yapar 'bu durumda başlangıç için PORTA=1 olmalı '=====Sayıcıların ayarı===== i=0 'Bu değer sabit kalsın i1=8 'kayma hızını belirliyor(İSTEDİĞİNİZ HIZI BELİRLEYEBİLİRSİNİZ) '=====Bekleme ayarları===== p1=1 'sütun geçişleri arasındaki bekleme(TİTREMEYİ ÖNLEYECEK DEĞER) '=====Görüntü oluşturan değişkenler tanımlanıyor===== 'görünmesini istediğiniz şekli oluşturmak için, 'görünen için=1 siyah kalan için=0 olarak değer verin. 'değerlerin anlaşılabilir olması açısından binary 'olarak verilmiştir. 'Teknoloji d1=000001 d2=000001 d3=111111 d4=000001 d5=111001 d6=010100 d7=011000 d8=000000 d9=111111 d10=010000 d11=101000 d12=000100 d13=000000 d14=111100 d15=000100 d16=111000 d17=000000 d18=111000 d19=000100 d20=111000 d21=000000 d22=111111 d23=000000 d24=111000 d25=000100 d26=111000 d27=000000 d28=000000 d29=111101 d30=000000 d31=111101 d32=000000 'PORTA tanımlaması pa1=0 pa2=1 pa3=2 pa4=3 pa5=4 pa6=5 pa7=6 pa8=7 pa9=8 pa10=9 pa11=10 pa12=11 pa13=12 pa14=13 pa15=14 pa16=15 pa17=16 pa18=17 pa19=18 pa20=19 pa21=20 pa22=21 pa23=22 pa24=23 pa25=24 pa26=25 pa27=26 pa28=27 pa29=28 pa30=29 pa31=30 pa32=31 'Değerlerin Portlara gönderilmesi işlemi yapılıyor. basla: i=i 1 IF i=i1 Then kaydir PORTA=pa1 PORTB=d1 Pause p1 PORTA=pa2 PORTB=d2 Pause p1 PORTA=pa3 PORTB=d3 Pause p1 PORTA=pa4 PORTB=d4 Pause p1 PORTA=pa5 PORTB=d5 Pause p1 PORTA=pa6 PORTB=d6 Pause p1 PORTA=pa7 PORTB=d7 Pause p1 PORTA=pa8 PORTB=d8 Pause p1 PORTA=pa9 PORTB=d9 Pause p1 PORTA=pa10 PORTB=d10 Pause p1 PORTA=pa11 PORTB=d11 Pause p1 PORTA=pa12 PORTB=d12 Pause p1 PORTA=pa13 PORTB=d13 Pause p1 PORTA=pa14 PORTB=d14 Pause p1 PORTA=pa15 PORTB=d15 Pause p1 PORTA=pa16 PORTB=d16 Pause p1 PORTA=pa17 PORTB=d17 Pause p1 PORTA=pa18 PORTB=d18 Pause p1 PORTA=pa19 PORTB=d19 Pause p1 PORTA=pa20 PORTB=d20 Pause p1 PORTA=pa21 PORTB=d21 Pause p1 PORTA=pa22 PORTB=d22 Pause p1 PORTA=pa23 PORTB=d23 Pause p1 PORTA=pa24 PORTB=d24 Pause p1 PORTA=pa25 PORTB=d25 Pause p1 PORTA=pa26 PORTB=d26 Pause p1 PORTA=pa27 PORTB=d27 Pause p1 PORTA=pa28 PORTB=d28 Pause p1 PORTA=pa29 PORTB=d29 Pause p1 PORTA=pa30 PORTB=d30 Pause p1 PORTA=pa31 PORTB=d31 Pause p1 PORTA=pa32 PORTB=d32 Pause p1 GoTo basla 'Göstermeye yeniden başla '=====Kaydırma işlemi yapılıyor===== kaydir: PORTA=1 PORTB=0 i=0 'PORTA sıralaması değişimi pa1=pa1-1 pa2=pa2-1 pa3=pa3-1 pa4=pa4-1 pa5=pa5-1 pa6=pa6-1 pa7=pa7-1 pa8=pa8-1 pa9=pa9-1 pa10=pa10-1 pa11=pa11-1 pa12=pa12-1 pa13=pa13-1 pa14=pa14-1 pa15=pa15-1 pa16=pa16-1 pa17=pa17-1 pa18=pa18-1 pa19=pa19-1 pa20=pa20-1 pa21=pa21-1 pa22=pa22-1 pa23=pa23-1 pa24=pa24-1 pa25=pa25-1 pa26=pa26-1 pa27=pa27-1 pa28=pa28-1 pa29=pa29-1 pa30=pa30-1 pa31=pa31-1 pa32=pa32-1 GoTo basla 'kaydırma işlemi sona erdiğinde başa 'döner ve işlem sürekli tekrarlanır End 'Program sonu