SERİ BİLGİYİ LCDye YAZDIRMA

Başlatan 06İBRAHİM, 01 Ocak 2015, 22:06:50

06İBRAHİM

Merhaba arkadaşlar pic18f4520 ile rfid okuyucu modülden karttaki seri bilgiyi okuyup ekrana yazdırmak istiyorum. Lcd ekranına görüntü alıyorum ancak rs232 ile bilgisayarda elde ettiğim veriyle uyuşan bir veri okuyamıyorum.Kullandığım dil pic basic pro. Yardımlarınızı bekliyorum. Şimdiden teşekkürler.


include "modedefs.bas" 
SI var PORTC.7

rx var bit[10]



define LCD_DREG PORTD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 3
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2

pause 500

lcdout $fe, 1
lcdout "KART ID"
basla:

serin SI,T9600,rx
lcdout $fe
lcdout #rx

goto basla

~ENES~

İbrahim bey..
Öncelikle kullandiginiz modülün ismini öğrenmek istedim bende rfid okuyuculara merak sardim biraz  :) yardimci olirsaniz sevinirim ..

Gelelim sorunuza .. Eğer karttan İD okumasini yapabiliyorsaniz PC te aktarırken visual basic denilen programda bir arayüz yapmalisiniz rs232 den veya bildiğim kadari ile kullandigin işlemci USB portunu destekliyor USB üzerinden PC ye veri gönderip arayuz programi ile ekrana basmalisiniz .. Kisaca özet bu akliniza takilan bir yer olursa yardimci olmaya calisirim ...kolay gelsin
ALLAH'a teslim olmuş bir insan ! Ne sultan tanir , ne sadrazam !

ete

Bu sistemde bir sürü bilinmeyen var. RFID'i kim okuyor? PC mi okuyor yoksa PIC mi okuyor.
PC RS232 üzerinden PIC'e bağlı ise arada seviye düzeltici (MAX232) kullanılmışmı ? şemada gözükmüyor çünkü.
Program sonderece basit düşünülmüş. İşlemciye bağlı bir sürü şey programa eklenmemiş.
Byte byte okuma yapılacak iken bit bazında bir okuma tercih edilmiş neden bilemiyorum tabiiki.

Ete

06İBRAHİM

Enes Bey;
modülüm http://www.watterott.com/en/125Khz-RFID-module-UART bu adresteki modüldür. PC deki okumayı max232 devresiyle 232 analyzer adlı programla yapabiliyorum. Teşekkür ederim.

Ete hocam;
Rfid yi PIC ile okumaya çalışıyorum. Daha önce modülümün doğru çalışıp çalışmadığını kartı okuyup okuyamadığını anlayabilmek için max232 ile PC den okuma yapmıştım. Ancak burda max232 kullanmadan direk olarak rfid kartın içindeki sadece seri bilgiyi lcd ekranda yazdırmaya çalışıyorum. Denemelerimde byte byte okumaya da çalıştım ancak yine aynı şekilde veriyi düzgün bir şekilde okuyamadım. PIC programlamaya yeni yeni başlamış biriyim o sebeple daha başka neler yapabilirim araştırıyorum fakat elle tutulur bir veriye henüz ulaşamadım. Yardımcı olabilirseniz sevinirim. Teşekkürler.

ete

Bu modül hem weigang26 formatında hemde RS232 formatında data yollayabiliyormuş. Weigang formatını şöyle bir okumuştum bir zamanlar.
Her iki format için aynı pinler kulanıldığına göre modülü satın alırkenmi acaba USART veya Weigagng modül olarak alınıyor yoksa modülün bir yerinden bu configürasyon değişiyormu. Zira her iki format işlev bakımından bir birlerinden çok farklı.
RS232 formatı TTL seviyede olduğuna göre max232 olmadan direk olarak pice bağlanabilecek nitelikte gözüküyor.
Yollanan byte adedi 10 byte olacağına göre bit bazında almak hatalı olur.
Ancak kartın nasıl RS232 veya nasıl Weigang çalışabildiğini çözmek lazım.

Ete

06İBRAHİM

#5
Ete hocam dediğiniz gibi devrede rfid modül direk olarak pice bağlı ve araştırmalarıma göre bu modülü rs232 formatında kullanabiliyorum. Okumayı byte byte olarak da denedim. kartı okuttuğumda ekranda 0000/00000 veya? gibi ifadelerden başka birşey göremiyorum. Kodlar üzerinde araştırma yapıyorum sürekli kodları değiştiriyorum ama sonuç hep aynı. Yine mantıksız mantıksız veriler okuyorum. Yardımlarınızı bekliyorum sorunum sadece kod kısmında olduğunu düşünüyorum. Teşekkürler.

ete

Neye dayanarak kodda hata olduğunu düşünüyorsun?. Bence tek hata byte yerine bit almış olman
Bunu byte alacak şekilde değiştirip 10 byte tamamlandığında index değişkenini sıfırlayarak bu sorunu aşmış olursun.
Karttan tam tamına 10 adet data gelmesi gerekiyor. Ama hala kartın nasıl 10 byte vereceğini anlamış değilim. Zira diğer modda yanlış hatırlamıyorsam farklı sayıda byte veriliyor. Bu ikisi arasında bir geçiş farkı olmalı.

Ete

06İBRAHİM

Ete hocam çünkü devre daha önceden bulduğum başka bir hex dosyasıyla çalışıyor. Kodları inceleme imkanım yok. Bende bunu kendi başıma yapmaya çalışıyorum. Denemeye devam edeceğim yardımınız için teşekkür ederim.

ete

#8
Madem öyle serin komutuna 10 adet byte değişkeni yaz.
Serin SI,T9600,VERI1,VERI2,VERI3,VERI4,VERI5...VERI10
Şeklinde yazıp okutma yap bakalım
Ama bu şekilde yine senkron tutturmak zor olacaktır. Bence kesme kullanıp aynı değişkenleri ,
Heserin komutu ile kullanmak daha doğru olur. Böylece senkron daha kolay tutturulmuş olacaktır.
Senin sorunun senkron tutturmak bana kalırsa. Şu anlama geliyor. Senin serin komutun almaya başladığı anda oradan gelen bilgi paketinin ortasından almaya başlıyordur. Doğru çalışması için paketin başından itibaren almaya başlaması gerekir.
Bu gibi işlerde yapılacak iş şöyle olur. Önce paket başı bulunur sonra peşinden gelen bilgiler okunur.
Senin bilgi paketinde paket başını gösterecek bir işaret varmıdır. .? Yok ise kart numaralarının birinci byte değeri genelde aynı seri kartlarda hep aynı numara ile başlar bunu biliyorsan onu özel işaret kabul edip önce onu yakalayıp ardından gelen 9 adet byte almak gerekir.


Ete

06İBRAHİM

Çok teşekkür ederim hocam bu mesajınız çok aydınlatıcı oldu denemelerimi bu yönüyle yapıcam tekrardan teşekkür ederim.

Powered by EzPortal