LCD'de YAZDIRMA SORUNU

Başlatan ErdagK, 13 Kasım 2015, 20:11:22

ErdagK

Öncelikle kendimi tanıtayım . ben Kütahya Dumlupınar Üniversitesi Simav MYO'da 1. sınıf öğrencisiyim Bir proje ödevim var ve takıldıgım bir sorun var yardımcı olursanız cok memnun olurum . Sorunum su ki hocam bana bir devre verdi bu devre Basit bir direnc ölçer ama bu bildiğimiz AVO metreyle olan bi ölçüm değil 2*16 bir LCD ekrana direnclerin renklerini yazdırcam bu da söyle olucak elimde bir numpad var numpadde SKKTSYMM GB direnc renk kodlarını kodlicam yani ekrana rakam yazıcam ve rakam alıcam ben tatmin olmadım ama hoca yeter
                  123456789 
dedi o yüzden sadece ekrana yan yana rakam yazmak istiyorum numpadden . bunu nasıl yapabilirim . ben biraz ilerledim kendi mantıgımla fakat onda hata aldım söyle ki ekranda herhangi bir tuşa basınca  örn:1 olsun 1 basınca değer=1.1.* oluyor bunu nasıl çözerim arkadaslar   

ete

Ne olmadığını yazmışsın ama ne olacağını yazmamışsın. Üstelik kod da yok. AKıl istiyorsun yalnızca anlaşılan.
LCD ekranda rakamları yan yana yazdırmanın bir yolu desimal sayı sistemini kullanmaktır.
Bu sistemle en fazla 65535'e kadar rakamları yazabilirsin. Yada 12345 şeklinde en fazla.
SAYI=0 (Word tipinde) :TUS=0 ile başlıyoruz. Formülümüz SAYI=SAYI*10+TUS şeklinde olacaktır.
İlk basılan Tus=1 dir.  O halde SAYI=0*10+1=1 olacaktır. Bunu ekrana ver LCDOUT $fe,$80,dec SAYI
İkinci basılan Tus=2 dir. O halde SAYI=1*10+2=12 olacaktır. Aynı şekilde bunu ekrana ver.
Üçüncü basılan Tus=3 dür. O halde SAYI=12*10+3=123 olacaktır. Doğruca ekrana yazdır.
Dördüncü basılan TUS=4 dür. O halde SAYI=123*10+4=1234 olacaktır. Bunuda ekrana yazdır.
Beşinci olarak basılan TUS=5 dir. O halde SAYI=1234*10+5=12345 olacaktır. Ekrana yazdır.

Şayet yazdıracağın sayı dizisi 5 rakamdan fazla ise yada 65535 den büyük ise o zaman her biti ayrı yazdırman gerekecek. Şöyle.
İki yolu var, birincisi LCD ninkendi pozisyon fonksiyonunu kullanırsın. Şayet LCDOUT $FE,$80 komut'unu verip ardından;
Tus=1 olunca yalnızca LCDOUT DEC TUS dersen birinci satır ve birinci karekter pozisyonuna 1 rakamı oturur.
SOnra TUS=2 oldu diyelim. Bunuda LCDOUT DEC TUS şeklinde yazdırırsan bu sefer ekranda 12 rakamını görürsün.
Benzer şekilde TUS değeri girdikçe aynı şekilde yazdırırsan 16 karektere kadar yan yana yazdırırsın.

İkinci metod da pozisyon değişkeni tutarsın. Başlangıçta POZ=$80 ile başlarsın. İlk basılan TUS=1 olunca ekrana,
LCDOUT $fe,POZ,DEC TUS şeklinde yazdırırsın ve hemen ardırndan POZ=POZ+1 yaparsın
Sonra TUS=2 oldu diyelim hemen ardından LCDOUT $fe,POZ,DEC TUS şeklinde yazdırınca ekranda 12 rakamını görürsün.
Benzer şekilde hemen POZ=POZ+1 yaparsın. Bu şekilde devam ederek toplamda 16 karekteri ekrana yazdırabilrsin hemde yan yana.

Ete



ErdagK

#2
Öncelikle cok tesekkür ederim ete bey . konulardaki uzmanlıgınız amatörlüğümü anlamanızdanda anlasılıyor öncelikle kodlarımı göstereyim size
DEFINE LCD_DREG    PORTA
DEFINE LCD_DBIT        0
DEFINE LCD_EREG    PORTA
DEFINE LCD_EBIT        4
DEFINE LCD_RSREG   PORTB
DEFINE LCD_RSBIT       3
DEFINE LCD_BITS        4
DEFINE LCD_LINES       2
TUS VAR BYTE
SAYI VAR BYTE
SYMBOL SATIR1=PORTB.4
SYMBOL SATIR2=PORTB.5
SYMBOL SATIR3=PORTB.6
SYMBOL SATIR4=PORTB.7
SYMBOL SUTUN1=PORTB.0
SYMBOL SUTUN2=PORTB.1
SYMBOL SUTUN3=PORTB.2
TRISA=%00000000
TRISB=%00000111
PORTB=0
PORTA=0
GOSUB EKRAN
BASLA :
PAUSE 50
LCDOUT $FE,1
LCDOUT $FE,$14, ".   ."
TUS_TARAMA1 :
HIGH SATIR1
IF SUTUN1=1 THEN :TUS="1" :GOSUB EKRAN
IF SUTUN2=1 THEN :TUS="2" :GOSUB EKRAN
IF SUTUN3=1 THEN :TUS="3" :GOSUB EKRAN
LOW SATIR1

HIGH SATIR2
IF SUTUN1=1 THEN :TUS="4" :GOSUB EKRAN
IF SUTUN2=1 THEN :TUS="5" :GOSUB EKRAN
IF SUTUN3=1 THEN :TUS="6" :GOSUB EKRAN
LOW SATIR2

HIGH SATIR3
IF SUTUN1=1 THEN :TUS="7" :GOSUB EKRAN
IF SUTUN2=1 THEN :TUS="8" :GOSUB EKRAN
IF SUTUN3=1 THEN :TUS="9" :GOSUB EKRAN
LOW SATIR3

HIGH SATIR4
IF SUTUN1=1 THEN :TUS="*" :GOSUB EKRAN
IF SUTUN2=1 THEN :TUS="0" :GOSUB EKRAN
IF SUTUN3=1 THEN :TUS="#" :GOSUB EKRAN
LOW SATIR4
GOTO TUS_TARAMA2
EKRAN :
PAUSE 50
LCDOUT $FE,$80,"DEGER=",TUS   
RETURN

TUS_TARAMA2 :
HIGH SATIR1
IF SUTUN1=1 THEN :SAYI="1" :GOSUB EKRAN1
IF SUTUN2=1 THEN :SAYI="2" :GOSUB EKRAN1
IF SUTUN3=1 THEN :SAYI="3" :GOSUB EKRAN1
LOW SATIR1

HIGH SATIR2
IF SUTUN1=1 THEN :SAYI="4" :GOSUB EKRAN1
IF SUTUN2=1 THEN :SAYI="5" :GOSUB EKRAN1
IF SUTUN3=1 THEN :SAYI="6" :GOSUB EKRAN1
LOW SATIR2

HIGH SATIR3
IF SUTUN1=1 THEN :SAYI="7" :GOSUB EKRAN1
IF SUTUN2=1 THEN :SAYI="8" :GOSUB EKRAN1
IF SUTUN3=1 THEN :SAYI="9" :GOSUB EKRAN1
LOW SATIR3

HIGH SATIR4
IF SUTUN1=1 THEN :SAYI="*" :GOSUB EKRAN1
IF SUTUN2=1 THEN :SAYI="0" :GOSUB EKRAN1
IF SUTUN3=1 THEN :SAYI="#" :GOSUB EKRAN1
LOW SATIR4
GOTO TUS_TARAMA1
EKRAN1 :
PAUSE 50
LCDOUT $FE,$14,".",SAYI
RETURN

bu kodlarla ne olacagını söylemeye calısayım . bu kodlarla ekrana DEĞER= den sonra en fazla 3 rakam yazılacak bu rakamlar sırasıyla 123 seklinde değilde bastıgımız tus ekrana yazıcak soldan sağa . kodlarda lcdout$fe,$14 "." ise her rakamın arasına nokta koymak içindi fakat siz ne kadar detaylı anlatsanızda ben çok fazla bişey anladım diyemicem bu yazdıgım kodlardan devam ederek bi sonuca ulasamazmıyım ?   

ete

Kod gösterme şeklinizde acemiliğinizin bir aynası sanki. Mesajlarda verilen kodlara bir bakın hiç böylesini gördünüzmü?.
Nasıl yapıldığını anlatayım bari. Önce programı baştan sona seçerek kopyalıyorsunuz. Sonra mesaj yazdığınız ekranda üst kısımda "#" ile işaretlenmiş bir buton var buna code tag deniliyor. Ona tıklarsanız mesaj ekranında bir ibare belirecek ve kursor bu ibarenin ortasında yer alacak. Yada siz kursorü oraya yerleştireceksiniz. Sonra yapıştır dediğiniz zaman bütün kod oraya yerleşecek.
Yukarıda verdiğiniz ekran görüntülerini kaldırın yetine bunu yapın. Bu tür şeyler kısıtlı olan yerimizde kirlilik yaratmakta hemde görsel açıdan kötü görünmektedir. Kaldıramazsanız ben zaten iki gün içinde kaldıracağım.
Programın mevcut hali ile bir yere varıp varmıyacağına siz karar verin nasıl olduğunu anlattım. Acemilik ayıp değil ama bilgi eksikliği ile bir yere varmanız mümkün değil. Orada dersler var ve bu konular anlatılmış durumda. Öğrenin başarırsınız.
Ete

karacan451

#4
Sen en iyisi hasbi hocanın yanına gideceksin  derdini ona anlat işini halleder. Zaten büyük ihtimalle sizin dersinize giriyordur.

ErdagK

Alıntı yapılan: ete - 14 Kasım 2015, 07:50:05
Kod gösterme şeklinizde acemiliğinizin bir aynası sanki. Mesajlarda verilen kodlara bir bakın hiç böylesini gördünüzmü?.
Nasıl yapıldığını anlatayım bari. Önce programı baştan sona seçerek kopyalıyorsunuz. Sonra mesaj yazdığınız ekranda üst kısımda "#" ile işaretlenmiş bir buton var buna code tag deniliyor. Ona tıklarsanız mesaj ekranında bir ibare belirecek ve kursor bu ibarenin ortasında yer alacak. Yada siz kursorü oraya yerleştireceksiniz. Sonra yapıştır dediğiniz zaman bütün kod oraya yerleşecek.
Yukarıda verdiğiniz ekran görüntülerini kaldırın yetine bunu yapın. Bu tür şeyler kısıtlı olan yerimizde kirlilik yaratmakta hemde görsel açıdan kötü görünmektedir. Kaldıramazsanız ben zaten iki gün içinde kaldıracağım.
Programın mevcut hali ile bir yere varıp varmıyacağına siz karar verin nasıl olduğunu anlattım. Acemilik ayıp değil ama bilgi eksikliği ile bir yere varmanız mümkün değil. Orada dersler var ve bu konular anlatılmış durumda. Öğrenin başarırsınız.
Ete

Forum Kullanma hakkında bilgi istemedim :) iyi günler

Powered by EzPortal