Bazı resimler vardır; resmin bazı bölümleri hareketlidir. Kullanılan mekanizmalar ve arka plan aydınlatması sayesinde örneğin bir şelalenin suyu dökülüyormuş gibi görünür. Bir ırmak akıyormuş gibi etkiye sahiptir. Peki neden bu işlem neden grafik LCD ekran üzerinde gerçekleştirilmesin?
Bu projede ATMEGA8 ve bir grafik LCD (GDM12864) ile hareketli bir resim oluşturulacak.
Birbiri ardı konumunu değiştiren bir nesnenin bir yönde hareket ettiğini algılayabilmek için hareket ettiği yönde en az üç farklı konumda olması gerekir. Yani konumları 1 ,2 ve 3 olarak tanımlanırsa, bu konumlar zamana göre bir dizi oluşturacak şekilde olmalıdır. Hatta o yüzden yürüyen ışık devreleri en az üç çıkışlıdır.
Haraketli resimlerin en tipik örnekleri filmlerdir. Burada saniyede 23-24 kare gibi bir hızda görüntüyü oluşturan kareler ekrana yansıtılır. İnsan gözüde arada kesinti olmasızın görüntüyü akıcı bir hareket olarak algılar. Bu durumun en iyi örneği çizgi filmlerdir. Halen de kullanılan yöntemde her kare tek tek çizilen sahne görüntüleri birbiri ardına gösterilirse sonuçta akıcı bir hareket oluşur. Bu işlem bilgisayar üzerinde aşağı yukarı aynı mantıkla yapılır. Her bir kareyi oluşturan görüntü tek tek konumları belirlenir ve program bu konumları kullanarak filmi oluşturur.
Bu projede kullanılan GDM12864 grafik LCD bir tam ekran görüntüyü oluşturmak için 1Kbaytlık veri ister. Projede kullanılan Atmega8 ise programlanabilir alan olarak sadece 8Kbaytlık veri alanı var. Tam ekran görüntü aktarımı kullanıldığında sadece 7 tane görüntü aktarılabileceği ortada (ekran sürücü programı içinde yer gerekir). Bu durumda her seferinda tam ekran görüntü aktarılacağına görüntünün sadece hareket eden bölümünü ekrana aktarmak hareket için daha fazla bilginin işlemciye depolanabileceği ortaya çıkar.
Bu durumda ekranda göstermek için seçilen görüntünün sadece yarısında hareket olması yeterli oluır. Ama mutlaka 1 tane tam ekran görüntü de olması gerektiğini unutmamak gerekir. Yoksa ekranda sadece hareketin olduğu bölüm görüntülenir. Birbirini izleyen görüntüler sonuçta hareketli bir görüntü sunar. Son görüntüye geldiğinde tekrar baştan başlar. Böylece sonsuz döngü içinde görüntü tekrarlayıp durur.
Bir tam ekran görüntüsü dahil toplamda 13 tane resim görüntüsü işlemci üzerine depolanır ve sırayla bu görüntüler çağrılıp ekrana gönderilir. Ama bu bir zamanlayıcı kontrolu ile belirli zaman aralıklarında gerçekleştirilir.
"Atmega32 ile Grafik LCD'nin Sürülmesi" projesinde grafik LCD ekran ile ilgili bilgiler bulunabilir. GDM12864 o projedeki grafik LCD ekran ile uyumludur. (Ekran üzerindeki piksellerin gösterimi ve arkaplan aydınlatması hariç).
Proje iki ana bölümden oluşuyor. Grafik ekran zaten modul olarak satın alınmakta. Sürücü devresi ise asıl yapılması gereken bölüm (LCD ekran bağlantısı ile birlikte). Sürücü devresi grafik LCD modül veri hatları, kontrast ayarı ile LCD'nin başlatılması ve üzerinde veri gösterilmesi için gereken bilgilerin saklandığı ATMEGA8 işlemcisini barındırıyor.
Sistemin kalbini IC1 ile ATMEGA8 oluşturuyor. Aslında kristale gerek olmasada kesin zamanlama ihtiyacını karşılamak için XT1(3.6864MHz) kristal ile C7 ve C8 (27pF) kondansatörler ile birlikte işlemci için gereken zamanlama frekansını üretirler. R1 (1K) ve LED1 (LED) ile devrenin çalışmasını izlemek üzere kullanılmaktadır. Grafik LCD ekran şemada gösterilmese de P3 konnektör bağlatısı üzerinden kablo ile bağlanmaktadır. R3 (10K) trimpot grafik LCD'nin kontrast ayarı için kullanılmaktadır.
Devrenin beslemesi P1 konnnektörü üzerinden D1 (2W10M) köprü diyodu üzerinden IC2 (7805)regüle edilerek devrelinin ihtiyacı olan beslemeyi oluşturur.
Belirtilmeyen geri kalan kondansatörler filtre amaçlıdır.
Devre montajı açısından kritik bir durum yoktur. Görüldüğü gibi devre son derece sadedir. Sadece kabloları karta lehimlerken kısa devre olmamaları için dikkatli olmak yerinde olacaktır. Şu hali ile grafik LCD 20 yollu şerit kablo ile bağlanmıştır. Tek sıra pin konnektör bağlantısı ile de bu bağlantı gerçekleştirilebilir
1K | R1 |
10K yatık trimpot | R2 |
27pF | C7,C8 |
100nF | C1,C2,C3,C4,C6 |
10µF/25V | C5 |
3mm yeşil LED | LED1 |
ATMEGA32 (DIL) | IC1 |
7805 | IC2 |
2W10M veya benzeri | D1 |
3,6864 Mhz kristal | XT1 |
2x3Header (ISP6) | isp |
2'li klemens | P1 |
28 bacaklı entegre soketi (DIL) | - |
GDM12864 | - |
Besleme için 9V'luk adaptör, LCD ekran ile işlemci kartı arasındaki kablolar unutulmamalıdır.
Ayar için devreye ilk enerji verildiğinde ekranın görülebilecek şekilde trimpot ile ayarlanır. Daha sonra bir daha dokunmaya gerek olmaksızın çalışır.
Kullanımı basit fişi tak ve çalıştır. Devre başlar ve ekran üzerindeki görüntü sürekli yenilenir.
Bitmap biçimindeki görüntüler "BMP_GLCD.exe" programı ile hex veri biçimine dönüştürülmüştür. (Bu program "Atmega32 ile Grafik LCD'nin Sürülmesi" projesinde ayrıntılı olarak anlatılmıştır.) Oluşturulan verilerin içinden resim üst yarısını silmek için zaten program sağ ve sol olarak işaretlenmiştir. Her satırda bir boşluk ile ayrılmıştır. Böylece sadece hem sağ hemde soldaki blokların üstten itibaren yarısının silinmesi (8 tane satır grubunun üssten 4 tanesinin) ile istenen işlem yerine getirilmiş olur. Geriye sadece bu verilerin ana programa tanıtılması kalır.
Ekler:
ATMEGA8 hakkında bilgi için
"ATMEGA8 ve Grafik LCD ile hareketli resim (GDM12864)" için dosyalar-birleşik
Bu devrenin yapım sorumluluğu size aittir. Devre yapıldı ve çalışıyor. K.A....
Hiç yorum yok:
Yorum Gönder