T.C. KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ TEK RENK GRAFİK LCD İLE OYUN UYGULAMASI

Benzer belgeler
T.C. KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ GRAFİK SIVI KRİSTAL EKRANLI SAYISAL TERMOMETRE

A-PDF Merger DEMO : Purchase from to remove the watermark T.C. KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

Mikroişlemci Nedir? Mikrodenetleyici Nedir? Mikroişlemci iç yapısı Ders Giriş. Mikroişlemcili Sistem Uygulamaları

1. Ders Giriş. Mikroişlemcili Sistem Uygulamaları

İçİndekİler. 1. Bölüm - Mİkro Denetleyİcİ Nedİr? 2. Bölüm - MİkroDenetleyİcİlerİ Anlamak

EEM 419-Mikroişlemciler Güz 2017

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

DOKUMANLAR

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

Hacettepe Robot Topluluğu

İÇİNDEKİLER. Lisans Bitirme Projesi Onay Formu Önsöz İçindekiler Özet Şekiller Dizini VII XI XIV

PIC 16F877 nin kullanılması

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

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

KONTROL VE OTOMASYON KULÜBÜ

BÖLÜM 1: MİKRODENETLEYİCİLER

KABLOLU ve KABLOSUZ ASENKRON SERİ HABERLEŞME SİSTEMİNİN GERÇEKLEŞTİRİLMESİ

4-Deney seti modüler yapıya sahiptir ve kabin içerisine tek bir board halinde monte edilmiştir.

PIC Mikrodenetleyicileri

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

LİSANS BİTİRME PROJESİ. PIC ile DARBE SAYICI TASARIMI

Configuration bitleri ve reset durumları hakkında kavramlar

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

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

Eğitim - Öğretim Yöntemleri Başlıca öğrenme faaliyetleri Kullanılan Araçlar Dinleme ve anlamlandırma

EEM 419-Mikroişlemciler Güz 2016

Haftalık Ders Saati Okul Eğitimi Süresi

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

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

BÖLÜM Mikrodenetleyicisine Giriş

T.C. KARADENİZ TEKNİK ÜNİVERSİTESİ Mühendislik Fakültesi. Elektrik-Elektronik Mühendisliği Bölümü AKILLI RÖLE SİSTEMİ

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

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

TUŞ TAKIMI (KEYPAD) UYGULAMALARI

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

Çizgi İzleyen Robot Yapımı

PIC KULLANARAK GÜÇ KARSAYISI ÖLÇÜM DEVRESİ TASARIMI VE SİMÜLASYON

5.Eğitim E205. PIC16F628 ve PIC16F877 Hakkında Genel Bilgi IF THEN ELSE ENDIF HIGH-LOW GOTO-END- PAUSE Komutları Tanıtımı ve Kullanımı PIC16F628:

YILDIZ TEKNIK ÜNİVERSİTESİ ELEKTRİK - ELEKTRONİK FAKULTESİ ELEKLTRONİK VE HABERLEŞME MÜHENDİSLİĞİ BÖLÜMÜ

PIC PROGRAMLAMA STEP MOTOR SÜRÜCÜ VE KONTROL AMAÇ NEDİR? Unipolar Step Motorlar. Uç TESPİTİ NASIL YAPILIR?

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

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

Arduino nedir? Arduino donanım ve yazılımın kolayca kullanılmasına dayalı bir açık kaynak elektronik platformdur.

Erzurum Teknik Üniversitesi RobETÜ Kulübü Robot Eğitimleri. ARDUİNO EĞİTİMLERİ I Arş. Gör. Nurullah Gülmüş

MİLLİ SAVUNMA ÜNİVERSİTESİ KARA HARP OKULU DEKANLIĞI BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ DERS TANITIM BİLGİLERİ

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

Ders devam zorunluluğu bulunmaktadır ve 2 hafta derse katılmayan öğrenci devamsızlıktan kalacaktır.

DENEY 9-A : PIC 16F877 ve LM-35 ile SICAKLIK ÖLÇÜM UYGULAMASI

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

PIC MİKRODENETLEYİCİLER İÇİN. mikrobasic DERLEYİCİSİ

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.

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

LPC2104 Mikro Denetleyicisini KEIL İle Programlamak

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

Birol Çapa Özen Özkaya Güz Dönemi Eğitimleri

EM205 26/9/2014. Programlamaya giriş Algoritmalar. Amaçlar

ESM-361 Mikroişlemciler. 1. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

PIC16F877A nın Genel Özellikleri

PIC PROG/DEKA PRO-2, Microchip mikro denetleyici ailesinde PIC16 ve PIC18 serisinin

GÖZCÜ ROBOTUNUN ELEKTROMEKANİK TASARIMI VE PROTOTİP ÜRETİMİ

PROGRAMLANABİLİR SİNYAL JENERATÖRÜ

8 Ledli Havada Kayan Yazı

7. Port Programlama. mikroc Dili ile Mikrodenetleyici Programlama Ders Notları -42- Şekil 2.1. Atmega16 mikrodenetleyici pin şeması

MİKROİŞLEMCİLER VE MİKRODENETLEYİCİLER

DERS 5 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 bacak bağlantıları PIC 16F84 bellek yapısı Program belleği RAM bellek Değişken kullanımı Komutlar

İÇİNDEKİLER IV LİSANS BİTİRME PROJESİ ONAY FORMU II ÖNSÖZ III

EasyPic 6 Deney Seti Tanıtımı

Yazılım Çeşitleri. Uygulama Yazılımları. İşletim Sistemleri. Donanım

BİLİŞİM TEKNOLOJİSİNİN TEMELLERİ DERSİ

8051 Ailesi MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur çekirdeğinin temel özellikkleri aşağıda verilmiştir:

DESIGN AND IMPLEMENTATION OF MULTIMETER BASED ON MICROCONTROLLER

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

MPLAB IDE ve ISIS ile ASSEMBLY DİLİNDE UYGULAMA GELİŞTİRMEK

Mikroişlemciler. Alper Bayrak Abant İzzet Baysal Üniversitesi Bolu

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

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

PIC Programlama. Devrim Çamoğlu

Mikroişlemcili Sistemler ve Laboratuvarı

DERS 4 MİKROİŞLEMCİ PROGRAMLAMA İÇERİK

Mikroişlemci Programlama Aşamaları

Mikroişlemciler ve Mikrokontrolörlere Giriş (CMPE236) Ders Detayları

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

DONANIM KURULUMU. Öğr. Gör. Murat YAZICI. 1. Hafta.

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

GÖMÜLÜ SİSTEMLER. Bilecik Şeyh Edebali Üniversitesi Gömülü Sistemler Ders notları-1

T.C. NECMETTĠN ERBAKAN ÜNĠVERSĠTESĠ Mühendislik ve Mimarlık Fakültesi. Elektrik-Elektronik Mühendisliği Bölümü BĠTĠRME ÖDEVĠNĠN ADI BİTİRME PROJESİ

DERS 13 PIC 16F84 ile DONANIM SAYICI KULLANIMI İÇERİK KESME

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İ

KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ TASARIM PROJESİ

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

LCD (Liquid Crystal Display)

PIC16F87X te ADC MODÜLÜNÜN KULLANIMI

LABİRENTTEN ÇIKIŞ YOLUNU BULAN ROBOT

ELEKTRİK-ELEKTRONİK TEKNOLOJİSİ

MAK 1005 Bilgisayar Programlamaya Giriş. BİLGİSAYARA GİRİŞ ve ALGORİTMA KAVRAMI

MIKROBILGISAYARLAR ve PIC PROGRAMLAMA TEST ÇALIŞMA SORULARI

CUMHURİYET MESLEKİ VE TEKNİK ANADOLU LİSESİ BİLİŞİM TEKNOLOJİLERİNİN TEMELLERİ DERSİ DERS NOTLARI BELLEKLER

Teorik Bilgi DENEY 7: ASENKRON VE SENKRON SAYICILAR

Alıcı Devresi; Sinyali şu şekilde modüle ediyoruz;

Bilgisayar ile Dijital Devrelerin Haberleşmesi. FT232R ve MAX232 Entegreleri. Çalışma Raporu

Transkript:

T.C. KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ TEK RENK GRAFİK LCD İLE OYUN UYGULAMASI BİTİRME ÇALIŞMASI Hazırlayanlar: Cüneyt BAŞAR 179947 Emre DEMİRKAPI 179953 Canan GÜLER 196151 BAHAR 2011 TRABZON

T.C. KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ TEK RENK GRAFİK LCD İLE OYUN UYGULAMASI BİTİRME ÇALIŞMASI Hazırlayanlar: Cüneyt BAŞAR 179947 Emre DEMİRKAPI 179953 Canan GÜLER 196151 Tez Danışmanı: Öğr. Gör. Oğuzhan ÇAKIR BAHAR 2011 TRABZON

ÖNSÖZ Bu çalışmada PIC16F877A ve grafik LCD kullanılarak bir oyun uygulaması gerçekleştirilmiştir. Oyun konsollarında ve bilgisayarlarda kullanıcılar tarafından beğenilen bir oyun olan tuğla kırma oyunu mikrodenetleyici ile yapılmıştır. Kullanılan ekran WinStar firmasının tek renk 128x64 piksel bir sıvı kristal ekranıdır. Çalışmalarımız boyunca bize değerli zamanını ayıran ve verdiği fikirler ile bizi yönlendiren hocamız Sayın Öğr. Gör. Oğuzhan ÇAKIR a teşekkür ederiz. Ayrıca hayatımız boyunca her türlü maddi ve manevi desteklerini hiçbir zaman esirgemeyen ailelerimize şükranlarımızı sunarız. Cüneyt BAŞAR, Emre DEMİRKAPI, Canan GÜLER Trabzon, 2011 II

İÇİNDEKİLER Sayfa No ÖNSÖZ.. II İÇİNDEKİLER.. III ÖZET. IV ŞEKİLLER DİZİNİ... V TABLOLAR DİZİNİ. VI SEMBOLLER DİZİNİ.. VII 1. GENEL BİLGİLER.. 1 1.1. GİRİŞ...... 1 1.2. PIC16F877A MİKRODENETLEYİCİSİ. 1 1.3. MPLAB EDİTÖRÜ.. 2 1.4. Hİ-TECH PICC DERLEYİSİCİ... 2 1.5. EAGLE ÇİZİM PROGRAMI... 2 1.6. 7805 ENTEGRESİ... 2 1.7. GRAFİK LCD... 3 2. YAPILAN ÇALIŞMALAR, BULGULAR VE TARTIŞMA.. 4 2.1. İŞ PLANI.. 4 2.2. GİRİŞ.... 4 2.3. DONANIM... 5 2.4. YAZILIM. 7 3. SONUÇLAR.. 18 4. ÖNERİLER... 19 5. KAYNAKLAR.. 20 6. ÖZGEÇMİŞ... 21 III

ÖZET Günümüzde oyun sektörü çok büyük bir pazar haline gelmiştir. Başlangıçta oldukça basit bir yapıya sahip olan oyun konsolları büyük bir değişim göstererek, gelişmiş bilgisayarların önüne geçmiştir. Yeni nesil oyun konsolları, yüksek işlem güçleri ile en karmaşık oyunların bile rahatlıkla çalıştırabilen, müzik-film oynatabilen ve internet erişimi sağlayabilen sistemler haline gelmiştir. Bu çalışmada MicroChip firmasının 16 serisi PIC16F877A denetleyicisi ile basit bir oyun konsolu geliştirilmiştir. WinStar firmasının 128x64 piksel çözünürlüğündeki tek renk grafik LCD si konsol ekranı olarak kullanılmıştır. Gerek oyun programının yazılması, gerekse grafik LCD kontrolü karmaşık bir işlem olduğu için programlamada ASM dili yerine C dili kullanılmıştır. Derleyici olarak kolay kullanımı, yaygınlığı ve kapsamlı deneme sürümü nedeniyle HiTech firmasının PICC editörü tercih edilmiştir. Konsol için büyük beğeni toplayan tuğla kırma oyunu yedi seviyeli olarak geliştirilmiştir. Anahtar Kelimeler: Sanal Ekran, Mikrodenetleyiciler, Havada Kayan Yazı, Kontrast Sensoru IV

ŞEKİLLER DİZİNİ Sayfa No Şekil 1. Donanımın şematik diyagramı. 5 Şekil 2. Donanımın baskı devre çizimi. 6 Şekil 3. Oyun konsolu... 6 Şekil 4. Ekran görüntüsü... 7 V

TABLOLAR DİZİNİ Sayfa No Tablo 1. İş planı.. 4 Tablo 2. Alt programlar.. 7 VI

SEMBOLLER DİZİNİ EPROM EEPROM PIC POR PWT SLEEP Xtal V WDT : Elektrikle programlanabilir rastgele okunur bellek : Elektrikle silinebilir programlanabilir rastgele okunur bellek : Çevresel arayüz denetleyici : Enerji reseti : Enerji açık amanlayıcısı : Uyku modu : Kristal : Volt : Bekçi köpek zamanlayıcısı VII

1 1. GENEL BİLGİLER 1.1. GİRİŞ Elektronik sistemlerin sürekli gelişmesiyle, her geçen yıl yeni oyunlar piyasaya sürülmektedir. Böylece oyun sektörü büyük bir pazar haline gelmiştir. Bu çalışmada tuğla kırma oyunu yazılmıştır. Oyun yedi seviyeli olarak geliştirilmiştir. Gerek oyun programının yazılması, gerekse grafik LCD kontrolü karmaşık bir işlem olduğu için programlamada C dili kullanılmıştır. Mikrodenetleyici olarak ise MicroChip firmasının 16 serisi PIC16F877A denetleyicisi kullanılmıştır. WinStar firmasının 128x64 piksel çözünürlüğündeki tek renk grafik LCD si konsol ekranı olarak kullanılmıştır. 1.2. PIC16F877A MİKRODENETLEYİCİSİ PIC 16F877 yüksek performanslı, CMOS, full-statik, 8 bit bir mikrodenetleyicidir. Tüm PIC 16/17 mikrodenetleyicileri gibi PIC 16F877 de RISC yapısı kullanmaktadır [1, 2, 3]. PIC16F87X mikroları birçok esas 8Kx14 word'luk flash program belleği vardır; 368x8 byte'lık data belleği; 256x8 byte'lık EEPROM data belleği; PIC16C73B/74B/76/77 ile uyumlu pin yapısı; Doğrudan ve dolaylı adresleme; Power-on Reset (POR), Power-up Timer (PWRT), üzerinde bulanan RC osilatör ile çalışan Watchdog Timer (WDT); Programlanabilen kod koruma; Enerji tasarrufu için uyku (SLEEP) modu; Düşük güçlü yüksek hızlı CMOSFLASH/EEPROM teknolojisi; Bütünüyle statik dizayn; Devre üstünde seri programlama; 5 V'luk kaynak ile çalışması; 2 V ile 5.5 V arasında işlem yapabilmesi;

2 Düşük güç harcaması 1.3. MPLAB EDİTÖRÜ Microchip in ürettiği özel bir yazılım olan MPLAB da Mikroişlemci için yazdığımız assembler kodların doğru çalışıp çalışmadığını anlamanın iki yolu vardır. Bu yollar; 1. Kodları mikroişlemciye yükleyip gerçek ortamda denemek, 2. MPLAB gibi yazılımlar ile simüle etmek. 1.4. Hİ-TECH PICC DERLEYİCİSİ Hi-Tech Picc Microchip firmasının üretiği PIC serisi uc için Ansi-C standartlarına uygun bir C derleyicisidir. Hi-Tech farklı PIC serileri için değişik C derleyicisine sahiptir. PIC10, PIC12 ve PIC16 serisi için PICC derleyicisini içermektedir. PIC18 serisi için PICC-18 derleyicisi var. Ayrıca 16 bit ve 32 PIC ler için birer derleyicisi mevcuttur. Hi- Tech sadece Microchip firmasının sadece uc leri için C derleyisine sahip değil, aynı zamanda diğer uc üreticisin üretiği chip ler içinde C derleyicisine sahiptir. Windows, Mac ve Linux sürümleri içinde derleyicileri mevcuttur [4]. 1.5. EAGLE ÇİZİM PROGRAMI Eagle, grafik ara yüzlü, kullanımı kolay, güçlü bir baskı devre kartı tasarım aracıdır. Eagleadını Easy Applicable Graphical Layout Editor kelimelerinin baş harflerinden alır ve anlam olarak ise kolay uygulanabilir grafiksel çizim editörü olarak tanımlanabilir [5]. 1.6. 7805 ENTEGRESİ Regülâtörler, bir sistemde akımı, gerilimi, frekansı, hızı, basıncı, debiyi vb. belli bir düzeyde tutmaya yarayan düzenleyici aygıtlardır. Kullanıldıkları yere göre Voltaj Regülâtörleri, elektronik devreler aracılığıyla, duyarlı aletlere sabit bir gerilim sağlayan elektrikli araçlardır ve değişik yapıda olurlar [6].

3 78 kodlu entegrelerin özelliği çıkışını üzerinde yazan son 2 basamak rakam değerine sabit tutmasıdır. Örneğin 78xx yerine 7808 olursa 8 volt çıkışlı 7812 olursa 12 volt çıkışlı bir malzemeden bahsediyor oluruz. 7805 ise 5 voltta gerilimi sabit tutar. 78 serisi entegrelerin örneğin 7805 in giriş voltajı çıkış voltajından bir kaç volt fazla tutulmalıdır. Giriş voltajı çıkış voltajının %60 dan fazla olmamalıdır. 78 serisi entegrelerin çıkış amper kapasitesi 1 amperdir. 500 mili amper üzerinde soğutucu ile soğutulması gerekebilir. 1.7. GRAFİK LCD Bu çalışmada WinStar firmasının tek renk grafik sıvı kristal ekranı kullanılmıştır. Ekran çözünürlüğü 128x64 pikseldir. Ekran veri ve kontrol uçları ile denetlenmektedir [7].

4 2. YAPILAN ÇALIŞMALAR, BULGULAR VE TARTIŞMA 2.1. İŞ PLANI Hazırlamış olduğumuz bu bitirme çalışması Tablo 1 de verilen iş planı çerçevesinde gerçekleştirilmiştir. İş planının düzenlenmesinde çalışmanın tüm döneme yayılması ve her hafta tez danışmanının denetiminde çalışmanın sürdürülmesi amaçlanmıştır. Tablo 1. İş planı Tarih Çalışma 02.02.2011 Konunun belirlenmesi. 09.02.2011 İş planının hazırlanması. 16.02.2011 Sistemin blok diyagramının hazırlanması. 23.02.2011 Gerekli malzemelerin tespiti. 02.03.2011 Gerekli malzemelerin temini. 09.03.2011 Şematik diyagramın çizilmesi. 16.03.2011 Baskı devre şemasının çizilmesi. 23.03.2011 Baskı devre üretimi. 06.04.2011 Malzemelerin montajı. 13.04.2011 Donanımın test edilmesi. 20.04.2011 Yazılımın hazırlanması. 27.04.2011 Sistemin test edilmesi. 04.05.2011 Bitirme kitapçığının hazırlanması. 11.05.2011 Bitirme kitapçığının kontrolü. 2.2. GİRİŞ Bu çalışmada, PIC16F877A denetleyicisi ve grafik LCD kullanılarak basit bir oyu konsolu geliştirilmiştir. Konsol donanım ve yazılım olmak üzere iki temel kısımdan oluşmaktadır.

5 2.3. DONANIM Denetleyici, grafik LCD, gerilim regülatörü, anahtarlar ve çevre elemanlardan oluşmaktadır. Donanımın şematik (Şekil 1) ve baskı devre çizimi (Şekil 2) Eagle v5.11 programı ile hazırlanmıştır. Sistemin genele görünümü Şekil 3 te verilmiştir. Şekil 1. Donanımın şematik diyagramı

6 Şekil 2. Donanımın baskı devre çizimi Şekil 3. Oyun konsolu

7 2.4. YAZILIM Konsol yazılımı PIC C dili kullanılarak geliştirilmiştir. Grafik LCD kontrolü ve oyun kontrolü işlevlerini yerine getirmektedir. Tablo 2 de yazılımda kullanılan alt programlar görülmektedir. Ekran görüntüsü Şekil 4 reki gibidir. Tablo 2. Alt programlar void Init(void) void LCDAc(void) void LCDKapat(void) void AdresXSol(unsigned char ucxsol) void AdresXSag(unsigned char ucxsag) void AdresYSol(unsigned char ucysol) void AdresYSag(unsigned char ucysag) void AdresZSol(unsigned char uczsol) void AdresZSag(unsigned char uczsol) void VeriYazSol(unsigned char ucveri) void VeriYazSag(unsigned char ucveri) void EkraniTemizle(unsigned char ucbolge) void ArkaPlan(void) void HucreSil(unsigned char ucx, unsigned char ucy) void TuglaCiz(unsigned char ucx, unsigned char ucy) void PadCiz(unsigned char ucx, unsigned char ucy) void TopCiz(unsigned char ucx, unsigned char ucy) void KarakterSol(unsigned char ucxsol, unsigned char ucysol, unsigned char ucsembol) void KarakterSag(unsigned char ucxsag, unsigned char ucysag, unsigned char ucsembol) Şekil 4. Ekran görüntüsü

8 // ANA PROGRAM /////////////////////////////////////////////////////////// void main(void) // 1 saniye bekle DelayMs(250); Init(); // Oyun başladı ucoyun = 2; // Programın ana döngüsü ============================================= while(1) // Yeni turu başlat ----------------------------------------------- if ( ucoyun == 2 ) // Saati sıfırla uiclk = 0; // Tuğla sayısını sıfırla ucts = 0; // Oyun seviyesini belirle ucseviye -= 15; tx = 6; ty = 7; tx0 = tx; ty0 = ty; tax = -1; tay = -1; // Top px = 7; py = 6; // Pad // Tuğlaları diziye yükle ---------------------------------------- // Diziyi temizle for ( i = 0; i < 4; i++ ) for ( j = 0; j < 16; j++ ) ucth[i][j] = 0;

9 // Tuğlaları diz for ( i = 1; i < 4; i++ ) for ( j = 1; j < 15; j++ ) ucth[i][j] = 1; // Ekranı temizle EkraniTemizle(0X03); // Arkaplanı çiz ArkaPlan(); // Oyunu başlat ucoyun = 1; // Bekle DelayMs(250); DelayMs(250); // Oyun döngüsü ---------------------------------------------------- while ( ucoyun == 1 ) // Saati arttır uiclk++; // Anahtarları test et ------------------------------------------- // Sol anahtarı -------------------------------------------------- if ( SOL == 0 && py > 0 && uiclk%10 == 0) // y kordinatını güncelle py--; // Topu taşı if ( ty >= py && ty <= py+3 && tx == 6 ) ty0 = ty; ty--; TopCiz(6, ty); HucreSil(6, ty0);

10 // Padi çiz PadCiz(px, py); HucreSil(px, py + 4); // Sağ anahtarı -------------------------------------------------- if ( SAG == 0 && py < 12 && uiclk%10 == 0) // y kordinatını güncelle py++; // Topu taşı if ( ty >= py && ty <= py+3 && tx == 6) ty0 = ty; ty++; TopCiz(6, ty); HucreSil(6, ty0); // Padi çiz PadCiz(px, py + 3); HucreSil(px, py - 1); // Topu hareketlendir -------------------------------------------- if (uiclk%ucseviye == 0) // Topun kordinatlarnı güncelle ------------------------------- tx0 = tx; ty0 = ty; tx += tax; ty += tay; // Topun hareketini belirle ----------------------------------- // Kenarlardan yansıt------------------------------------------ if ( tx < 2 ) tax = 1; if ( ty < 1 ) tay = 1; if ( ty > 14 ) tay = -1;

11 // Padden yansıt ---------------------------------------------- // Aşağı if ( tax == 1 && tx == 6) if ( tay == 1 ) // Sağ if ( ty >= py-1 && ty <= py + 3 ) // Padden yansıt if ( ty == py - 1 ) tax = -1; tay = -1; else tax = -1; tay = 1; else ucoyun = 0; else // Sol if ( ty >= py && ty <= py + 4 ) // Padden yansıt if ( ty == py + 4) tax = -1; tay = 1; else tax = -1; tay = -1; else ucoyun = 0; // Topu çiz ---------------------------------------------------

12 TopCiz(tx, ty); HucreSil(tx0, ty0); // Tuğla dizisini ve puanı güncelle --------------------------- if ( tx < 4 ) if ( ucth[tx][ty] == 1 ) ucth[tx][ty] = 0; // Puanı güncelle ------------------------------------- uipuan += (105 - ucseviye) / 15; KarakterSag(0,46,uiPuan / 100); KarakterSag(0,52,(uiPuan / 10) % 10); KarakterSag(0,58,uiPuan % 10); // Tuğla sayısını arttır ucts++; // Tur bitti mi? if ( ucts == 42 ) ucoyun = 2; DelayMs(2); // Oyun Bitti ------------------------------------------------------ if (ucoyun == 0) tx0 = tx; ty0 = ty; tx += tax; ty += tay; TopCiz(tx, ty); HucreSil(tx0, ty0); KarakterSol(5,34,S_O); KarakterSol(5,40,S_Y); KarakterSol(5,46,S_U);

13 KarakterSol(5,52,S_N); KarakterSag(5, 0,S_B); KarakterSag(5, 6,S_II); KarakterSag(5,12,S_T); KarakterSag(5,18,S_T); KarakterSag(5,24,S_II); KarakterSag(5,30,S_NOKTA); // Bekle while(1) // BAŞLANGIÇ DEĞERLERİ ///////////////////////////////////////////////// void Init(void) // Portların verilerini belirle PORTA = 0x00; // A portunun içeriğini temizle PORTB = 0x00; // B portunun içeriğini temizle PORTC = 0x00; // C portunun içeriğini temizle PORTD = 0x00; // D portunun içeriğini temizle PORTE = 0x00; // E portunun içeriğini temizle // Portların yönlerini ayarla ADCON1 = 0x06; // A ve E portu sayısal I/O yapıldı TRISA = 0b00000000; // A portu çıkış TRISB = 0b00000000; // B portu çıkış TRISC = 0b00001111; // C0..3 giriş C4..7 çıkış TRISD = 0b00000000; // D portu çıkış TRISE = 0b00000000; // E portu çıkış // LCD'yi ayarla LCD_E = 1; LCD_RW = 0; LCD_CS1 = 1; LCD_CS2 = 1; // LCD aktif // LCD yazma modunda // Sol taraf kapalı // Sağ taraf kapalı // Ekranı temizle

14 EkraniTemizle(0X03); // LCDyi aç LCDAc(); // Arka aydınlatmayı aç LCD_BL = 1; // Başlangıç değerleri tx = 6; // Top ty = 7; tx0 = tx; ty0 = ty; tax = -1; tay = -1; px = 7; py = 6; // Pad ucseviye = 105; uipuan = 0; // ARKA PLAN //////////////////////////////////////////////////////////// void ArkaPlan(void) // uc unsigned char i; // Sayaç unsigned char j; // Sayaç // Yazıları Yaz ------------------------------------------------------ KarakterSol(0, 0,S_S); KarakterSol(0, 6,S_E); KarakterSol(0,12,S_V); KarakterSol(0,18,S_II); KarakterSol(0,24,S_Y); KarakterSol(0,30,S_E); KarakterSol(0,36,S_IKIN); KarakterSol(0,48,(105 - ucseviye) / 15);

15 KarakterSag(0,10,S_P); KarakterSag(0,16,S_U); KarakterSag(0,22,S_A); KarakterSag(0,28,S_N); KarakterSag(0,34,S_IKIN); KarakterSag(0,46,uiPuan / 100); KarakterSag(0,52,(uiPuan / 10) % 10); KarakterSag(0,58,uiPuan % 10); // Tuğlaları Çiz ----------------------------------------------------- for ( i = 1; i < 4; i++ ) for ( j = 1; j < 15; j++ ) TuglaCiz(i, j); // Pedi çiz ---------------------------------------------------------- for ( j = 6; j < 10; j++ ) PadCiz(7, j); // Topu çiz ---------------------------------------------------------- TopCiz(6, 7); // HÜCRE SİL //////////////////////////////////////////////////////////// void HucreSil(unsigned char ucx, unsigned char ucy) // uc unsigned char i; // Sayaç if ( ucy < 8 ) AdresXSol(ucX); AdresYSol(ucY*8); for ( i = 0; i < 8; i++ ) VeriYazSol(0X00); else AdresXSag(ucX); AdresYSag(ucY*8); for ( i = 0; i < 8; i++ ) VeriYazSag(0X00);

16 // TUĞLA ÇİZ //////////////////////////////////////////////////////////// void TuglaCiz(unsigned char ucx, unsigned char ucy) // uc unsigned char i; // Sayaç if ( ucy < 8 ) AdresXSol(ucX); AdresYSol(ucY*8); for ( i = 0; i < 8; i++ ) VeriYazSol(TUGLA[i]); else AdresXSag(ucX); AdresYSag(ucY*8); for ( i = 0; i < 8; i++ ) VeriYazSag(TUGLA[i]); // PAD ÇİZ ////////////////////////////////////////////////////////////// void PadCiz(unsigned char ucx, unsigned char ucy) // uc unsigned char i; // Sayaç if ( ucy < 8 ) AdresXSol(ucX); AdresYSol(ucY*8); for ( i = 0; i < 8; i++ ) VeriYazSol(PAD[i]); else AdresXSag(ucX);

17 AdresYSag(ucY*8); for ( i = 0; i < 8; i++ ) VeriYazSag(PAD[i]); // TOP ÇİZ ////////////////////////////////////////////////////////////// void TopCiz(unsigned char ucx, unsigned char ucy) // uc unsigned char i; // Sayaç if ( ucy < 8 ) AdresXSol(ucX); AdresYSol(ucY*8); for ( i = 0; i < 8; i++ ) VeriYazSol(TOP[i]); else AdresXSag(ucX); AdresYSag(ucY*8); for ( i = 0; i < 8; i++ ) VeriYazSag(TOP[i]);

3. SONUÇLAR Bu çalışmada, mikrodenetleyici kontrollü bir oyun konsolu gerçekleştrilmiştir. 1. Sistem için gerekli olan malzemeler tespit ve temin edilmiştir. 2. Oyun programı Hi-Tech firmasının C derleyicisi kullanılarak hazırlanmıştır. 3. Tuğla kırma oyunumuz 7 ( yedi ) seviye olarak tasarlanmıştır ve her seviyede oyun hızı artmaktadır. 4. Oyun esnasında ve sonunda oyun puanını görebilmekteyiz, ayrıca oyun seviyesi arttıkça tuğla başına puanda artmaktadır.

4. ÖNERİLER 1. Ekran çözünürlüğü arttırılabilir. 2. Oyun konsoluna ses eklenebilir. 3. Renkli grafik LCD kullanılabilir. 4. Oyun seviyeleri farklı tasarlanabilir.

5. KAYNAKLAR [1] Altınbaşak, Orhan, Mikrodenetleyiciler PIC Programlama, İstanbul, 2008. [2] İbrahim, Doğan, PIC C ile ses projeleri, İstanbul, 1999. [3] Microchip Technology Incorporated., PIC16F87X Data Sheet 28/40-Pin 8-Bit CMOS FLASH Microcontrollers, USA, 2001. [4] Microchip Technology Inc., Getting Started with the HI-TECH C Compiler for IC10/12/16 MCUs, Microchip PICDEMTM 2 PLUS Board and MPLABR ICD 2, Australia, 2010. [5] CadSoft Computer, EAGLE EASILY APPLICABLE GRAPHICAL LAYOUT EDITOR Tutorial Version 5, 7th Edition, USA, 2010. [6] Fairchild Semiconductor Corporation, LM78XX/LM78XXA 3-Terminal 1A Positive Voltage Regulator, USA, 2010. [7] Winstar Display Co. Ltd., WG12864D 128x64dots, Taiwan, 2011.

6. ÖZGEÇMİŞ Cüneyt BAŞAR 1987 de Trabzon da doğdu. İlköğrenimini Fatih İlkokulu ve orta öğrenimini Cumhuriyet Ortaokulu nda, lise öğrenimini Trabzon Lisesi nde yaptı. 2006 yılında Karadeniz Teknik Üniversitesi, Mühendislik Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü nde Lisans Programı na başladı. Yabancı dil olarak İngilizce bilmektedir. Emre DEMİRKAPI 1988 de Konya da doğdu. İlk öğrenimini Öğretmen Abdurrahim İlköğretim Okulun nda, ve lise öğrenimini Atatürk Lisesi nde yaptı. 2006 yılında Karadeniz Teknik Üniversitesi, Mühendislik Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü nde Lisans Programı na başladı. Yabancı dil olarak İngilizce bilmektedir. Canan GÜLER 1989 de Erzurum da doğdu. İlk öğrenimini Ankara Batıkent İlköğretim Okulun nda, ve lise öğrenimini Süleyman Demirel Anadolu Lisesi nde yaptı. 2007 yılında Karadeniz Teknik Üniversitesi, Mühendislik Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü nde Lisans Programı na başladı. Yabancı dil olarak İngilizce bilmektedir.