Ana Sayfa
Antrak Gazetesi
Eski Sayılar
Antrak Ana Sayfası
Yorumlariniz ve Sorularınız için mail adresimiz.


İnternette İlk 
Türk Amatör Telsiz Gazetesi

PIC 16F84 UYGULAMALARI - 5

 
Barbaros Aşuroğlu (TA2CBA)
TA2CBA Barbaros Aşuroğlu
E-Mail: ta2cba@www.antrak.org.tr
URL: http://www.antrak.org.tr/~ta2cba
 
 

 


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…