Visual C ile paralel port kontrolü
Date: Thursday, November 03 @ 04:09:32 EST
Topic: Tasarımcılarımız


Yazan: Technoshaman



Visual C++ MFC kullanılarak nasıl bir program yazılır onu burda anlatamayacağım. Askerdeyken “Sam’s Teach Yourself VC++ in 21Days” kitabından bana yetecek kadar öğrendim ben de, PDF’si her yerde var :) En basit olarak Pin2 ’yi ilk basışta açacak bir dahaki basıştada kapatacak butonun fonksiyonunu anlatayım (devrede Pin 1 strobe olduğu için kullanılmıyor). Mantığı anladıktan sonra her dilde uygulayabilirsiniz. Fonksiyonda önemli olan ilk iki satırdır, gerisi bilgilerin pencerede gösterimi vs. içindir.

……………………
int Pin;
unsigned short Port;
.
.
……………………
Pin=0;
Port=888;
.
.
…………………….
void CParallelPortControlDlg::OnButton1()
{
Pin = Pin ^ 1;
Out32(Port,Pin);
.
.
.
}
……………………..



İlk başta Pin değerini (LPT1’e gidecek olan değer) 0 yapıyoruz (program açılışında port reset için). Ve 888 değerini Port değişkenine atıyoruz (LPT1’in adresi). Pin= Pin ^ 1; komutuyla Pin değişkeninin o anki değerini 1 ile XOR’luyoruz (program akışı sırasında Pin değeri 0 olmayabilir) ve Out32(Port,Pin); komutuyla 888 adresine gönderiyoruz. Bu sayede eğer 2 numaralı pin (2,3,4,5,6,7,8,9 numaralı pinler için 1,2,4,8,16,32,64,128 değerleri) açıksa kapanıyor, kapalıysa açılıyor. Açıklamak gerekirse; 8 bitlik Pin’in (LPT1’de 8 tane çıkış pinimiz var) binary değeri 00010001 olsun (onluk olarak 1+16=17). Yani 2 ve 6 numaralı pinler açık durumda. Biz de bu komutla 00010001 XOR 00000001 yaparak 00010000 sonucunu elde ediyoruz. XOR yapılmış iki değer de 1 ise sonuç sıfır olur, değerler 1,0 veya 0,0 ise sonuç değişmez. Exe dosyası Debug klasöründedir.

VC++’da kendiniz bir program yazacaksanız, resimdeki gösterilen gerekli satırları ve inpout32.lib dosyasını projenize eklemeniz (lib dosyası da proje klasöründe olmalıdır) gerekmektedir. Link ayarlarında lib ismini girip OK’e bastığınız zaman, lib dosyası project options’a eklenecektir. Programın çalışması için (XP’de paralel porta direk erişim sağlayabilmek için) inpout32.dll dosyası da gereklidir.

Örnek devreye gelince. Sadece portun durumunu göstermek için LED’ler kullandım. Ama istenirse 2N2222 gibi bir NPN transistörle (E ve C arasında koruma için 1N4001 kullanılarak) veya TIP120 gibi kendinden koruma diyotlu bir darlington transistörle sürülen (kendisinden akım sink edilen) bir röle sayesinde daha büyük yükler kontrol edilebilir. Ek şemada bunlar görülmektedir. Proje dosyaları aşağıdadır. Daha detaylı bilgi için yazıya yorum yazabilirsiniz :)




TÜM DOSYALARI İNDİR





This article comes from Robotik & Elektronik
http://www.endtas.com/robot

The URL for this story is:
http://www.endtas.com/robot/modules.php?name=News&file=article&sid=160