Teknik Paylaşım Platformu, teknik içerikli bilgi ve tecrübelerin paylaşımı için teknik elemanlar tarafından hiçbir maddi çıkar söz konusu olmadan kurulmuştur.
Sizde Teknik Paylaşım Platformundan daha faydalı bir şekilde yararlanmak istiyorsanız ÜYE OLUNUZ
Üye olmak için veya forum hakkında yardım almak için TIKLAYINIZ
|
Elektronik Devre Şemaları Amatör & Profesyonel devre şemalarını paylaşacağımız bölümdür |
| ||
|
| LinkBack | Konu Araçları | Arama | Stil |
| #1 (permalink) | |
PIC BASIC ile Kayan Yazı Yapalım Bu çalışmada yine öncelikle PIC BASIC ile programlama yapacağız. Tercihen PIC 16F628 kullanacağız. Yapacağımız devre, Bellek kapasitesinin izin verdiği noktaya kadar PIC 16F84 ile de çalışmaktadır. Yine 16F877 ile de devre çalışacaktır. Yalnız ben denemelerimi 16F628 ve 16F84 ile yaptım.Bu konudaki çalışmamız sadece bu yazıdan ibaret olmayacak, bir kaç bölümden oluşacak. Bu çalışmada, 1 adet 5x7 led matrix üzerinde karakter oluşturacak ve oluşturduğumuz bu karakteri kaydıracağız. Sonraki çalışmalarımızda matrix sayısını çoğaltmak, karakter jeneratörü oluşturmak ve bunları kaydırmak gibi konular üzerinde duracağız. Bütün bu çalışmalar temel bilgiler verme amaçlı olarak öğrenmeye ilk adımı oluşturacak. Dolayısıyla gelişmiş devrelerden beklenen özellikler bu çalışmada aranmamalıdır. 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. 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===TRISA=%00000000 'PORTA ÇIKIŞ YAPILDITRISB=%00000000 'PORTB ÇIKIŞ YAPILDIBASLA: PORTA=%00000000 'PORTA 0 (LOW) PORTB=%11111111 'PORTB 1 (HIGH) GoTo BASLA 'BASA DON EndProgramda 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. 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===TRISA=%00000000 '===PORTA CIKIS===TRISB=%00000000 '===PORTB CIKIS===P1 VAR BYTEP1=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 EndProgramda 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ü. 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 BYTEd1 VAR BYTEd2 VAR BYTEd3 VAR BYTEd4 VAR BYTEd5 VAR BYTETRISA=%00000000TRISB=%00000000P1=5'===M karakteri degiskenlerde tanimlandi===d1=%01111111 '*******d2=%00000010 ' *d3=%00000100 ' *d4=%00000010 ' *d5=%01111111 '*******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 EndBu 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 BYTEi VAR BYTEi1 VAR BYTEd0 VAR BYTEd1 VAR BYTEd2 VAR BYTEd3 VAR BYTEd4 VAR BYTEd5 VAR BYTEd6 VAR BYTEd7 VAR BYTEd8 VAR BYTEd9 VAR BYTEd10 VAR BYTEd11 VAR BYTEd12 VAR BYTEd13 VAR BYTEd14 VAR BYTEd15 VAR BYTEd16 VAR BYTEd17 VAR BYTEd18 VAR BYTEd19 VAR BYTEd20 VAR BYTEd21 VAR BYTEd22 VAR BYTEd23 VAR BYTEd24 VAR BYTEd25 VAR BYTEd26 VAR BYTEd27 VAR BYTEd28 VAR BYTEd29 VAR BYTETRISA=%00000000 '===BUTUN UCLAR===TRISB=%00000000 '===CIKIS YAPILDI===P1=5 '===TITREMEYI ENGELLEMEK LCLN===i=0 '=== BU DEGER SABIT KALSIN===i1=22 '===KAYMA HIZINI AYARLIYOR=== '===MEHMET karakterinin degiskenlere atanmasi===d0=%00000000d1=%01111111d2=%00000010d3= %00000100d4=%00000010d5=%01111111d6=%00000000d7=%0 1111111d8=%01001001d9=%01001001d10=%00000000d11=%0 1111111d12=%00001000d13=%00001000d14=%01111111d15= %00000000d16=%01111111d17=%00000010d18=%00000100d1 9=%00000010d20=%01111111d21=%00000000d22=%01111111 d23=%01001001d24=%01001001d25=%00000000d26=%000000 01d27=%01111111d28=%00000001d29=%00000000BASLA: i=i+1 'i YI BIR ARTTIR IF i=i1 Then kaydir PORTA=%11111110 'SUTUN 1 ICIN PORTB=d1 Pause P1 PORTA=%11111101 'SUTUN 2 ICIN PORTB=d2 Pause P1 PORTA=%11111011 'SUTUN 3 ICIN PORTB=d3 Pause P1 PORTA=%11110111 'SUTUN 4 ICIN PORTB=d4 Pause P1 PORTA=%11101111 'SUTUN 5 ICIN PORTB=d5 Pause P1 GoTo BASLA kaydir: i=0 '===KAYDIRMA BASLIYOR=== d0=d1 d1=d2 d2=d3 d3=d4 d4=d5 d5=d6 d6=d7 d7=d8 d8=d9 d9=d10 d10=d11 d11=d12 d12=d13 d13=d14 d14=d15 d15=d16 d16=d17 d17=d18 d18=d19 d19=d20 d20=d21 d21=d22 d22=d23 d23=d24 d24=d25 d25=d26 d26=d27 d27=d28 d28=d29 d29=d0 GoTo BASLA EndBu 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. | ||
| |
..:: Reklam Alanı ::.. |
PAYLAŞIMLARIN DEVAMI İÇİN SİTE İÇERİSİNDEKİ REKLAMLARA TIKLAYINIZ |
..::: TEKNİK PAYLAŞIM PLATFORMUNDAKİ BU KONUYU BEĞENDİYSENİZ ARKADAŞINIZLA PAYLAŞABİLİRSİNİZ ::.. |
Sayfayı E-Mail olarak gönder |
|
Bookmarks |
Konuyu Toplam 3 Üye okuyor. (0 Kayıtlı üye ve 3 Misafir) | |
| |
| ||||
Konu | Konuyu Başlatan | Kategori Başlıkları | Cevaplar | Mesajlara Cevaplar |
PIC 16F628 ile 8X32 Kayan Yazı Grafik Panosu - 1 | starhacker | Elektronik Devre Şemaları | 0 | 10-07-11 14:29 |
PIC BASIC ile Kayan Yazı Yapalım | ElemaN | Dijital Elektronik | 2 | 30-09-10 00:25 |
PIC BASIC ile Kayan Yazı Yapalım | ElemaN | Elektronik Devre Şemaları | 0 | 10-03-09 01:32 |
CD 4017 Entegresi ile Kayan Yazı Devresi | ElemaN | Elektronik Devre Şemaları | 0 | 10-03-09 01:32 |
PIC 16F628 ile 8X32 Kayan Yazı | ElemaN | Dijital Elektronik | 4 | 21-12-08 18:43 |