Science Central - All about Science

 

AMACINIZ YAPILMAYANI YAPMAKSA, DOĞRU YERDESİNİZ....

Güneş Pili Nasıl Yapılır...   Profesyonel Scooter Yapımı.....   5000 Watt Inverter Yapımı...  PIC ile Robot Nasıl Yapılır...   Wireless Sensörler...   Yüksek Voltaj Elektromagnet Yapımı

Kategoriler
 

ALTERNATİF ENERJİ

ELEKTRONİK DEVRE UYGULAMALARI

ROBOT YAPIMI

ATV & SCOOTER PLAN VE ŞEMALARI

Tekstil Üzerine Elektronik  

 

 

 

 

 

 Kendi Web Server'ınızı Yapın

 

 

 

 

PIC Programlayıcı Yapımı   

Hidrojen Jeneratörü Yapımı

Kendi Robotunuzu Yapın

 

Yüzlerce Elektronik Devre

 

Genel Bilgiler:  Robot Programlama » Faydalı Yazılımlar » Paralel Port Hakkında

 


GENEL BİLGİLER

Designed By Phoenix 2008 
 

PARALEL PORT

CD lerimizde yer alan birçok plan, devre ve şemada bilgisayarımızda bulunan paralel port'tan faydalanmanız gerekecek. Bu sebeple paralel port'u tanıyabilmemiz için bu sayfayı hazırladık.

1.1  Portun Tanımı 

“Paralel port” nedir? Bilgisayar evreninde port, mikroişlemcinin, ya da CPU’nun, diğer bilgisayarlarla veri alışverişinde kullandığı bir sinyal hatları kümesidir. Portun tipik işlevi yazıcıyla,modemle, klavyeyle, ekranla –veya sistem belleği dışındaki herhangi bir aygıt  ya da birimle- iletişimidir. Çoğu bilgisayarın portu dijitaldir. Yani her  sinyal, veya bit, ya 0 ya da 1’dir. Paralel port, bir defada birden fazla bit transfer edebilir. Oysa bir seri port bir defada ancak bir bit transfer yapabilir- bununla birlikte, her iki yönde de transfer yapması mümkündür.

 Biz belli tipte bir paralel portu ele alacağız. Bu port hemen her PC’de, yani  IBM uyumlu kişisel bilgisayarda mevcuttur. Paralel port, RS-232 seri portla birlikte, PC iletişiminin çekici gücüdür. Yeni PC’lerde SCSI , USB ve IRDA gibi yeni portlar da yer alabilmektedir. Ancak paralel port, kapasitesi, esnekliği ve her PC’de bulunur olma özelliğiyle hala en popüler olanları arasındadır. 

      Şekil 1-1

  

   1.2 Paralel Port Düzeni

Paralel port bilgisayarın en kolay programlanabilir portudur. 25 pinden oluşmaktadır. Bu pinler üzerinde DATA, STATUS, CONTROL adında 3 tane port vardır. Bu pinlerden her hangi bir tanesinin "1" yani YÜKSEK olması durumu, o pinden okunacak voltajın +5 Volt olması anlamına gelir. "0" olması ise DÜŞÜK durumunu yani 0 Volt olduğunu gösterir. Buradan da neden ikilik sayı sisteminin kullanıldığı anlaşılmaktadır.

 Bilgisayar paralel porta ulaşılabilmesi için porta bir adres atamıştır. Bu adresi bulmak için Denetim Masasından Sisteme, oradan da aygıt yöneticisine girilir. Portlara (Bağlantı Noktaları) gelinir. LPT portunun Kaynaklarından Giriş-Çıkış aralığındaki değerin ilk kısmındaki değer yazıcı portunun adresidir.   

0378 adresi için bu değer alt portlara aşağıdaki şekilde dağılır,


 
 

                                                Şekil 1-2

 DATA portu h0378

STATUS portu h0378 + 1 yani h0379

CONTROL portu ise h0378 +2 yani h037A olur.

Paralel port temel olarak printer bağlantısı için yaratılmıştır. Her pinin bilgisayarın yazıcı ile anlaşmasını sağlayan bir görevi vardır. Gerçekleştirilecek uygulamalarda çok gerekli olmayacak fakat yinede bilinmesinde fayda vardır. Aşağıda ki tabloda paralel port pinlerindeki sinyalleri ve giriş çıkış yönleri görülmektedir.

Sinyal Adi BIT PI

      Tablo 1-1

                                        

 1.2.1 Data Portu

 Paralel port üzerinde DATA portuna ait 8 adet (D0-D7) pin vardır. Bu port paralel portunuzun taban adresini kullanır. 8 tane DATA pini olduğundan 8 Bitlik veri çıkışı almak mümkündür. Yani bu 8 tane pinin "1" yada "0" değerlerini alması ile veri akışı sağlanmış oluyor. DATA portu normalde veri çıkışı için kullanılmaktadır. Fakat bazı özel ayarlar yapılarak, eğer bilgisayar da destekliyorsa veri girişi yapılması da mümkün olabilir.

 Belirtilen şekilde DATA portundan 8 bitlik veri çıkışı alınabilir. DATA portuna hiçbir veri gönderilmediği zaman ki değeri "00000000" dır. Dikkat edilirse 8 tane "0" vardır. Örneğin data portuna 25 değeri gönderilsin. 25 değerinin ikilik sayı sisteminde karşılığı "00011001" dir. Bu durumda D4, D3 ve D0 pinlerine karşılık gelen lojik değerler "1" olduğundan o pinler +5 Volt olacaktır. Aşağıda DATA pinine gönderilen bazı değerler ile hangi pinlerin "1" olacağını gösteren örnek bir tablo görülmektedir.

 

 

                                                     Tablo1-2

DATA pinine istediğimiz değerleri Visual Basic yada QBASIC altındaki OUT komutunu kullanarak göndermeniz mümkün. Komutun kullanım şekli aşağıdaki gibidir.

 ·        OUT Adres, Veri 

Adres değişkeni DATA portunun adresidir. Örneğin (&h0378). Veri değişkeni ise gönderilecek verinin 10 tabanına göre sayısal değerini içermelidir. Örneğin tüm data pinlerini +5 Volt yapmak için porta "11111111" değerine karşılık gelen 255 değerinin gönderilmesi yeterli olacaktır. Bu komutu Visual Basic altında kullanabilmek için inpout32.dll dosyasının proje ile aynı klasörde bulunması gerekmektedir. Bu dosyanın download kısmından çekilmesi mümkündür.

C ++ derleyicisinde ise bu komutun adı outportb 'tur ve STDIO.H kütüphanesinde yer alır. Kullanım şekli ise aşağıdaki gibidir.

outportb (Adres,Veri)

1.2.2 Status Portu

STATUS portu sayesinde, 15 - 13 - 12 - 11- 10 numaralı pinlerden, 5 bit sayısal giriş yapılabilir. STATUS portu paralel portun taban adresinin +1 fazlasında bulunmaktadır. Örneğin paralel portun taban adresi h378 ise STATUS portu h379 da bulunacaktır. Veri paralel portun şeklinde gözüktüğü gibi S7, S6, S5, S4, S3 pinlerinden yapılacaktır. Bu 5 pinlerden herhangi bir müdahale bulunmadan okunacak lojik değer "1" olacaktır. Eğer voltmetre ile bu pinlerdeki voltajı ölçülürse +5 Volt olduğu görülecektir. Bu pinlere bağlanacak butonlar ile pinler topraklanarak lojik değerlerinin "0" yapılıp bir nevi veri girişi gerçekleştirilmesi mümkündür. Fakat bu pinlerden S7, donanım tarafından tersindirilmiştir. Bunun anlamı o pinin toprağa çekildiği zamanki değerinin "1" olacağıdır.

STATUS portundaki veriyi okumak için Visual Basic ve QBASIC 'teki INP komutunun kullanım şekli,

 inp (taban_adres+1)

 C ++ derleyicisinde ise bu komutun adi inportb 'tur ve STDIO.H kütüphanesinde yer alır. Kullanım şekli ise aşağıdaki gibidir.

inportb (taban_adres+1)

 1.2.3 Control Portu

CONTROL portunu hem giriş hem de çıkış için kullanmak mümkündür. Paralel port üzerinde CONTROL portununa ait 4 tane pin vardır. Bu pinlerden C0,C1,C3 pinleri tersinmiştir. Yani tersinmiş olan bu pinlere veri gönderilmediği zaman durumu "1" dir. Bu pinlerden bir tanesine veri gönderildiğinde o pinin değeri "0" olacaktır. DATA ve STATUS pinlerinin yetmediği zamanda CONTROL portları ile çıkış yada giriş almak mümkündür. Programlama sekli STATUS ve DATA portları ile aynıdır.

 Control Portlarının bir farklı özelliği C5 bitini kullanarak biderectional port özelliğine sahip olan paralel portlarda data registerındaki pinleri giriş/çıkış yapabiliriz.Daha önce de anlatıldığı gibi standart olarak data registerı çıkış(output) olarak kullanılır.Fakat bidirectional özelliği olan portlarda bu pinler giriş olarak ta kullanılabilir.(Not:Bidirectional portlarda data register’ını ya çıkış ya giriş olarak kullanabilirsiniz.Yarısı giriş yarısı çıkış olamaz)

C7^

x

C6

x

C5

Data Register Giriş/Çıkış yapılır (I/O Input/Output)

C4

 x

C3^

Pin 17

C2

Pin 16  

C1^

Pin 14

C0^

Pin 1

 

 

 

 

 

 

 

 

 

                                                            Tablo 1-3

 Yazılan bit abcdefgh ise:

 

a

    b

    c

   d

e

f

g

h

x

    x

   C5

   x

    C3^

  C2

     C1^

  C0^

 

 

 

                                                    Tablo 1-4

I/O :

 a,b, d biti kullanılmaz c biti 0 ise data registerına bağlı pinler çıkıştır, c biti 1 ise data register’ına bağlı pinler giriştir.

 1.3 Paralel Porttan Veri Çıkışı

 Bilgisayara veri girişi ve çıkışı port uygulamalarının temeli kabul edilir. Yapılacak robotu yönetebilmek için bunun nasıl olduğunu bilmek gerekir. Robot tasarlama kısmına gelene kadar, paralel portu programlamanın iyi bir şekilde öğrenilmesi gereklidir.

 Bilgisayarda temel olan iki değer vardır. Bilgisayar içerisinde veri bu iki değer üzerinden akmaktadır. Temel olarak elektronikte, "1" devrenin kapalı (aktif) "0" ise açık (pasif) olduğunu gösterir. Bilgisayarda bu birler ve sıfırların her birine "BIT" bunlardan sekiz tanesinin yan yana gelmiş şekline "1 BYTE" diyoruz.
Paralel port bilgisayarın en kolay programlanabilen portudur. Üzerinde 25 Pin vardır 8 BIT veri aktarabilir ve 5 Volt ile çalışır ve tabi ki enerjisini bilgisayardaki ana karttan alır. Bu voltaj büyük bir elektronik eşyayı çalıştırmak için yeterli olmayabilir ancak, böyle bir cihazı çalıştırabilecek basit bir devreyi tetiklemek için yeterli olabilir. Aşağıdaki şekilde görüldüğü gibi paralel port 8 BIT olduğundan veri 8 PIN üzerinden akacaktır. Bu pinler sırası ile örnek program ekranındaki gibidir. Bu sekiz pinin dışında aşağıda TOPRAK olarak gösterilen pinlerin dışındaki kısmın kullanılması gerekecek.
 

                                                          Şekil 1-3


Yukarıdaki bu 8 pin özel bir durum olmadığı sürece değerleri "0" dır. Bu pinlerden istenileni "1" durumuna getirilebilir. Paralel port üzerindeki bir data pininin "1" olması o pinin +5 Volt olması anlamına gelir. Bilgisayar sistemlerinde temel rakamlar bunlar olduğundan, yazılan diğer veri ve adresler bilgisayar içerisinde ikilik sayı sisteminde işlenir.

                                                       Şekil 1-4

Temel amaç her pine önce bir direnç, peşine de ledi bağlamaktır. İlk önce direnç kullanılmasının sebebi ise kullanılacak 1.5 Voltuk ledin paralel porttan gelen 5 Voltluk akım sebebiyle arızalanmamasıdır. Yapılacak bağlantı her data pini üzerinde örnek programın ekranındaki gibi olmalıdır.

 Devre şu şekilde çalışacaktır;

Paralel port üzerindeki data pinlerinden bir tanesi "1" yapılacak, dolayısıyla o pinin elektriksel değeri +5Volt olacaktır. Buradan çıkan 5 Volt direnç üzerinden geçirilerek üzerindeki akımın değeri ledi bozmayacak değere düşürülür ve bu da led diyotun (+) ucuna bağlanır. Ledin diğer ucu da TOPRAK kısmına bağlanarak devre kapanır.

  Aşağıdaki tabloda porta gönderilen 8 bitlik hangi veri ile hangi ledlerin yandığı görülecektir.

VERİ

D7

D6

D5

D4

D3

D2

D1

D0

1

0

0

0

0

0

0

0

1

4

0

0

0

0

0

1

0

0

16

0

0

0

1

0

0

0

0

25

0

0

0

1

1

0

0

1

70

0

1

0

0

0

1

1

0

 

 

 

 

 

  

                                                          Tablo 1-5                                            

1.4 Paralel Porta Veri Girişi

Şimdi paralel porta bağlanılan 5 tane buton ile bilgisayara sayısal veri girişi yapılacaktır. Paralel porttan veri girişi STATUS yada CONTROL portuna ait pinlerden gerçekleştirilebilir. Hatta bazı ayarlamalar yapılarak, eğer bilgisayar da destekliyorsa, DATA pinlerinden giriş yapılması da mümkün olabilir. STATUS portundan veri girişi incelenecektir.

STATUS portu sayesinde, 15 - 13 - 12 - 11- 10 numaralı pinlerden, 5 bit sayısal giriş yapılabilir. STATUS portu paralel portun taban adresinin +1 fazlasında bulunmaktadır. Örneğin paralel portun taban adresi h378 ise STATUS portu h379 da bulunacaktır. Veri paralel portun şeklinde gözüktüğü gibi S7, S6, S5, S4, S3 pinlerinden yapılacaktır. Bu 5 pinlerden herhangi bir müdahale bulunmadan okunacak lojik değer "1" olacaktır. Eğer voltmetre ile bu pinlerdeki voltaj ölçülürse +5 Volt olduğu görülecektir. Bu pinlere bağlanılacak butonlar ile pinler topraklanarak lojik değerleri "0" yapılıp bir nevi veri girişi gerçekleştirilmiş olacaktır.

STATUS portundaki veriyi okumak için INP komutu kullanılacaktır. Kullanım şekli;

inp(taban_adres+1) şeklindedir. 

  Şekil 1-5

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 verinin 8 bit olarak okunduğunu 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 bu porttan veri okunduğunda bambaşka bir değer olan 127 ' ye rastlanır. Dikkat edilirse 127 değeri binary olarak okunursa "01111111" değeri elde edilir. İş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 yollandığında o pinin değeri "1" olacaktır. Diğerlerine veri yollandığında ise değerleri "0" olacaktır. Verinin 8 bit olarak okunduğu varsayılmıştı. İşte okunulan değerin son 3 biti esasında okunmuyor. Yani 127 değerinin okunabilir karşılığı "01111xxx" olacaktır. Buradaki x’lerin bir değeri yoktur. İptal edilmiş bitleri göstermek için kullanılmıştır. Gerçekte okunan değer "01111" olacaktır. Bu da STATUS portuna veri girişinin 5 bit olduğunu bir kez daha gösterecektir.

Daha rahat işlem yapabilmek için tersinmiş olan S7 bitinin yazılım olarak tekrar tersindirilmesi gerekmektedir. Yani porta hiç bir müdahalede bulunmadan okunmak istenilen değer "11111xxx" olmalıdır. Bu durumda en baştaki bitin tersindirilmesi 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 metottur. XOR operatörünün BASIC 'te kullanımı aşağıdaki gibidir;

(okunan_byte) XOR (maske_byte)

Burada maske değerinde tersindirilmek istenilen bitler için "1" , dokunulmayacak bitler için "0" yazılmalıdır. Örneğin "11100111" değeri "11111110" maskesi ile XOR lanırsa, elde edilen değer, "00011001" olacaktır. Paralel porta gönderilecek byte verisini "10000000" değerinin onluk tabanındaki karşılığı olan "128" ile XOR lanacaktır. Böylece okunulan 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 yazılması gereken satır aşağıdaki gibi olacaktır;

Değer = inp(&h379) XOR 128

Aşağıdaki tabloda hangi butonlara basıldığında, yukarıdaki komutla hangi verinin okunabileceği gösterilmektedir.

  Butonlar

S7

S6      

S5

S4

S3

S2

S1

S0

On tabanındaki değer

 S5

 1

 1

 0

 1

 1

 1

 1

 1

 223

 S4

 1

 1

 1

 0

 1

 1

 1

 1

 239

 S5 ve S4

 1

 1

 0

 0

 1

 1

 1

 1

 207

 Tümü

 0

 0

 0

 0

 0

 1

 1

 1

 7

                                      Tablo 1-6

 Kullanılmayan S0,S1 ve S2 değerleri genelde "1" olarak gelmektedir fakat bazen bu değişebiliyor. Eğer porttaki bu değerler değişik ise farklı bir sonuç elde edilebilir. Esasında bu veriyi XOR’lamak zorunluluğu yoktur. Bu sadece hesaplamalarda ve mantıkta biraz kolaylık sağlayacaktır. Önemli olan okunan verinin butona basıldıkça değişmesidir.



2005-2008 Phoenix Design.