Devre Tasarımında Kullanılan Yöntemler Devre tasarımında, ne yapılacağına karar verildikten sonra, maliyeti en düşük ve zamandan en fazla tasarruf sağlayacak yöntemler tercih etmek yada aramak gerekir. Çağımız bilim ve teknolojinin belki at başı koştuğu bir zamana ev sahipliği yapmasından dolayı bu alanda da alternatifler bolca bulunuyor. Hazırlayan: Caner ALTAŞ Emeği geçen Kişilere Teşekkürler
Belki önceden olsa, devremizin çalışmasını deneme işlemleri bizim için çok zahmetli ve maliyetli olabilirdi. Fakat şimdi “Gerçek Zamanlı Olmayan” yöntemlerle bu sorun neredeyse çoğu devre tasarımında yolumuzu aydınlatıyor. Günümüzde yaygın olarak kullanılan “Devre Tasarım Programları” zahmeti ve maliyeti en aza indiriyor. Örneğin; Elektronik Workbench, MultiSim, Proteus vb. bilgisayar programları bu konuda hayatımızı kolaylaştırırken; Boardmaker, Ultiboard, Ares vb. programlarda baskı devre çizimlerinde büyük rahatlıklar sağlıyor.
Ben de proje devresini Proteus adlı simülasyon programıyla tasarladım. Bu program kişiye sanal bir laboratuar ortamı sağlıyor. Devre plaket üzerine aktarılmadan önce 8051’in çalıştırılmasına kadar denenebiliyor ve kontrol edilebiliyor.Her türlü laboratuar ortamının sağlanmasının yanı sıra, belki de en rahatlatıcı yanlarından birisi de hataların düzeltilmesi mali bir sorun teşkil etmiyor
Programın Yazılması Kullanılan Programlar:
8051 entegresinin programlanması adına kullanılan çok fazla derleyici program mevcut durumda. Size kalan yalnızca sizin için kullanımı en kolay ve en avantajlı olanı seçmek. 8051 programlanabilmesi için olan derleyicilerin en gelişmiş olanları şüphesiz KEIL Uvısıon2 olduğunu düşünüyorum.
Ben de en işime yarayanı ve kolay olanı tercih ederek, projenin hazırlanmasında KEIL kullandım. Sonuçları da gayet mükemmel diyebilirim. Aslında doğrudan ASSEMBLY komutlarıyla da aynı işlemler yapılabilirdi.KEIL gibi derleyicilerin programın yazımına rahatlıklar sağlamasının yanında, en büyük avantajlarının derlenmiş/makine koduna çevrilmiş programın (.HEX) genelde, bellekte, ASSEMBLY kodlarla yazılanlardan daha az yer işgal etmesi ve daha kontrollü çalışması diyebilirim.
8051 Kronometre Uygulamasının C programı
#include <89c51rd2.H> #include#include #define dt P1 #define RS P2_7 #define RW P2_6 #define EN P2_5 #define b0 P2_0 #define b1 P0_1 #define b2 P0_2 #define b3 P0_3 int sls,sn,dk,st,x; void say (void) interrupt 5 //Timer kesmesi// { x=1; TF2=0; TH2=0xD8; //1 salise için gerekli bayrak değerleri D8EF-FFFF// TL2=0xEF; sls++; if(sls>99) { sls=0; sn++; if(sn>59) { sn=0; dk++; if(dk>59) { dk=0; st++; if (st>23) {st=0;} } } } } void bekle (long int sure)//lcd için gereken zaman gecikmesi// { long int i; for (i=1;i<=sure;i++) {;} } void datakomut (int komut) //lcd için komut fonksiyonu { RS=0; RW=0; EN=1; dt=komut; EN=0; bekle(1); } void dataveri (char veri[],long int hiz)//char veri yazmak için { int i=0; while(veri [i]!=0) { RS=1; RW=0; EN=1; dt=veri[i]; EN=0; i++; bekle(hiz); } } void intveri ( int inte ,long int hiz)//integer veri yazmak için// { RS=1; RW=0; EN=1; dt=inte; EN=0; bekle(hiz); } int kbul (int a,int b)//kalan bulmak için { int c; while (a>=b) { a=a-b; } c=a; return (c); } void lcd(void)//lcd başlangic ayarlari { int baslangic[]={12,56,6},t; for (t=0;t<2;t++) datakomut(baslangic[t]); } void ekran(void)//değerler lcd ye yaziliyor { int a,b,d; datakomut(2); dataveri(" ",1); a=kbul(st,10);//saat in küçük hanesi d=st-a;//saatin sağ tarafini sifirladim b=d/10;//saatin büyük hanesini buldum intveri(b+48,1);//ascii kodu için// intveri(a+48,1); a=kbul(dk,10); d=dk-a; b=d/10; dataveri(":",1); intveri(b+48,1); intveri(a+48,1); a=kbul(sn,10); d=sn-a; b=d/10; dataveri(":",1); intveri(b+48,1); intveri(a+48,1); a=kbul(sls,10); d=sls-a; b=d/10; dataveri(":",1); intveri(b+48,1); intveri(a+48,1); } void main (void) { int e,i,k; i=0; k=0; e=1; b0=1; lcd(); datakomut(1); T2CON = 0x80; ET2 = 1;//timer kesmesi aktif TR2 = 0; EA = 1; st=0; dk=0; sn=0; sls=0; TH2=0xD8; TL2=0xEF; while(1) { if(e==1) { while(x) { ekran(); x=0; //kesmeden sonra ekranın yazılması için } } while(b1)// buton bire bak (reset) { st=0; dk=0; sn=0; sls=0; TR2=0; i=0;//en son hangi tusa basildigini anlamak için datakomut(192); dataveri("SAYAC RESETLENDI ",1); ekran(); while(b1) {} } while(b3)//buton 3 e bak (basla dur) { if(i==0) { TR2=1; e=1; i=1; datakomut(192);//alt satırın başlangıc adresi dataveri("SAYMA BASLADI ",1); } else { TR2=0; e=0; i=0; datakomut(192); dataveri("SAYMA DURDU ",1); } while(b3) {} } while(b2)//buton 2 ye bak ekrani durdur { if(k==0) { TR2=1; e=0; k=1; datakomut(192); dataveri("EKRAN DURDU ",1); } else { TR2=1; e=1; k=0; datakomut(192); dataveri("TEKRAR SAYIYOR ",1); } while(b2) {} } } }
Şifre-Pass: 320volt.com
Yayım tarihi: 2008/10/10 Etiketler: 8051, atmel avr projeleri, c dili, derleyici, keil, kronometre, lcd devreleri, mikrodenetleyici, proteus
valla kardesım sagol ayrıcada ellerıne saglık gercekten iyi emek etmişsin bizede senin emeğini işleyerek seni mutlu etmek düşer:):)
kardeş selamlar..
sizin şemanızı kronrometre ararken tesadüfen gördüm
bana start butonu ayrı stop butonu ayrı kronometre lazım ama piyasadakiler start ve stop butonları tek tuşla olduğu için benim işimi görmüyor bu şema daki malzemeler hazırlanıp yapılırsa devre çalışırmı yoksa yazılımmı atılması gerekir. selamlar cevap yazarsanız sevinirim
buradaki 8051 mi yoksa şekilde 80c52 yazıyor. Hangisi kullanılmalı devrede?
8051 ile yapılabilirmi devre şekilde 8052 kullanılmış?