Elektronik / Mikrodenetleyici Projeleri/

AT89C51RC2 ile 2X16 Lcd Göstergeli Frekansmetre

Sponsorlu Bağlantılar

isis devre şeması
frekansmetre

Frekansmetre ile ilgili bütün konularda frekansın tanımını esas almak gerekmektedir. Aynı şekilde sayısal (dijital) Frekansmetre yapmak için de frekansın tanımını devre olarak aynen uygulamak gerekmektedir.

Frekans : 1 saniyedeki peryot sayısına frekans denir.

Peryod : Tam devir yapmış dalga bir peryotluktur (devirliktir). Devrini tamamlayan dalgaya peryot denir.

Pulse: Yarım peryota pals denir. 1 peryotta birisi pozitif, diğeri negatif olmak üzere iki adet pals vardır.

Frekans Birimi: HERTZ veya SAYKIL olarak belirtilir. Değerinin askatları yoktur, fakat üs katları vardır.

1 Hz ( Hertz )
1 000 Hz = 1 KHz ( Kilohertz )
1 000 000 Hz = 1 000 KHz = 1 MHz ( Megahertz )
1 000 000 000 Hz = 1 000 000 KHz = 1 000 MHz = 1 GHz ( Gigahertz )
( Yukarıya devam eder. Terahertz gibi )

Yukarıdaki temel tanımlar bir frekansmetre yapmak için yeterlidir. Şimdi frekansmetreyi açıklayabiliriz Frekansmetre 1 saniyedeki peryot sayısını ölçen ölçü aletlerine frekansmetre denir

Piyasada çeşitli yöntemler kullanarak yapılmış değişik tiplerde frekansmetreler satılmaktadır. Analog ibreli, titreşimli, sayısal, programlarla yapılmış olanlar bunlardan bazısıdır. Biz bu tiplerden sadece sayısal (dijital) entegrelerle gerçekleştirilen sayısal göstergeli tür üzerinde duracağız.

Frekanmetre Nasıl Yapılır ?
Frekansmetre yapmak için 2 saniyelik, eşit palslı ve kare dalga bir peryot kullanılması yeterlidir. Bu peryotun pozitif ve negatif palsları birbirine eşit olmalıdır. Bu 2 saniyelik peryotun 1’er saniyelik iki adet palsından istediğimizi kullanarak bir frekans metre tasarımı yapabiliriz. Ayrıca yardımcı palslara da ihtiyacımız vardır. Bu yardımcı palslar, göstergeleri sayma esnasında tutma ve sayma işlemi bittiğinde sayacıları resetlemek (sıfırlamak) olmak üzere iki adet olması gerekmektedir. Biz burada temel ölçüm devresini esas alıyoruz. Değişik aksesuar ve görüntü düzenleri için daha fazla palslar kullanılabilir. 2 saniyelik peryotta kullanacağımız pals değerini, öğrenmek istediğimiz sayıcılara girecek olan frekans için anahtar görevi gören devreyi çalıştıracaktır.

Peryodalrın Sayılması
Salınımın olduğu bir teli bir anahtar kullanarak 1 saniye için açıp kapatırsak ve telden bu saniyede geçen salınım miktarını sayarsak o telden o anda geçen peryot miktarını öğrenmiş oluruz. Böylece frekansı öğrenmiş oluruz.

Referans Freaknsı ve Özellikleri: Öncelikle referans frekansını elde etmek gerekmektedir. Bu, 2 saniyelik, eşit palslı ve kare dalga bir peryottur. Frekansı 1/2 hertzdir.

Bu referans frekansını ne şekilde elde ettiğimiz önemli değildir. Temel şart, kararlı ve kullanacağımız palsın 1 saniyesinin kesin olması gerekmektedir. Bu temel şart yerine getirilemezse ölçüm hatalı ve karasız olur. Bu istenen bir durum değildir. Bu frekansta kararlılığı sağlamak için kristal kontrollu osilatör devresi hazırlamak gerekmektedir. Bu tür devreler, TTL veya CMOS entegrelerle yapılabilir.

Referans frekansı

Referans frekansı ile saydırma palsı, ekrana aktarma palsı ve sayıcıları resetleme palsı elde edilmesi gerekmektedir.

Referans frekansı ile elde edilmesi gereken palslar.

Saydırma palsı

Ekrana Aktarma Palsı

Sayıcıları Resetleme Palsi

Peryotları Kontrol Altına Alarak Geçirmek :Bunun için her bir palsı 1 saniye olan referans frekansı elde edildikten sonra, bu referans frekansı ile peryotların geçişi kontrollu olarak yapılır. Böylece frekans sayılmaya hazır hale getirilir. Yani 1 saniye geçirilen frekans 1 saniye bekletilir. Frekansın geçişi sırasında sayma işlemi yapılır, bekleme sırasında göstergelere aktarılır ve sayıcılar sıfırlanarak tekrar sayıma hazır hale getirilir. Düzenek böyle çalışır. Bu düzeneğin çalışması için referans frekansına ihtiyaç vardır. Bu referans frekansı ile ölçeceğimiz frekansı kıyaslayarak sonuca varırız. Bu türlü bir işlem için bir AND kapısı kullanılabilir. Bu devrede 4518 entegresi kullanıyoruz ve clock girişi kontrol edilir.

Frekans Saydırmak :Bu devrede sayılacak frekans 4518’un ENABLE girişine bağlanıyor. RESET uçları birleştirilerek referans devresinden gelen resetleme ucuna bağlanıyor. Sayma palsı ucu ise, CLOCK ucuna bağlanıyor. İlk entegrenin Q3 çıkışı sonraki entegrenin ENABLE ucuna bağlanıyor. Q1, Q2, Q3, Q4 çıkışları ise gösterge sürücü entegrelere gidiyor.

4518 Entegresi İle Yapılan Temel Frekans Sayma Devresi

2 x 4518 entegre
1 x 4017 entegre
1 x LCD ( 2×16 char ) +LCD soketi ve girişi
1 x 89c51rc2 ve soketi
1 x 12Mhz kristal
1 x 10x10luk plaket
2 x 2lik Klemens
1x 1k direnç
1x 10k direnç

LCD’de kullanılan komutların tanımlanması

#define Sil 		 1	//  Ekranı temizler
#define BasaDon 	 2	//  İmleci sol üst köşeye getirir
#define SolaYaz 	 4  //  İmlecin belirttiği adres azalarak gider
#define SagaYaz 	 6  //  İmlecin belirttiği adres artarak gider
#define ImlecGizle	 12	//  Göstergeyi aç, kursör görünmesin
#define ImlecYanSon	 15	//  Yanıp sönen blok kursör
#define ImlecGeri	 16	//  Kursörü bir karakter geri kaydır
#define KaydirSaga	 24	//  Göstergeyi bir karakter sağa kaydır                   
#define KaydirSola   28	//  Göstergeyi bir karakter sola kaydır   
#define EkraniKapat	 8	//  Göstergeyi kapat (veriler silinmez)
#define BirinciSatir 128 //  LCD'nin ilk satir başlangıç adresi       
#define IkinciSatir  192 // İkinci satırın başlangıç adresi

LCD’de Kullanılan Fonksiyon Seçimi

#define CiftSatir8Bit   56	 // 8 bit ara birim, 2 satır, 5*7 piksel
#define CiftSatir4Bit   48	 // 8 bit ara birim, 1 satır, 5*7 piksel
#define TekSatir8Bit   40	 // 4 bit ara birim, 2 satır, 5*7 piksel
#define TekSatir4Bit   32	 // 4 bit ara birim, 1 satır, 5*7 piksel

LCD Girişlerinin Tanımlanması

#define Data  P1	  //  LCD Data girişleri için port ata
#define RS	P3_2      //  Saklayıcı seçme girişi RS=0 komut, RS=1 veri
#define RW	P3_1      //  Oku/Yaz girişi RW=0 yaz, RW=1 oku
#define EN	P3_0      //  Yetki girişi 

LCD Gecikme Fonksiyonu

void Gecikme ( long int sure )
{
  long int i;
  for  ( i=1; i<=sure ; i++ )
    {;}
}

LCD Hazır Olana Kadar Bekle Fonksiyonu

void LcdHazir ()
{
Data=0xFF;	       //  LCD den veri almaya hazirlan 	  	
RS = 0;	       //  Komut modu
RW = 1;	       //  LCD den okuma
EN = 1;                  //  Yetki için düşen kenar ayarı
Gecikme(200);      //  Kısa bir bekleme süresi
While ( Data & 0x7F == 0x80 ) ;  // Meşgul bitini kontrol et.
}

LCD'ye Komut Yazdırma Fonksiyonu

void Komut (int komut) 
{
  LcdHazir();         //  LCD hazır olana kadar bekle
  RS=0;	      //  RS komut modunda
  RW=0;	      //  RW yaz modunda
  EN=1;	      //  İşlemin yetkilendirilmesi için düşen kenar ayarı
  Data=komut;	      //  LCD veri girişlerine komut bilgisini aktar
  EN=0;	      //  Yetki için düşen kenar sağlandı
  Gecikme(1000);  //  Gecikme

LCD'ye Tek Bir Karakter Yazdırma Fonksiyonu

void Veri ( char veri, long int hız )	
{
 
LcdHazir();      //  LCD hazır olana kadar bekle
 RS=1;	             //  RS komut modunda
 RW=0;	  //  RW yaz modunda
 EN=1;	              //  Yetki için düsen kenar ayar işlemi
 Data=veri;        //  LCD data girişlerine veri bilgisini aktar
 EN=0;               //  Yetki için düşen kenar sağlandı
 Gecikme(hız);  //  Ekranda karakterlerin görünmesi arasındaki süre
}

LCD'ye Karakter Dizisi (String) Yazdırma Fonksiyonu

void VeriDizi ( char veri[], long int hız )	
{
  int i=0;
  While (veri[i]!=0 )
 {
   LcdHazir();          //  LCD hazır olana kadar bekle
   RS=1;	        //  RS komut modunda
   RW=0;	        //  RW yaz modunda
   EN=1;	        //  Yetki için düsen kenar ayar işlemi
   Data=veri[i];       //   LCD data girişlerine veri bilgisini aktar
   EN=0;                 //   Yetki için düşen kenar sağlandı
   i++;                    //   Bir sonraki veri bitini almak için dizi'yi 1 arttır 
   Gecikme(hız);    //    Karakterlerin görünmesi arasındaki süre

LCD Başlangıç Ayarlarını Yapan Fonksiyon

void LcdAc ( void )            
{ 	
  Komut( ImlecGizle );
  Komut( CiftSatir8Bit );
  Komut( SagaYaz );
}
 

Hazırlayan: Abdülbaki Şahin Projenin Kaynak simülasyon ve C Kod Dosyaları AT89C51RC2 ile 2X16 Lcd Göstergeli Frekansmetre

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

  • utku

    kodlamayı nereye yazıcağız.

  • Kadir Bulgan

    Bu proje paylaşımı için teşekkürler ve mümkünse paylaşımı yapan arkadaş ısıs ve ares dosyalarını bir şekilde paylaşa bilirse memnun olurum

    • isis dosyası verilmiş pcb çizimide rapor dosyasında resim olarak verilmiş bir zahmet resime bakarak aresde çizersiniz yada resim dosyasını boyutlandırıp yazdırırsınız

  • parametre

    Sayın Gevv’i burada takdir etmemek mümkün değil Biraz kafa patlatmak gerekiyor . Çalışmaların sizin olabilmesi için bir çok noktada değişiklikler yapıp bu komut nasıl çalışıyor bunu nasıl daha değişik çalıstırabiliriz diye beyin patlatırdık . Şimdi öğretim görevlisiyim ama öğrenmek her şeyide hazır olarak almak olmamalı bunu birazda sizin geliştirmeniz gerekiyor inanıyorum ki aramızda çok akıllık değerler mevcut Öğretim gorevlileri olarak bunu amaçlıyoruz .Büyük bilim adamları sizler neden olmayasanız eksiğiniz nedir ? ama hazır olarak değil kendinizi zorlayarak bir şeyler bulabilirsiniz

  • KDR_xzx

    programı işlemcinin içine atmak için ek bi devre kurmak gerekiyor mu ?