Bu uygulamada 1 adet 7 segment display kullanarak 0 ile 9 arası yukarı ve aşağı sayıcı yaptık. Örnek olması açısından incelenebilir bir proje.
Projede ortak anot 7 segment display, PIC16F628A mikrodenetleyicisi ve butonlar kullanıldı. Proje mikroc derleyicisi ile yazılmıştır.
Devre şeması
Programın algoritması şöyledir;
Ana fonksiyon içinde sonsuz döngüde UP ve DWN butonlarından herhangi birine basıldığında, butonlarla ilgili yapılacak olan işlemler blok içinde tanımlandı.
Bu işlemler ;
– Buton arkını önlemek için 180 ms bekle,
– Hangi butona basıldığını tespit et ve sayı değerinin 0-9 arası olmasını sağla
– sayi değişkenini 7 segmentte göster.
mikroC programı
</pre> #define UP PORTA.B0 #define DWN PORTA.B1 //---------------------------------------------- char Ledkod[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}, sayi=0; void kurulum() // ilk ayarlamalar { CMCON=7; // PORTA dijital TRISA=3; // Pin 0 ve Pin 1 giriş diğerleri çıkış TRISB=0; // PORTB çıkış PORTB=LedKod[0]; // PORTB'ye 0'ın 7 segment kodunu gönder } void main() { kurulum(); // kurulum fonk. çalıştır while(1) // sonsuz döngü { if(!UP||!DWN) // eğer UP veya DWN tuşlarına basıldıysa { Delay_ms(180); // buton arkı için 180 ms bekle if(!UP&&sayi<9) sayi++; // eğer UP butonuna basıldıysa ve sayi 9'dan küçükse sayiyi arttır if(!DWN&&sayi>0) sayi--; // eğer DWN butonuna basıldıysa ve sayi 0'dan büyükse sayiyi azalt PORTB=Ledkod[sayi]; // sayi değerinin 7 segment kodunu PORTB'de göster } } } <pre>
Proje dosyalarına buradan erişebilirsiniz.
PIC16F84A için ne değişiklikler programında yapılmalıdır
PIC16F84A içinde dahili osilatör olmadığı için harici 4 Mhz. osilatör kullanılarak proje 16F84a için tekrar derlenmeli. Mikroc demo programı ile derleme yapabilirsiniz.
Ben programı derlenmiş ve genellikle çalışıyor.
Ben bir acemi ve 16F84 ile oynadı.
Teşekkür ederim.
Çevrelerinde çalışan için:
Delay_ms(120);
if(!UP) sayi++;
if(sayi==20) sayi=0; //Ben bazı çizgiler eklendi >2020) sayi=19;
PORTB=Ledkod[sayi];
}
}
}
Tebrikler… Bir ucundan başladığınızda artık bırakamamayacaksınız. Çünkü çok zevkli…
Başarılar…
Ben başardı.
Ben komut kaldırıldı
CMCON=7;
Bu register PIC16F628A microcontrollerinin PORTA’nın dijitale çevrilmesi içini yapıyor. PIC16F84A da analog port olmadığı için bu komutu kaldırıyoruz. Teşekkürler ve başarılar…
Ben başka bir gecikme ile başka bir düğmeye tanıtmak yardımcı olabilir.
#define FAST PORTA.B2
delay_ms(10) …
Eğer Saygılar.
Bir butonu iki farklı amaç için kullanmak istiyorsan;
linkinde mevcut.
Şöylede yapılabilir;
button library kullanılarak farklı gecikme süreleri ile de yapılabilir.
merhabalar ccs c kulaniyorum direk hex olarak paylaşma imkaniniz varmi şimdiden tesekur ederim
proje dosyaları içinde var. İndirip oradan yükleyebilirsiniz.
Merhaba, elinize sağlık. Elektrik kesintisinde sayıcının sıfırlanmaması için ne eklenmesi gerekiyor?
Sayı değişiminde değişkeni EEProm’a kaydetmek gerekir. Açılışta EEProm’dan okuyup değişkene atamalıdır.
Mehraba ben bu hazır kodu yüklüyorum ama sürekli hatta alıyorum ne yapmam gerekiyor
Kod mikroc ile yazıldı. Başında ve sonunda çıkan /pre hariç kopyala yapışır yaparsanız çalışacaktır. Bir de config ayarlarının yapılması gerekir.
Proje dosyaları .hex dahil yazıdaki linkte mevcut.
https://www.mediafire.com/?rb4fgpcavqwkzeh
Ben bu kodu MPlabe üzerinde yapıcam ama olmuyor sürekli hatta alıyorum hex koduda hatta veriyo
hex kodu simulasyonda çalışıyor fakat gerçekte entegreye yukleme yaparken hata veriyor olmuyor???