as.yıldırım

Usta Üye
Katılım
14 Eki 2011
Mesajlar
1,287
Puanları
181
arkadaslar bankalarda gördügümüz bi sistem var.Farklı veznelerin üstünde birer display var ve butona bastıkca displaylardaki sayı 1 artmaktadır.Burada isin esprisi displaylarin birbiriyle bir nevi iletişim içinde olması ve butona basıldıgında o displaydaki sayıyı degil,en yüksek sayının oldugu displaydaki sayıyı 1 arttırır ve kendi displayinde gösterir.

Bende bu sistemi 3 display için yaptım.pic16f877 kullandım.CCS ile yazdım.Cok zor bir sistem degil ama özellikle kesme konusunu ögrenmek isteyen arkadaslara yardımcı olabilir.




#include <16f877.h>


#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD


#use delay(clock=4000000)


#use fast_io(b)
#use fast_io(c)
#use fast_io(c)


char sayi=0;
char sayi_1=0;
char sayi_2=0;
char sayi_3=0;
char sayi_1_onlar;
char sayi_1_birler;
char sayi_2_onlar;
char sayi_2_birler;
char sayi_3_onlar;
char sayi_3_birler;


char display[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x6f};




#int_RB


void abc(){


if(input(pin_b4)){
sayi++;
sayi_1=sayi;
if(sayi>99)sayi=0;
if(sayi_1>99)sayi_1=0;
sayi_1_birler=sayi_1%10;
sayi_1_onlar=sayi_1/10;

}
if(input(pin_b5)){
sayi++;
sayi_2=sayi;
if(sayi>99)sayi=0;
if(sayi_2>99)sayi_2=0;
sayi_2_birler=sayi_2%10;
sayi_2_onlar=sayi_2/10;


}
if(input(pin_b6)){
sayi++;
sayi_3=sayi;
if(sayi>99)sayi=0;
if(sayi_3>99)sayi_3=0;
sayi_3_birler=sayi_3%10;
sayi_3_onlar=sayi_3/10;


}






}






void main(){


setup_psp(PSP_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);


set_tris_b(0x70);
set_tris_c(0x00);
set_tris_d(0x00);


output_b(0);
output_c(0);
output_d(0);


enable_interrupts(INT_RB);
enable_interrupts(GLOBAL);




while(1){




output_d(0b11111110);
output_c(display[sayi_1_birler]);
delay_ms(10);

output_d(0b11111101);
output_c(display[sayi_1_onlar]);
delay_ms(10);

output_d(0b1111011);
output_c(display[sayi_2_birler]);
delay_ms(10);

output_d(0b1110111);
output_c(display[sayi_2_onlar]);
delay_ms(10);

output_d(0b11101111);
output_c(display[sayi_3_birler]);
delay_ms(10);

output_d(0b11011111);
output_c(display[sayi_3_onlar]);
delay_ms(10);


}
}



rar dosyasını ekleyemedim.Forumda yeni sayılırım.Eger nasıl yüklendigini ayrıntılı anlatırsanız proteus cizim ccs dosyası hex dosyasını da paylasabilirim...
 

Ekli dosyalar

Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…