Mesaj Sayısı : 255Rep Puan : 683Teşekkür : 8Kayıt tarihi : 04/10/09Yaş : 32Nerden : Bursaİş/Hobiler : GrafikerLakap : EagLe*
Konu: PIC BASIC ile Kayan Yazı Yapalım C.tesi Ekim 10, 2009 12:47 pm
Göstergeler: Öncelikle kullanacağımız 5x7 led matrix üzerinde durmak gerekmektedir. Malzemeciden istediğim 5 adet ortak katod ve 5 adet ortak anot matrix displeyin hepsi ortak katod olarak karşıma çıkınca üzerinde dikkatle durmak gerektiği düşüncesi bende hasıl oldu.
Şekil 1: 5x7 ortak katod dipley (bu displey boyut olarak oldukça küçük: 1.3cmX1.8cm) Şimdi bu kadot dipleyinresminde göründüğü şekliyle grafiğini çizelim.
Şekil 2: 5x7 matrixin grafiksel gösterimi. Üstten görünüm. Resimde de görülen işaretli bacak grafikte yaptığım isimlendirmede C6 ucunu ifade diyor. Bu displeyde dik dizilmiş olan sırayı sütun olarak tanımladım C harfini verdim. Yatay dizlimiş led sırasını satır olarak tanımladım ve R harfini verdim. Sol üst köşeyi R1 ve C1 olarak tanımladım. Devrenin Şeması:
Şekil 3: Devrenin Şeması (08.07.2006 tarihinde güncellendi.) Denemelerimizde kullanacağımız devreyi, şeması şekil 3'te görüldüğü gibi tek displeyli ve PIC 16F628 kullanarak yapıyoruz. Yukarıda bahsettiğimiz sütun uçlarını PORTA olarak ve satır uçlarını PORTB olarak bağlıyoruz. BOREAS linux ortamında KiCad programı ile çizilmiş devre şeması kaynak dosyalarını indirmek için tıklayınız. Microsoft Windows ortamında KiCad programı ile çizilmiş devre şeması kaynak dosyalarını indirmek için tıklayınız. Göstergenin Çalıştırılması: Göstergede karakterler dizisini oluşturmak için gerekli mantık şudur: Elimizdeki displey ortak katod uçlu olduğundan sütuna bağlı olan ledlerin uçları katoddur. PIC'i programlarken bu uçlara 0 değerini verirsek ve satırlarda yanmasını istediğimiz ledler için de 1 değerini verirsek istediğimiz ledler yanmış olur. İlk yapacağımız iş matrix displeydeki bütün ledleri yakmak olacak. Bunu için PIC BASIC ile ilk programımızı yapalım: '===5X7 LED MATRIX TAMAMEN YANAR===
BASLA: PORTA=%00000000 'PORTA 0 (LOW) PORTB=%11111111 'PORTB 1 (HIGH) GoTo BASLA 'BASA DON End Programda görüldüğü gibi bütün ledleri yakmak için ledlerin ihtiyacı olan voltajı veriyoruz. Burada hangi satırı söndürmek istersek onu PORTA'da 0 yapıyoruz, hangi sütunu söndürmek istiyorsak onu PORTB'de 1 yapıyoruz. Programın PIC BASIC ile hazırlanmış kaynak dosyasını indirmek için tıklayınız. Programın hex dosyasını indirmek için tıklayınız. (Bu hex dosyanın çalışması için kristal ve reset dahili olarak kullanılmıştır.) Göstergede Karakterin Oluşturulması: Göstergede istediğimiz karakteri şu şekilde rahatlıkla oluştururuz. Önce 1. sütunu 0 (LOW) yaparız (PORTA'nın 1. biti). Diğer bitler 1 olarak kalır. Sonra, satırlarda yanmasını istediğimiz ledler için PORTB'nin uçlarından gerekli olnları 1 (HIGH) yaparız. İkinci sütuna geçeriz ve 0 yaparız İkinci sütunda yanmasını istediğimiz ledleri 1 yaparız. Bu işlem Son sütuna kadar devam eder. Böylece karakteri oluşturmuş oluruz. '===5X7 DISPLEYDE M KARAKTERINI OLUSTURMAK===
P1 VAR BYTE P1=5 '===BEKLEME SURESI TITREMEYI ENGELLEMEK ICIN===
BASLA: '===M karakterinin olusturulmasi=== PORTA=%11111110 'SUTUN 1 ICIN PORTB=%01111111 'BU DEGERLER Pause P1 'BEKLEME SURESI PORTA=%11111101 'SUTUN 2 ICIN PORTB=%00000010 'BU DEGERLER Pause P1 'BEKLEME SURESI PORTA=%11111011 'SUTUN 3 ICIN PORTB=%00000100 'BU DEGERLER Pause P1 'BEKLEME SURESI PORTA=%11110111 'SUTUN 4 ICIN PORTB=%00000010 'BU DEGERLER Pause P1 'BEKLEME SURESI PORTA=%11101111 'SUTUN 5 ICIN PORTB=%01111111 'BU DEGERLER Pause P1 'BEKLEME SURESI GoTo BASLA 'BASA DON VE TEKRAR ET End Programda görüldüğü gibi sütunu seçiyor ve satırdan istediğimiz ledleri yakıyoruz. Ledlerin ynma süresini tayin etmek için de bir bekleme zaman dilimi koyuyoruz. Yapılan devrenin görünümü şöyle oluyor.
Şekil 4: Sabit M karakterinin görünümü. Programın PIC BASIC kaynak dosyasını indirmek için tıklayınız. Programın HEX dosyasını indirmek için tıklayınız. (Bu hex dosyanın çalışması için kristal ve reset dahili olarak kullanılmıştır.) Göstergede Oluşturulan Karakterin Kaydırılması: Oluşturduğumuz karakteri kaydırmak için öncelikle değişkenler tanımlıyor ve karakterleri bu değişkenlere atıyoruz. Bu değişkenler sütunlardaki satır bilgilerini ifade ediyor. Göstermek istdiğimiz sütunda bu değişkenleri kullanıyoruz. Bu ilk adımı oluşturuyor. Bunu programda gösterirsek: '===M KARAKTERINI DEGISKENLERLE OLUSTURMAK===
P1 VAR BYTE
d1 VAR BYTE d2 VAR BYTE d3 VAR BYTE d4 VAR BYTE d5 VAR BYTE
BASLA: '===M karakterinin olusturulmasi=== PORTA=%11111110 'SUTUN 1 ICIN PORTB=d1 'BU DEGERLER Pause P1 'BEKLE PORTA=%11111101 'SUTUN 2 ICIN PORTB=d2 'BU DEGERLER Pause P1 'BEKLE PORTA=%11111011 'SUTUN 3 ICIN PORTB=d3 'BU DEGERLER Pause P1 'BEKLE PORTA=%11110111 'SUTUN 4 ICIN PORTB=d4 'BU DEGERLER Pause P1 'BEKLE PORTA=%11101111 'SUTUN 5 ICIN PORTB=d5 'BU DEGERLER Pause P1 'BEKLE GoTo BASLA End Bu programın PIC BASIC dosyasını indirmek için tıklayınız. Programın HEX dosyasını indirmek için tıklayınız. (Bu hex dosyanın çalışması için kristal ve reset dahili olarak kullanılmıştır.) Bu programda kullandığımız değişkenleri kullanacağımız sütun sayısı kadar çoğaltmamız gerekmektedir. Ben MEHMET görünümü için 30 tane değişken kullandım. Sizinde istediğiniz karakterler için gerektiği kadar sütun için değişken tanımlamanız gerekir. Bu devrelerde yanmasını istediğim ledlere 1 değerini veriyorum sönmesini istediğim ledlere 0 değerini veriyorum. Ancak değişken kullanma sayısının da PIC'lerin hafıza kapasitesinden dolayı bir sınırı var. Bu sınır kullandığımız PIC'e göre değişi. PIC 16F84 te az iken 16F628 de fazladır. Değişken kullanma sınırını aştığınızda program derlenmez ve hata verir. Şimdi çok karakterli kaydırma işlemini yapan programı görelim ve inceleyelim: '===COKLU KARAKTER KAYDIRILIYOR===
P1 VAR BYTE i VAR BYTE i1 VAR BYTE
d0 VAR BYTE 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
GoTo BASLA End Bu programa bektığımızda kaydırma işlemi dışında herşey yukarıda anlattığımız gibi olduğundan sadece kaydırmanın nasıl yapıldığını izah etmek istiyorum. Bu programda kullanılan bazı değişkenlerin amacını öncelikle açıklamak gerekmektedir: i değişkeni sayaç amacıyla kullanılmıştır. i1 değişkeni kaç görüntü tekrarlandıktan saonra kaydırmanın yapılması gerektiğini belirtir. i1 değişkeni ile kayma hızını ayarlayabilirsiniz. P1 değişkeni ise her sütunun ekranda ne kadar süre kalması gerektiğini yani bekleme aralığını belirtir. Bu değeri titreme sınırına yakın bırakmakta fayda var. Program büyüdükçe bu değerin ve i1 değişkeninin değerini gözden geçirmek gerekebilir. i=i+1 IF i=i1 Then kaydir Programda bulunan bu satırları şöyle hikaye edebiliriz. "Buraya kadar geldiysen kaydır'a git ve oradakileri gerçekleştir." i1 değişkeni için 22 atandığı için 22 kere karakteri gösterdikten sonra kaydırma işlemi yapılacaktır. Şimdi ise kaydırma işleminin nasıl yapıldığını inceleyelim. Bu işlem çok basit. Öncelikle sayacı sıfırlıyoruz. Sonra değşkenleri birbiriyle yer değiştiriyoruz. Bu şekilde kaydırmayı ve yönünü tayin edebiliyoruz. Bu programın PIC BASIC dosyasını indirmek için tıklayınız. Programın HEX dosyasını indirmek için tıklayınız. (Bu hex dosyanın çalışması için kristal ve reset dahili olarak kullanılmıştır.) Buraya kadar anlattığımız şekilde yapılmış devrenin çalışmasını izlemek için tıklayınız (avi video dosyası).