Konular
CCS-C ve 16F628A ile yapılmış basit bir geri sayıcı
16F628A ile yapılmış basit bir geri sayıcı. başla ve durdur, reset, ayar butonlarından oluşan geri sayıcı lcd ile gösterilmiştir. LCD yerine istenirse 7-seg displayde kullanılabilir. Program ayar menüsündeyken başla butonu işlemiyor, sayarkende ayar menüsüne girmiyor.
Şemayı pdf dosya olarak indirmek için tıklayınız.
Devreye ait dosyaları indirmek için tıklayınız.
#include <16F628A.h> #FUSES NOWDT //No Watch Dog Timer #FUSES INTRC_IO //Internal RC Osc, no CLKOUT #FUSES NOPUT //No Power Up Timer #FUSES NOPROTECT //Code not protected from reading #FUSES NOBROWNOUT //No brownout reset #FUSES NOMCLR //Master Clear pin used for I/O #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NOCPD //No EE protection #use delay(clock=4000000) #include "new_lcd.c" int8 sadise=0,saniye=0,dakika=0,saat=0,ayr=0,durum=0; #int_TIMER1 //GERÇEK ZAMANLI SAYIM İÇİN TIMER1 KESMESİ void TIMER1_isr(void) { set_timer1(15510); sadise--; } //GERI SAYMASI ICIN ALT PROGRAM void geri(){ if(sadise==255){ saniye--; sadise=9; } else if(saniye==255){ dakika--; saniye=59; } else if(dakika==255){ saat--; dakika=59; } else if(saat==255)saat=23; } //SAAT, DAKİKA, SANİYE AYARLAMA İÇİN ALT PROGRAM void ayar(){ if(input(pin_a2)&&durum==0){ ayr++; while(input(pin_a2));} if(ayr==1){ lcd_gotoxy(1,1); printf(lcd_putc," Saniye Ayarla");} if(input(pin_a3)&&ayr==1){ saniye++; while(input(pin_a3));} if(input(pin_a4)&&ayr==1){ saniye--; while(input(pin_a4));} if(ayr==2){ lcd_gotoxy(1,1); printf(lcd_putc," Dakika Ayarla ");} if(input(pin_a3)&&ayr==2){ dakika++; while(input(pin_a3));} if(input(pin_a4)&&ayr==2){ dakika--; while(input(pin_a4));} if(input(pin_a3)&&ayr==3){ saat++; while(input(pin_a3));} if(input(pin_a4)&&ayr==3){ saat--; while(input(pin_a4));} if(ayr==3){ lcd_gotoxy(1,1); printf(lcd_putc," Saat Ayarla ");} if(ayr==4){ ayr=0; printf(lcd_putc,"f");} } //LCDDE GÖSTERMEK İÇİN ALT PROGRAM void lcd(){ lcd_gotoxy(3,2); printf(lcd_putc,"%02u:%02u:%02u:%02u "saat,dakika,saniye,sadise); if(durum==1){ lcd_gotoxy(4,1); printf(lcd_putc,"SAYIYOR... ");} if(durum==0&&ayr==0){ lcd_gotoxy(4,1); printf(lcd_putc," DURDU... ");} } void main() { setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_ccp1(CCP_OFF); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); enable_interrupts(INT_TIMER1); enable_interrupts(GLOBAL); set_tris_b(0); output_b(0); set_tris_a(255); output_a(0); lcd_init(); delay_ms(10); lcd_gotoxy(3,1); printf(lcd_putc,"GERI SAYICI"); delay_ms(1000); lcd_gotoxy(9,1); printf(lcd_putc,"f");//EKRAN TEMİZLEME set_timer1(15510); while(1){ geri(); lcd(); ayar(); //SAYMA İŞLEMİNİ BAŞLATMAK İÇİN if(input(pin_a0)&&ayr==0&&durum==0){ setup_timer_1(T1_INTERNAL|T1_DIV_BY_2); durum=1; while(input(pin_a0));} //SAYDIRMA İŞLEMİNİ DURDURMAK İÇİN if(input(pin_a0)&&durum==1){ setup_timer_1(T1_DISABLED); durum=0; while(input(pin_a0));} //RESETLEMEK İÇİN if(input(pin_a1)){ setup_timer_1(T1_DISABLED); durum=0; sadise=0; saniye=0; dakika=0; saat=0; while(input(pin_a1));} //DURUMLARIN HEPSİ AYNI OLDUGUNDA PROGRAMIN DURMASI if(saat==0&&dakika==0&&saniye==0&&sadise==0){ setup_timer_1(T1_DISABLED); durum=0; } //SINIRLANDIRMALAR if(saniye==60)saniye=0; if(dakika==60)dakika=0; if(saat==24)saat=0; } }
Yorumlarınız
ferhat - 23.12.2012
bu devrenin c kodu hata veriyo bi yardımcı olursanız sevinirim acill
ferhat - 23.12.2012
bu devrenin c kodunda bi sıkıntı var arkdaşlar bi yardımcı olabilirmisiniz lütven acilll
samet yüzügüllü - 10.01.2013
Devrenin kodlarında hiç bir hata yok. devre similasyonda çalıştırıldı. ayrıca delikli plaket üzerine kurularakda çalıştırıldı. devreyi bizzat denedim. çalışmayan program göndermem. yalnız programı c de değil ccs c de yazdım.
mehmet - 22.04.2013
lcd dosyasında hata veriyor yükleyen arkadaş new_lcd.c dosyasını atsa idi bu hata olmazdı. yada bu dosyanın linkini verse
mehmet - 28.04.2013
Arkadaşlar bu devre üzerinde calışıyorum yeni öğreniyorum burdaki dataları yani mesela ayarldım 1 saat 10 dk bunu pic e kaydetmek için ne yapmam lazım devmlı onunla açılacak yani ayarı kaydedecek yardımcı olan olursa memnun olurum teşekkürler
hakan - 15.04.2021
ayar yapmadan direk başlata basıldığında neden 255 den geri saymaya başlıyor
Bir yorum ekleyin
İsim:
E-posta:
Yorumunuz:
Güvenlik Kodu:
Tüm alanları doldurmak zorunludur. Yorumunuz kontrol edilince yayınlanacaktır. E-posta adresi yayınlanmaz.
İzin verilen html etiketler (tag): <p><div><b><strong><i><u><del><hr><sup><sub><br>
İzin verilen html etiketler (tag): <p><div><b><strong><i><u><del><hr><sup><sub><br>