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.

30 Nisan 2011 Cumartesi

Atmega16 ve LM35 ile Grafik LCD Ekranlı Termometre


İnternet üzerinde çok çeşitli termometre şemaları bulmak mümkündür. Ama ya karakter LCD ekranlı yada yedi parçalı LED ekranlıdırlar. Yani ekranlar gösterme şekli açısından aletlerin fiziksel yapılarının sınırları içindedir. Yeni karakter LCD ekranın ROM'unda kayıtlı karakterlerin büyüklüğü veya kullanılan yedi parçalı LED ekranların gösterim şekli ve yapıları ile rakamları gösterebilirler. Peki neden daha esnek bir gösterim olamasın?

Bu projede Atmega16 ve LM35 ile Grafik ekranlı termometre oluşturmaya çalışılacaktır.
Grafik LCD ve Görüntüleme

Bu projede kullanılan ekran 128x64 nokta gösterim alanına sahip PGM12864'tür. "Atmega32 ile Grafik LCD'nin Sürülmesi" projesinde bu ekran ve sürülmesi konusunda gerekli bilgiler sunulmuştu. Hatta bu projede kullanılan sistem işlemci hariç aynıdır.

Şekil-1 :Termometre için kullanılan arkaplan resmi.

Grafik ekran üzerinde ölçülen bir değerin (örneğin) gösterilebilmesi için ekran üzerinde gösterilecek tüm değerlerin tanımlanmış olması gerekir. Yani başka bir deyişle bir karakter ROM'un oluşturulması gerekir. Şöyleki sıcaklık ölçümü sonucu sayısal (rakam ile) görüntülenecekse en azından 0..9 arasındaki rakamların ve derece ile birlikte "C" işaretlerinin en azından resim verisi olarak işlemcinin program belleğine programlanması gerekir.

Şekil-2 :Ölçülen sıcaklık sonucunun gösteriminde kullanılan rakamlar.

Yoksa tüm ekran olarak saklanıp her bir ölçüm karşılığında ekrana tek tek çağırmak pek uygun olmayabilir. Örneğin LM 35 ile ölçüm yapıldığını ve her bir sonucun tek tek çağrılması için 125 tane ekran oluşturulması gerekir ve (sadece tam dereceler için olduğunu varsayarak) sadece bu veri yaklaşık olarak 125Kbayt tutar ki birçok işlemci için oldukça büyük bir değerdir.

Diğer bir yöntem olarak görüntü işlemcinin veri belleğinde oluşturulması (RAM) ve sonra Grafik LCD ekrana aktarılmasıdır. Buradaki sorun ise Atmega16 işlemcisinde sadece 1Kbayt RAM var. Sadece bu işe ayrılsa bile Yığın işlemleri için yer kalmayacaktır. (Yığın işlemleri bu tip işlemcide RAM'in belli bölgesinde tutulmaktadır).

Geriye basit bir şekilde verinin ekrana doğrudan gönderilmesi kalıyor. Basitçe ekrandaki sabit yazılar ve şekilleri bütün olarak ekrana yüzleniyor, sonra sadece gerekli olan bölümler gerektikçe yüklenir. Burada sıcaklık ölçümü sonucu ekrana yazıldığı ve LM35'in 125 derece ölçtüğü ve de sadece tam sayı olarak gösterildiğini kabul edersek ekranda değişen sadece 3 hanenin kapladığı alandır.Basitçe ölçüm sonucunu al bunu onluk sisteme çevir ve sonucu 3 hane üzerine yerleştir.

Şekil-3 :Hanelerin yerleşiminde kullanılan sola göre nokta olarak uzaklıkları. Zaten üstten hizalıdır.Tüm karakterler hanelerde kırmızı çizgiye dayalı olarak görüntülenir.


Buradaki önemli konulardan biri karakter genişlikleridir. Yani bilgisayar üzerinde metin işleri (yazı) uğraşan kişiler bilir, bazı fontların her bir karakter genişliği karakterine göre değişiklik gösterebilir. Bu nedenle karakter genişliği birbirine yakın bir karakter seçilerek, bu sorundan kolaylıkla sıyrılmak mümkündür.
LM35

LM35 tek +5V ile beslenebilen ve ölçüm sonucunu analog olarak çıkış üzerinden verebilen bir üç bacaklı bir entegredir. Normalde ADC kullanılacağı zaman ki özellikle ADC için iç referans gerilimi kullanılacağı zaman, Aref ile GND arasına bir kondansatör bağlanarak referans gerillim için kullanalarak 2,5V ile kullanılır. (LM35 maksimum ölçüm aralığı 125C olduğuna ve 10mV/C dönüşüm hassasiyetine sahip olduğuna göre LM35 maksimum değerde 1,25V olacaktır). İşlemciye bağlamak gayet kolay, besleme için gereken uçları besleme hatlarına bağlanır, ve LM35'in çıkış ucu da işlemcinin ADC uçlarından birine bağlanır. Gerisi işlemci ve yüklenen yazılıma kalmış.

Şekil-4 :Sıcaklık algılayıcı olmadan termometre olamazdı. LM35.

Devre

Devre iki ana bölümden oluşuyor. İşlemci kartı LM35 üzerinden sıcaklığı ölçüyor, sonucu değerlendiriyor ve bağlantı kabloları üzerinden Grafik LCD ekrana kontrol ederek görekli görüntünün oluşturulması için gereken veri ve kontrol sinyallerini iletiyor. Ayrıca işlemci kartı üzerinden Grafik LCD için kontrast ayarıda vardır.

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

Şema

Sistemin kalbini IC1 ile ATMEGA16 oluşturuyor. Aslında kristale gerek olmasada kesin zamanlama ihtiyacını karşılamak için XT1(3.6864MHz) kristal ile C6 ve C7 (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.

ISP içinse işlemcinin programlama işlemi için kullanılmakla birlikte şu hali ile butonlar için bağlantı noktası işlevini yerine getirmektedir. IC3 (LM35) P4 konnektörünün 1. bacağı GND (LM35) ve 4. bacağına Vout (LM35) P4 ve P5 arasındaki bağlantı noktasına Vcc(LM35) bağlanır.(şekil 10 üzerinde LM35 bağlantıları görülebilir).

Belirtilmeyen geri kalan kondansatörler filtre amaçlıdır.

Şekil-6:Blok şeması


Şekil-7: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.

Şekil-8:Grafik LCD termometre kartı yollar


Şekil-9:Grafik LCD termometre kartı eleman yerleşimi


Şekil-10:Grafik LCD termometre kartı yolları birlikte eleman yerleşimi


Şekil-11:İşlemci kartı üzerindeki LM35 bacak bağlantıları

Devre Elemanları

1KR1
27RR2
10K yatık trimpotR3
27pFC6,C7
100nFC1,C2,C4,C5,C8
10µF/25VC3
3mm yeşil LEDLED1
ATMEGA16 (DIL)IC1
7805IC2
LM35IC3
2W10M veya benzeriD1
3,6864 Mhz kristalXT1
2x3Header (ISP6)isp
2'li klemensP1
40 bacaklı entegre soketi (DIL)-
PGM12864-

Besleme için 9V'luk adaptör, LM35 ile işlemci kartı arasındaki kablo ve LCD ekran ile işlemci kartı arasındaki kablolar unutulmamalıdır.
Ayar ve kullanım

Grafik LCD için kontrast ayarı haricinde (R3) bir ayar yok. Ekran görüntüsünü istenilen kalitede ayarla ve bırak. Geri kalan ölçüm ve görüntüleme bölümleri otomatik çalışır. İşlemci yaklaşım her 0.5 saniyede bir ölçüm yapar. Bu an LED1 üzerinde yanıp sönme olarak gözlenebilir. Ölçüm sonucu gerekli işlemlerden geçirilerek Grafik LCD üzerinde görüntülenir.

Şekil-12:Oda sıcaklığı.


Şekil-13:LM35 el ile tutularak elde edilen avuç içi sıcaklık.


Şekil-14:Buzdolabının derin dondurucu sıcaklığı. Aslında derin dondurucu daha soğuk ama LM35 bu bağlantı şekli ile en düşük sadece 0 dereceye kadar ölçüm yapabiliyor.


Şekil-15:LM35 pencere dışına konumlanarak ölçülen dış ortam sıcaklığı.




Ekler:

ATMEGA16 hakkında bilgi için

"Atmega16 ve LM35 ile Grafik LCD Ekranlı Termometre" için dosyalar-birleşik

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

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

18 Nisan 2011 Pazartesi

Atmega32 ile Grafik LCD'nin Sürülmesi


LCD modüller mikrokontroller devrelerinin iletişim arayüz olarak vazgeçilmez birimlerdir. LCD modüllerin en yaygın olanları karakter LCD olarak bilinen tipleridir. Ekran üzerinde yazıdan farklı olarak şekil ve resimler gösterilmek istendiğinde karakter LCD modüllerin yetersiz kaldığı görülmektedir. Bu gibi durumlarda LCD modüllerin diğer bir tipi olan grafik LCD modülerin kullanımı söz konusu olur.

Bu projede bir ATMEGA32 işlemci ile bir grafik LCD modülün sürülmesi üzerinde çalışılacaktır.
Grafik LCD


Şekil-1 :GDM12864-pozitif, yeşil arkaplan aydınlatmalı.


Şekil-2 :PGM12864-Negatif, beyaz arkaplan aydınlatmalı.

LCD modüllerin nasıl çalıştığı ve görüntüyü nasıl oluşturduğunu internet ve diğer kaynaklar üzerinde bulabilirsiniz.

Şekil-3 :Grafik LCD ekran üzerindeki noktalar (pikseller) açıkça görülmektedir.

Öncelikle bu projede kullanılan LCD paralel bağlantı kullanan bir model, yani 8 bitlik veri iletişimi aynı anda yapılmakta. Bu projede kullanılan LCD modül 128x64. LCD ekran kontrol çipi olarak S6B0108 veya eşdeğeri kullanılmış o nedenle bir çip ile ilgili çalışma düzeni anlatılacaktır. Bunun anlamı yatayda 128 nokta düşeyde 64 ile toplamda 8192 nokta (piksel) nokta var demektir. Eğer bu noktalar tek tek sürülme (her bite bir bayt) durumu olsaydı işlemcinin epey zorlanacağı kesin.

Şekil-4 :Grafik LCD ekran üzerindeki bölümler.

İşte bu noktada işlemcinin göndereceği veriler 8 bitlik olduğunu biliniyor. Bu 8 bitlik veri (her bit bir noktaya karşılık geliyor) aynı anda 8 noktayı sürebiliyor. Yani işlemcinin tam ekran bir resim için LCD ekrana göndereceği veri 1024 bayt oluyor.

Ekran üretilirken yatay 128 nokta sürme açısından kolaylık olsun diye 64 noktalık 2 bölüme ayrılmış. Bu da LCD ekran üzerindeki 2 bacağın seçilmesi ile kontrol ediliyor. Örneğin CS1=1 ve CS2=0 ise sol bölüm kontrol edilirken, CS1=0 ve CS2=1 olması durumunda veri ve kontrol bilgisi açısından sağ taraf kontrol ediliyor.

8 bitlik verinin 8 düşey piksele karşılık geldiği belirtilmişti. İşte bu 8 pikseller sayesinde ekran ayrıca düşeyde 8 gruba ayrılmış ve sayfa olarak tanımlanmış. Bu durumda bir sayfanın 64 bayt olduğunu söylemeye gerek yok. LCD modüldeki komut adresi üst taraftan başlamak kaydı ile 0xB8 komut kodu ile başlayıp aşağı doğru artar ama otomatik değil (X adresi). Bu sayfa komutları sağ ve sol bölümler için aynıdır. Yani 2 tane 0xB8 komut kodu olduğunu belirtelim. (CS1 ve CS2 ayrı ayrı seçimleri sayesinde).

Her sayfa üzerine gönderiler veriler için 64 baytlık veri için de bir RAM adresi var. Bu parametrede Y adresi olarak tanımlanırsa elbetteki bir başlangıç adresi var ve 0x40 adresinden başlıyor. (Her sayfada aynı adreste)Veri yüklendikçe bu parametre otomatik olarak artıyor.

Şekil-5 :Grafik LCD ekran üzerindeki bir sayfa bölümünün üzerindekiler.

Ekranın kontrast ayarı için bir giriş bacağı var (Vo). Ek bir negatif gerilim gerekiyor. İsteyen bu ek gerilimi kendisi üretebilir ve bu bacağa uygulayabilir. Aynı zamanda bu ek negatif gerilim şu anda anlatılmakta olan proje için ekran üzerinde üretilmekte. (Vee) Bu bacak ile toprak (GND) hattı arasına bir trimpot bağlanır ve trimpotun orta ucu da Vo bacağına bağlanır. Bu trimpot üzerinden ekranın kontrast ayarı yapılabilir.

Şekil-6 :Kontrast ayarı için gereken bağlantı. Trimpot bağlantıları açıkça görülmektedir.

LCD ekran modülü üzerideki bağlantılardan bir de RS olarak tanımlanan bacak (register seçme). Eğer bu bacak RS=0 ise LCD modül kendisine gönderilen verinin veya yerine getirmesi gereken işlevin Komut ile ilgili olduğunu karar veriyor. RS=1 olması durumunda yapılan işlemin Veri ile ilgili olduğu ortaya konmuş oluyor. (Bazı bu konu ile ilgili belgelerde bu bacak farklı bir isim ile tanımlanmış).

Her elektronik alet gibi LCD ekranında nasıl iletişim kurması gerektiğini belirten bir bacak var. Bu bacak RW olarak tanımlanmış (oku/yaz) RW=0 olması durumunda alet yazma konumunda oluyor. Yani LCD ekrana gönderilen komut veya verileri kabul ediyor (meşgul değilse). RW=1 olursa bu durumda LCD modülün durumu hakkında bilgi almak için LCD ekranı okuma moduna geçiyor.Bazı uygulamalarda RW bacağı sürekli "0" seviyesinde tutulup yapılan işlemler için işlemcinin beklemesi sağlanıyor. Ekran yenilemesi kritik olmayan uygulamalar için olabilir.

Ortak veri hatlarını paylaşan aletlerin olduğu sistemlerde herbir birimin ayrı ayrı seçilmesi için genellikle en az bir bacak olur. LCD içinde böyle bir bacak mevcut bu bacak da E (izin). Yazma modu için E inen kenarda (1-0 geçişi) işlem yerine getiriliyor. Okuma modu için ise E=1 iken okuma verisi hatlarda oluyor.

LCD modül üzerinde besleme ilk verildiğinde üzerindeki kontrol birimleri ne yapmaları gerektiğini anlamayabilirler. Bunun için harici olarak bir sıfırlama bacağı var. Bu bacak "0" seviyesinde iken LCD modül sıfırlanır ,ekran kapanır ve durum oku komutundan başka işlem yapmaz. Bu bacak "1" olduğun zaman sistem normal olarak çalışır.

Şekil-7 :Arkaplan aydınlatması için kullanılan ışık kaynağı.

Karanlık ve yarı karanlık ortamlar için arkaplan aydınlatması ortam için ek ışık kaynağı ihtiyacını ortadan kaldırır.
PGM12864A-NSW


Şekil-8 :PGM12864A-NSW üzerinde oluşturulmuş bir görüntü.

"XIAMEN PRECISE DISPLAY CO., LTD." tarafından üretilmiş olan bu ürün mavi arkaplan aydınlatması beyaz LED'ler ile yapılan negatif bir grafik ekran. Normalde bir bit ile temsil edilen bir nokta pozitif ekranlarda bit "1" olduğu zaman nokta karır. Ama bu üründe tam tersi olarak bit "1" olduğu zaman sönerek normalde mavi olan ekranın arkaplanı beyaz olarak görülmektedir.(Tabii ki aynı üreticini bu LCD modeli için farklı alt tipleride var.)

Şekil-9 :Grafik LCD bacak bağlantıları. (Bu resim GDM12864'e ait olmakla birlikte PGM12864 içinde geçerlidir, sadece PGM12864 üzerinde bu bacak isimleri yazmıyor). Kablo renkleri kullanıldığı işe göre sınıflandırılmıştır.

BacakSimgeİşlevi
1VssToprak
2VddBesleme
3V0LCD için besleme (kontrast)
4RSRegister seç(1:veri ,0:komut)
5RWOku/Yaz (1:oku ,0:yaz)
6Eİzin sinyali
7D0veri hattı
8D1veri hattı
9D2veri hattı
10D3veri hattı
11D4veri hattı
12D5veri hattı
13D6veri hattı
14D7veri hattı
15CS1IC1 seçme (sol taraf)
16CS2IC2 seçme (sağ taraf)
17RSTSıfırlama sinyali
18VeeNegatif gerilim çıkışı
19Aarkaplan aydınlatma
20Karkaplan aydınlatma

Bu bacak bağlantılarının (Vss,Vdd,V0,Vee,A,K) beslemeler haricindeki tüm bağlantılar işlemciye bağlı olup işlemci üzerinden kontrol edilmektedir. Bu şekilde işlemci üzerinde kayıtlı olan resim verileri ve ekran komutları grafik LCD ekran modülüne gönderilmektedir.

Şekil-10 :Grafik LCD üzerindeki komutlar

Devre

Devrede basitçe üç ana bölümü ayrılabilir. İşlemci kartı, grafik LCD ve buton. İşlemci kartı haricindekilerin fazla bir ayrıntısı yok.İşlemci kartı üzerinde besleme, ekran parlaklık ayarı ve işlemciyi süren ATMEGA32 var. Ekran ile işlemcinin bağlanması konnektör üzerinden yapılması planlansa da kartın yapılında bazı aceleye getirme sorunları nedeniyle kablo ile yapılması gerekti.(Zaten görüldüğü üzere konnektör bağlantı konumu kaymış durumda.

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


Şekil-12 :İşlemci kartından ekrandaki görüntüyü değiştirmek için kullanılan buton kartı. (Aslında sadece bir buton kullanılıyor)


Şekil-13 :İşlemci kartınını görüntüsü (ayrıca verilmiştir.)

Şema

Sistemin kalbini IC1 ile ATMEGA32 oluşturuyor. Aslında kristale gerek olmasada kesin zamanlama ihtiyacını karşılamak için XT1(3.6864MHz) kristal ile C6 ve C7 (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ılsada bu bölümde ihtiyaç olmadığından devre dışı bırakılmıştı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.

Burada BUT1,BUT2 ve BUT3 olarak belirtilen bas bırak butonlardan aslında sadece BUT1 butonu kullanılmakta ve bir kablo üzerinden ISP konnektörüne bağlanmaktadır. ISP içinse işlemcinin programlama işlemi için kullanılmakla birlikte şu hali ile butonlar için bağlantı noktası işlevini yerine getirmektedir.

Belirtilmeyen geri kalan kondansatörler filtre amaçlıdır.

Şekil-14:Blok şeması


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


Şekil-16:Butonların bağlantı şeması)

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.

Şekil-17:Grafik LCD sürücü kartı ve buton kartı yollar


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


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


Şekil-20:Buton kartı üzerindeki bacak bağlantıları

Devre Elemanları

1KR1
27RR2
10K yatık trimpotR3
27pFC6,C7
100nFC1,C2,C4,C5,C8
10µF/25VC3
3mm yeşil LEDLED1
ATMEGA32 (DIL)IC1
7805IC2
2W10M veya benzeriD1
3,6864 Mhz kristalXT1
2x3Header (ISP6)isp
2'li klemensP1
Bas bırak butonbut1, but2, but3
40 bacaklı entegre soketi (DIL)-
PGM12864-

Besleme için 9V'luk adaptör, buton kartı ile işlemci kartı arasındaki kablo ve konnektörü ve 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 olarak ekranı değistirmek için sadece BUT1 butonuna basılıp bırakılacak. Buton bırakldığı zaman ekran güncellenecek. Son görüntüye gelindiğinde başa dönülecektir.

Şekil-21:Grafik ekran üzerinde ilk çıkacak görüntü.

Hali hazırda LCD ekran için işlemci üzerinde 12 tane görüntü kaydedilmiş durumdadır. İstendiği takdirde bu program üzerinde değişiklik yapılarak artırılabilir. Şu anki programda 13Kbayt civarında program alanı kullanılmış durumdadır. Geri kalan 19Kbaytlık'lık bölümü boş olduğu anlaşılır. Her resim 1K civarında olduğuna göre daha 19 resim tane eklenebilir demektir. ("G_LCD.asm" programında gerekli değişiklik yapılırsa tabii. Program şu hali ile sadece 12 resim gösterebilecek kapasitededir.)

Şekil-22:Programında kayıtlı olan resimler.

Program

LCD ekrana gönderilecek verinin hex biçiminde veya rakamlara dönüştürülmesi gerekiyor. Bu işlem için kendimizde yapabiliriz, belki? Ama epey uğraştırıcı bir iş olacağı kesin. O nedenle BMP dosyalarını HEX biçimine dönüştüren Delphi 7 ile yazılmış "BMP_GLCD.exe" programı oluşturuldu. (Program XP işletim sisteminde test edildi.)

Program penceresi üzerindeki öğeler kısaca:

Şekil-23:"BMP_GLCD.exe" programı ve üzerindeki öğeler.

  1. Dönüştürülecek resmin görüntüsü
  2. (1 nolu alandaki) resmin negatifini oluşturan buton.
  3. Dönüştürülecek resmi seçmek ve yüklemek için buton. Yüklenen resim 1 nolu alanda gösterilir.
  4. 1 nolu alanda gösterilen resmi assembler programına eklenecek biçimde kodunu oluşturur ve 6 nolu alan üzerine yazan buton.
  5. 6 nolu alanda oluşturulmuş bir kodu "dosyaadı.asm" biçiminde kaydetmek için buton.
  6. 1 nolu alandaki resimden kod oluşturulduğu zaman kod burada oluşturulur ve görüntülenir. Daha sonra kaydet işleminde bu alandaki veri kullanılarak kaydedilir.

Bu programa yüklenecek görüntüler konusunda bazı sınırlamalar olduğunu belirtmekte fayda var. Yoksa istenilen sonuç elde edilemeyebilir. Öncelikle görüntü siyah ve beyaz olmalıdır, yani resim üzerinde gri tonlama ve renkli bölümler bulunmamalıdır(en iyisi bitmap biçiminde).Resim "negatif" butonu kullanılarak negatif işlemi uygulandığında görüntüde veri kaybı olmaması gerekir. Resim 128x64 piksel boyutlarında olmalıdır. Aksi takdirde resmin sadece sol üst köşesi eşlenerek kırpma meydana getirir. En önemlisi resim BMP uzantısı ile kaydedilmiş olmalıdır(Program sadece bu dosya biçimini destekliyor).

Şekil-24:Görüntüden oluşturulmuş hex kod.

"BMP_GLCD.exe" programı ile kod oluşturmak işin yarısıdır. Şimdi bu oluşturulmuş ve kaydedilmiş belge açılırsa "resim1:" etiketi ile karşılaşılır. Bu assemler programı tarafından kullanılacak bir etikettir. Bu oluşturulan kod hangi sırada kullanılacaksa önce bu etiketteki 1 silinir ve yerine o rakam yazılır. Bu belge kaydedilir ve kapatılır.

Grafik LCD için oluşturulan "G_LCD.asm" dosyası açılır ve en sonda yer alan .include "dosyaadı.asm" satırlara kaydedilmiş dosyanın adı yazılır. (Aynı resim etiketi taşıyan dosya olmadığına emin olunmalıdır; yani iki tane resim1 veya resim2 etiketli dosya eklendiğinde derleme işleminde sorun çıkabilir). Program derlenir ve sorun yoksa işlemciye "G_LCD.hex" dosyası yüklenir.

Şekil-25:Kabaca asm dosyalardaki resim etiketi.

Şekil-25 üzerindeki örnekte (.include "yunus.asm") kod satı "yunus.asm" dosyasını belirtir. "Yunus.asm" dosyası açıldığında kodların en üst satırında görülen "resim12:" etiketi işlemci üzerinden LCD'de gösterilecek 12. sıradaki resim olduğunu belirtir. Buraya başka bir dosya adı eklendiğinde ikinci bir "resim12:" etiketi taşıyamaz. Tabbi ki (.include "yunus.asm") kodu değiştirilmedikçe veya "yunus.asm" dosyasındaki "resim12:" etiketi değiştirilmedikçe.



Ekler:

ATMEGA32 hakkında bilgi için

"Atmega32 ile Grafik LCD'nin Sürülmesi" için dosyalar-birleşik

Bu kart programı ile denenmiş Grafik LCD ekranlar
GDM12864
PGM12864
JHD12864

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

Translate

Sayfalar

Etiketler

İzleyiciler