• Anasayfa
  • Hakkımızda
  • Etkinlikler
  • Destek Verin
  • Site Haritası
  • Giriş Yap
  • Üye Ol
  • Facebook
  • Twitter
  • RSS
Yazılım Dilleri
  • Soru - Cevap
  • EĞİTİM SETİ
  • KATEGORİ
  • DUYURU
  • TEKNOLOJİ HABERLERİ

Son Sorular

  • 8/2/2020 11:38:31 PM'Basit' Yazılım Dili
  • 6/25/2020 3:18:13 PMderleme hatası
  • 12/11/2017 4:49:15 PMWindows Hizmeti Hk.
  • 4/23/2016 12:55:33 AMC programlama 2 oyun

Popüler Sorular

  • 5/27/2012 5:49:50 AMAsp.Net ile Date time alana veri ekleyemiiyorum ?
  • 4/2/2012 12:45:18 AM.exe uzantılı dosya için dijital imza nerde nasıl alınır.
  • 5/12/2012 8:44:49 AMAcil Yardım
  • 5/27/2012 1:46:51 PMveri tabanı bağlantısı
  • .Net Framework
  • 8085 Assembly
  • Active Directory
  • ADO.NET
  • Android
  • Apple IOS
  • Arduino
  • ASP.NET
  • ASP.NET MVC
  • Blackberry
  • C#.Net
  • C++
  • CCG Framework
  • CISCO
  • CSS
  • Diğer
  • Dreamweaver
  • Entity Framework
  • Exchange Server
  • Gömülü Sistemler
  • GSM Programlama
  • Güncel
  • Güvenlik
  • HTML5
  • Java
  • Javascript / JQuery
  • Jira
  • Kariyer ve İş Yaşamı
  • LibreOffice
  • LINQ
  • Linux
  • Matlab
  • Microsoft Dynamics CRM
  • Mobil Uygulama Geliştirme
  • MySQL
  • NoSQL
  • Oracle
  • OWIN
  • PFSense
  • PHP
  • Powershell
  • Python
  • Sanallastirma
  • SAP-ABAP
  • SCOM 2012
  • SEO
  • Sharepoint 2010
  • Sharepoint 2013
  • Silverlight
  • Sistem Analiz ve Tasarımı
  • SQL Server
  • Symantec
  • TFS
  • T-SQL
  • Ubuntu
  • VB.NET
  • Veritabanı Yönetim Sistemleri
  • Visual Studio
  • VMware
  • WCF
  • Web Hosting
  • Windows 8
  • Windows Azure
  • Windows Phone 7.1
  • Windows Phone 8
  • Windows Server
  • Wordpress
  • WPF
  • Xamarin
  • XNA
  • Yazılım Mühendisliği
  • Yöneylem Araştırması
  • ASP.NET MVC
  • Entity Framework
  • Javascript / JQuery
  • LINQ
  • PHP

Son Duyurular

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

8051 Mimari Tabanlı AT89C51 Mikrodenetleyici ile Bilgi Sınama Zili Yapma

Gömülü sistemler teknolojisinde 8051 mimarisine sahip AT89C51 mikro denetleyicisini kullanarak bilgi sınama (sınav ya da test) zili sistemini geliştirmeyi öğreneceğiz.

22.06.2013

Yazar: Muhammed ÖNAL (Google+)

Kategori: Gömülü Sistemler

7682

8051 MİMARİ TABANLI AT89C51 MİKRODENETLEYİCİ KULLANARAK BİLGİ SINAMA ZİLİ YAPMAK

 

Merhaba değerli arkadaşlar,

Gömülü sistemler teknolojilerine yönelik bu yazı serimizde 8051 mimarisine sahip AT89C51 mikro denetleyicisini kullanarak günlük hayatta sıkça karşılaştığımız bilgi sınama diğer adıyla sınav ya da test zili olarak isimlendireceğimiz bir sistemi geliştirip, proje içinde hangi bileşenlerin kullanıldığına değineceğiz.
 

Sistem Hakkında Ön Bilgi:

Bilgi sınama, Test veya Sınav zili sistemleri yaygın olarak, okul, kolej ve TV programlarında kullanılmakta olan bir sistemdir. Örneğin; TV’lerde bir yarışma programını hayal edin ve bu yarışma programı bir bilgi programı olsun; Sorulan soruya her yanlış cevap verdiğinizde zil sesi ile uyarıldığınızı düşünün, işte bu tarz bir zil sesi sistemi geliştirmeye çalışacağız. Sistemi geliştirirken, sistem içinde hangi bileşenlerin kullanıldığına değinerek bu bileşenler hakkında bilgiler vermeye çalışacağız.

Sistem içinde kullanılan butona hangi takım daha önce basarsa, ilk olarak cevap verme hakkına sahip olur. Zaman zaman iki takım çok küçük zaman aralığında zile bastığında kimin daha önce basıp basmadığını tanımlamak/ayıklamak oldukça zordur. Bu gibi karşılaşılan problemlerde genellikle insan kararı sonucu belirlemektedir ve bu karar karşı tarafa göre yanlı olduğu düşünüldüğünden dolayı beraberinde problemler getirmektedir. İşte tamda bu noktada geliştireceğimiz bilgi sınama/sınav/test zil sistemi bu tür bir problemi ortadan kaldırmaktadır. Burada ki temel amaç, en kısa sürede zile hangi takım zile basarsa sistem bu kısa sürede basılan işlemi devreye alır ve diğer tüm seçenekleri devre dışı bırakır.

Bu sınav/bilgi sınama/test zili sisteminde en fazla 8 takım kullanılabilir. Bu demektir ki 8 buton kullanılacaktır. Dile getirdiğimiz bu sistemi 8051 mimari tabanlı AT89C51 mikro denetleyicisi çerçevesinde oluşturacağız.

Tanımlamalar:

Ön bilgiyi verdiğimizde bu sistemde maksimum 8 takımın kullanılabildiğini söylemiştik. Bu ifadenin anlamı şudur: Bu sınav/bilgi sınama/test zili sistemi 8 takıma karşılık gelen 8 giriş PIN kullanılacağını işaret etmektedir. İşlemin çıktısı ise (output), ilk olarak butona basan takıma karşılık gelen sayıyı bir 7 segment display ekranda görüntülenecek şekilde ayarlanacaktır. Bu 7 segment display’in ara yüzü mikro denetleyiciye bağlıdır. En kısa sürede butona basan takımın sonucu 7 segment display de görüntülendiğinde kısa süreli bir zil sesi duyulacaktır. 7 segment display’in giriş ve çıkış PIN’lerinin bağlantıları aşağıdaki gibi devre şeması üzerinde gösterilmiştir.

                                           8 button exam buzzer at89c51

Şekilde görüldüğü gibi şayet 7 segment display hakkında bilgi verecek olursak aşağıdaki bilgileri vermiş oluruz:

7- Segment Display Özellikleri

a.       7 Segmentli ekran; yüksek verimli kırmızı kaynak renkli cihazlar Galyum Fosfit üzerinde turuncu ışık yayan diyotla Galyum Arsenid Fosfit ile yapılmıştır.

b.      0.56 inç rakam yüksekliği

c.       Düşük akım çalışması

d.      PC üzerinde kolay kurulumu ve kullanım kolaylığı

e.       Mekanik engebeli

Gibi özelliklere sahiptir.

Yedi ( 7- Segment) Segment Ekran Nedir?

7 Segment Display, 8 (7 +1) parça şeklinde göstergeli ve 8 (7+1) LED’den (A –G ,DP) oluşur. Dijital elektronik sistemlerde ve gömülü sistemler teknolojisinde devre içinde numaralar ve bazı karakterleri göstermek amacıyla kullanılan işlevsel bir bileşendir. Bağlantıları basitleştirmek için, Katot ve Anot sırasıyla ortak PIN ile bağlanır. Bağlarken her diyot ayrı ayrı ele alınır.(Bu 7-SEG bileşenin 10 bacağı bulunmaktadır. Bunlardan tanesi ortak (anot ve katot) geriye kalan 8 bacak ise her bir LED için ayrılmış bacaklardır.) Bunun anlamı, her biri kendi akım sınırlayıcı dirençlere sahip olmasıdır.

DP nokta görevini yapan 7+1 deki +1 dediğimiz dış LED’dir. Parça sayısına takılmaksızın uluslar arası elektronik standartları çerçevesinde adı yedi segment (7-SEG) olarak adlandırılmıştır.

                                                                                          7 segment display gösterimi

Şimdi ise yukarıda vermiş olduğumuz yedi segment (7-segment) ekranını bir mikros denetleyiciye bağlayarak oluşan şekli inceleyeli. Aslına bakılırsa şekil 3.9a baktığımızda harflerin dizilişi ve harf için 1 ve 0 uyguladığımızda yani LED durumunun açık yada kapalı oluşunu incelediğimizde oluşan rakamları rahatlıkla görebiliriz.

Örneğimizde 5 rakamının Binary (ikili) sistemde gösterilişini göstermiş olduk. Binary sayı sistemi için

                                                         7 segment display example

Yedi Segment ( 7-SEG) Ekran Tipleri ve Ekran Formatı

                                                                                7 segment display

EKRAN FORMATI

Ekran formatında harflere karşılık gelen data rakamlarını bir tablo altında verecek olursak,aşağıdaki gibi bir tablo elde etmiş oluruz.

D7

D6

D5

D4

D3

D2

D1

D0

DP

G

F

E

D

C

B

A

Tabloya baktığımızda format mantık ‘0’ SEGMENT’in ON yani AÇIK olduğunu belirtir. ‘1’ ise OFF yani KAPALI olduğunu belirtir.

Tabloya baktığımızda format mantık ‘0’ SEGMENT’in ON yani AÇIK olduğunu belirtir. ‘1’ ise OFF yani KAPALI olduğunu belirtir.

 

YEDİ SEGMENT (7-SEG) ÇEŞİTLERİ

Seven Segment yani Yedi Segment çeşitlerine göz attığımızda, temel anlamda 2 çeşidinin olduğunu görürüz.

Bunlar;

1.Ortak Anot

2.Ortak Katot

Ortak Anot Ekran: Bu yapıdaki LED’lerin anotları birleştirilmiş ve gerekli girişler katottan verilmektedir. Bu durumda yanmasını istediğimiz parçaya ait uçtan (-) vermemiz gerekir.

Ortak Anot Ekranlarda girişler 7 parça + 1 decimal nokta için 8 adet katot ucu ve bir adet de anot ucu olmak üzere esasen 9 uç olacaktır. Ama yapı itibariyle göstergelerde ortak olan ucun tek olması sorun teşkil ettiğinden ve gömülü sistem tasarımcılarına kolaylık olması açısından ekranlarda ortak olan uçtan hem üstte hem de altta olmak üzere 2 adet bulunur.

Ortak Katot Ekran: Bu yapıda bulunan LED’lerin katotları birleştirilmiş ve gerekli girişler katottan verilmektedir. Bu durum nezdinde yanmasını istediğimiz parçaya ait uçtan (+) vermemiz gerekir.

Ortak Anot Ekranda da 8 adet anot ucu ve 1 adet de katot ucu olmak üzere esasen 9 uç bulunmaktadır.
 

Aşağıdaki şeklimize baktığımız zaman, daha anlamlı bir ifade biçimi kafamızda canlanmış olur.

                                                                  anat-katot 7 segment display

DİYOT

VERİ

DURUM

ORTAK KATOT

0

AÇIK (ON)

 

1

KAPALI (OFF)

ORTAK ANOT

1

AÇIK (ON)

 

0

KAPALI (OFF)

 

UYARI:


Söz konusu SEGMENT sürme olayını gerçekleştirebilmek için elektronik teknolojisi dünyasında çeşitli entegreler mevcuttur. Bu entegrelere giriş olarak ekranda göstermek istediğiniz sayıyı binary(ikili) olarak verdiğinizde, çıkışta gerekli pinleri aktifleştirmiş oluyor. Böylece ekran üzerinde istediğiniz sayıyı görebiliyorsunuz. Ayrıca ekranların pinleri’nin önüne küçük birer direnç bağlamak gerekir. Eğer bu dirençleri bağlamazsak LED’ler kullanılamaz hale gelebilir. Yukarıdaki Şekli incelediğimiz zaman oluşturulan 7-SEG kartında Ekranların önünde dirençleri görebilirsiniz.

Bu bilgilerin hemen ardından uygulama tanımlarımıza hemen geri dönelim:

                                                 8 button buzzer -at89c51

Sistem başlatıldığı zaman, yani herhangi bir Takımın kendi temsil ettiği butona bastığında 7-segment üzerinde herhangi bir görüntüleme olayı başlamayacaktır. Mikro denetleyici giriş pinlerini tarayarak tutar.Bu durumda, en kısa süre içinde basılan buton vasıtasıyla kısa süreli bir zil sesi duyulacaktır.Bu adımda tabiki basılan butonun temsil ettiği takım numarası 7 segment ekranda gözükecektir.

Elektronik Devre Şeması:

devre-şeması-at89c51-devre zil

Elektronik devre şemasını verdikten sonra işlemimize ait C kodlarımızı verebiliriz.

// sınav/bilgi sınama/test zili yapma programı

#include<reg51.h>

// 0 ile 9 arasındaki sayılara karşılık gelen Hex değeleri
unsigned int digital_deger[10]={0x40,0xF9,0x24,0x30,0x19,0x12,0x02,0xF8,0x00,0x10};   
sbit cikis_PIN = P3^0;       //  7-segment display etkinleştirmek için PIN'i    etkinleştirir
sbit durdur_PIN = P3^1;      //  Zili Resetlemek için PIN'i durdurur.
sbit zil_PIN=P0^0;           //  Zile ses veren zil PIN'i
int bayrak;


// Zaman geciktirme fonksiyonu
void delay()        
{
    int i,j;
    for(i=0;i<200;i++)
    for(j=0;j<1275;j++);
}
// Butona basan takımın temsil ettiği rakamı 7-segmentte görüntüleyen fonksiyon
void goruntule(unsigned int current_dig)   
{
    P2=digital_deger[current_dig];
    cikis_PIN = 1;
    zil_PIN=0;
    delay();
    zil_PIN=1;
    while(durdur_PIN != 0);
}  

// Giriş butonunu izleyen fonksiyon
void zil() 
{
    bayrak = 0;
    while(1)
    {
        while (P1 == 0xFF);
        
        while (P1 == 0xFE)   //Eğer 1 butonuna basılırsa kontrol eder.
        {
            bayrak = 1;
            goruntule(1);
        }

        while (P1 == 0xFD)   //Eğer 2 butonuna basılırsa kontrol eder.
        {
            bayrak = 2;
            goruntule(2);
        }    

        while (P1 == 0xFB )  //Eğer 3 butonuna basılırsa kontrol eder.
        {
            bayrak = 3;
            goruntule(3);
        }

        while (P1 == 0xF7 )   //Eğer 4 butonuna basılırsa kontrol eder.
        {
            bayrak = 4;
            goruntule(4);
        }

        while (P1 == 0xEF )  //Eğer 5 butonuna basılırsa kontrol eder.
        {
            bayrak = 5;
            goruntule(5);
        }

        while (P1 == 0xDF)  //Eğer 6 butonuna basılırsa kontrol eder.
        {
            bayrak = 6;
            goruntule(6);
        }

        while (P1 == 0xBF ) //Eğer 7 butonuna basılırsa kontrol eder.
        {
            bayrak = 7;
            goruntule(7);
        }

        while (P1 == 0x7F ) //Eğer 8 butonuna basılırsa kontrol eder.
        {
            bayrak = 8;
            goruntule(8);
        }
      
        P1 = 0xFF;
        durdur_PIN = 1;
        cikis_PIN = 0;
    }
}

void main()
{
    cikis_PIN=0;
    durdur_PIN = 1;
    P1 = 0xFF;
    zil();

}
 
elektronik devre 8051 at89c51
 
Bugünlük de bir yazımızın sonuna gelmiş bulunuyoruz. Bir sonraki yazımızda görüşmek dileğiyle, faydalı olmasını temenni ederim.
 

Muhammed ÖNAL
Bilgisayar Mühendisi
RFID Sistemleri Uzmanı
BT Yönetişimcisi

Blog:  http://www.muhammedonal.com
Web : http://www.yazilimdilleri.net

Yazar Hakkında

Muhammed ÖNAL

Muhammed ÖNAL

www.muhammedonal.com

Bilgisayar Mühendisi | RFID Sistemleri Uzmanı | BT Yönetişimcisi | Strateji Planlama ve İş Geliştirme 2015 itibariyle sağlık sektöründe Bilgi Sistemleri Yöneticisi ve Üst yönetim Stratejik Planlama ve İş Geliştirme Koordinatörü pozisyonunda çalışmaktadır.

Sosyal Medya

ORANLAR

  • 7682izleme

Arkadaşlarınla Paylaş

  • Tweet

0 Yorum

Yorum Yaz / Soru Sor

Lütfen yorum yazmak veya soru sormak için üye girişi yapınız.

Son Yorumlar

  • Böyle bir sayfalama ağ trafiğini hafifleti...
  • Böyle bir sayfalama ağ trafiğini hafifleti...
  • Merhaba, ellerinize sağlık çok yardımcı ol...
  • Merhaba Bu uygulama örneğinden ASP.net ...
  • Hocam Link başka sayfaya yönlendiriyor.

En Güncel Sorular

  • Bilgilendirme maili (C#.Net)
  • Power Pivot (Sharepoint 2010)
  • BigInteger, BigDecimal (Asp.Net ve Asp.Net MVC)
  • visual C# ile asp nette veritabanı islemleri (Asp.Net ve Asp.Net MVC)
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ? (Sharepoint 2010)

En Son Cevap Verilen Sorular

  • Bilgilendirme maili
  • BigInteger, BigDecimal
  • visual C# ile asp nette veritabanı islemleri
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ?
  • txt dosyasına veri yazma

Twitter

Takip et: @yazilim_dilleri

En Çok Okunanlar

Elif BAYRAKDAR

C# ile SQL Server Bağlantısı, Insert, Update ve Delete Sorguları

23.05.2013

  • 131483
  • 0
Hakan Keskin

C# ile Windows Service Projesi Oluşturma, Debug Etme ve Setup Hazırlama

17.12.2013

  • 78818
  • 0
batuhan avlayan

Php - Mail Gönderme (İletişim Formu)

02.09.2013

  • 52211
  • 0

Sponsorlar

KODLAB
Pluralsight
Exchange server is
Office 365
YAZILIM DİLLERİ
Yukarı Çık
  • Hakkımızda
  • Facebook
  • Twitter
  • RSS

© Yazılım Dillerinin Buluşma Noktası | Kaynak belirtildiği sürece makaleler kopyalanabilir.
YazilimDilleri.Net sitesinde yer alan kullanıcıların oluşturduğu tüm içeriklerin yayınlanması ile ilgili yasal yükümlülükler içeriği oluşturan kullanıcıya aittir, YazilimDilleri.Net hiçbir şekilde sorumlu değildir.

Kapat

Giriş Yap

Kullanıcı Adı

Şifre

Şifremi Unuttum

KULLANICI GİRİŞİ