SERI Port ile 10 nokyayı kontrol Edin Hemde Pic ile rahat Rahat Çalışın...

Katılım
18 Ocak 2008
Mesajlar
1,068
Puanları
156
Yaş
39
Arkadaşlar Herkese selamun aleyküm Bir öğrenci kardeşimizin yardım istemesi üzerine sabah projeye başladım devresini yapmak programını yazmak falan fistan derken bu saate dek uğraştım ama On numara çalışan bir program yazdım...

Bazen dikkatimi çekiyor Seri port ile bilgisayardan bişiyler çalıştırmak isteyen arkadaşlar oluyor onların da işine yarayacaktır düşüncesi ile

1: Programın exe dosyasını
2: Pic için yazılmış program kodlarını
3: Visual basic ile yazılmış program kodlarını paylaşacağım Ben programı verip hangi butona fare ile tıklanırsa hangi kodu yollar bunları belirtip pic kısmında da alıcı tarafın bir noktalık alma ve kontrol etme mantığını gösterip paylaşımı bitireceğim...

1: Eklentide rar dosyasının içinde Programın exe halini bulabilirsiniz. deneme.exe

2: Programdaki butonların gönderdiği kodlar Alfasayısal kodlardır Yani bildiğimiz ingilizce yazı karakterlerinden oluşur...Buna göre :

OLDUĞUN YERDE KAL isimli butona fare ile tıklandığında "STOP" ŞEKLİNDE 4 BYTE ALFASAYISAL VERİ YOLLAR.

EKRANI SİL isimli butona fare ile tıklandığında "1234" ŞEKLİNDE 4 BYTE ALFA SAYISAL VERİ YOLLAR

SOLA DÖN isimli butona fare ile tıklandığında "S_DON" ŞEKLİNDE 4 BYTE ALFA SAYISAL VERİ YOLLAR.

SAĞA DÖN isimli butona fare ile tıklandığında "SAG_D" ŞEKLİNDE 4 BYTE ALFA SAYISAL VERİ YOLLAR.

ÇENE AÇ isimli butona fare ile tıklandığı zaman "CEAC" ŞEKLİNDE 4 BYTE ALFA SAYISAL VERİ YOLLAR.

ÇENE KAPAT isimli butona fare ile tıklandığı zaman "CEKP" ŞEKLİNDE 4 BYTE ALFA SAYISAL VERİ YOLLAR.

SAĞ isimli butona fare ile tıklandığı zaman "SAGA" ŞEKLİNDE 4 BYTE ALFA SAYISAL VERİ YOLLAR.

SOL isimli butona fare ile tıklandığı zaman "SOLA" ŞEKLİNDE 4 BYTE ALFA SAYISAL VERİ YOLLAR.

İLERİ isimli butona fare ile tıklandığı zaman "iLER" ŞEKLİNDE 4 BYTE ALFA SAYISAL VERİ YOLLAR.

GERİ isimli butona fare ile tıklandığı zaman "GERI" ŞEKLİNDE 4 BYTE ALFA SAYISAL VERİ YOLLAR.

PIC PROGRAMLAMA KISMINA GELİYİM :

Pic programlar iken elimde 16F877A olmadığı için 18F452 ile devreyi kurdum az sonra kodlarında da vereceğim gibi program proton+basic ile yazıldı...

9600 baud ratede iletişim kuruyor

Pic e 10 Mhz hs osilatör kullandım zaten kodlarında da göze çarpacaktır :)

Program :

Device 18F452
Include "modedefs.bas"
'Config HS_OSC , WDT_OFF , PWRTE_OFF , BODEN_OFF , LVP_OFF , CP_OFF , DEBUG_OFF
XTAL = 10
ALL_DIGITAL=true
ADCON1=7
Dim deg_1 As Byte
Dim deg_2 As Byte
Dim deg_3 As Byte
Dim deg_4 As Byte
'Dim deg_5 As Byte
'dim deg_6 as byte
'dim deg_7 as byte
'dim deg_8 as byte
'dim deg_9 as byte
'dim deg_10 as byte


Declare LCD_DTPIN PORTB.4
Declare LCD_ENPIN PORTB.3
Declare LCD_RSPIN PORTB.2
Declare LCD_INTERFACE 4
Declare LCD_LINES 2
DelayMS 500
Print At 1,1,"has_artvin_li"
Print At 2,1,"artvin_li_murat"
DelayMS 2000
Print $fe,1
basla:
SerIn PORTB.1,T9600,[deg_1,deg_2,deg_3,deg_4]
If deg_1="1" And deg_2="2" And deg_3="3" And deg_4="4" Then
Print $fe,1
Else
DelayMS 5
Print $FE,1
Print $FE,1
Print $FE,1
Print $FE,1
Print At 1,1,deg_1,deg_2,deg_3,deg_4
EndIf

GoTo basla
End

Burada programda dikkat etmenizi gerektiren tek yer " If deg_1="1" And deg_2="2" And deg_3="3" And deg_4="4" Then" kısmına dikkat ettiyseniz değerlerin içi byte tipi decimal sayı ile geliyor fakat biz "" tırnaklar içine alarak alfa sayısal olarak karşılaştırma yapıyoruz...

Ben programda sadece eğer "1234" gelirse ekranı silme komutunu verdim eğer "1234" dışında bişiy gelirse gelenleri olduğu gibi ekrana yazmasını istedim ve saolsun beni kırmadı yazdı çalıştırdı.

Bu arada Program şu an ki hali ile Com1 portundan iletişim kuruyor bu sebeple laptoplarda çalışması biraz sıkıntı olabilir çünki yeni nesil laptoplarda com portları artık yok mecburen usb rs232 çeviriciler ile çeviri yapıyoruz fakat programda daha com portu istediğimiz gibi tanımlayacak yeri yazmadım yazdığımda onu da paylaşırım inşallah :)

Şimdi tanıyanlar diyecek ki ne olduğun belli değil elektrikçimisin elektronikçimisin bilgisayar programcısı mısın kıl mısın tüymüsün mutlaka bişiyler düşünenler olacak...

Onlara da şimdiden saygı sevgi ve hürmetlerim ile aynı anda belirteyim ;)

Bir öğrenci arkadaş ridcada bulundu o şekilde uğraşarak yaptık gerçi daha önce de en basit hali ile seri port isimli bir dosyam vardı paylaştığım ordan olan tecrübe ve bilgilerle sistemi tamamladık.

Bu devre yapılırken max232 entegresi kullandım bu entegrenin de devre şemasını ekte vereceğim fakat pic ile bağlantılarını vs göstermedim zaten programda anlaşılır vaziyette ekranda görünüyor.
 

Ekli dosyalar

  • deneme.rar
    4.1 KB · Görüntüleme: 121
  • deneme.rar
    4.1 KB · Görüntüleme: 91
  • SER.jpg
    SER.jpg
    42.3 KB · Görüntüleme: 261
Arkadaşlar Herkese selamun aleyküm Bir öğrenci kardeşimizin yardım istemesi üzerine sabah projeye başladım devresini yapmak programını yazmak falan fistan derken bu saate dek uğraştım ama On numara çalışan bir program yazdım...

Bazen dikkatimi çekiyor Seri port ile bilgisayardan bişiyler çalıştırmak isteyen arkadaşlar oluyor onların da işine yarayacaktır düşüncesi ile

1: Programın exe dosyasını
2: Pic için yazılmış program kodlarını
3: Visual basic ile yazılmış program kodlarını paylaşacağım Ben programı verip hangi butona fare ile tıklanırsa hangi kodu yollar bunları belirtip pic kısmında da alıcı tarafın bir noktalık alma ve kontrol etme mantığını gösterip paylaşımı bitireceğim...

1: Eklentide rar dosyasının içinde Programın exe halini bulabilirsiniz. deneme.exe

2: Programdaki butonların gönderdiği kodlar Alfasayısal kodlardır Yani bildiğimiz ingilizce yazı karakterlerinden oluşur...Buna göre :

OLDUĞUN YERDE KAL isimli butona fare ile tıklandığında "STOP" ŞEKLİNDE 4 BYTE ALFASAYISAL VERİ YOLLAR.

EKRANI SİL isimli butona fare ile tıklandığında "1234" ŞEKLİNDE 4 BYTE ALFA SAYISAL VERİ YOLLAR

SOLA DÖN isimli butona fare ile tıklandığında "S_DON" ŞEKLİNDE 4 BYTE ALFA SAYISAL VERİ YOLLAR.

SAĞA DÖN isimli butona fare ile tıklandığında "SAG_D" ŞEKLİNDE 4 BYTE ALFA SAYISAL VERİ YOLLAR.

ÇENE AÇ isimli butona fare ile tıklandığı zaman "CEAC" ŞEKLİNDE 4 BYTE ALFA SAYISAL VERİ YOLLAR.

ÇENE KAPAT isimli butona fare ile tıklandığı zaman "CEKP" ŞEKLİNDE 4 BYTE ALFA SAYISAL VERİ YOLLAR.

SAĞ isimli butona fare ile tıklandığı zaman "SAGA" ŞEKLİNDE 4 BYTE ALFA SAYISAL VERİ YOLLAR.

SOL isimli butona fare ile tıklandığı zaman "SOLA" ŞEKLİNDE 4 BYTE ALFA SAYISAL VERİ YOLLAR.

İLERİ isimli butona fare ile tıklandığı zaman "iLER" ŞEKLİNDE 4 BYTE ALFA SAYISAL VERİ YOLLAR.

GERİ isimli butona fare ile tıklandığı zaman "GERI" ŞEKLİNDE 4 BYTE ALFA SAYISAL VERİ YOLLAR.

PIC PROGRAMLAMA KISMINA GELİYİM :

Pic programlar iken elimde 16F877A olmadığı için 18F452 ile devreyi kurdum az sonra kodlarında da vereceğim gibi program proton+basic ile yazıldı...

9600 baud ratede iletişim kuruyor

Pic e 10 Mhz hs osilatör kullandım zaten kodlarında da göze çarpacaktır :)

Program :

Device 18F452
Include "modedefs.bas"
'Config HS_OSC , WDT_OFF , PWRTE_OFF , BODEN_OFF , LVP_OFF , CP_OFF , DEBUG_OFF
XTAL = 10
ALL_DIGITAL=true
ADCON1=7
Dim deg_1 As Byte
Dim deg_2 As Byte
Dim deg_3 As Byte
Dim deg_4 As Byte
'Dim deg_5 As Byte
'dim deg_6 as byte
'dim deg_7 as byte
'dim deg_8 as byte
'dim deg_9 as byte
'dim deg_10 as byte


Declare LCD_DTPIN PORTB.4
Declare LCD_ENPIN PORTB.3
Declare LCD_RSPIN PORTB.2
Declare LCD_INTERFACE 4
Declare LCD_LINES 2
DelayMS 500
Print At 1,1,"has_artvin_li"
Print At 2,1,"artvin_li_murat"
DelayMS 2000
Print $fe,1
basla:
SerIn PORTB.1,T9600,[deg_1,deg_2,deg_3,deg_4]
If deg_1="1" And deg_2="2" And deg_3="3" And deg_4="4" Then
Print $fe,1
Else
DelayMS 5
Print $FE,1
Print $FE,1
Print $FE,1
Print $FE,1
Print At 1,1,deg_1,deg_2,deg_3,deg_4
EndIf

GoTo basla
End

Burada programda dikkat etmenizi gerektiren tek yer " If deg_1="1" And deg_2="2" And deg_3="3" And deg_4="4" Then" kısmına dikkat ettiyseniz değerlerin içi byte tipi decimal sayı ile geliyor fakat biz "" tırnaklar içine alarak alfa sayısal olarak karşılaştırma yapıyoruz...

Ben programda sadece eğer "1234" gelirse ekranı silme komutunu verdim eğer "1234" dışında bişiy gelirse gelenleri olduğu gibi ekrana yazmasını istedim ve saolsun beni kırmadı yazdı çalıştırdı.

Bu arada Program şu an ki hali ile Com1 portundan iletişim kuruyor bu sebeple laptoplarda çalışması biraz sıkıntı olabilir çünki yeni nesil laptoplarda com portları artık yok mecburen usb rs232 çeviriciler ile çeviri yapıyoruz fakat programda daha com portu istediğimiz gibi tanımlayacak yeri yazmadım yazdığımda onu da paylaşırım inşallah :)

Şimdi tanıyanlar diyecek ki ne olduğun belli değil elektrikçimisin elektronikçimisin bilgisayar programcısı mısın kıl mısın tüymüsün mutlaka bişiyler düşünenler olacak...

Onlara da şimdiden saygı sevgi ve hürmetlerim ile aynı anda belirteyim ;)

Bir öğrenci arkadaş ridcada bulundu o şekilde uğraşarak yaptık gerçi daha önce de en basit hali ile seri port isimli bir dosyam vardı paylaştığım ordan olan tecrübe ve bilgilerle sistemi tamamladık.

Bu devre yapılırken max232 entegresi kullandım bu entegrenin de devre şemasını ekte vereceğim fakat pic ile bağlantılarını vs göstermedim zaten programda anlaşılır vaziyette ekranda görünüyor.
 
selamın aleykum hocam bununla led calıştırabılır mıyız. birde bunun vısual basıc kodu nerde
 
@özgürrrrrrrrrrr led çalıştırabilirsiniz fakat cidden büyük hata yapmışım ben bunun visual basic kodunu paylaşmamış sadece exe olarak yaptığım programı paylaşmışım ;)

Benim yaptığım işe ben de şaşırdım...

İhtiyacınız varsa böyle bir programa bilgi verirseniz yardımcı olmaya çalışırım.
 

Forum istatistikleri

Konular
128,126
Mesajlar
915,241
Kullanıcılar
449,838
Son üye
sarioglu_55

Yeni konular

Geri
Üst