Bu ay PIC 16F84 uygulamalarında, Alfanumerik LCD Modülleri pic
yardımıyla kontrol etmeye çalışacağız. LCD göstergeler ortaya çıktıkları
1970’li yılların başından beri popularitelerini hiç yitirmemiş ve neredeyse
her cihazda boy göstererek kendini kanıtlamışlardır. Bu popularite
iki
önemli nedenden dolayı hiç azalmamıştır, bunlardan ilki düşük akım
gereksinimi, diğeri ise kaplanan hacmin kalınlık bazında çok az olmasıdır.
LED göstergelerin pabucunu dama bu özellikler atmaktadır.
Fakat LCD’lerin önemli dezavantajları LED’lere gore daha zor sürme
prensipleri ve parlak ışık altında silik görünmeleridir.
LCD göstergeleri sürmek için BACKPLANE denilen ortak arka yüze
ve her bir segmente birbiriyle 180 derece faz farkı olan
150 – 500 Hz
değerinde kare dalga bir sinyal tatbik etmek gerekmektedir.
Aydınlanması istenen segmente bu sinyal uygulanır . Bu sayede
LCD sıvısı polarize olarak titreşir, buda göze görünür hale gelmesi
demektir. Göze görünmemesi istenen segment ise sinyal uygulanmadığı
için polarize olmaz ve görünmez. Tüm LCD,ler kare dalga sinyale ve
özel sürücü entegrelere ihtiyaç duyarlar. Amatörce LCD 7 segment
göstergelerle oynamak isterseniz CMOS ailesinden 4543 LCD sürücü
entegresini tavsiye ederim; ama siz LCD’lerin iç dünyası beni
ilgilendirmiyor, ben onlara yolladığım bilgileri görmek istiyorum
diyorsanız şimdi anlatacağım LCM(Liquid Crystal Modul- Sıvı Kristal
Modül) ’ler tam size göre…
LCM’ler akıllı göstergeler olarakta anılırlar. İnce bir baskılı devre
üzerine
SMD(Surface Mount Device) tekniği ile monte edilmiş bir sürücü entegre
bloğu, alfanümerik LCD gösterge, ve yapıyı sağlamlaştırmak için metal
bir çerçeve LCM Modülleri oluştururlar. LCM’ler genellikle mikroişlemciler
için tasarlanmış bir giriş/çıkış bus’ı içerirler. Bu bus yardımıyla
LCM
üzerinde her türlü bilgiyi göstermek mümkündür.
LCM göstergeler 1x8 , 1x16, 2x16, 4x20, 1x40, 2x40 satır/karakter
olarak üretilmektedir. Bu modüllerin çoğunda üreticiler Hitachi
firmasının
HD44780U entegresini LCM sürücü entegresi olarak kullanmaktadırlar,
bu da bir noktaya kadar bu tip mödüllere bir standart getirmektedir.
HD 44780U bus’ı D0, D1, D2, D3, D4, D5, D6, D7 den oluşan 8 bit
bir
Databus, RS komut-data seçim bacağı, E –Enable ,R/W komut
okuma/yazma bacağından oluşur. Vo ucu kontrast ayarı için 10 k trimpota
bağlanır.
Besleme voltajı +5V’dur. Data bus 8 bit veya 4 bit olarak kullanılabilir.
4 bit olarak kullanıldığında D0---D3 toprağa bağlanır. D4---D7
mikroişlemci data bus’ına bağlanır.
LCM ‘ler PIC ile kontrol etmek için ideal göstergelerdir, bunun en büyük
nedeni az sayıda çıkış bacağı gereksinimidir. Bir LCM’i pic16f84’e
bağlamak için D4,D5,D6,D7,RS,E olmak üzere 6 bacak yeterli olmaktadır.
Şemada görüldüğü gibi bir pic yardımıyla LCM modüle PC’den seri port
yardımıyla data aktarılması donanım açısından oldukça basittir.
Şemayı daha net görmek için üzerine
sağ tuşla tıklayıp çıkan menüden (View Image) faydalanın.
Şimdi bu ayki uygulamamızı inceleyelim. Amacımız PC yardımıyla
HD44780 sürücü entegresini kullanan herhangi bir LCM alfanumerik
göstergeyi kontrol edip bilgi yollamak… Devreyi gerçekleştirken herhangi
bir zorlukla karşılaşacağınızı sanmıyorum. Tüm sistemin kalbi PIC 16f84.
LCM Modül olarak herhangi bir 44780’li modülü kullanabilirsiniz.
Ben genellikle BİMEL (http://www.bimel.com.tr)
firmasından temin ettiğim
Sharp veya Picvue marka modülleri kullanıyorum.Hatırlarsanız L/C Metre
yazısında da sharp’ın 16155 kodlu LCM Modülünü kullanmıştık.
Denemeler için ideal LCM, SHARP 16255’dir. Bu modül 2 satır,
16 karakterdir. Devre üzerinde bacakların LCD modülde ne olduğunu
yazdım fakat her LCM üzerinde bacak numaraları biraz farklılık
göstereceği için numaralarını vermedim. Burada 16255 için
numaralandırmayı vermek istiyorum ama siz başka bir modül
kullanacaksanız HD44780 bus bacak nolarını modülünüzün data
sheet’inden çıkartabilirsiniz.
SHARP LCM 16255 için BUS Bacak Numaraları :
Bacak no: İşlevi:
1
Vss
2
Vdd
3
Vo
4
RS
5
R/W
6
E
7
D0
8
D1
9
D2
10
D3
11
D4
12
D5
13
D6
14
D7
PIC 16f84’ü pic_term.hex dosyası ile programlayabilirsiniz. Programlama
için eski sayıdaki programlayıcıyı kullanabilirsiniz.
Pic’I PC Com portuna bağlamak için TXD ve Ground uçlarını kullanın.
Sisteme bilgi yollamak için gene bir terminal emülasyon programından
faydalanacağız. Bu win95 accessories içindeki Hyperterm olabilir veya
sizin uygun göreceğiniz herhangi biri… Basic, Pascal, Visual basic
gibi
yüksek seviyeli bir programlama dili ile de LCM’le haberleşebilirsiniz.
Devreyi hatasız yapıp voltaj vermeden önce bazı ayrıntılara dikkatinizi
çekmek istiyorum:
- PC RS232 (COM) portuna bağlantı konektörünü takarken PC yada
PICden en az birinin enerji almaması gerekir aksi halde RS232 portunun
arızalanması işten bile değildir.
- DB9 konnektör kullanırsanız COM1, DB25 konnektörünü kullanırsanız
COM2 portunu işgal etmeniz gerekir. PIC için hangi COM portun
kullanıldığının önemi yoktur, bu terminal programının sorunudur.
- RS232 (COM) portun bacaklarının kesinlikle kısa devre olmasına izin
vermeyin ,aksi takdirde port arızalanır.
Şimdi terminal programının SETUP’ına göz atalım:
- COM1 veya COM2 yi seçin. (Hangisini kullandıysanız)
- 1200 baud ,8Bit,No parity,1 Stop bit seçeneklerini ayarlayın.
- Terminal emülasyon tipini TTY olarak seçin.
- Sistem Half duplex çalışacağından half duplex yada full duplex olması
farketmez.
Önce Terminal programını çalıştırın daha sonra devreye +5Volt verin.
Sisteme enerji verdiğinizde eğer herşey düzgünse LCM Ekranında
5 saniye süreyle:
** ANTRAK **
PIC-PC Terminal
Yazısı görülür. Daha sonra bu yazı yerini çizgi kursöre bırakır.
Bu PIC’in
LCM ile haberleşebildiğini ve sizin devreyi kusursuz yapıp pic’i de
programlamayı başardığınızın kanıtıdır…
Şimdi Terminal emülasyon programı yardımıyla klavyeden girdiğiniz
herşey LCM ekranında görülür.
LCM modüller yukarıdada belirttiğim gibi komut ve data işlevlerini yerine
getirirler. Bizim yolladığımız her karakteri LCM ekranında görmemiz
LCM’in DATA modunda çalıştığını işaret eder. Eğer yazmaya devam
edersek satır sonunda karakterler görünmemeye başlar ve ekranda ilk
yazdıklarımız donuklaşır. Bunun nedeni HD44780’nin RAM hafıza
organizasyonudur. İlk satır 40 karakter ,ikinci satırda 40 karakter
alır.
Eğer LCM 16 karakterse 17. Karakteri göremeyiz ama bu karakter
17. Hafıza odacığına kaydolmuştur.Eğer satırı bir karakter sola
oynatabilsek onu görmemiz münkün olabilir. Bunu ve diğer pek çok
atraksiyonu (kursor aç-kapa, satırı sil v.b.) yapmamızı komut modu
sağlar.
Yazdığım bu pic programında komut modu ayarlarını pic’e yükledim. Bizim
yaptıracağımız komut işlemini klavyeden pic’e iletmemiz yeterlidir.
Bunu da CTRL yardımıyla yaparız.
Özetle LCM’in bir karakteri göstermesini istersek klavyedeki ilgili
karakter tuşuna basmamız yeterli, eğer LCM’e bir komut vermek
istersek önce CTRL tuşu basılı iken daha sonrada komutla ilgili
karakter tuşuna basmamız yeterlidir.
Komutlar ve işlevlerini aşağıdaki tabloda bulabilirsiniz.
^C - 3: LCM’I sil kürsörü ilk karaktere al.
Backspace - 8: kürsörü bir karakter geri al (Backspace = geri
alma tuşu)
^Z - 26: Kürsörü başa al.
^A - 1 : Kürsörü sola bir karakter kaydır
space – 32 : Kürsörü sağa bir karakter kaydır.(space boşluk tuşu)
^D - 4: Satırı komple sola 1 karakter kaydır
^E - 5: Satırı komple sağa bir karakter kaydır.
^G - 7: Kürsörü _ şeklinde göster.
^K - 11: Kürsörü kapat
^L - 12: Kürsörü yak-söndür şeklinde göster
^N - 14: Göstergeyi kapat
^O - 15: Göstergeyi aç.
^Q - 17: Karakter girişinde kürsörü sola kaydır.
^R - 18: Karakter girişinde kürsörü sağa kaydır.
^V - 22: Karakter girişinde satırı sola kaydır.
^W - 23: Karakter girişinde satırı sağa kaydır.
^X - 24: Kaydırmaları durdur.
^Y - 25: Kürsörü 1.satırın başına al.
Enter - 13: Kürsörü ikinci satırın başına al.
^ işareti CTRL tuşunu ifade etmektedir. ^Q , CTRL – Q ile aynı anlamdadır.
Yani önce CTRL basılı olacak daha sonra Q tuşuna basılacak. 26,1,13
gibi
rakamlar komutların karşılıkları olup yüksek seviyeli dillerle deney
yapacakların bu rakamları yollamaları pic’in komutu algılaması için
yeterlidir. Yüksek seviyeli dillerle deney yapacaklara ufak bir uyarı:
Yolladığınız her karakter arasında en az 5-10 milisaniyelik bir gecikme
vermeniz cok yararlı olur çünkü pic üzerinde herhangi bir
KARAKTER_BUFFER olmadığı için aldığı her karakteri LCM’e anında
göndermek zorundadır eğer hiç durmadan karakterleri yollamaya devam
ederseniz karakterlerin bir iki karakter alındıktan sonra anlamsızlaştığına
şahit olursunuz. Kısaca Pic’e ve LCM’e yollanan her karakterden sonra
kısa bir nefes hakkı tanımak yararlıdır. Klavyeden karakter yollarken
böyle
bir problem oluşmaz zira normal bir insan 80-100 milisaniyeden daha
hızlı tuşlayamadığı için pic yarışı daima kazanır.
Arkadaşım TA2CEE Ertuğrul ATACAN bu sistemi test etmek için küçük
ama çok yararlı bir program yazdı . Kendisine bu sebeple buradan
teşekkür ediyorum. Ertuğrul’ un programı tüm komutları kullanarak
display üzerinde bir karakter balesi sergilemektedir. Bu programın
ismi test.exe ve pic_term.hex ile birlikte PIC_TERM.ZIP
içinde
bulabilirsiniz. Test.exe Com port olarak COM1 kullanmaktadır.
Bu aylık da benden bu kadar, gelecek ay yeni bir PIC16F84 uygulamasında
buluşmak dileğiyle…
|