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

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

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

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

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

TUŞ TAKIMI (KEYPAD) UYGULAMALARI

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

void setup() fonksiyonu: Bu fonksiyon program ilk açıldığında bir kere çalışır ve gerekli kalibrasyon, setup komutlarını buraya yazarız.

İLERI MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

LPC2104 Mikro Denetleyicisini KEIL İle Programlamak

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

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

İÇİ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.

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

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

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

BÖLÜM Mikrodenetleyicisine Giriş

T.C. MİLLİ EĞİTİM BAKANLIĞI DENİZCİLİK MİKRODENETLEYİCİ-6

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

PIC TABANLI, 4 BASAMAKLI VE SER

DENEY 10-A : PIC 16F877 ile DARBE GENİŞLİK MODÜLASYONU (PWM) SİNYAL KONTROL UYGULAMASI

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

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

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

İLERI MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

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

Şekil 1. 74LS47 entegresi bağlantı şeması

EasyPic 6 Deney Seti Tanıtımı

1.CİHAZ ÖLÇÜLERİ 2.CİHAZ BAĞLANTI ŞEMASI

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

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

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

Mikroişlemciler. Microchip PIC

LCD (Liquid Crystal Display )

İLERI MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

T.C. ERCİYES ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ ELEKTRONİK SİSTEMLER LABORATUVARI 1

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

8 Ledli Havada Kayan Yazı

Elif İLİKSİZ. Keziban TURAN. Radio Frekanslarla Hareket Eden Araç

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

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

SAYICILAR. Tetikleme işaretlerinin Sayma yönüne göre Sayma kodlanmasına göre uygulanışına göre. Şekil 52. Sayıcıların Sınıflandırılması

Melih Hilmi ULUDAĞ. Yazılım Mühendisi Mekatronik Mühendisi. a aittir.

* Şehir isimleri TIME/CALENDAR SETTINGS (Saat/Takvim Ayarları), WORLD TIME (Dünya Saati) ve ALARM modlarında, sağdan sola doğru değişir.

VTIY DERS-4 YARDIMCI NOTLARI -2018

IOT UYGULAMALARINA GİRİŞ

Arduino Uno ile Hc-Sr04 ve Lcd Ekran Kullanarak Mesafe Ölçmek

DENEY in lojik iç şeması: Sekil 2

7. Bölüm Robot Programlamada Mantıksal Fonksiyonlar

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

EEM 419-Mikroişlemciler Güz 2017

SAYISAL MANTIK LAB. PROJELERİ

Çizgi İzleyen Robot Yapımı

MİKRODENETLEYİCİLER ÖRNEK PROGRAMLAR

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

İÇİNDEKİLER. 1-1 Lojik ve Anahtara Giriş Lojik Kapı Devreleri... 9

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

Paralel ve Seri İletişim. Asenkron/Senkron İletişim. Şekil 2: İletişim Modları

DD2 DOT MATRIX DISPLAY KARTI PROGRAMLAMA VE MONTAJ KILAVUZU SÜRÜM: 1.1

NB Ekran Seri Port Üzerinden Veri Okuma/Yazma. Genel Bilgi Protokol Oluşturma Veri Okuma Veri Yazma

Teorik Bilgi DENEY 7: ASENKRON VE SENKRON SAYICILAR

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

Algoritma ve Programlamaya Giriş

MİKROİŞLEMCİ İLE A/D DÖNÜŞÜMÜ

SAYISAL UYGULAMALARI DEVRE. Prof. Dr. Hüseyin EKİZ Doç. Dr. Özdemir ÇETİN Arş. Gör. Ziya EKŞİ

PIC16F87X te ADC MODÜLÜNÜN KULLANIMI

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

FPGA İLE UYGULAMA ÖRNEKLERİ

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

25. Aşağıdaki çıkarma işlemlerini doğrudan çıkarma yöntemi ile yapınız.

LOJİK DEVRELER-I IV. HAFTA DENEY FÖYÜ

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

İçindekiler FPGA GELİŞTİRME KARTI ENERJİ BESLEMESİ:... 5 ENERJİ SİSTEMİ ŞEMASI:... 5 FPGA GELİŞTİRME KARTINA PROGRAM YÜKLEME:... 6

LED YAKMAK. Circuit 2. Kablo LED. Direnç. Arduino LED. Direnç (330ohm)

LOJİK DEVRELER-I III. HAFTA DENEY FÖYÜ

Deney 8: ALU da Aritmetik Fonksiyonlar

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

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Mikrokontrolcu Portları {\} /\ Suhap SAHIN

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

DİCLE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ EEM309 SAYISAL ELEKTRONİK LABORATUARI

İnönü Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

ML TFT 5 ARAYÜZ KULLANIM KILAVUZU

Sınav tarihi : Süre : 60 dak.

DOKUMANLAR

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

BUTON KONTROLÜ. Pull-Down Bağlantı (Ters Bağlantı) Butona basılmadığında Giriş=1 Butona basıldığında Giriş=0

DENEY 5: KOD DÖNÜŞTÜRÜCÜLERİN TASARIMI

Internet Programming II

1.CİHAZ ÖLÇÜLERİ 2.CİHAZ BAĞLANTI ŞEMASI

LOJİK DEVRELER-I IV. HAFTA DENEY FÖYÜ

Kendimiz Yapal m. Yavuz Erol* 16 Sütunlu Kayan Yaz

10 LU SAYISAL SİSTEMİ İLE 2 Lİ SAYISAL SİSTEMİ ARASINDA ÇEVİRİM UYGULAMASI

Deney 3: Asenkron Sayıcılar

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

Örnek. int analogpin = 3; int val = 0; void setup() { Serial.begin(9600); } void loop() { val = analogread(analogpin); Serial.

1. Mikrodenetleyici Programlamada Giriş- Çıkış İşlemleri

T.C. ERCİYES ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ ELEKTRONİK SİSTEMLER LABORATUVARI 1. ARDUINO LCD ve Sensör Uygulamaları

EEM 306 Mikroişlemciler ve Lab. Doç.Dr. Mehmet SAĞBAŞ

Barkod Referans Kılavuzu

Transkript:

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

DENEY 2-1: YEDİ SEGMENT GÖSTERGE ÜZERİNDE VERİ GÖRÜNTÜLEME AMAÇ: Mikrodenetleyicinin portuna bağlı yedi segment gösterge üzerinde heksadesimal sayı sisteminde bulunan rakamların sıra ile görüntülenmesini sağlamak. GİRİŞ: Yedi segment gösterge içyapısında 8 adet led bulunmaktadır. 7 adet led ile rakamların gösterge üzerinde görünmesi sağlanabilir. Rakamları oluşturan ledlerin yanı sıra bir de nokta ledi bulunmaktadır. Yedi segment göstergeler ortak anot veya ortak katot olmak üzere iki çeşittir. Günümüzde ihtiyaca göre çeşitli boylarda 7 segment göstergeler bulunmaktadır. Yedi segment göstergelerde sayı sisteminde kullandığımız rakamları görüntüleyebilmek için 7447, 7448 gibi kod çözücü entegreler kullanılabilir. Mikrodenetleyicide yeterli sayıda serbest pin sağlanırsa kod çözücü entegreler olmaksızın mikrodenetleyici tarafından doğrudan yedi segment gösterge sürülebilir. Bunun için rakamları oluşturmak için hangi ledlerin yanması gerektiğini gösteren yedi segment çevrim tablosuna ihtiyaç vardır. Rakam 7 Segment Çevrim Tablosu Binary. g f e d c b a Hex 0 0 0 1 1 1 1 1 1 0x3F 1 0 0 0 0 0 1 1 0 0x06 2 0 1 0 1 1 0 1 1 0x5B 3 0 1 0 0 1 1 1 1 0x4F 4 0 1 1 0 0 1 1 0 0x66 5 0 1 1 0 1 1 0 1 0x6D 6 0 1 1 1 1 1 0 1 0x7D 7 0 0 0 0 0 1 1 1 0x07 8 0 1 1 1 1 1 1 1 0x7F 9 0 1 1 0 1 1 1 1 0x6F A 0 1 1 1 0 1 1 1 0x77 B 0 1 1 1 1 1 0 0 0x7C C 0 0 1 1 1 0 0 1 0x39 D 0 1 0 1 1 1 1 0 0x5E E 0 1 1 1 1 0 0 1 0x79 F 0 1 1 1 0 0 0 1 0x71 32

DENEY 2-1: YEDİ SEGMENT GÖSTERGE ÜZERİNDE VERİ GÖRÜNTÜLEME DEVRE ŞEMASI Devre şemasında görüldüğü üzere yedi segment göstergenin ortak katot ucu bir transistör üzerinden şase hattına bağlıdır. Transistörün beyz ucu PIN_E0 pinine bağlıdır. Mikrodenetleyicinin PORTA ve PORTE pinleri üzerinde analog giriş özelliğine sahip pinler bulunmaktadır. Bu pinler analog (sadece giriş) veya dijital (giriş-çıkış) olarak kullanılabilir. setup_adc_ports(no_analogs); setup_adc_ports(all_analog); //Bütün pinler dijital olarak kullanılacak. //Bütün pinler analog olarak kullanılacak. PIN_E0 pini de analog özelliğe sahip olduğu için öncelikle bu pinin dijital olarak kullanılacağı, sonrasında ise çıkış olarak kullanılacağı belirtilmelidir. PIN_E0 pini çıkışı aktif yapılarak transistörün iletime geçmesi sağlanır. Transistör iletimde olduğu sürece PORTD üzerinden gönderilen yedi segment verileri istenilen rakam görüntülenecektir. Uygulamada yedi segment gösterge üzerinde sıra ile 0 dan F ye rakamların görüntülenmesi sağlanacaktır. 33

DENEY 2-1 : YEDİ SEGMENT GÖSTERGE ÜZERİNDE VERİ GÖRÜNTÜLEME AKIŞ DİYAGRAMI //Mikrodenetleyici başlık dosyasını tanıt. //Osilatör ayarlarını yap. //Ana programı başlat. //ADC özellikli pinler dijital kullan //Analog dijital çevirici kapalı olsun. //PIN_E0 çıkış //PIN_E0 = 1 //PORTD pinlerinin tümü çıkış (TRISD 00) //Sonsuz döngüyü başlat. UYGULAMA KODLARI //PORTD ye 0 rakamı verisi gönder. //PORTD ye 1 rakamı verisi gönder. //PORTD ye 2 rakamı verisi gönder. //PORTD ye 3 rakamı verisi gönder. //PORTD ye 4 rakamı verisi gönder. //PORTD ye 5 rakamı verisi gönder. //PORTD ye 6 rakamı verisi gönder. //PORTD ye 7 rakamı verisi gönder. //PORTD ye 8 rakamı verisi gönder. //PORTD ye 9 rakamı verisi gönder. //PORTD ye A rakamı verisi gönder. //PORTD ye b rakamı verisi gönder. //PORTD ye C rakamı verisi gönder. //PORTD ye d rakamı verisi gönder. //PORTD ye E rakamı verisi gönder. //PORTD ye F rakamı verisi gönder. //Sonsuz döngüye git. //Ana programı bitir. #include "16F877A.h" #fuses XT #use delay(clock=4m) void main(void) setup_adc_ports(no_analogs); setup_adc(adc_off); output_drive(pin_e0); output_high(pin_e0); AKIŞ DİYAGRAMI UYGULAMA KODLARI set_tris_d(0x00); //Mikrodenetleyici başlık dosyası tanıtılır. //Kristal osilatör kullanılacak. //delay komutları için osilatör hızı 4Mhz //Ana program başlangıcı //Analog özellikli pinler dijital kullan. //Analog dijital çevirici kapalı olsun. //PIN_E0 çıkış olarak kullanılacak //PIN_E0 çıkışı Lojik 1 olsun. //(Transistör iletime geçmesi için) //PORTD nin tüm pinleri çıkış olarak kullan. 34

DENEY 2-1: YEDİ SEGMENT GÖSTERGE ÜZERİNDE VERİ GÖRÜNTÜLEME UYGULAMA KODLARI (DEVAMI) while(1) //Sonsuz döngü başlangıcı output_d(0x3f); delay_ms(100); //PORTD ye 0x3F gönder, 100ms bekle output_d(0x06); delay_ms(100); //PORTD ye 0x06 gönder, 100ms bekle output_d(0x5b); delay_ms(100); //PORTD ye 0x5B gönder, 100ms bekle output_d(0x4f); delay_ms(100); //PORTD ye 0x4F gönder, 100ms bekle output_d(0x66); delay_ms(100); //PORTD ye 0x66 gönder, 100ms bekle output_d(0x6d); delay_ms(100); //PORTD ye 0x6D gönder, 100ms bekle output_d(0x7d); delay_ms(100); //PORTD ye 0x7D gönder, 100ms bekle output_d(0x07); delay_ms(100); //PORTD ye 0x07 gönder, 100ms bekle output_d(0x7f); delay_ms(100); //PORTD ye 0x7F gönder, 100ms bekle output_d(0x6f); delay_ms(100); //PORTD ye 0x6F gönder, 100ms bekle output_d(0x77); delay_ms(100); //PORTD ye 0x77 gönder, 100ms bekle output_d(0x7c); delay_ms(100); //PORTD ye 0x7C gönder, 100ms bekle output_d(0x39); delay_ms(100); //PORTD ye 0x39 gönder, 100ms bekle output_d(0x5e); delay_ms(100); //PORTD ye 0x5E gönder, 100ms bekle output_d(0x79); delay_ms(100); //PORTD ye 0x79 gönder, 100ms bekle output_d(0x71); delay_ms(100); //PORTD ye 0x71 gönder, 100ms bekle SORULAR 1. Yedi segment gösterge üzerinde robot2014 yazısına ait harfleri sıra ile görüntülenmesini sağlayan programı yazınız. 35

DENEY 2-2: YEDİ SEGMENT GÖSTERGEDE AŞAĞI YUKARI SAYICI UYGULAMASI AMAÇ: Mikrodenetleyici portuna doğrudan bağlı yedi segment gösterge üzerinde buton kontrollü olarak aşağı-yukarı sayıcı uygulaması gerçekleştirmek. GİRİŞ: Yedi segment göstergeler rakamsal verilerin görüntülenmesinde yaygın bir kullanım alanına sahiptir. Saat, kronometre, sayaçlar bunların başında yer alır. Buton kontrollü olarak skorbordlarda kullanılmaktadır. Buton kontrollü sayıcı uygulamasında temel olarak 2 fonksiyon vardır. YUKARI butonuna basıldığında gösterge değeri bir arttırılır, ASAGI butonuna basıldığında gösterge değeri bir azaltılır. Yedi segment göstergede kullanılan rakamlara ait veriler C programlama dilinde DİZİ deyimleri ile kolaylıkla kullanılabilir. Uygulama programında iki buton ile göstergedeki değerin aşağı veya yukarı olarak değişimi sağlanacaktır. Sonsuz döngü içerisinde butonların alınan bilgi sürekli okunacaktır. Bir butonun okunması içi geçen süre 10us nin altındadır. Döngüde butonların okunması dışında yapılan işlemlere ayrılan süre oldukça düşük olmalıdır. Aksi durumda butonlardan alınan sinyal kaçırılabilir. Ayrıca butona basıldığında, butonun fiziksel yapısından dolayı mikrodenetleyiciye iletilen sinyal üzerinde titreşimler gözlenebilir. Bu durum birçok kez butona basılmış gibi algılanmasına sebep olur. Butonların okunmasında ve devreye bağlantısında çeşitli yöntemler kullanılmaktadır. Uygulamada kullanılacak yöntem şu şekilde olacaktır. if ( input ( BUTON ) == 1 ) delay_ms ( 150 ); if ( input ( BUTON ) == 1 ) DEVRE ŞEMASI //Butona basıldığında yapılması istenen işlemler. 36

DENEY 2-2: YEDİ SEGMENT GÖSTERGEDE AŞAĞI YUKARI SAYICI UYGULAMASI AKIŞ DİYAGRAMI //Başlık dosyası //Osilatör ayar //Ana program //YUKARI = PIN_A2 //ASAGI = PIN_A4 //sayac değişkeni //16elemanlı dizi //pinler dijital //PIN_E0 çıkış //PIN_E0 = 1; //PORTD çıkış //Sonsuz döngüyü başlat. //YUKARI basıldı mı? //Basıldıysa sayac 15 ten küçükse sayac 1 arttır. //ASAGI basıldı mı? //Basıldıysa sayac 0 dan büyükse sayac 1 azalt. //PORTD ye seg_tablonun sayac nolu satırdaki değeri gönder. //Sonsuz döngüye git. //Ana programı bitir. 37

DENEY 2-2: YEDİ SEGMENT GÖSTERGEDE AŞAĞI YUKARI SAYICI UYGULAMASI UYGULAMA KODLARI #include "16F877A.h" //Mikrodenetleyici başlık dosyası tanıtılır. #fuses XT //Kristal osilatör kullanılacak. #use delay(clock=4m) //delay komutları için osilatör hızı 4Mhz #define YUKARI PIN_A2 // YUKARI ifadesi PIN_A2 olarak tanımla #define ASAGI PIN_A4 // ASAGI ifadesi PIN_A4 olarak tanımla int8 sayac = 0; //8bitlik sayac isminde değeri 0 değişken int8 seg_tablo[16] = //8bitlik seg_tablo isminde // 16 elemanlı dizi tanımla 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, //Diziye yüklenecek değerler 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71; //Diziye yüklenecek değerler void main(void) //Ana program başlangıcı setup_adc_ports(no_analogs); //Analog özellikli pinler dijital kullan. setup_adc(adc_off); //Analog dijital çevirici kapalı olsun. output_drive(pin_e0); //PIN_E0 çıkış olarak kullanılacak output_high(pin_e0); //PIN_E0 çıkışı Lojik 1 olsun. //(Transistör iletime geçmesi için) set_tris_d(0x00); //PORTD nin tüm pinleri çıkış olarak kullan. while(1) //Sonsuz döngü başlangıcı /*----------------------------------------------------------------------*/ if(input(yukari) == 1) //YUKARI butonuna basıldı mı? //YUKARI butonuna basıldıysa delay_ms(100); //100ms bekle. if(input(yukari) == 1) //YUKARI butonuna basıldı mı? Tekrar sor. //YUKARI butonuna hâlâ basılıysa if(sayac<15) // sayac değeri 15 den küçükse sayac++; // sayac değerini bir arttır. /*----------------------------------------------------------------------*/ if(input(asagi) == 1) //ASAGI butonuna basıldı mı? //ASAGI butonuna basıldıysa delay_ms(100); //100ms bekle. if(input(asagi) == 1) //ASAGI butonuna basıldı mı? Tekrar sor. //ASAGI butonuna hâlâ basılıysa if(sayac>0) // sayac değeri 0 dan büyükse sayac = sayac -1; // sayac değerini bir azalt. /*----------------------------------------------------------------------*/ output_d(seg_tablo[sayac]); // seg_tablo dizisinde sayac nolu elemanın // değerini PORTD ye gönder 38

DENEY 2-2: YEDİ SEGMENT GÖSTERGEDE AŞAĞI YUKARI SAYICI UYGULAMASI SORULAR 1. Uygulama devresi üzerine PIN_A3 ve PIN_A5 pinlerine diğer butonlarla aynı bağlantı yapısına sahip iki adet buton daha ekleniyor. PIN_A3 pinine bağlı butona basıldığında yedi segment gösterge üzerindeki değeri sıfırlayan, PIN_A5 pinine bağlı butona basıldığında değeri en büyük ( F ) yapan komut satırlarını yazınız. 39

DENEY 2-3: İKİ DİJİT YEDİ SEGMENT GÖSTERGEDE BİLGİ GÖRÜNTÜLEME AMAÇ: Mikrodenetleyici portuna bağlı iki adet yedi segment gösterge üzerinde tarama yöntemiyle sayı görüntülemek. GİRİŞ: Mikrodenetleyiciye doğrudan bağlı bir yedi segment göstergeye 8 adet data pini üzerinden değer gönderilir. Yedi segment göstergeler ile birden fazla basamağa sahip rakamların görüntülenmesi istendiğinde her gösterge için 8 adet data pininin ayrılması Mikrodenetleyici devre tasarımını zorlaştırır. Mikrodenetleyici pinleri yetersiz kalabilir. Birden çok basamak yapısına sahip yedi segment göstergeli mikrodenetleyici devrelerinde çeşitli tasarım yöntemleri kullanılmaktadır. Çok fazla pin sayısına sahip mikrodenetleyiciler kullanımı bir tercih olabilir. Diğer bir yöntem ise yedi segment göstergeler kod çözücü entegreler üzerinden sürülebilir. Bir diğer ve daha yaygın kullanım şekli ise göstergelerin tarama sistemi ile kullanılmasıdır. Tarama yönteminde kaç gösterge olursa olsun 8 adet data pini ve gösterge sayısı kadar kontrol pinine ihtiyaç vardır. Bu yöntemde, insan gözünün saniyede 24 kareden fazlasını algılayamama durumundan faydalanılır. Tarama yönteminde data değerleri tüm göstergelere paralel olarak gönderilir. Fakat aynı anda sadece bir göstergenin aktif olması sağlanır. Yazılımsal olarak önce bir basamak için data değeri gönderilir. O basamağa ait kontrol pini aktif edilir. Göstergede değer kısa bir süre görüntülendikten sonra basamak pasif edilir. Sonrasında aynı işlemler diğer basamaklara da uygulanır. Tüm göstergelerdeki görüntüleme saniyede en az 24 kez tekrar ettirildiğinde ise göstergeler üzerinde rakamların hepsi aynı anda sürekli yanıyormuş görüntüsü alınır. Uygulamada iki basamaklı sayıların, PORTD üzerinden sürülen iki adet gösterge üzerinde tarama yöntemiyle görüntülenmesi gerçekleştirilecektir. DEVRE ŞEMASI 40

DENEY 2-3: İKİ DİJİT YEDİ SEGMENT GÖSTERGEDE BİLGİ GÖRÜNTÜLEME AKIŞ DİYAGRAMI //Başlık dosyası tanıt. //Osilatör ayarla. //Ana program başlat. //BIR_BAS = PIN_E1 //ON_BAS = PIN_E0 //8bitlik i değişken //8bitlik sayi değişken //8bitlik onlar değişken //8bitlik birler değişken //8bitlik seg_tablo isimli 16elemanlı dizi //ADC pinleri dijital //ADC kapalı //PORTE çıkış //PORTD çıkış //PORTE = 0x00 //PORTD = 0x00 //Sonsuz döngüyü başlat. //birler basamağı değeri bul. //onlar basamağı değeri bul. //i=0 dan başla, i<40 olduğu sürece i yi birer arttırarak döngü yap. //PORTD ye seg_tablo nun onlar nolu satırdaki değeri gönder. //ON_BAS = 1 //bekle //ON_BAS = 0 //PORTD ye seg_tablo nun birler nolu satırdaki değeri gönder. //ON_BAS = 1 //bekle //ON_BAS = 0 // sayi 99 dan küçükse bir arttır, değilse sayi değişkenine 0 yükle. //Sonsuz döngüye git. //Ana programı bitir. 41

DENEY 2-3: İKİ DİJİT YEDİ SEGMENT GÖSTERGEDE BİLGİ GÖRÜNTÜLEME UYGULAMA KODLARI #include "16F877A.h" //Mikrodenetleyici başlık dosyası tanıtılır. #fuses XT //Kristal osilatör kullanılacak. #use delay(clock=4m) //delay komutları için osilatör hızı 4Mhz #define BIR_BAS PIN_E1 // BIR_BAS ifadesi PIN_E1 olarak tanımla #define ON_BAS PIN_E0 // ON_BAS ifadesi PIN_E0 olarak tanımla int8 i, sayi=0; //8bitlik i ve sayi isminde iki değişken // tanımla int8 onlar=0, birler=0; //8bitlik onlar ve birler isminde iki // değişken tanımla int8 seg_tablo[16] = //8bitlik seg_tablo isminde // 16 elemanlı dizi tanımla 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, //Diziye yüklenecek değerler 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71; //Diziye yüklenecek değerler void main(void) //Ana program başlangıcı setup_adc_ports(no_analogs); //Analog özellikli pinler dijital kullan. setup_adc(adc_off); //Analog dijital çevirici kapalı olsun. set_tris_e(0x00); //PORTE nin tüm pinlerini çıkış olarak kullan set_tris_d(0x00); //PORTD nin tüm pinlerini çıkış olarak kullan output_e(0x00); //PORTE ye 0x00 bilgisi gönder. output_d(0x00); //PORTD ye 0x00 bilgisi gönder. while(1) //Sonsuz döngü başlangıcı birler = sayi % 10; //sayi değerinin 10 a mod al. //(Birler basamağındaki değer bulunur.) onlar = (sayi / 10) % 10; //sayi değerini 10 a böl, sonra 10 a mod al //(Onlar basamağındaki değer bulunur.) for(i=0; i<40; i++) //i=0 dan başla, i<40 olduğu sürece //i yi bir arttırarak döngü yap. output_d(seg_tablo[onlar]); //seg_tablo nun onlar nolu // satırındaki değeri PORTD ye gönder. output_high(on_bas); //ON_BAS çıkışını Lojik 1 yap. delay_ms(10); //10ms bekle output_low(on_bas); //ON_BAS çıkışını Lojik 0 yap. output_d(seg_tablo[birler]); //seg_tablo nun birler nolu // satırındaki değeri PORTD ye gönder. output_high(bir_bas); //BIR_BAS çıkışını Lojik 1 yap. delay_ms(10); //10ms bekle output_low(bir_bas); //BIR_BAS çıkışını Lojik 0 yap. if(sayi < 99) // sayi değeri 99 dan küçükse sayi = sayi + 1; // sayi değerini 1 arttır. else // sayi değeri 99 dan küçük değilse sayi = 0; // sayi değişkenine 0 yükle. E111 42

DENEY 2-3: İKİ DİJİT YEDİ SEGMENT GÖSTERGEDE BİLGİ GÖRÜNTÜLEME SORULAR 1. Deneme kartı üzerinde bulunan iki adet yedi segment gösterge üzerinde robot yazısını görüntülenmesini sağlayan programı yazınız. Robot yazısı iki gösterge üzerinde aşağıda verildiği gibi 6 aşamada sıra ile görüntülenecektir. Bu işlem sonunda robot yazısı sağdan sola doğru kayarak görünür. Birinci görüntü _ r 1 saniye kadar İkinci görüntü o b 1 saniye kadar Üçüncü görüntü b o 1 saniye kadar Dördüncü görüntü o t 1 saniye kadar Beşinci görüntü t _ 1 saniye kadar Altıncı görüntü 1 saniye kadar 0b00000000, //boşluk 0b01010000, //r harfi 0b01011000, //o harfi 0b01111100, //b harfi 0b01011000, //o harfi 0b01111000, //t harfi 43