Proton basicde Lcdde numaraları kaydırmak

Katılım
18 Ocak 2008
Mesajlar
1,088
Puanları
156
Yaş
40
Arkadaşlar selamun aleyküm...Ben proton basic kullanarak bir tuş takımını okutup Lcd ekranda sıra ile bastığım tuşun ekrana gelmesini istiyorum ama sorun şurda çıkıyor karşıma
Tuş takımını aşağıda örneğini vereceğim şekilde okutuyorum ve bastığım tuş ekranda görünüyo fakat elimi çekince numara da siliniyo oysa ben istiyorum ki tuşa her bastığımda bir önceki numarayı sola doğru ötelesin ve son bastığım tuşu ekranda göstersin örneğin 01234567896 numarasını ele alalım burda en önce 0 tuşuna basılmış ve sırası ile geriye kalan tuşlar basılmış olsun ekrana en sağdan başlayıp ilk bastığım tuşu sola sola kaydıracak bir programın mantığı nedir en canlı örnek cep telefonlarımızda birisini aramak için numarasını tuşlarken ki olan sistemin aynısı yine aynı bir tuş ile de son yazdığımızı silebileceğimiz bir program en mantıklı nasıl olur
Benim Tuş takımını okuturken kullandığım mantık şu önce satırları tanımlıyorum sonra stunları

symbol sat_1=portb.7
symbol sat_2=portb.6
symbol sat_3=portb.5
symbol sat_4=portb.4
symbol sut_1=portb.3
symbol sut_2=portb.2
symbol sut_3=portb.1
symbol sut_4=portb.0
dim tus as byte
tus=0
basla:
high sat_1
while sut_1=1
tus=1
gosub Ekran
wend
tus=0
while sut_2=1
tus=2
gosub ekran
wend
sut=0
while sut_3=1
tus=3
gosub ekran
wend
tus=0
while sut_4=1
tus="A"
gosub ekran
wend
tus=0
low sat_1
high sat_2
while sut_1=1
tus=4
gosub ekran
wend
tus=0
while sut_2=1
tus=5
gosub ekran
wend
tus=0
while sut_3=1
tus=6
gosub ekran
wend
tus=0
while sut_4=1
tus="B"
gosub ekran
wend
low sat_2
high sat_3
"
"
"
"
"
"goto basla
ekran:
print at 1,1,"tus= ",#tus
return

arkadaşlar bu tam çalışan ve benim devremdeki program değil sadece mantığı yani yaptığım program da bunun gibi ama ekran etiketi ile return arasında sanırım işlem yapmam lazım ki ekrana gelecek veri silinmeden bir sola kaysın mantığı sizce nasıl olmalı ben birkaç yöntem buluyorum ama programı baya uzatıyor en kısa yoldan nasıl yapabilirim birde tecrübeli insanların fikrini alayım dedim
 
Arkadaşlar cevap basit sonunda onu da buldum ama program baya baya bi değişti ilgilenen arkadaşların işlerinde faydalı olabilir amacı ile burayada yazmakta fayda gördüm buyrun ...
komutumuz şu Print At 1,1,"murat" şeklinde girdiğimiz meşur komutumuzu şu şekilde esnettik mi halloldu demektir
önce bir değişken oluşturuyoruz adına stun diyelim
dim stun as byte
stun=1 'bunu bir yapıyoruz çünkü Ekran 1.stundan başlayacak

işte komut şu şekilde oluyor
basla:
gosub tus_oku
print at 1,stun,basılan_tus
stun=stun+1
goto basla
tus_oku:
xxxx
xxxx
xxxx
return
end


arkadaşlar bu da yetmez diyerek sizlere komple yapılmış ve 11 hane olarak ekrana yazımızı alacak bir programı da yolluyorum neden 11 hane çünkü ülkemizde telefon numaraları 11 hane :D

'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2008 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 07.11.2008 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
Device 16F877A
ADCON1=7
Config XT_OSC , WDT_OFF , PWRTE_OFF , BODEN_OFF , LVP_OFF , CP_OFF , DEBUG_OFF
XTAL=4
Declare LCD_DTPIN PORTB.4''''''''''''Lcd BAĞLANTISI''''''''''''''''''''''''''''''''''''''''''''''''''''''
Declare LCD_ENPIN PORTB.3
Declare LCD_RSPIN PORTB.2
Declare LCD_INTERFACE 4
Declare LCD_LINES 4''''''''''''''''''''''''LCD BAĞLANTISI''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
TRISD=$0F
Symbol sat_1=PORTD.7''''''''''''''TUŞ TAKIMI BAĞLANTISI''''''''''''''''
Symbol sat_2=PORTD.6
Symbol sat_3=PORTD.5
Symbol sat_4=PORTD.4
Symbol sut_1=PORTD.3
Symbol sut_2=PORTD.2
Symbol sut_4=PORTD.1
Symbol sut_3=PORTD.0''''''''''''''TUŞ TAKIMI BAĞLANTISI''''''''''''''''
DelayMS 750 'LCD AÇILMASI İÇİN
PORTD=0
Dim BASILAN_TUS As Byte
BASILAN_TUS="*"
Dim GERCEK_SAYI As Byte
GERCEK_SAYI=0
Dim STUN As Byte
STUN=1
Dim SATIR As Byte
SATIR=1
Print At 1,1,"TELEFON ARAMA MODULU"
Print At 2,1,"PROJESINDEN ILK"
Print At 3,1,"ORNEK PROGRAM"
Print At 4,1,"<< MURAT YAGCI >>"
DelayMS 5000 : Print $FE,1
BASLA:
GoSub TUS_OKU
GoSub GOSTER
GoTo BASLA
TUS_OKU:
BASILAN_TUS="X"
sat_4=0
sat_3=0
sat_2=0
sat_1=1
If sut_1=1 Then BASILAN_TUS="1":GERCEK_SAYI=1
If sut_2=1 Then BASILAN_TUS="4":GERCEK_SAYI=4
If sut_3=1 Then BASILAN_TUS="7":GERCEK_SAYI=7
If sut_4=1 Then BASILAN_TUS="*"
sat_1=0
sat_2=1
If sut_1=1 Then BASILAN_TUS="2":GERCEK_SAYI=2
If sut_2=1 Then BASILAN_TUS="5":GERCEK_SAYI=5
If sut_3=1 Then BASILAN_TUS="8":GERCEK_SAYI=8
If sut_4=1 Then BASILAN_TUS="0":GERCEK_SAYI=0
sat_2=0
sat_3=1
If sut_1=1 Then BASILAN_TUS="3":GERCEK_SAYI=3
If sut_2=1 Then BASILAN_TUS="6":GERCEK_SAYI=6
If sut_3=1 Then BASILAN_TUS="9":GERCEK_SAYI=9
If sut_4=1 Then BASILAN_TUS="#"
sat_3=0
sat_4=1
If sut_1=1 Then BASILAN_TUS="A"
If sut_2=1 Then BASILAN_TUS="B"
If sut_3=1 Then BASILAN_TUS="C"
If sut_4=1 Then BASILAN_TUS="D"
sat_4=0
Return
GOSTER:
If BASILAN_TUS="X" Or BASILAN_TUS="A" Or BASILAN_TUS="B" Or BASILAN_TUS="C" Or BASILAN_TUS="D" Or BASILAN_TUS="*" Or BASILAN_TUS="#" Then
Return
EndIf
If STUN=0 Then STUN=1
If STUN>11 Then STUN=1
Print At SATIR,STUN,BASILAN_TUS
STUN=STUN+1
DelayMS 150
Return
 
Print At SATIR,STUN,BASILAN_TUS değilde
Print At SATIR,STUN, DEC1 BASILAN_TUS desen sanki daha uygun olur tanımlanan byte ise 3 hane bir anda Lcd ekranda gözükebilir buda lcd karmaşıklığına sebeb olabilir
 
gunerdr ' Alıntı:
Print At SATIR,STUN,BASILAN_TUS değilde
Print At SATIR,STUN, DEC1 BASILAN_TUS desen sanki daha uygun olur tanımlanan byte ise 3 hane bir anda Lcd ekranda gözükebilir buda lcd karmaşıklığına sebeb olabilir
Aslında güzel fikir de tuşlar en fazla 1 karakter yazı yazar bir basmada o yüzden zaten amacımızda bu olduğundan problem olmaz sanırım ...
 

Forum istatistikleri

Konular
129,809
Mesajlar
930,319
Kullanıcılar
452,617
Son üye
tahir_akdg

Yeni konular

Geri
Üst