ELEKTRONIKPC
Would you like to react to this message? Create an account in a few clicks or log in to continue.

VISUAL BASIC 6.0 PARALEL PORT KONTROLU

Aşağa gitmek

VISUAL BASIC 6.0 PARALEL PORT KONTROLU Empty VISUAL BASIC 6.0 PARALEL PORT KONTROLU

Mesaj tarafından Admin Paz Kas. 09, 2008 2:50 pm

VISUAL BASIC 6.0 PARALEL PORT KONTROLU Datagi10
VISUAL BASIC 6.0 PARALEL PORT KONTROLU Port1f10
VISUAL BASIC 6.0 PARALEL PORT KONTROLU Port2l10
VISUAL BASIC 6.0 PARALEL PORT KONTROLU Portvr10

Paralel port bilgisayarinizin en kolay programlanabilir portudur. 25 pinden olusmaktadir. Bu pinler üzerinde DATA, STATUS, CONTROL adinda 3 tane port vardir. Bu pinlerden her hangi bir tanesinin "1" yani YÜKSEK olmasi durumu, o pinden okunacak voltajin +5 Volt olmasi anlamina gelir. "0" olmasi ise DÜSÜK durumunu yani 0 Volt olmasini gösteriyor. Buradan da neden ikilik sayi sistemini kullandigimizi bir daha anliyoruz.

Bilgisayariniz paralel portunuza ulasabilmeniz için bir porta adres atamistir. Bu adresi bulmak için Denetim Masasindan Sisteme, oradanda aygit yöneticisine girin. Portlara (Baglanti Noktalari) gelin. LPT portunun Kaynaklarindan Giris-Çikis araligindaki degerin ilk kismindaki deger yazici portunuzun adresidir.

Örneðin 0378 adresi için bu deger alt portlara asagidaki sekilde dagilir,

DATA portu h0378
STATUS portu h0378 + 1 yani h0379
CONTROL portu ise h0378 +2 yani h037A olur.

Paralel port temel olarak printer baglantisi için yaratilmistir. Her pinin bilgisayarin yazici ile anlasmasini saglayan bir görevi vardir. Bizim gerçeklestirecegimiz uygulamalarda çok gerekli olmayacak fakat yinede bilmekte fayda var. Asagidaki tabloada paralel port pinlerindeki sinyalleri ve giris çikis yönlerini görüyorsunuz.



DATA Portu:

Paralel port üzerinde DATA portuna ait 8 adet (D0-D7) pin vardir. Bu port paralel portunuzun taban adresini kullanir. 8 tane DATA pini oldugundan 8 Bitlik veri çikisi almak mümkündür. Yani bu 8 tane pinin "1" yada "0" degerlerini almasi ile veri akisi saglanmis oluyor. DATA portu normalde veri çikisi için kullanilmaktadir. Fakat bazi özel ayarlar yaparak, eger bilgisayariniz da destekliyorsa veri girisi yapmanizda mümkün olabilir.

Dedigimi sekilde DATA portundan 8 bitlik veri çikisi alabiliyoruz. DATA portuna hiçbir veri göndermedigimiz zaman ki degeri "00000000" dir. Dikkat ederseniz 8 tane "0" var. Örnegin data portuna 25 degerini gönderelim. 25 degerinin ikilik sayi sisteminde karsiligi "00011001" dir. Bu durumda D4, D3 ve D0 pinlerine karsilik gelen lojik degerler "1" oldugundan o pinler +5 Volt olacaktir. Asagida DATA pinine gönderdiginiz bazi degerler ile hangi pinlerin "1" olacagini gösteren örnek bir tablo görüyorsunuz.



DATA pinine istedigimiz degerleri Visual Basic yada QBASIC altindaki OUT komudunu kullanarak göndermeniz mümkün. Komudun kullanim sekli asagidaki gibidir.

OUT Adres, Veri

Adres degiskeni DATA portunuzun adresidir.Örnegin (&h0378). Veri degiskeni ise göndereceginiz verinin 10 tabanina göre sayisal degerini içermelidir. Örnegin tüm data pinlerini +5 Volt yapmak için porta "11111111" degerine karsilik gelen 128 degerini göndermeniz yeterli olacaktir. Bu komudu Visual Basic altinda kullanabilmeniz için inpout32.dll dosyasinin projeniz ile ayni klasörde bulunmasi gerekmektedir. Bu dosyayi buradan indirebilirsiniz.

STATUS PORTU

STATUS portu sayesinde, 15 - 13 - 12 - 11- 10 numarali pinlerden, 5 bit sayisal giris yapabiliriz. STATUS portu paralel portunuzun taban adresinin +1 fazlasinda bulunmaktadir. Örnegin paralel portunuzun taban adresi h378 ise STATUS portu h379 da bulunacaktir. Veriyi paralel portun seklinde gözüktügü gibi S7, S6, S5, S4, S3 pinlerinden yapacagiz. Bu 5 pinlerden herhangi bir müdahale bulunmadan okuyacaginiz lojik deger "1" olacaktir. Eger voltmetrenizle bu pinlerdeki voltaji ölçerseniz +5 Volt oldugunu göreceksiniz. Bu pinlere baglayacagimiz butonlar ile pinleri topraklayarak lojik degerlerini "0" yapip bir nevi veri girisi gerçeklestirmeniz mümkün. Fakat bu pinlerden S7, donanim tarafindan tersindirilmistir. Bunun anlami o pinin topraga çektigimiz zamanki degerinin "1" olacagidir. STATUS portunun kullanimini daha iyi anlayabilmeniz için Paralel Port ile Veri Girisi uygulamasini incelemenizi öneriyorum.

STATUS portundaki veriyi okumak için Visual Basic ve QBASIC 'teki INP komudunun kullanim sekli,

inp(taban_adres+1) seklindedir.

CONTROL PORTU

CONTROL portunu hem giris hem de çikis için kullanmak mümkündür. Paralel port üzerinde CONTROL portununa ait 4 tane pin vardir. Bu pinlerden C0,C1,C3 pinleri tersinmistir. Yani tersinmis olan bu pinlere veri göndermedigimiz zaman durumu "1" dir. Bu pinlerden bir tanesine veri gönderdigimizde o pinin degeri "0" olacaktir. DATA ve STATUS pinlerinin yetmedigi zamanda CONTROL portlari ile çikis yada giris almak mümkündür. Programlama sekli STATUS ve DATA portlari ile aynidir.
fatihgk
08-11-2006, 04:36 PM
Paralel porttan veri giriþi



Paralel porttan veri giriþi STATUS yada CONTROL portuna ait pinlerden gerçekleþtirilebilir. Hatta bazý ayarlamalar yaparak, eðer bilgisayarýnýz da destekliyorsa, DATA pinlerinden giriþ yapmamýz da mümkün olabilir. Biz STATUS portundan veri giriþini inceleyeceðiz.

STATUS portu sayesinde, 15 - 13 - 12 - 11- 10 numaralý pinlerden, 5 bit sayýsal giriþ yapabiliriz. STATUS portu paralel portunuzun taban adresinin +1 fazlasýnda bulunmaktadýr. Örneðin paralel portunuzun taban adresi h378 ise STATUS portu h379 da bulunacaktýr. Veriyi paralel portun þeklinde gözüktüðü gibi S7, S6, S5, S4, S3 pinlerinden yapacaðýz. Bu 5 pinlerden herhangi bir müdahale bulunmadan okuyacaðýnýz lojik deðer "1" olacaktýr. Eðer voltmetrenizle bu pinlerdeki voltajý ölçerseniz +5 Volt olduðunu göreceksiniz. Bu pinlere baðlayacaðýmýz butonlar ile pinleri topraklayarak lojik deðerlerini "0" yapýp bir nevi veri giriþi gerçekleþtirmiþ olacaðýz.

STATUS portundaki veriyi okumak için INP komudunu kullanacaðýz. Kullaným þekli,

inp(taban_adres+1) þeklindedir.



Paralel porta veri giriþ iþlemi, temel olarak ayný olsa da veri çýkýþýndan biraz daha karýþýktýr. Bunun sebebi STATUS portunda bulunan sinyallerden birinin donaným tarafýndan terslenmiþ olmasýdýr. Þimdi veriyi 8 bit olarak okuduðumuzu varsayalým. Bu durumda STATUS portundaki binary (ikilik sisteme karþýlýk gelen) deðer, "11111111" olacaktýr. Bu da 10 tabanýnda 255 'e denk gelmektedir. Fakat gelin görün ki, bu porttan veriyi okuduðumuz da bambaþka bir deðer olan 127 ' ye rastlayacaðýz. Dikkat ederseniz 127 deðerini binary olarak okursak "01111111" deðerini elde edeceðiz. Ýþte buradaki 127 deðerinin okunmasýnýn sebebi pinlerden bir tanesi olan S7 nin terslenmiþ olmasýdýr. Yani S7 ye karþýlýk gelen pine veri yolladýðýmýzda o pinin deðeri "1" olacaktýr. Diðerlerine veri yolladýðýmýzda ise deðerleri "0" olacaktýr. Veriyi 8 bit olarak okuduðumuzu varsaymýþtýk. Ýþte okuduðumuz deðerin son 3 bitini esasýnda okuyamýyoruz. Yani 127 deðerinin okunabilir karþýlýðý "01111xxx" olacaktýr. Buradaki x lerin bir deðeri yoktur. Ýptal edilmiþ bitleri göstermek için kullandým. Gerçekte okunan deðer "01111" olacaktýr. Bu da STATUS portuna veri giriþinin 5 bit olduðunu bize bir daha gösterecektir.

Daha rahat iþlem yapabilmek için tersinmiþ olan S7 bitini bizim yazýlým olarak tekrar tersindirmemiz gerekmektedir. Yani porta hiç bir müdahalede bulunmadan okumak istediðimiz deðer "11111xxx" olmalýdýr. Bu durumda en baþtaki biti tersindirmemiz gerekecektir. Bu iþlemi yapmanýn en kolay yolu Xor kullanmaktýr.

Xor, Exclusive-Or operatörü bir byte içerisindeki bir veya daha fazla biti tersindirmek için kullanýlabilecek bir metodtur. XOR operatörünün BASIC 'te kullanýmý aþaðýdaki gibidir.

(okunan_byte) XOR (maske_byte)

Burada maske deðerinde tersindirmek istediðimiz bitler için "1" , dokunmayacaðýmýz bitler için "0" yazmalýyýz. Örneðin "11100111" deðerini "11111110" maskesi ile XOR larsak, elde ettiðimiz deðer, "00011001" olacaktýr. Biz paralel porta göndereceðimiz byte verisini "10000000" deðerinin onluk tabanýndaki karþýlýðý olan "128" ile XOR layacaðýz. Böylece okuduðumuz verinin en baþta bulunan S7 den gelen kýsmý "1" ise "0", "0" ise de "1" olacaktýr. Sonuçta taban adresi h378 olan paralel porttan veri okumak için yazmamýz gereken satýr aþaðýdaki gibi olacaktýr.

Deger = inp(&h379) XOR 128

Aþaðýdaki tabloda hangi butonlara bastýðýmýzda, yukarýdaki komutla hangi veriyi okuyabileceðimizi gösteriyor.



Kullanmadýðýmýz S0,S1 ve S2 deðerleri genelde "1" olarak gelmektedir fakat bazen bu deðiþebiliyor. Eðer portunuzdaki bu deðerler deðiþik ise farklý bir sonuç elde edebilirsiniz. Benim denediðim diðer bir bilgisayarda XOR kullanmadan ilk okuduðum deðer 120 idi. Bu da ikilik sistemde "01111000" deðerine karþýlýk geliyordu. Bu durumda kullanýlmayan S2,S1 ve S0 deðerlerinin "0" olarak geldiðini gördüm. Bu deðeri yukarýda anlattýðým þekilde S7 ye ve S3, S2, S1 pinlerine yönelik "1000111" maskesi ile XOR layýp, ilk okunan deðeri "11111111" yani 255 olarak alabildim. Þimdi bu kadar uðraþmaya ne gerek var diye düþünebilirsiniz. Yani altý üstü veriyi evirip çevirip 255 deðerini elde ettik. Esasýnda bu tamamen size kalmýþ veriyi XOR lamak zorunda deðilsiniz. Bu sadece hesaplamalarda ve mantýkta biraz kolaylýk saðlayacaktýr. Önemli olan okunan verinin siz butona bastýkça deðiþmesi.

Örnek program dosyalarýný indirmek için burayý týklayýnýz.

Admin
Admin

Mesaj Sayısı : 78
Kayıt tarihi : 19/10/08

http://elektronikpc.yetkinforum.com

Sayfa başına dön Aşağa gitmek

Sayfa başına dön

- Similar topics

 
Bu forumun müsaadesi var:
Bu forumdaki mesajlara cevap veremezsiniz