Tuş takımı yapabilmek için kod

Başlatan einstain90, 16 Mart 2007, 19:24:31

einstain90

tuş takımı yapmam gerekiyor bunun için ben mesala port b.5 ile port.4 pinlerimnin ucunun birleştiğini nasıl anlarım birde


lcd nin 2 satırının 5. sütünuna a harfini  nasıl yazarım boşluk koymadan?
Her işte her zaman bir aksilik çıkar.Siz yeterki pes etmeyin...

ete

PortB.5 pinini giriş olarak ayarla ve pull up ları aktif yap.
Sonra PortB.4 pinini çıkış yap ve pine den LOW çıkar. PortB.4 ile PortB.5 buton üzerinden birleşirse giriş olarak HIGH da bekleyen PortB.5,  LOW olarak çıkışta duran PortB.4 nedeni ile LOW'a çekilir. Buradan iki pinin çakıştığını anlarsın. Kısaca ;
IF PORTB.5=0 ise tuş basıldı
IF PORTB.5=1 ise tuşa basılmadı demektir.

İkinci sorunun cevabı ise;
LCDOUT $FE,$C0,"A" komutu satırını başına yazayor biliyorsun. $C0 dan itibaren sağa doğru sayarsak, $C0-birinci sütüna ,$C1-ikinci sütuna, $C2-üçüncü sütuna , $C3-dördüncü sütuna, ve $C4 ise 5.sütuna A harfini koyacaktır. O halde komut;
LCDOUT $FE,$C4,"A"    şeklinde olacaktır.

ETE
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

einstain90

benim lcd zaten 2 satır ben 5 satıra değil 5 . sütüna yazmak istiyorum:D

şu tuş olayındada

IF PORTB.5=0 AND PORTB.4=1 THEN  KARAKTER=1

yani eğer portb.5 low olursa portb.4de hing olur değilmi?
Her işte her zaman bir aksilik çıkar.Siz yeterki pes etmeyin...

ete

Bende zaten 2. satır, 5. sütuna nasıl A harfi yazdırılacak onu anlattım. 5 satır diye bir tabir kullanmadım nereden çıkardın 5. satır olayını?
LCD de $FE değeri bir komut verileceğini gösterir. Sonra yer alan değer ise İlgili satırda hangi sütuna yazılacağını gösterir.
$80 birinci satırın başını yani birinci sütunu
$C0 ikinci satırın birinci sütununu
şayet LCD 4 satırlık ise;
$D4 üçüncü satır birinci sütunu
$94 ise 4 satır birinci sütunu işaret eder. SOnraki sütünlar için bu değerlerin üserine her bir ilave sütün için sütün sayısı eklenmelidir. Değer sıfırdan başladığı için sütün sayısının bir eksiği eklenmelidir. O yüzden 5. sütün için $C0 + $04 = $C4, 5. sütün değeridir.

Sütun olayını anlamadığın gibi tuş olayınıda anlamamışsın.
şu tuş olayındada

Alıntı Yap
şu tuş olayındada

IF PORTB.5=0 AND PORTB.4=1 THEN KARAKTER=1

yani eğer portb.5 low olursa portb.4de hing olur değilmi?
PortB.5 giriş olarak ayarlandığına göre bu pine LOW (GND) bağlarsam ve bu pinin değerine bakarsam ne okurum? tabiiki LOW (GND) okurum.
Peki bu pine HIGH (+5V) bağlarsam ve bu pinin değerini okursam ne görürüm tabiiki HIGH. Bu kısmı anladın umarım.
Şimdi PortB.4 çıkış idi ve PortB.4 den LOW çıkardık (LOW  PORTB.4).
Şimdi PortB.5 ile PortB.4'ü birleştirirsek ne olur. Otomatikman PortB.5'e LOW bağlamış oluruz. İşte bu birleşme buton (tuş) üzerinden olacaktır.
Sen şöyle yapacaksın;
LOW PortB.4
If PortB.5=o then Karekter=1
Yani tuşa basılmış ise kareker=1 olmuş oluyor.
Burada PortB.4 ün değerine bakılmaz. Çünki zaten onu sen LOW'a çektin dolayısıyla değerinin ne olduğunu biliyorsun zaten sana lazım da değil.

Tuş takımında bir yatay uçlar bir de dikey uçlar vardır. Ya yataylar giriş yapılr dikeyler çıkış yada tersi yapılabilir. Buna göre çıkış yapılanların tamamı high yapılır. Giriş olan uçlarda pull up dirençleri nedeni ile high da beklerler. Sonra sıra ile çıkış uçları LOW yapılır ve girişlerden herhangi bir low olmuşmu bakılır. Matrix yerleşmeye göre hangisi low olmuş ise giriş ve çıkış pini hangi tuş üzerinden çakışıyor ise o tuşa basılmış demektir. Tuşun karekter değeri ne ise o değeri değişkenine verirsin.
Olayın temel mantığı budur.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com