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.

9 Mayıs 2011 Pazartesi

Atmega32 ile Grafik LCD'nin Karakter LCD olarak kullanımı (Seri port üzerinden)


Karakter LCD kullananlar bilirler, özellikle (ı,İ,ş,Ş,ç,Ç,ö,Ö,ü,Ü,ğ,Ğ gibi) Türkçe karakter kullanımı işi içine girdiği zaman son derece sınırlayıcı yapıları özellikle de karakter ROM'larında bu karakterlerin bulunmaması ekran üzerinde özellikle mesaj gösterileceği zaman son derece zorluklar çıkarmakta ve anlam kaymaları açısından mesajın içeriğinin anlaşılmasında bazen sorunlara yol açabilmektedir. Hatta bazı karakterlerin estetikten yoksun bir biçimde gösterilmesi ise işin cabası. Çözümü en azından Türkçe karakter bulunan bir LCD kullanmak! Tabii bulunabilirse. Ya da bir grafik LCD'yi bu amaç doğrultusunda kullanmak!!

Bu projede Atmega32 ile bir grafik LCD'nin karakter olarak seri port üzerinden kullanımını için çalışılacaktır.
Karakter LCD


Şekil-1 :Karakter LCD üzerindeki karakterin görünümü (tek karakter için).


Şekil-2 :Karakter LCD üzerinde gösterilen karakterler.

Karakter LCD'ler aslında kendi karakter ROM'ları olan ve veri olarak sadece bu karakterlerin adresi ile ekran üzerinde gösterebilen grafik LCD denebilir. Çoğunlukla sınırlı miktarda ekran üzerinde ek karakter gösterimi için RAM birimi vardır.

Yaygın olarak İngilizce karakterleri göstermek üzere düzenlenmiş karakter LCD'ler çoğunlukla karakteri 7x5 matris alanı oluşturacak şekilde (veya 8x5) gösterebilirler. Bu nedenle bazı karakterleri 7x5 alana sığdırabilmek için karakter üzerinde düzenlemelere gidilir. (g ve y gibi karekterin yukarı kaydırılması gibi).

Önemli bir konuda Türkçede yer alan bazı karakterlerin İngilizcede yer almamasıdır. Bu sorun bir noktaya kadar karakter RAM bölümü ile çözülsede, program hazırlama açısından, özellikle sınırlı işlemci kapasitesinin bir bölümünün bu işlemler için ayrılmasına neden olur.

Bazı dillerin destekleri bulunan karakter LCD ekranlar satılsalarda, hem nadir bulunurlar hem de fiyat açısından bir pahalıdırlar.
Karakterin Oluşturulması


Şekil-3 :Grafik LCD için oluşturulmuş birkaç karakterin görünümü.

Grafik LCD için işlemcinin RAM bölgesinde tüm ekran görüntüsü oluşturulup, veya bilgisayardan tüm ekran görüntüsü alınıp ekrana yansıtılabilir. Baya ek iş olduğu açık. Hele ki sınırlı kaynakları olan işlemciler için. Bilgisayar veya başka bir işlemciden tüm ekran verisinin 1Kbayt civarında olacak biçimde aktarımının alacağı zamanı düşünmek gerekir.

En iyi çözüm işlemciye doğrudan karakter olarak alınması ve gelen karaktere uygun olarak grafik LCD ekranına görüntüyü göndermektir. Burada görüntünün oluşturulmasında fazla karşık hale getirmemek için 16x6 matris alanında karakter oluşturulacak şekilde planlandı. Ayrıcı 10 ve 11. karakterlerin arasının ekranın sol ve sağ arasındaki ayrıma denk gelmesi dikkate alındı.

Not: Özellikle karakter görüntüsünün doğrudan ekranda oluşturulması hem hız açısından daha hızlı olmasını sağlar hem de küçük RAM kapasitesi olan işlemciler için kullanılabilir uygulama olmasına olanak tanımaktadır. (Bu uygulamanın Atmega32 üzerinde yapılmış olmasına rağmen)

Bilgisayardan gelen ilk veri satır kodunu oluşturuyor. Sonraki 20 karakter bilgisi ve sonrada satır sonu kodudur. Bu bilgi iletişimi tamalandıktan sonra bilgisayardan sırayla ikinci, üçüncü, dördüncü satırlarla ilgili bilgiler birinci satır bilgisi ile aynı biçimde sırayla işlemciye gelir.

Bu dört satır bilgileri işlemci tarafından alınmasından sonra işlemci bu bilgileri programında yer alan karakter ROM'unu kullanarak ekran üzerinde görüntüyü oluşturacak şekilde işler ve görüntüyü ekrana yükler. Ekrana görüntünün yüklenmesinden sonra işlemci gelecek sonraki karakter verisi için satır tamponlarını hazırlar

Şekil-4 :Grafik LCD için oluşturulmuş karakterlerin ekran üzerinde gösterimi. Karakterlerin oluşturulmasında karakter LCD görüntülerinden yararlanılmıştır.

Bir karakter (satırı) oluşturmak için iki ekran satırı kullanılmaktadır. Yani karakterler kenar boşlukları dahil 16x6'dir. Karakterin kendisi için için 16x5'dir. Aslında 16'lık sütun tamamı kullanılmıyor. Ama karakterlerde bir standart oluşturmak için bu şekilde tanımlandı.

Burada dikkate alınması gereken konu bu işlemlerin sürme hızıdır. Yani karakter verileri ekrana gönderirken işlemciye karakter verisi gönderirseniz büyük olasılıkla sorun çıkacaktır. Çünkü bölüm ile ilgili hata kontrolu yapılmamıştır. (Belki veri kaybı yaşayabilirsiniz.)

Projeye karakter satırlarını kendi başlarına negatif gösterebilme seçeneği eklenmiştir. (karakter satırı olarak) Bu işlem karakterler işlemciye gönderilirken kullanılan satır kodu ile yapılmaktadır. Dolayısı ile bilgisayar programındaki satırla ilintili negatif kutucuğunu işaretlemek bu işlem için yeterlidir.
Devre

Bu projede kullanılan ekran "PGM12864A-NSW" grafik LCD'dir.

Proje basitçe üç ana bölüme ayrılabilir: Bilgisayar ve işlemci arasındaki iletişimi sağlayan RS232 arayüzü (seviye çevirici), işlemci ve Grafik LCD.

RS232 arayüzü işlemci UART bağlantısının bilgisayarın RS232 portuna bağlantısını sağlayan seviye çeviricidir. İşlemci devresi Atmega32 işlemcisi, projenin beslemesi ve LCD ekranın parlaklık ayarı ve bağlantısını oluşturur. Grafik LCD işlemin sonucunu kullanıcıya sunulmasını sağlayan arayüzdür.

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


Şekil-6 :İşlemci kartı ile bilgisayar arasındaki seviye çevirici RS232 devresi


Şekil-7 :"PGM12864A-NSW" grafik LCD


Şekil-8 :İşlemci kartı ile RS232 kartı arasındaki bağlantıyı sağlayan kablo


Şekil-9 :İşlemci kartı ile Grafik LCD'nin bağlantı durumu

Şema

Sistemin kalbini IC1 ile ATMEGA32 oluşturuyor. 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.

IC3 (MAX232) C10,C11,C12 ve C13 (10µF) ile birlikte bilgisayar ile işlemci arasındaki RS232 seviye çevirci olarak çalışmaktadır.R4 (1k) ve LED2 devre için çalışma monitörü olarak çalışır.P7 DP9 bilgisayar için RS232 bağlantı konnektörüdür. İşlemci kartı ile RS232 kartı arasındaki bağlantı için kullanılar P2 ve P6 şemada gösterilmemiştir.

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

Şekil-10:Blok şeması


Şekil-11: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-12:Grafik LCD sürücü kartı ve RS232 kartı yollar


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


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

Devre Elemanları

1KR1,R4
27RR2
10K yatık trimpotR3
27pFC6,C7
100nFC1,C2,C4,C5,C8,C9
10µF/25VC3,C10,C11,C12,C13,C14
3mm yeşil LEDLED1,LED2
ATMEGA32 (DIL)IC1
7805IC2
MAX232IC3
2W10M veya benzeriD1
3,6864 Mhz kristalXT1
2x3Header (ISP6)isp
2x5Header P2, P6
2'li klemensP1
16 bacaklı entegre soketi (DIL)-
40 bacaklı entegre soketi (DIL)-
PGM12864-

Besleme için 9V'luk adaptör, RS232 kartı ile işlemci kartı arasına (P2 ve P6)2x5 bağlantı uçu ile birlikte 10 yollu yassı kablo kablo ve konnektörü ve ayrıca grafik LCD ekran ile işlemci kartı arasındaki kablolar unutulmamalıdır.

(İişlemci kartı ile RS232 kartı birleştirilirse, kart üzerindeki yollarla birleştirileceğinden P2 ve P6 ile birlikte bu konnektörler arasındaki bağlantıda gereksiz kalı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. Zaten geriye bilgisayarda veri göndermeye kalıyor.

Şekil-15:Grafik ekran üzerinde ilk çıkacak görüntü.( Bu görüntü işlemcide grafik bilgisi olarak saklanmaktadır)


Şekil-16:Bilgisayardan gelen bilgilerle oluşturulmuş grafik LCD ekranı

Bilgisayar Programı

Bilgisayar programı Delphi7'de yazıldı. (LCDEkran.exe). Normalde programın bulunduğu klasör içinde birde ini dosyası eşlik eder. Ayarları bu ini dosyasına kaydedilir. Bilgisayar programı olarak daha önce RS232 ve RS485 iletişim yöntemi ile karakter LCD üzerine bilgi gönderen program üzerinde bazı değişiklikler ve güncellemeler yapılarak tekrar derlenmiştir. Programın sadece "Girdi" penceresi ve "Seçenekler" penceresi incelenecektir. İsteyen diğer bölümleri kendisi inceleyebilir.

GİRDİ PENCERESİ

Şekil-17:Girdi penceresi.

Girdi penceresi üzerinde rakamlarla ilişkilendirilen alanları incelersek;
  1. 1. satır metin giriş alanı (maksimum 20 karakter)
  2. 1. satır metir girdi alanı seçenekleri
  3. Ekran üzerindeki 1. satır negatif-pozitif seçimi (işaretli= negatif)
  4. Ekran üzerindeki 1. satır metin ortalama veya sola dayalı olma seçeneği (işaretli=ortalı)
  5. 2. satır metin giriş alanı (maksimum 20 karakter)
  6. 2. satır metir girdi alanı seçenekleri
  7. Ekran üzerindeki 2. satır negatif-pozitif seçimi (işaretli= negatif)
  8. Ekran üzerindeki 2. satır metin ortalama veya sola dayalı olma seçeneği (işaretli=ortalı)
  9. 3. satır metin giriş alanı (maksimum 20 karakter)
  10. 3. satır metir girdi alanı seçenekleri
  11. Ekran üzerindeki 3. satır negatif-pozitif seçimi (işaretli= negatif)
  12. Ekran üzerindeki 3. satır metin ortalama veya sola dayalı olma seçeneği işaretli=ortalı)
  13. 4. satır metin giriş alanı (maksimum 20 karakter)
  14. 4. satır metin girdi alanı seçenekleri
  15. Ekran üzerindeki 4. satır negatif-pozitif seçimi (işaretli= negatif)
  16. Ekran üzerindeki 4. satır metin ortalı veya sola dayalı olma seçeneği işaretli=ortalı)
  17. Her tıklamada sadece bir kez ekranda yer alan ayarlar doğrultusunda verileri grafik LCD ekrana gönderir
  18. Ekranda yer alan ayarlar doğrultusunda verileri belirli aralıklarla grafik LCD ekrana gönderir
  19. Grafik LCD ekranını siler
  20. "Seçenekler" penceresini açar.

SEÇENEKLER PENCERESİ

Şekil-17:Seçenekler penceresi.

Seçenekler penceresi üzerinde rakamlarla ilişkilendirilen alanları incelersek;
  1. Grafik LCD'nin bağlandığı bilgisayarın RS232 portu.
  2. Girdi penceresi seçme radio butonu.
  3. Yapılan ayarların onaylandığı, kaydedildiği ve (şu anda anlatılan) Girdi penceresine geçiş butonu.

Karakter Programı

Bu bölümde anlatılan program yapılan karakterleri beğenmeyipte, ben kendi karakterlerimi yapacağım diyen kişiler içindir. Program Delphi 7'de yazıldı. İsteyen aynı işleri kareli kağıt ve kalem ile de yapabilir. Program "karakterGLCD.exe" adı ile kayıtlıdır.

Program penceresi üzerindeki öğeler kısaca:

Şekil-18:Karakter verisi oluşturmak için kullanılan bilgisayar programı.Örnekte çizilmiş küçük j ve oluşturulmuş kodu.

  1. Karakterin oluşturulacağı 16x5 matris alanı (kenar boşluğu otomatik verilere eklenir)
  2. Büyük harflerin üzerindeki nokta ve işaretler için alan.
  3. Küçük harfin üzerindeki büyük harf alanı.
  4. Küçük harf alanı (tabii ki büyük harf alanı)
  5. Harflerin aşağı taşan kuyuruk ve ek işaret alanı.
  6. Karakter matris alanını siler (tamamen beyaz yapar)
  7. Karakter matris alanındaki şekle göre 9 nolu alanda kodu oluşturur ve kaydeder. Kaydetmek için bir diyalog penceresi açar ve oluşturulmuş veri .asm uzantısı ile kaydedilir.
  8. Program içinde karaktere verilen etiketin girilebildiği alan. Örneğin "A" azarsanız karakter veri etiketine "kar_A_1" ve "kar_A_2" etiketleri oluşturulur.
  9. Karakter verisinden oluşturulan kodun görüntülendiği alan.

Oluşturulan karakter kodu işlemcinin programı içindeki ilgili alanlara eklenerek istenilen karakter bilgisayar üzerinden gönderildiğinde kullanılabilir hale gelir.



Ekler:

ATMEGA32 hakkında bilgi için

"Atmega32 ile Grafik LCD'nin Karakter LCD olarak kullanımı (Seri port üzerinden)" için dosyalar-birleşik

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

Hiç yorum yok:

Translate

Sayfalar

Etiketler

İzleyiciler