PIC16F877 / Sayı – 11
Bu ay ki yazı dizimizde yürüyen ışıklı yazı panosuna tuş takımının eklenişi anlatılıyor.
DOTMATRİKS DEVREYE KLAVYE EKLENMESİ
Tuş Takımı Bölümü
Geçen ayki verdiğimiz devreye aşağıdaki tuş takımı eklenerek klavyeden yazı gönderilebilir.
16 adet bas-çek buton 4×4 matris düzeninde PORTB'nin 8 bacağına bağlanmıştır.
Matris oluşturan 4 satır PORTB.4-PORTB.3 arasına 270 ohm luk dirençler (R1-R4)
üzerinden, 4 sütunsa PORTB.4-PORTB.7 arasına doğrudan bağlanmıştır. Bu bağlantı
düzeniyle herhangi bir butonun durumunun basılı veya değil PICmicro tarafından okunabilmesi amaçlanmıştır. Butonların durumu okumadan önce PORTB "pullup"
dirençleri uygulama programınızda etkinleşmiş olmalıdır. "pull up" dirençlerini etkinleştirdiğimizde PICmicro sanki PORTB.4-PORTB.7 bacaklarıyla VDD arasına direnç bağlamışsınız gibi davranacaktır.
Anolog portu olan PICmicro'ların çalışmaya başlama anında PORTA konfigürasyonu
analog giriştir.
Aşağıdaki PicBasic PRO komutunu
OPTION-REC.7=0
veya assembly komutunu
bcf status,6 ;1.yazmaç
bsf status,5 ;bankasını seç.
bcf option-reg,7 ;portB�pull-up� dirençleri etkin.
bcf status,5 ;0.yazmaç bankasına dön.
bu etkileştirme işleminde kullanabiliriz.
Bu proje çalışmasında, insanların gözlerine hitap eden ışıkların kullanılması ve hareketli
olması sebebiyle oldukça dikkat çeken bir reklam panosu tasarlanmıştır. Bu pano sadece reklam amacıyla değil bir duyuru ve olayı geniş kitlelere iletmek için de kullanılabilir.
Devrenin blok diyagramı aşağıda gösterilmektedir. Blok diyagramında görüldüğü gibi 6 ayrı bölümünden oluşmaktadır. Display olarak 6×48 dot matrisi display kullanılmıştır. Tarama katında ise 3 adet 4×16 decoder ve bu decoderleri seçmek için de 3×8 decoder kullanılmıştır.(2)
Butonların durumları,sırasıyla satırlardan birini toprağa çekip, diğer PORTB bacaklarını da GİRİŞ yaptıktan sonra, 4 sütuna bağlı PORTB.4-PORTB.7 bacaklarının mantıksal seviyesi okunarak anlaşılmaktadır. Butonun basılı olması mantıksal değer olarak "0"a, basılı olmamasıyla mantıksal değer olarak "1"e karşılık gelmektedir. Program akışında sütunlardan birinin değeri "0" olduğunda toprağa çekilen satırda baştan bilindiğinden, matriste o satır-sütun değerine karşılık gelen butonun basıldığı da program tarafından belirlenmiş olacaktır.