15 Mayıs 2011 Pazar

Mikrodenetleyicilerin bilgisayar (rs232) ile bağlantısı


Şimdi 16F84 ile yapacağımız devrelerimize bakalım. Birinci devre bilgisayardan alınan bilgiyi B portuna bağlı 8 LED’de gösterecektir. İkinci devrede ise B portuna girilen 8 bitlik bilgi bilgisayara girilecektir. Aşağıda sırasıyla 8 bitlik bilginin PIC’e gönderilmesi ve daha sonra 8 bitlik bilginin PIC yardımıyla bilgisayara alınması anlatılacaktır.

Bilgisayar ile PIC haberleşmesinde arayüzü Visual Basic ile yaptım. Arayüzün görünümü aşağıda (Şekil 3) görülmektedir. testver butonu text penceresine yazılan sayıyı veya karekteri PIC’e göndermek için kullanılacaktır. testalal butonu PIC’ten alınan 8 bitlik bilgiyi text penceresine yazdıracaktır. exit butonu ise programdan çıkmamızı sağlayacaktır.


Arayüzde görünmeyen  ve comm port ile ilgili işlemler yapmamızı sağlayan Mscomm kontrolörü çalışma alnında görülür. Bu kontrolörü yüklemek için sırasıyla projects > componenets > microsoft comm control seçilir. Bu işlem yapıldıktan sonra vb çalışma alanının görünümü aşağıda görüldüğü gibidir. (Şekil 4)

Program ile ilgili kodlar sırasıyla şöyledir (Şekil 5). testver butonu için :

Private Sub ver_Click()

    MSComm1.Settings = "9600,N,8,1"
    'rs232 ile ilgili ayarlar
    MSComm1.PortOpen = True
    'port açiliyor
    MSComm1.Output = Text1.Text
    'text penceresine yazilan deger pic'e gonderiliyor
    MSComm1.PortOpen = False
    'port kapatiliyor
   
End Sub
Yorumlardan da anlaşılacağı gibi önce comm port ile ilgili ayarlar yapılmaktadır. Bu ayarlar bilginin 9600 baud (bit per second), parity bitsiz (no parity), 8 bitlik data ve bir stop biti ile gönderildiğini veya alındığını gösteriyor. MSComm1.PortOpen=True deyimi portun açıldığını MSComm1.Output porta bilgi gönderildiğini (Gönderilen bilgi text1’e yazılan sayı veya karekterdir) ve MSComm1.PortOpen=False portun kapandığını belirtiyor.

Buton testal için yazılan kodkar şunlardır.

Private Sub al_Click()

    MSComm1.Settings = "9600,N,8,1"
    'rs232 ile ilgili ayarlar
    MSComm1.PortOpen = True
    'port açiliyor
    deger = Asc(MSComm1.Input)
    'pic'ten okunan 8 bitin ascii karsiligi aliniyor
    Text1.Text = deger
    'okunan bilgi text penceresinde görünüyor
    MSComm1.PortOpen = False
    'port kapatiliyor
   
End Sub

Yukardaki kaynak kodunda testver butonunda kullanılan kodlara benzer kodlar vardır. Dışardan gelen bilgiyi almak için MSComm1.Input deyimi kullanılmıştır. Asc fonksiyonu alınan karekterin ascii değerini almak için kullanılmıştır. Ascii tablosunu herhangi bir programlama kitabının arkasında bulabilirsiniz. deger değişkenin dim deger as integer olarak tanımlanması daha uygun olabilir. Portun MSComm1.PortOpen = False satırı ile kapatılması programın “port zaten açık” hatası vermemesi açısından önemlidir
exit butonu programdan çıkılmasını sağlamaktadır.

Hiç yorum yok:

Yorum Gönder