PIC MİKROKONTROLÖR TABANLI MİNİ-KLAVYE TASARIMI



Benzer belgeler
PIC TABANLI, 4 BASAMAKLI VE SER

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

Mikroişlemciler Ara Sınav---Sınav Süresi 90 Dk.

Hacettepe Robot Topluluğu

16F84 ü tanıt, PORTB çıkış MOVLW h FF MOWF PORTB

PIC 16F84 VE TEK BUTONLA BĐR LED KONTROLÜ

LCD (Liquid Crystal Display )

ROBOT KOL BİTİRME PROJESİ DÖNEM İÇİ RAPORU

Program Kodları. void main() { trisb=0; portb=0; while(1) { portb.b5=1; delay_ms(1000); portb.b5=0; delay_ms(1000); } }

IŞIĞA YÖNELEN PANEL. Muhammet Emre Irmak. Mustafa Kemal Üniversitesi Mühendislik Fakültesi. Elektrik-Elektronik Mühendisliği Bölümü

# PIC enerjilendiğinde PORTB nin 0. biti 1 olacak #PIC enerjilendiğinde PORTA içeriğinin tersini PORTB de karşılık gelen biti 0 olacak

Deney No Deney Adı Tarih. 3 Mikrodenetleyici Portlarının Giriş Olarak Kullanılması / /201...

Assembler program yazımında direkt olarak çizgi ile gösterilmemesine rağmen ekranınız ya da kağıdınız 4 ayrı sütunmuş gibi düşünülür.

UYGULAMA 05_01 MİKRODENETLEYİCİLER 5.HAFTA UYGULAMA_05_01 UYGULAMA_05_01. Doç.Dr. SERDAR KÜÇÜK

1. PORTB ye bağlı 8 adet LED i ikili sayı sisteminde yukarı saydıracak programı

LCD (Liquid Crystal Display)

DERS 7 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 örnek programlar Dallanma komutları Sonsuz döngü

TUŞ TAKIMI (KEYPAD) UYGULAMALARI

KONFİGÜRASYON BİTLERİ

BSF STATUS,5 ;bank1 e geçiş CLRF TRISB ;TRISB= BCF STATUS,5 ;bank0 a geçiş

PIC MİKROKONTROLÖR TABANLI ADIM MOTORU KONTROLU

Sistem Gereksinimleri: Uygulama Gelistirme: PIC Mikroislemcisinin Programlanmasi: PIC Programlama Örnekleri -1

Yrd.Doç. Dr. Bülent ÇOBANOĞLU. Sakarya Üniversitesi, Teknoloji Fakültesi

PIC MİKRODENETLEYİCİLERİN HAFIZA YAPISI. Temel olarak bir PIC içerisinde de iki tür hafıza bulunur:

MİKRO DENETLEYİCİLER II DERS NOTLARI (VİZE KONULARI) Prof. Dr. Hakan Ündil Bahar-Vize

PIC Mikrodenetleyiciler. Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 1

PIC UYGULAMALARI. Öğr.Gör.Bülent Çobanoğlu

B.Ç. / E.B. MİKROİŞLEMCİLER

PIC Mikrodenetleyicileri

Mikroislemci Kontrollu Prototip Trafik Lambalari ve Geri Sayici

PIC MIKRODENETLEYICILER-3: GECĠKME ve KESME PROGRAMLARI

8 Ledli Havada Kayan Yazı

Bu yürütme, Prof. Dr. Hakan ÜNDİL (Bir haftalık derse ait ders notudur)

T.C. MİLLÎ EĞİTİM BAKANLIĞI DENİZCİLİK MİKRODENETLEYİCİ 2

MİKRO DENETLEYİCİLER II DERS NOTLARI (Vize) Prof. Dr. Hakan Ündil Bahar

MİKRODENETLEYİCİ GELİŞTİRME SETİ TASARIM VE UYGULAMALARI. öğrencilerine eğitimleri esnasında iş hayatında karşılaşabilecekleri kontrol işlemleri ve

KOMUT AÇIKLAMALARI VE ÖRNEKLERİ

Komutların İşlem Süresi

T.C. MİLLÎ EĞİTİM BAKANLIĞI MEGEP (MESLEKİ EĞİTİM VE ÖĞRETİM SİSTEMİNİN GÜÇLENDİRİLMESİ PROJESİ) ENDÜSTRİYEL OTOMASYON TEKNOLOJİLERİ

PİC HAKKINDA KISA KISA BİLGİLER GİRİŞ/ÇIKIŞ PORTLARI

3.2 PIC16F84 Yazılımı PIC Assembly Assembler Nedir?

BLGM423 Gömülü Sistem Tasarımı

MİKROİŞLEMCİ (MİKROPROSESÖR - CPU) NEDİR? Prof. Dr. Hakan ÜNDİL (Bir haftalık derse ait ders notudur)

Hyper Terminal programı çalıştırıp Uygun COM portu ve iletişim parametrelerinin ayarları yapılıp bekletilmelidir.

Hacettepe Robot Topluluğu

T.C. MİLLÎ EĞİTİM BAKANLIĞI MEGEP (MESLEKİ EĞİTİM VE ÖĞRETİM SİSTEMİNİN GÜÇLENDİRİLMESİ PROJESİ) ENDÜSTRİYEL OTOMASYON TEKNOLOJİLERİ

DERS 12 PIC 16F84 ile KESME (INTERRUPT) KULLANIMI İÇERİK

Prof. Dr. Doğan İbrahim Yakın Doğu Üniversitesi, Mühendislik Fakültesi, Biyomedikal Mühendisliği, Bölümü Tel:

Mikroişlemci: Merkezi işlem biriminin fonksiyonlarını tek bir yarı iletken tümleşik devrede birleştiren programlanabilir sayısal elektronik devre

BÖLÜM 1 ALT PROGRAMLAR 1.1.ALTPROGRAM NEDİR?

İÇİNDEKİLER 1. KLAVYE KLAVYE RB KLAVYE RBHIGH DİSPLAY... 31

PIC 16F877 nin kullanılması

5. BÖLÜM - DÖNGÜ (ÇEVRİM) ve Z BAYRAĞI

PD103 BUTON LED UYGULAMA DEVRESİ UYGULAMA ÖRNEKLERİ MALZEME LİSTESİ

PROGRAMLANABİLİR ZAMANLAYICI

Mikro denetleyicili Uygulama devresi bileşenleri

Hacettepe Robot Topluluğu

MİKROİŞLEMCİLER VE MİKRO DENETLEYİCİLER 2 DERS NOTLARI Prof. Dr. Hakan Ündil Bahar-Final

# PIC enerjilendiğinde PORTB nin 0. biti 1 olacak #PIC enerjilendiğinde PORTA içeriğinin tersini PORTB de karşılık gelen biti 0 olacak

ELEKTRİK-ELEKTRONİK TEKNOLOJİSİ

MİKRODENETLEYİCİLER II DERS NOTLARI Prof. Dr. Hakan ÜNDİL Bahar-FİNAL KISMI

MİKRODENETLEYİCİLER ÖRNEK PROGRAMLAR

EEProm 24C08 UYGULAMA AMAÇ 24C08 MCU_VCC. e r : d e G. Sayfa - 1

MİKRODENETLEYİCİLER 2 DERS NOTLARI Prof. Dr. Hakan ÜNDİL Bahar-Final Kısmı

HUNRobotX - Makaleler - Hız Ayarlı Çoklu DC Motor Kontrolü. Makaleler Hız Ayarlı Çoklu DC Motor Kontrolü

T.C FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ EET-302 MİKROİŞLEMCİLER LABORATUVARI DENEY FÖYÜ

EasyPic 6 Deney Seti Tanıtımı

Hacettepe Robot Topluluğu

DENEY-2. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ

Bu dersimizde pic pinlerinin nasıl input yani giriş olarak ayarlandığını ve bu işlemin nerelerde kullanıldığını öğreneceğiz.

T.C FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ EET-302 MİKROİŞLEMCİLER LABORATUVARI DENEY FÖYÜ

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUARI MİKROİŞLEMCİLİ A/D DÖNÜŞTÜRÜCÜ

T.C. NİĞDE ÜNİVERSİTESİ MÜHENDİSLİK-MİMARLIK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ

Mikroişlemci ile Analog-Sayısal Dönüştürücü (ADC)

LPC2104 Mikro Denetleyicisini KEIL İle Programlamak

T.C. NİĞDE ÜNİVERSİTESİ MÜHENDİSLİK-MİMARLIK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ. Uzaktan Kumanda Edilen Lamba Dimmer inin Gerçekleştirilmesi

PIC MİKRODENETLEYİCİ KULLANARAK BİR SİSTEMİN TELEFONLA UZAKTAN KONTROLÜ

PIC16F87X te ADC MODÜLÜNÜN KULLANIMI

Microprocessors and Programming

ÖĞRENME FAALİYETİ-1 ÖĞRENME FAALİYETİ 1

MİKROİŞLEMCİ (Microprocessor) NEDİR?

ÇİZGİ İZLEYEN ROBOT YAPIMI

KANPUR/microcontrollers/micro/ui/Course_home3_16.htm Yrd.Doç. Dr.

MİKRODENETLEYİCİLER II DERS NOTLARI Prof. Dr. Hakan ÜNDİL Bahar-FİNAL KISMI

T.C. MİLLÎ EĞİTİM BAKANLIĞI ELEKTRİK ELEKTRONİK TEKNOLOJİSİ MİKRODENETLEYİCİYLE ANALOG İŞLEMLER 523EO0022

Adres Yolu (Address Bus) Bellek Birimi. Veri Yolu (Databus) Kontrol Yolu (Control bus) Şekil xxx. Mikrodenetleyici genel blok şeması

T.C. MİLLÎ EĞİTİM BAKANLIĞI MEGEP (MESLEKİ EĞİTİM VE ÖĞRETİM SİSTEMİNİN GÜÇLENDİRİLMESİ PROJESİ) ELEKTRİK ELEKTRONİK TEKNOLOJİSİ

EEM 419-Mikroişlemciler Güz 2017

MANCHESTER MODUL ASM YAZILIM NOTU

BÖLÜM 3 3. PIC 16F8X KOMUTLARI 3.1.KULLANILAN SEMBOLLER: 3.2.KOMUTLAR VE KULLANIM ÖRNEKLERİ

PIC MCU ile UYGULAMALAR

A.Ü. GAMA MYO. Elektrik ve Enerji Bölümü ALGORİTMA VE PROGRAMLAMA 1.HAFTA

Pic 16f628 işle m cis i 4 MH z'- lik bir k ris talos ilatörle çalışabile ce ğ i gibi olduk ça k a- rarlı olan 4 M H z'lik iç os ilatörü

T.C. MİLLİ EĞİTİM BAKANLIĞI MEGEP (MESLEKÎ EĞİTİM VE ÖĞRETİM SİSTEMİNİN GÜÇLENDİRİLMESİ PROJESİ) BİLİŞİM TEKNOLOJİLERİ MİKRODENETLEYİCİ-3

GAZİ MESLEK YÜKSEK OKULU ELEKTRONİK TEKNOLOJİSİ

2. SD KARTLAR yıllarında teknolojinin gelişmesiyle daha küçük boyutlu hafıza kartlarına olan ilgi artmıştır. Bu yıllarda mikrosd kartlar

MİKRODENETLEYİCİLER I DERS NOTLARI Prof. Dr. Hakan Ündil Güz (Vize sonuna kadar olan kısımdır.)

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUARI İKİLİ TABANDA ÇOK BAYTLI ÇARPMA

Deney 10: Analog - Dijital Dönüştürücüler (Analog to Digital Converters - ADC) Giriş

ACD BİLGİ İŞLEM ACD KABLOSUZ VERİ TOPLAMA SİSTEMLERİ URT-V2 KABLOSUZ VERİ TOPLAMA TERMİNALİ DONANIM TEKNİK BELGESİ. URT-V2 Terminallerinin

Transkript:

PIC MİKROKONTROLÖR TABANLI MİNİ-KLAVYE TASARIMI Prof. Dr. Doğan İbrahim Yakın Doğu Üniversitesi, Bilgisayar Mühendisliği Bölümü, Lefkoşa, KKTC E-mail: dogan@neu.edu.tr, Tel: (90) 392 2236464 ÖZET Bilgisayarlara veri girişinde en yaygın olarak kullanılan bir cihaz olan klavyelerin çok çeşitleri bulunmaktadır. PC uygulamalarında ve diğer birçok bilgisayar işlemlerinde çok tuşlu, tam boy klavye kullanılmaktadır. Mikroişlemci ve mikrokontrolör destekli birçok kontrol uygulamalarında ise 12-16 tuşlu miniklavyeler kullanılmaktadır. Bu makalede 12 tuşlu bir klavyenin PIC mikrokontrolöre bağlanması ve programlanması incelenmektedir. 1. GİRİŞ Herhangibir bilgisayara veri girmek için birçok metod kullanılabilir. Klavye, optik okuyucu, tarayıcı, fare, sayısal kamera, magnetik kart ve benzeri cihazlar en yaygın olarak kullanılan giriş cihazları arasındadırlar. Genel amaçlı PC uygulamalarında giriş tam boy klavye ve fare kullanılarak yapılmaktadır. Masa üstü yayıncılık gibi daha geniş uygulamalarda ise tarayıcı ve sayısal kamera gibi girişler de kullanılmaktadır. Birçok mikroişlemci ve mikrokontrolör tabanlı kontrol uygulamalarında ise genellikle 12 veya 16 tuşlu olan ve belirli bir uygulama için geliştirilen mini-klavyeler kullanılmaktadır 3,4,5. Örneğin, evlerimizde bulunan televizyon uzaktan kontrol cihazlarında mini-klavye kullanılmaktadır. Bunun gibi, giriş gerektiren hemen her türlü mikroişlemci uygulamalarında klavye kullanılmaktadır. Mikroişlemci ve mikrokontrolör devrelerinde mini-klavye kullanımı için birçok değişik metodlar bulunmaktadır. Örneğin, 16 tuşa kadar olan herhangibir mini-klavyeyi bir mikroişlemciye bağlamak için 74C922 1 gibi özel klavye entegre devreleri kullanılabilir. Böyle bir uygulamada klavyenin bacakları direk olarak entegre devreye bağlanır ve entegre devrenin çıkışları ise mikrokontrolöre giriş olarak bağlanır. Böylece, klavye üzerinde herhangibir tuşa basılınca, o tuşun kodu mikroişlemciye aktarılmış olur. Klavye entegre devresinin kullanımı kolay olmasına rağman fiyatının yüksek oluşu nedeniyle birçok uygulamalarda kendi klavye kontrol devremizi kurmamız daha uygun olmaktadır. Bu yazımızda, PIC16F84 2,6,7,8 modeli bir mikrokontrolör kullanarak bir mini-klavyeden nasıl veri okunacağı açıklanmaktadır. Projenin en büyük avantajı ucuz oluşu ve kolaylıkla kurulabilmesidir. 2. DONANIM Sadece birkaç tane giriş gerektiren projelerde bu girişler normal olarak buton kullanılarak yapılmaktadır. Daha çok giriş gerektiren projelerde klavye kullanmak daha uygun olmaktadır. Klavyelerin çok çeşitleri bulunmaktadır, örneğin, 4 satır ve 4 sütünu olan ve 4x4 diye bilinen 16 tuşlu klavyeler, 4 satır ve 3 sütunu olan ve 4x3 diye bilinen 12 tuşlu klavyeler ve bunlar gibi daha birçok çeşit klavyeler. Bu projede PIC16F84 7 modeli bir mikrokontrolöre 4x3 bir klavye bağlanmıştır. Klavyenin 12 tane tuşu bulunmakta ve herhangibir tuşa basılınca o tuşun kodu (0 dan 11 e kadar) 4 bit çıkış olarak mikrokontrolörden verilmektedir. Buna ilaveten, herhangibir tuşa basılınca mikrokontrolörün VH (veri hazır) diye adlandırılan bir çıkış bacağı 25ms kadar bir zaman için lojik 0 olmaktadır. Bu bacak hem bir tuşa basıldığını belirtiyor ve hem de kontak parazitlerini önlemiş oluyor. Şekil 1 de tipik 4x3 bir klavyenin yapısı gösterilmiştir. Bu klavyenin 4 tane satırı ve 3 tane de sütunu olmak üzere 12 tane tuşu bulunmaktadır. Klavye devrelerinin çalışması oldukça basittir. Bu projede sütunlar çıkış ve satırlar ise giriş olarak kullanılmışlar ve Şekil 2 de gösterildiği gibi girişler dirençler ile yukarı çekilmiştirler. Klavyeyi kontrol etmek için sadece bir sütun lojik 0 ve diğer sütunlar lojik 1 yapılır. Daha sonra satırlar birer birer kontrol edilir ve bir satırda herhangibir tuş basılmışsa o satırın değeri lojik 0 olarak okunur. Bu şekilde bütun sütunlar için ayni işlem süreki olarak yapılır. Örneğin, Şekil 2 yi göz önünde bulunduralım. İlk olarak sütun 1 lojik 0 yapılır. Daha sonra

satır 1, satır 2, satır 3 ve satır 4 ün değerleri okunur. Örneğin, 1 nolu tuş basılmışsa satır 2 lojik 0 olur ve mikrokontrolöre 1011 kodu gönderilir. 0 4 8 1 2 3 4 1 5 9 2 6 A 3 7 B Satırlar Şekil 3 Bazı klavye çeşitleri 1 2 3 Sütunlar Şekil 1 4x3 klavye bağlantıları +V PIC 16F84 Basılan tuşun kodu 1 0 4 8 KLAVYE Şekil 4 Projenin blok şeması Veri hazır (VH) 2 3 1 5 9 2 6 A 4 3 7 B 1 2 3 Şekil 2 4x3 klavyenin çalışması Şekil 3 de bazı 4x4, 4x3 (projede kullanılan) ve 4x1 klavyelerin resimleri gösterilmiştir. Projenin blok şeması Şekil 4 de gösterilmiştir. Klavyenin sütun ve satırları mikrokontrolöre bağlanmış ve basılan tuşun değeri ise mikrokontrolörden çıkış olarak verilmiştir. Projenin devresi Şekil 5 de verilmiştir. Klayenin satırları mikrokontrolörün RB0-RB3 giriş bacaklarına, sütunları ise RB4- RB6 çıkış bacaklarına bağlanmıştırlar. RB7 bacağı ise herhangibir tuşun basıldığını belirten VH (veri hazır) bacağı olarak kullanılmıştır. Projede mikrokontrolör RC osilatörü kullanılarak 400kHz saat frekansı ile çalıştırılmıştır. Şekil 5 Projenin devresi Şekil 2 ve Şekil 5 göz önünde bulundurulursa, basılan herhangibir tuş, ve klavyenin sütun ve satırları arasında Tablo 1 de verilen bağıntı bulunmaktadır. Yazılımda bu bağıntıyı kullanarak hangi tuşun basıldığını kolaylıkla bulabiliriz. Hangi tuşun basıldığını bulmanın bir diğer yolu da sütunları birer birer lojik 0 yapmak ve hangi satırın lojik 0

olduğunu kontrol etmektir. Bu projede ikinci çözüm yolu kullanılmıştır. Tablo 1. Sütunlar, satırlar ve basılan tuş Sütun Satır Tuş 1 2 3 1 2 3 4 0 1 1 0 1 1 1 0 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 2 0 1 1 1 1 1 0 3 1 0 1 0 1 1 1 4 1 0 1 1 0 1 1 5 1 0 1 1 1 0 1 6 1 0 1 1 1 1 0 7 1 1 0 0 1 1 1 8 1 1 0 1 0 1 1 9 1 1 0 1 1 0 1 A 1 1 0 1 1 1 0 B 3. YAZILIM Projenin yazılım listesi Şekil 6 da verilmiştir. İlk olarak PORT A ve PORT B yönleri tanımlanır ve Veri Hazır çıkışı lojik 1 yapılır (veri hazır değil). Daha sonra sütunlar lojik 0 yapılarak satırların lojik 0 olup olmadıkları kontrol edilir. Herhangibir satır lojik 0 ise o satırda bulunan 3 tuştan birinin basılmış olması gerekir. Hangi sütunu lojik 0 yapmışsak basılan tuş o sütundadır. Böylece, basılan tuş bulununca PORT A dan 4 bitlik bir sayı olarak gönderilir. Ayni zamanda VH çıkışı 25ms kadar bir zaman için lojik 0 yapılır. Yazılımda, Tablo 1 i kullanarak ve satırları okuyarak basılan tuşu bulmamız da mümkündür. mikroişlemci sadece klavyeden okuma işlemini yapmaktadır. Bunun sebebi ise yazılımın çokgörevli (multi-tasking) olmayışıdır. Yazılımda kesme (interrupt) kullanarak ve klavye okumasını kesme rutini içine alarak çok görevli bir ortam yaratmak mümkündür. Böylece, ayni mikrokontrolör hem klavye okuma işlemini ve hem de projenin diğer işlemlerini yapabilir. 5. KAYNAKÇA [1] web sitesi: www.fairchildsemi.com [2] Ibrahim, D. (2003). PIC C İle PIC Programlama, ERA Bilgi Sistemleri, INFOGATE yayınları. [3] Ibrahim, D. (2000). Microcontroller Projects in C For the 8051. Butterworth- Heinemann, Oxford. [4] Ibrahim, D. (2001). PIC Basic: Programming and Projects. Butterworth- Heinemann, Oxford. [5] Ibrahim, D. (2002). Microcontroller Based Temperature Monitoring and Control Butterworth- Heinemann, Oxford. [6] Ibrahim, D. (2003). PIC C İle Ses Projeleri Bileşim Yayıncılık, Fuarcılık A.Ş., http://www.bilesim.com.tr [7] Microchip web sitesi: www.microchip.com [8] Adım Adım PICmicro Programlama, Era Bilgi Sistemleri, INFOGATE yayınları. 4. SONUÇ Bu yazımızda, 4x3 bir mini-klavyenin bir PIC mikrokontrolöre nasıl bağlandığı ve nasıl programlandığı açıklanmıştır. Tasarımı yapılmış olan klavye sistemi oldukça ucuza mal olmakta ve mikroişlemci ve mikrokontrolör tabanlı sistemlerde mini-klavye kullanımı olanağını sağlamaktadır. Bu makalede örnek olarak 4x3 mini-klavye ele alınmıştır. Fakat makalede açıklanan metodları kullanarak, herhangibir boyutta bir klavye kullanmak mümkündür. Bu tip uygulamalarda genellikle ********************************************************************************* MİKROKONTROLÖR KLAVYE PROJESİ Bu projede 4x3 bir klavye kullanılmıştır. Klavyenin herhangibir tuşuna basılınca o tuşun kodu (0 ve 11 arası) mikrokontrolden çıkış olarak verilir. Klavyenin satırları RB0-RB3 bacaklarına ve sütunları ise RB4-RB6 bacaklarına bağlanmıştır. Klavyenin satırları giriş ve sütunları ise çıkış olarak

tanımlanmıştır. Giriş bacakları ayni zamanda 100K dirençlerle yukarı çekilmiştirler. Mikrokontrolör RC kullanılarak 400kHz ile çalışmaktadır, bunun için ise 10K direnç ve 33pF kapasitör kullanılmıştır. Herhangibir tuşa basınca o tuşun kodu PORT A dan 4 bitlik çıkış olarak verilmektedir. Mikrokontrolörün RB7 bacağı Veri Hazır (VH) bacağı olarak isimlendirilmiştir. Herhangibir tuşa basınca bu bacak da lojik 0 a gier ve 25ms kadar lojik 0 da kalır. Bu şekilde kontak parazitleri de önlenmiş olur. Pb0, Pin 6 ->------------0 ----- 4 ----- 8 Pb1, Pin 7 ->------------1 ----- 5 ----- 9 Pb2, Pin 8 ->------------2 ----- 6 ----- A Pb3, Pin 9 ->------------3 ----- 7 ----- B Pb4, Pin 10 ->----------- Pb5, Pin 11 ->------------------- Pb6, Pin 12 ->-------------------------- ******************************************************************************* Title KLAVYE PROJESİ LIST p = 16F84 #include "p16f84.inc" CONFIG _WDT_OFF & _RC_OSC & _PWRTE_ON & _CP_OFF TANIMLAR #define VH PORTB,7 Veri Hazır YAZMAÇLAR sayac equ 0x20 ORG 0x00 Programın başı basla Alt-program ------------------------------------------------------------------------------------------------ init bsf STATUS,RP0 BANK 1 i seç clrf TRISA Port A hep çıkış movlw b'00001111' Port RB0-3 in, RB4-7 out movwf TRISB bcf STATUS,RP0 Bank 0 seç bsf VH Veri Hazır=1 retlw 0 ******************************************************************************* ANA PROGRAM Herhangibir tuşun basıldığını kontrol etmek için her sütunu lojik 0 yap ve lojik 0 olan satırı bul. ******************************************************************************* basla call init Giriş çıkışları tanımla tara bcf PORTB,4 RB4 ü 0 yap bsf PORTB,5 Diğer sütunları 1 yap bsf PORTB,6

PORTB,0 1 ise sonrakine bak basildi_0 PORTB,1 basildi_1 PORTB,2 basildi_2 PORTB,3 basildi_3 bcf PORTB,5 RB5 i 0 yap bsf PORTB,4 Diğerlerini 1 yap bsf PORTB,6 PORTB,0 basildi_4 PORTB,1 basildi_5 PORTB,2 basildi_6 PORTB,3 basildi_7 bcf PORTB,6 RB6 yı 0 yap bsf PORTB,4 Diğerlerini 1 yap bsf PORTB,5 PORTB,0 basildi_8 PORTB,1 basildi_9 PORTB,2 basildi_a PORTB,3 basildi_b Herhangibir tuşa basılmadı bsf VH VH=1 tara Tuşlara bakmayı tekrarla ---------------------------------------------------------------------------------------------------------------- Bir tuşa basıldı basildi_0 movlw 0 parazit basildi_1 movlw 1 parazit basildi_2 movlw 2 parazit

basildi_3 movlw 3 parazit basildi_4 movlw 4 parazit basildi_5 movlw 5 parazit basildi_6 movlw 6 parazit basildi_7 movlw 7 parazit basildi_8 movlw 8 parazit basildi_9 movlw 9 parazit basildi_a movlw 0x0A parazit basildi_b movlw 0x0B ---------------------------------------------------------------------------------------------------------------- Aşağıdaki gecikme sayesinde, VH bacağı en az 25ms lojik 0 da kalır. 400KHz saat ile yaklaşık gecikme şu kadardır: 10uS*10saykıl*256 us = 25mS ---------------------------------------------------------------------------------------------------------------- parazit movwf PORTA Port A ya tuşun kodunu gönder bcf VH VH = 0 yap clrf sayac 256 sayım için bekle decfsz sayac, 1 bekle tara Tekrar başına git end Şekil 6 Projenin yazılım listesi