tuş takımı yardım

Başlatan zabun92, 10 Şubat 2011, 22:43:49

zabun92

merhabalar öncelikle yardım almak istediğim konuyu anlatayım
keypad kullanarak 3 basamaklı bir sayı gireceğim sonra yıldız tuşuna bastığımda bu sayıyı rf ile bu sayıyı alıcıya bağlı pic okuyup lcd ye yazacak benim yardım almak istediğim konu sadece pic basic de bu tuşlara basarak 3 basamaklı sayıyı nasıl yazarım
lcd, keypad, rf, kullanmasını biliyorum ama sadece ÖRN: \"1\",\"8\",\"4\" tuşlarına bastığımda 184 sayısını değişkene nasıl yazarımonu bilmiyorum  :(  şimdiden teşekkür ederim  :)

subram

öncelikle  WORD tipinde bir kaydedici oluştur. girilen sayıyı tutacak(örn SAYI)

( X=girilen rakam)

ilk girilen rakamı 100 ile çarpıp SAYI değişkenine yüklesin. SAYI=X*100
ikinci girilen rakamı 10 ile çarpıp SAYI değişkenine (SAYI=SAYI+X*10) şeklinde yüklesin.
son girilen rakamıda direk olarak SAYI değişkenine yüklesin. SAYI=SAYI+X şeklinde
 daha sonra
LCDOUT komutu ile gönderirsin ekrana.


subram

#3
ekteki dosyalar işinizi  görür umarım.

@  device WDT_OFF &  pwrt_on & protect_on & cpd_on

define osc 20

Define  LCD_DREG       PORTD   \' LCD bağlantılarını tanımla
Define  LCD_DBIT     4
Define  LCD_RSREG      PORTE
Define  LCD_RSBIT       0
Define  LCD_EREG       PORTE
Define  LCD_EBIT      1

        ADCON1 = 7 \' PORTA ve  E dijital giriş çıkış olarak ayarla
        Low PORTE.2 \' LCD R/W low = yazma modu
        Pause 300    \' LCD başlamak için bekle

option_reg=0        \'PORTB Pulluplar etkin.
                    \'(Pullup=Portb\' nin tüm uçlarını +5V a çekmektir.lojik 1)

TRISB=%11110000     \'PORTB 7654 giriş 3210 çıkış olarak ayarlandı
TRISC=%00000000     \'PORTC Tüm uçlar çıkış olarak ayarlandı

portb=0:portc=0      \'PORTB ve PORTC yi 0 yap

lcdout $FE,1        \'LCD ekranı sil


\' ***************DEĞİŞKEN Tanımlama Blokları ****************
SW  var byte
i   VAR BIT
D   VAR BYTE
ED  VAR BYTE
SAYI  VAR WORD
\'**********************  Ana Program ************************
anadongu:
\'*******  1.satır taraması ******
portb=%11111110
\' portb.0 a 0 değeri verilerek 1.satır taraması gerçekleştirilir
\' buna göre portb.4,5,6,7 deki durum gözlenir.
\' Eğer bu butonlardan birine basıldıysa ilgili buton değişkeni 1 yapılır.
if portb.4=0 then SW=1:D=D+1
GOSUB TEST
if portb.5=0 then SW=2:D=D+1
GOSUB TEST
if portb.6=0 then SW=3:D=D+1
GOSUB TEST
if portb.7=0 then SW=4:D=D+1
GOSUB TEST
 
\'*******  2.satır taraması ******
portb=%11111101
\' portb.1 e 0 değeri verilerek 1.satır taraması gerçekleştirilir
\' buna göre portb.4,5,6,7 deki durum gözlenir.
\' Eğer bu butonlardan birine basıldıysa ilgili buton değişkeni 1 yapılır.

if portb.4=0 then SW=5:D=D+1
GOSUB TEST
if portb.5=0 then SW=6:D=D+1
GOSUB TEST
if portb.6=0 then SW=7:D=D+1
GOSUB TEST
if portb.7=0 then SW=8:D=D+1
GOSUB TEST

\'*******  3.satır taraması ******
portb=%11111011
\' portb.2 ye 0 değeri verilerek 1.satır taraması gerçekleştirilir
\' buna göre portb.4,5,6,7 deki durum gözlenir.
\' Eğer bu butonlardan birine basıldıysa ilgili buton değişkeni 1 yapılır.

if portb.4=0 then SW=9:D=D+1
GOSUB TEST
if portb.5=0 then SW=10:D=D+1
GOSUB TEST
if portb.6=0 then SW=11:D=D+1
GOSUB TEST
if portb.7=0 then SW=12:D=D+1
GOSUB TEST

\'*******  4.satır taraması ******
portb=%11110111
\' portb.3 e 0 değeri verilerek 1.satır taraması gerçekleştirilir
\' buna göre portb.4,5,6,7 deki durum gözlenir.
\' Eğer bu butonlardan birine basıldıysa ilgili buton değişkeni 1 yapılır.

if portb.4=0 then SW=13:D=D+1
GOSUB TEST
if portb.5=0 then SW=14:D=D+1
GOSUB TEST
if portb.6=0 then SW=15:D=D+1
GOSUB TEST
if portb.7=0 then SW=16:D=D+1
GOSUB TEST

IF D=0 then
lcdout $FE,$C0,DEC3 SAYI, \" nolu buton...\"   
ELSE
lcdout $FE,$C0,\"SAYI GiRiLiYOR\"
ENDIF
goto anadongu

TEST:
i=D-ED
IF i<>0 THEN


        IF D=1 THEN SAYI=SW*100
        IF D=2 THEN SAYI=SAYI+SW*10
        IF D=3 THEN  SAYI=SAYI+SW:D=0         
       
ED=D
PAUSE 150                             
endif
RETURN
end

zabun92


subram

devre tam olarak senin istediğin gibi değil ama pic basic biliyorsan geliştirebilirsin.

zabun92

sistemi çözdüm yardımlarınız için teşekkür ederim

Hızlı Yanıt

Not: Bu konu bir moderatör tarafından onaylanmadan görüntülenmeyecektir.

Adı:
E-Posta:
Doğrulama:
Lütfen bu kutuyu boş bırakın:
IRFP250 Nedir:
kısayollar: göndermek için alt+s veya önizleme yapmak için alt+p'ye basın