Elektronik / Mikrodenetleyici Projeleri/

89C51RC2 PLCC ile Trafik Sinyalizasyonu

Sponsorlu Bağlantılar

Trafik Sinyalizasyonu
Devremde 4 yol ağzındaki trafik ışıklarının koordinasyonlarını bir 89c51rc2 mikro denetleyicisiyle başarmış bulunmaktayım.

Program iki kademeden oluşmaktadır. Birincisi ışıkların yanma sürelerini belirlemek amacı ile gecikme yaratmak için oluşturulmuş “zaman(n)” fonksiyonudur. Bu fonksiyonda “n” yerine yazılan değer kadar (n=saniye) programda gecikme oluşur. İkinci kısım ise ”main()” ana programın yazılı olduğu kısımdır. Bu kısımda ledlerin yanıp sönme sıraları ve bekleme süreleri (“zaman(n)” fonksiyonu ile) gerçekleştirilmiştir.

Kullanılan Malzemeler

  • 89c51RC2
  • LCC-SKT44 (soket)
  • Kristal : 12MHz
  • Kapasitör : 22pF x2 – 10uF
  • Direnç : 10K – 330 x12
  • Kırmızı Led : x8
  • Sarı Led : x8
  • Yeşil Led :x8
  • Delikli Pertinaks
  • Klemens(ikili) : x7
  • L7805
  • Zil teli

Trafik Sinyalizasyon Devre Şeması
trafik sinyalizasyon devresi

Baskı Devre Şeması
89c51rc2 trafik sinyalizasyonu baskı devre pcb

LCC-SKT44 Soket Bacak bağlantıları
LCC SKT44 Soket

89c51RC2 PLCC Bacak bağlantıları
89c51RC2 PLCC

Mikro Denetleyiciye Yüklenecek C Programı

#include 
#include 

#define yol4yesil	P2_5
#define yol4sari	P2_4
#define	yol4kirmizi	P2_3
#define	yol3yesil	P2_2
#define	yol3sari	P2_1
#define	yol3kirmizi	P2_0
#define	yol2yesil	P3_5 //portların isim atamalamaları yapıldı.
#define	yol2sari	P3_4
#define	yol2kirmizi	P3_3
#define	yol1yesil	P3_2
#define	yol1sari	P3_1
#define	yol1kirmizi	P3_0


void zaman(int saniye) //bekleme fonksiyonu
{
 int a,b;
 for(a=0;a

Programın Çalışması
Öncelikle programda kullanılacak olan kütüphanelerin tanımlamaları yapılmıştır.

#include (Kullanılan mikro denetleyicinin kütüphanesi)
#include (standart input output)

Daha sonra programdaki portların her bitinin ayrı bir şekilde kullanılmasından kaynaklanacak karışıklığı gidermek amacıyla portlara ilgili yolun kırmızı-sarı-yeşil ışıklarına ait atamaları yapılmıştır.

#define 	yol4yesil	P2_5
#define 	yol4sari	P2_4
#define	yol4kirmizi	P2_3
#define	yol3yesil	P2_2
#define	yol3sari	P2_1
#define	yol3kirmizi	P2_0
#define	yol2yesil	P3_5
#define	yol2sari	P3_4
#define	yol2kirmizi	P3_3
#define	yol1yesil	P3_2
#define	yol1sari	P3_1
#define	yol1kirmizi	P3_0

a-) "zaman(n)" Fonksiyonunun çalışması

Zaman fonksiyonu devrenin çalışması esnasında devreyi herhangi bir konumda istenilen süre bekletilmek amacıyla gerçekleştirilmiştir. Fonksiyonun çalışma prensibi şu şekildedir.

Mikro Denetleyici osilatör olarak 12MHzlik kristal kullandığı için ve bu mikro denetleyicinin zamanlayıcıları da kristalin 1/12 si kadar hızla saydıkları için zamanlayıcıyı mod1 de -50000 e kadar 20 defa saydırmamız bir saniyelik bir gecikmeye yol açmaktadır. Bu gecikmeyi de kullanıcının fonksiyonu çağırırken girdiği sayısal değer (n) kadar tekrarlatırsak istenilen gecikme fonksiyonu elde edilmiş bulunmaktadır.

b-) "main()" Ana programın çalışması
Öncelikle programda kullanılacak değişkenler tanımlanmıştır.

int sari=1,kirmizi=1,yesil=5;

"sari" değişkeni programın işleyişindeki bütün sarı ışıkların yanma sürelerini belirlemektedir.

"kirmizi" değişkeni programın işleyişindeki bütün kırmızı ışıkların yanma sürelerini belirlemektedir.

"yesil" değişkeni programın işleyişindeki bütün yeşil ışıkların yanma sürelerini belirlemektedir.

Saymasını istediğimiz değer 2 bytelık bir değer içerisindedir dolayısıyla mikro denetleyicinin zamanlayıcısı 16 bitlik geri yüklemesiz olan mod1’e kurulmuştur.

TMOD=0x01;

Ledlerin sağlamlık kontrolü amacıyla programın başlangıcında bütün ledler 5 saniye yanık durup daha sonra çıkışlar temizlenip ve bütün yollara kırmızı ışık vererek 2 saniye bekledikten sonra "while(1)" kısır döngüsüne girmektedir.

P2=255;	//bütün ışıklar kontrol amacıyla yanar
P3=255;
zaman(5); //5 saniye bekler
P2=0; //çıkışlar temizlenir
P3=0;
yol1kirmizi=1; //bütün yollara kırmızı ışık yanar
yol2kirmizi=1;
yol3kirmizi=1;
yol4kirmizi=1;
zaman(2); //2 saniye bekler

Bu durumda bütün yollara kırmızı ışık verilmektedir. Bundan sonra yapılan işlem ışıkların istenilen konuma getirilip ilgili bekleme fonksiyonunun ("zaman(n)") çağırılmasıdır.

Örnek: Birinci yola yeşil ışık vermek için;

yol1kirmizi=0;
yol1yesil=1;			//1.yol için yeşil ışık
zaman(yesil);

NOT: Bu Programda unutulmaması gereken çok önemli noktalardan birisi işlemler sırasında bir sonraki basamağa geçerken önceki işlemde değiştirilmiş olan ışığın eski konumuna getirilmesidir.

Örnek :

yol1yesil=0;
yol1sari=1;	 //1.yol için sarı ışık
zaman(sari);
yol1sari=0;
yol1kirmizi=1; //1.yol için kırmızı ışık
zaman(kirmizi);

"while(1)" kısır döngüsünün içinde bütün yollara birer kez geçiş hakkı verilmiş ilgili ışıkların süreleri kadar yakılıp söndürülmüştür. Program bu döngünün içinden hiçbir koşulda çıkmayacağı için program kapatılana kadar kendisini tekrarlayacaktır.

Projeyi Hazırlayan: Abdullah Onur Baysal Dosyalar 89C51RC2 PLCC ile Trafik Sinyalizasyonu

Dosya indirme LINK listesi (HTML formatında) link-3406.zip şifre-pass: 320volt.com
Emeği geçen Kişilere Teşekkürler

  • sezai

    arkadaşlar bana acil tırafik ışıklarının çalışma pırensibi lazım nerden bula bilirim acaba

  • ahmet

    Ellerinize sağlık çok güzel bir çalışma olmuş :)
    Çok teşekkürler