Gelişen mikrokontrol teknolojileri ve artan bilgi birikimi sayesinde geliştirici düzeyinde daha yaygın kullanımına olanak tanımıştır. Burada elimden geldiği kadar bazı örnekler sunmaya çalışacağım... Görüleceği gibi ilk örneklerimizde çoğunlukla ASM üzerinde iken daha sonraları C üzerinde örnekler yer almaktadır. Hatta ilerleyen zamanlarda Arduino örneklerinin yer alması kaçınılmaz olacaktır.

29 Nisan 2011 Cuma

ATMEGA8 ve Grafik LCD ile hareketli resim (GDM12864)


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.
Hareketli Resim

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.

Şekil-1 :Animasyonda hareket olgusu.

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.

Şekil-2 :Hareketin film üzerinde oluşumu.

Grafik LCD'de hareketli görüntü

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.

Şekil-3 :Projede kullanılan karelerden birisinin görüntüsü.

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ç).

Şekil-4 :Çalışır haldeki ekranın bir görüntüsü.

Devre

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.

Şekil-5 :İşlemci kartı şu hali ile Grafik LCD ekrana kablolar ile lehimli.


Şekil-6 :GDM12864 Grafik LCD ekran

Şema

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.

Şekil-7:Blok şeması


Şekil-8:Devre şeması (isp ve P1 haricindeki konnektörler gösterilmemiştir)

Devre Yapımı

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

Şekil-9:Grafik LCD sürücü kartı yollar


Şekil-10:Grafik LCD sürücü kartı eleman yerleşimi


Şekil-11:Grafik LCD sürücü kartı yolları birlikte eleman yerleşimi

Devre Elemanları

1KR1
10K yatık trimpotR2
27pFC7,C8
100nFC1,C2,C3,C4,C6
10µF/25VC5
3mm yeşil LEDLED1
ATMEGA32 (DIL)IC1
7805IC2
2W10M veya benzeriD1
3,6864 Mhz kristalXT1
2x3Header (ISP6)isp
2'li klemensP1
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 ve kullanım

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.
Program

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

Şekil-12:JHD12864 üzerindeki görünümü. Ekran özelliğinden kaynaklanan negatif görünüm.
Şekil-13:JHD12864'ün Atmega8 ile yapılmış bağlantısı. Kart üzerinde LED arkaplan aydınlatma için iki bağlantı yapılmıştır. Bu işlemci kartı üzerinde görülebilmektedir.

Bu devrenin yapım sorumluluğu size aittir. Devre yapıldı ve çalışıyor. K.A....

Hiç yorum yok:

Translate

Sayfalar

Etiketler

İzleyiciler